--- name: official-notices description: Retrieve public Ametlikud Teadaanded notices as HTML, XML, RDF, or text through its documented stable URI scheme. module: teadaanded.mjs execution: get --- # Official Notices ## Access - URI contract and current type slugs: `https://www.ametlikudteadaanded.ee/avalik/uriotsing` - Interactive search: `POST https://www.ametlikudteadaanded.ee/avalik/otsing` - Public notice URIs: `https://www.ametlikudteadaanded.ee/ee/...` ## Retrieve Build a URI in this order: `/ee/{publisher}/{main-type}/{subtype}/{year}/{month}/{day}/{notice-number}/{format}` Trailing components may be omitted. Use `-` for an unused publisher, main type, or subtype in the middle. The optional format is `xml`, `rdf`, or `txt`; without it the response is HTML. For example, `/ee/-/advokatuur/xml` returns a public XML collection for the `advokatuur` main type. Read publisher and type slugs from the URI contract page. XML collections use root element `at:teadaanded`; each `at:teadaanne` includes the notice number, canonical URL, type, legal basis, purpose, publisher, publication data, and notice-specific fields. For ad hoc name/keyword searches, POST `do_search=1`, `o__search_term`, and optional `o__teate_liigid`, `o__teate_alaliik_list`, `o__avaldamise_kuupaev_alates`, and `o__avaldamise_kuupaev_kuni` to `/avalik/otsing`. Structured person search is `o__isiku_tyyp=F` with `o__eesnimi` / `o__perekonnanimi` / `o__fkood`. Three things about that POST, all verified 2026-08-01: - **It needs a session cookie or it silently does not search.** The register is behind Cloudflare bot management; without a `__cf_bm` cookie the POST answers **HTTP 200 with the empty search form back** — no error, no status code to check. GET any page on the host first and carry its cookies into the POST. - **`GET /avalik/otsing` is HTTP 405** ("kasutatav ainult järgmiste päringumeetoditega: POST"). Fetch the URI-contract page instead when you just want the form vocabulary. - **Dates are `dd.mm.yyyy` only.** `20.07.2026` filters; `2026-07-20` is accepted and matches nothing. ```probe-limit claim `GET /avalik/otsing` is HTTP 405 GET https://www.ametlikudteadaanded.ee/avalik/otsing expect-status 405 expect /kasutatav ainult järgmiste päringumeetoditega: POST/ # The control is the URI-contract page, on the same host, which must still # answer 200. Without it, a day when the whole register sits behind a bot check # would "confirm" this limitation while the source was unusable. control GET https://www.ametlikudteadaanded.ee/avalik/uriotsing ``` `o__teate_liigid` takes a numeric **main-type id** (1 = Pärimisteated; 51 types in the form's own select). These ids are a different vocabulary from the URI slugs above — `parimisteated` is the slug, `1` is the id. ### Inheritance proceedings (pärimisteated) This is the public route to Estonian inheritance proceedings. The pärimisregister itself is ID-authenticated (see `## Limits`), but every proceeding is announced here under `pärimisseaduse (PärS) § 168`, so "has a pärimismenetlus been started for X" is answerable from these notices alone. Main type `parimisteated`, one day per request: `/ee/-/parimisteated/-/2026/07/20/xml` → 55 notices (verified 2026-07-27) Subtypes, as the `{subtype}` component (all five verified live; an empty day returns a valid 146-byte collection, not an error): - `parimismenetluse-algatamine` — proceeding opened (49 of that day's 55) - `parijate-valjaselgitamise-yleskutsemen` — call to identify heirs - `parimismenetluse-algat-ja-parijate-valjaselgitamise-yleskutsemen` — both at once - `yleskutsemen-teade-parandaja-kohust-kindlakstegemiseks` — call to establish the estate's debts - `parimistunnistuse-keht-tunnist-ja-taiend-parimismen-labiviimine` — succession certificate invalidated / supplementary proceeding Each `at:teadaanne` carries `teate_number`, `url`, `liik`, `mall`, `oiguslik_alus_omastav` with an `oigusliku_aluse_viide` deep link into Riigi Teataja, the notary as `andmeandja`/`avaldaja` with contact details, `avaldamise_kpv`, and `puudutatud_isik` naming the deceased. The renunciation deadline itself is PärS, not this feed — read the act through `legal-acts-data` and cite the § rather than restating a remembered period. ## Return - Preserve notice number, canonical URL, publication date, publisher, main/subtype, legal basis, status, matched party fields, query URI, and retrieval time. - Keep notice publication distinct from the underlying court, insolvency, procurement, or administrative action. ## Limits - URI searches return at most 1,000 results. Narrow by type and date when completeness matters. - **A collection URI without a date does not answer.** `/ee/-/parimisteated/-/xml` hangs and returns nothing (25 s, 0 bytes, verified 2026-07-27). Always pin `{year}/{month}/{day}`; to cover a range, request each day. - The open URI interface excludes archived notices and notices addressed to natural persons for service. - Notice XML can contain personal data lawfully published in the source — pärimisteated name the deceased and carry their isikukood. Return only fields needed for the user's request. - These notices say a proceeding was *announced*, not how it ended. The pärimisregister, which holds the outcome, is free but ID-authenticated (Notarite Koja iseteenindus / eesti.ee), so there is no public route to "who inherited". ## Verify - Require the contract page to contain the documented URI pattern and current type slugs. - Require a collection URI ending in `/xml` to return parseable XML with `at:teadaanded` and at least one `at:teadaanne` containing `teate_number` and `url`. - **The search ran only if the response contains `Otsingutulemused` (hits) or `Ei leitud ühtegi teadaannet!` (a real zero).** Neither present = the register handed back its form without searching (the cookie case above), and that page is 85,314 bytes where a genuine zero is 85,493 — nothing a size or status check separates. Reporting "no proceeding has been started" off that page is the worst answer this source can produce. - Same URI without `/xml` is the register's human-readable day view (HTTP 200) — cite that, not the XML. ## Module API findNotices({term, firstName, lastName, type, from, to}) -> {source, page, ran, note, matched, truncated, rows} noticesOn(date, {type, subtype, publisher}) -> {source, page, date, note, totals, rows}