Read OLX listings from seven country sites with one API
The OLX API returns live classified-ad listings from OLX marketplaces across 7 countries as clean JSON — no scraping, proxies or logins to manage.
10 active endpoints. Every call is 1 credit.
- POST/olx/v1/search
- POST/olx/v1/count
- POST/olx/v1/locations
- POST/olx/v1/offer
- POST/olx/v1/categories
- POST/olx/v1/user_offers
- POST/olx/v1/suggested
- +3 more
What OLX endpoints does ReefAPI ship?
10 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
OLX API
4 of 10 endpoints, ready to run
The listing feed: title, price, condition, location, photos and the numeric id every other call needs.
// 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 OLX API works
OLX 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 185 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.
Two calls turn a keyword into a full listing
Search returns the numeric id. Detail takes that id back — in the same country. There is no third step, and no way to skip the first one: an OLX listing URL does not contain the numeric id.
{"query": "iphone", "country": "pl", "limit": 10}Take id from a row. This is the only place the id exists — the code at the end of a listing URL is a different, shorter code.
{"id": <id from above>, "country": "pl"}Same country as the search. Asked for under another country it answers NOT_FOUND rather than handing back a different listing.
Two credits per listing. Every endpoint on this engine costs the same, so a run's cost is just the number of calls you make.
curl -X POST https://api.reefapi.com/olx/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"iphone","country":"pl"}'{
"ok": true,
"data": { … },
"meta": {
"api": "olx",
"endpoint": "search",
"mode": "live",
"latency_ms": …,
"record_count": …
},
"error": null
}The seven OLX marketplaces this covers
OLX is not one site. Each country runs its own marketplace with its own categories, currency and listing ids, and the country parameter picks which one you are calling. Anything you get back — offer ids, category ids, region and city ids, seller ids — belongs to that country only.
| country | Marketplace | Local currency |
|---|---|---|
| pl | OLX Poland (default) | PLN |
| ua | OLX Ukraine | UAH |
| ro | OLX Romania | RON |
| pt | OLX Portugal | EUR |
| bg | OLX Bulgaria | BGN |
| kz | OLX Kazakhstan | KZT |
| uz | OLX Uzbekistan | UZS |
OLX Brazil, India and Turkey run on entirely different platforms and are deliberately not supported here — we would rather name the gap than return half-broken data for them.
Which OLX, which ids, which currency
OLX is not one marketplace. It is seven national sites that share a name and share almost nothing else. Each row below was measured by running the same call against several countries on the same afternoon and comparing what came back.
Poland, Ukraine, Romania, Portugal, Bulgaria, Kazakhstan and Uzbekistan. All seven answered on the measurement date; the country parameter picks one of them.
It selects the national site, not a filter over one shared pool. Two countries return two different inventories with different region ids, different category ids and a different result count.
Nine or ten digits, and the ranges do not overlap between countries. A Polish id asked for under Romania answers NOT_FOUND — it does not silently return the wrong listing.
Pinned to the country: zloty, hryvnia, leu, euro, tenge. The exception measured was Uzbekistan, where a single page of results came back in two currencies at once. Never sum a price column across countries.
You cannot get the numeric id out of it. The code at the end of an OLX listing URL is a short alphanumeric one, and the URL path differs per country too. The id comes from search.
Paging stops at an offset of a thousand, and the stop is silent: past it the call still succeeds and returns nothing. The count endpoint reports the whole market, which is far larger. Narrow by category, region or price to reach the rest.
What people build with OLX
The jobs this data is most often used for.
endpoints
credit per call
Price-intelligence teams call search to track used-car and electronics prices across OLX countries.
Marketplace and lead-gen tools use user_offers to pull every active listing from one seller.
Classifieds aggregators use categories and locations to mirror OLX's taxonomy before ingesting listings.
Analysts use count to size supply for a query (how many apartments in a city) without paging every result.
What OLX 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 185 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/olx/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"iphone","country":"pl"}'import requests
r = requests.post(
"https://api.reefapi.com/olx/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "iphone",
"country": "pl"
},
)
print(r.json()["data"])Have a question? We got answers.
The questions people actually ask before wiring up OLX.
Get a free key →Which OLX countries can I call, and does OLX Brazil work?▾
Seven: Poland (the default), Ukraine, Romania, Portugal, Bulgaria, Kazakhstan and Uzbekistan. OLX Brazil, India and Turkey run on separate platforms and are not covered — we name that rather than quietly return nothing. Each country is a fully separate marketplace, so a category id or offer id from one will not resolve on another.
Are promoted or sponsored OLX ads included in search results?▾
No. Search strips OLX's promoted slots before returning, so what you get is the real organic inventory for your query. That matters for price analytics: paid placements skew toward dealers and would drag your averages up.
How do I count OLX listings without paging through all of them?▾
Call count with the same filters you would send to search. It returns the total match count in one request instead of walking every page — the cheap way to answer questions like how many apartments are listed in a city right now, or how supply for a model moved week over week.
Where do OLX category, region and city ids come from?▾
They are OLX's own numeric ids, and you discover them rather than guess them: categories returns the category tree, filters returns the region, city and district ids valid for a search, and breadcrumbs resolves the path for a category you already have. Feed those ids back into search as category_id, region_id, city_id or district_id.
How do I page through OLX search results?▾
Search returns up to 40 results per call (50 is the hard cap; larger values are clamped silently). Page forward with meta.next_offset — but the ceiling is an offset of 1,000, and it is a QUIET one: past it the call still succeeds and returns zero rows with no error (measured 2026-08-27 at offsets 1001 through 9960). One query therefore reaches about 1,040 listings however large count says the market is; narrow by category, region or price band to reach the rest. A search needs either a query or a category_id — sending neither is rejected outright rather than returning an empty list you might mistake for no inventory.
Can I pull every listing from one OLX seller?▾
Yes. Take seller_id from a search result or an offer and call user_offers with it — that returns the seller's active listings with the same offset pagination. user adds the profile behind that id. This is how resale and dealer-monitoring tools track one shop's inventory over time.
What is the OLX API?▾
OLX API is a ReefAPI endpoint group for olx It returns live JSON through POST requests under /olx/v1.
Is the OLX API free to try?▾
Yes. ReefAPI starts with 1,000 free credits, no card required. OLX calls use the same shared credit balance as every other ReefAPI engine.
Do I need an OLX login or account?▾
No login to OLX 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 OLX 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 OLX API use?▾
OLX actions currently cost 1 credit per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.
Can I call OLX from an AI assistant or MCP client?▾
Yes. Connect ReefAPI once through MCP and your assistant can call olx actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the OLX API an OLX scraper?▾
It is the managed alternative to a DIY OLX scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same olx back as clean JSON.
Why does my OLX scraper keep getting blocked?▾
Most OLX scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked or failed calls are free.
4 Classifieds & Second-hand APIs on the same key
One key, one credit pool, one response envelope. If you are pulling OLX, you are one call away from the rest of the category — no second contract, no second integration.
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 184 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-08-27.