okidoki API

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.

no credit card1,000 free credits · instant API key · pay by card or crypto
Missing a okidoki endpoint, or need a source we don't have yet?Contact us real people · same-day reply.
O
/okidoki/v1

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.

5 endpoints

search

3 cr

Search okidoki.ee adverts by text, category, seller, price, condition, seller type and location.

required
—
optional
query, category, seller_id, page, per_page, sort, condition, seller_type, min_price, max_price, location, negotiable, with_video, urgent, deposit

listing

2 cr

One okidoki advert in full.

required
id
optional
—

categories

2 cr

okidoki's full category tree (about 660 nodes) with the site's live advert count per category.

required
—
optional
parent

locations

1 cr

Resolve an Estonian place name to okidoki location tokens (county / municipality / place) for…

required
query
optional
—

suggest

1 cr

okidoki's own search autocomplete.

required
query
optional
—

Every parameter, every allowed value →

okidoki API

4 of 5 endpoints, ready to run

View docs ↗

Search okidoki adverts with the site's own filters

3 credits0 required · 5 optional
POST/okidoki/v1/search
idle
// 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.

01
Authenticate
x-api-key header

No OAuth app, no request signing, no per-site account. One key covers all 530 engines.

02
Call
POST /okidoki/v1/…

Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.

03
Pay
1 or 2 or 3 credits per call

Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.

04
Read
{ ok, data, meta, error }

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.

01locations?query=tartu
GET/okidoki/v1/locations?query=tartu

Returns tokens for Tartu county (r12), Tartu city (m17) and the places around it.

02search?category=1601&condition=used&location=r12&sort=price_asc
GET/okidoki/v1/search?category=1601&condition=used&location=r12&sort=price_asc

Used cars in Tartu county, cheapest first, 50 a page, with the site's own total and last_page.

03listing?id=<row
GET/okidoki/v1/listing?id=<row
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.

request
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}'
response envelope
{
  "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.

FieldWhat it holds
price / price_typeprice 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_periodmonth or day when the price is per period (rents, salaries); the site's own word is kept in price_period_text.
seller_type / company_nameOn 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_dateThe 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_cappedThe 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_idThe 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_mismatchThe 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.

Market

Estonia, prices in EUR. All sections: electronics, real estate, home and garden, children, animals, hobbies, fashion, sport, services, transport, jobs, business; about 660 categories.

Live depth

iphone 1 406 adverts; passenger cars 2 093; flats 402; job offers 256; services 2 862. Counts stop at 5 000 per query.

Filters

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.

Accuracy

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.

Paging

Three consecutive pages of used cars: 150 different adverts, no repeats; asking past the last page returns zero rows with page_clamped.

Limits

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.

5

endpoints

1/2/3

credits per call

01

Track Estonian second-hand prices for a product: search a query in one category daily and keep id, EUR price, condition and shown date.

02

Watch used-car supply in Estonia: page category 1601 with condition=used and read mileage, engine and gearbox from each advert.

03

Map rent levels by town: search flats with a location token and read area, rooms, floor and the monthly price from each advert.

04

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 →
$0.67–$1.50 / 1,000 credits
  • 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
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}'
python
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"])
FAQ

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.

0/4000

No account needed · we reply from [email protected]

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.