Search Estonia's general classifieds site, then read any advert in full
okidoki.ee is where Estonia sells phones, furniture, children's things, cars, flats, services and jobs, and this API reads it as JSON.
5 active endpoints, on 1, 2 and 3 credit tiers.
- POST/okidoki/v1/search
- POST/okidoki/v1/listing
- POST/okidoki/v1/categories
- POST/okidoki/v1/locations
- POST/okidoki/v1/suggest
What okidoki endpoints does ReefAPI ship?
5 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
okidoki API
4 of 5 endpoints, ready to run
Search okidoki adverts with the site's own filters
// Press "Try it" and this pane shows exactly what the // live site returned this second — including an empty // result, if that is the truth. No key, no account.
How the okidoki API works
okidoki is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.
No OAuth app, no request signing, no per-site account. One key covers all 530 engines.
Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.
Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.
One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.
From a place and a category to a fully read Estonian market feed
Resolve the place, search the category with the filters that matter, then read the adverts you keep.
Returns tokens for Tartu county (r12), Tartu city (m17) and the places around it.
Used cars in Tartu county, cheapest first, 50 a page, with the site's own total and last_page.
id>
Pass any row's id unchanged for the full advert: mileage, engine, gearbox, fuel, description, every photo, views and the seller block.
A dated feed of Estonian adverts in EUR, filtered the way the site filters, with the full advert and seller behind every row.
curl -X POST https://api.reefapi.com/okidoki/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"iphone","category":1403}'{
"ok": true,
"data": { … },
"meta": {
"api": "okidoki",
"endpoint": "search",
"mode": "live",
"latency_ms": …,
"record_count": …
},
"error": null
}What an okidoki field actually contains
Seven fields that need one sentence of context. Every row was checked against live okidoki pages on 2026-10-15.
| Field | What it holds |
|---|---|
| price / price_type | price is set only when the advert prints one amount. A salary or rent printed as a range (1 000 - 3 200 € per month), as 'from' or as 'up to' comes back as price_min / price_max with price null, because the page's own machine-readable price for those is the lower bound or 0. price_type says which shape it is: fixed, from, up_to, range, free, on_request, none. |
| price_period | month or day when the price is per period (rents, salaries); the site's own word is kept in price_period_text. |
| seller_type / company_name | On search rows: company when the advert card carries a business name box, private otherwise. Checked: 50 of 50 rows were company with the site's business filter on, 0 of 50 with the private filter on. The advert page itself does not mark businesses; use search with seller_id and seller_type=company to check one seller. |
| shown_date | The date okidoki prints on the advert. It moves when the seller renews the advert, so it is not the first-publish date: an advert from 2025 showed today's date. |
| total / total_capped | The site's own result count. okidoki stops counting at 5 000 and at page 100; total_capped is true when that ceiling is reached. |
| category_id | The deepest category the advert sits in. For flats and houses the site's breadcrumb stops at Real estate; category_id still names Flats (1505) or Houses. |
| itemprop_price / price_mismatch | The page's machine-readable price next to the printed one. On 10 of 10 single-amount adverts they agreed; price_mismatch flags any advert where they do not. |
Measured limits: 50 rows a page by default (25, 100 or 200 on request); the count and the pages stop at 5 000 adverts / page 100; asking past the last page returns zero rows with page_clamped instead of repeating the last page. Phone numbers are not returned.
Estonia coverage, measured
Every number below was read from live okidoki pages on 2026-10-15.
Estonia, prices in EUR. All sections: electronics, real estate, home and garden, children, animals, hobbies, fashion, sport, services, transport, jobs, business; about 660 categories.
iphone 1 406 adverts; passenger cars 2 093; flats 402; job offers 256; services 2 862. Counts stop at 5 000 per query.
Same run, iphone 1 406: new 476, used 808, private 1 305, business 100, from 100 € 800, up to 300 € 930, phones category 881, Tallinn 1 082, Pärnu county 30, offers accepted 879, escrow 142, with video 5. Every checked row matched its filter.
On 12 adverts across phones, cars, flats, jobs, children's clothes and furniture, the price printed on the search card equalled the advert's own price on 10 of 10 single-amount adverts, and a row's id returned the same advert in listing on 12 of 12.
Three consecutive pages of used cars: 150 different adverts, no repeats; asking past the last page returns zero rows with page_clamped.
5 000 adverts / page 100 per query. No phone numbers. The advert page does not mark business sellers; search rows do.
What people build with okidoki
The jobs this data is most often used for.
endpoints
credits per call
Track Estonian second-hand prices for a product: search a query in one category daily and keep id, EUR price, condition and shown date.
Watch used-car supply in Estonia: page category 1601 with condition=used and read mileage, engine and gearbox from each advert.
Map rent levels by town: search flats with a location token and read area, rooms, floor and the monthly price from each advert.
Find the businesses selling in a category with seller_type=company, then list each one's adverts with seller_id.
What okidoki data costs
The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.
Full pricing →- 1,000 free credits on signup, no card
- One key, all 530 APIs, one credit pool
- Failed and blocked calls are never charged
- Credits roll over and never expire
Call it in two lines
Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.
curl -X POST https://api.reefapi.com/okidoki/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"iphone","category":1403}'import requests
r = requests.post(
"https://api.reefapi.com/okidoki/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "iphone",
"category": 1403
},
)
print(r.json()["data"])Have a question? We got answers.
The questions people actually ask before wiring up okidoki.
Get a free key →Do I need an okidoki account or an Estonian connection?▾
No. Search, adverts, the category tree and the location lookup are read without an account, and you call reefapi.com from anywhere.
Which categories does it cover?▾
All of them: electronics, real estate, home and garden, children, animals, hobbies, fashion, sport, services, transport, jobs and business. categories returns the full tree with each category's live advert count; pass a category_id to search.
How do I search one city or county?▾
Call locations with a place name, for example tartu. It returns tokens such as r12 (Tartu county), m17 (Tartu city) or p684 (Tartu). Pass one of them as location to search. Measured: iphone adverts went from 1 406 to 1 082 in Tallinn and to 30 in Pärnu county.
Can I get only business sellers or only private sellers?▾
Yes, seller_type = company or private. Measured on iphone: 100 business adverts and 1 305 private ones, and every returned row matched the filter.
How are salaries and rents returned?▾
With their shape: a range gives price_min and price_max, 'from' gives price_min, 'up to' gives price_max, and a per-month or per-day amount sets price_period. A single price is never invented for a range.
Is the date on an advert the day it was posted?▾
No. okidoki prints the latest renewal, so the API calls it shown_date and keeps the site's own text next to it.
How many results can one search return?▾
okidoki stops at 5 000 adverts and page 100. Narrow with category, price or location to reach the rest; total_capped tells you when the ceiling is hit.
Can I get the seller's phone number?▾
No. okidoki shows it only after a separate click, and the API does not request it. You get the seller's id, name, verification, member-since date, feedback score and advert count.
What is the okidoki API?▾
okidoki API is a ReefAPI endpoint group for estonia's general classifieds site: search adverts, read any advert in full, with eur prices and seller details. It returns live JSON through POST requests under /okidoki/v1.
Is the okidoki API free to try?▾
Yes. ReefAPI starts with 1,000 free credits, no card required. okidoki calls use the same shared credit balance as every other ReefAPI engine.
Do I need an okidoki login or account?▾
No login to okidoki is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the okidoki data?▾
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the okidoki API use?▾
okidoki actions currently cost 1-3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call okidoki from an AI assistant or MCP client?▾
Yes. Connect ReefAPI once through MCP and your assistant can call okidoki actions with the same key, credit pool and JSON envelope used by normal REST requests.
111 Classifieds & Second-hand APIs on the same key
One key, one credit pool, one response envelope. If you are pulling okidoki, you are one call away from the rest of the category — no second contract, no second integration.
Need something this API does not do?
Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.
Try it on your own data before you pay anything
The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 529 APIs, and the same envelope everywhere.
Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-10-15.