OLX API

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.

O
/olx/v1

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.

10 endpoints

search

1 cr

Search OLX classifieds by keyword and/or category with sort, condition, price, delivery and l…

required
optional
query, country, category_id, sort_by, condition, with_photos, courier, region_id, city_id, district_id, price_from, price_to, filters, offset, limit

count

1 cr

Lightweight result count for a query/category/filter combination.

required
optional
query, country, category_id, condition, region_id, city_id, district_id, price_from, price_to, filters

locations

1 cr

GEO resolver.

required
optional
country, query, region_id, city_id

offer

1 cr

Offer detail by numeric id (no trailing slash on upstream path).

required
id
optional
country

categories

1 cr

Category facets + filter suggestions from search metadata, plus global filter definitions.

required
optional
query, country, category_id

user_offers

1 cr

Active offers for a seller user_id with offset pagination.

required
user_id
optional
country, offset, limit

suggested

1 cr

Related/suggested offers for a given offer id.

required
id
optional
country

breadcrumbs

1 cr

Category or offer breadcrumb trail.

required
optional
country, category_id, id

user

1 cr

Public seller profile by user id.

required
user_id
optional
country

filters

1 cr

Global filter attribute definitions keyed by filter_enum/filter_float names.

required
optional
country

Every parameter, every allowed value →

OLX API

4 of 10 endpoints, ready to run

View docs ↗

The listing feed: title, price, condition, location, photos and the numeric id every other call needs.

1 credit0 required · 3 optional
POST/olx/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 OLX API works

OLX 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 185 engines.

02
Call
POST /olx/v1/…

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

03
Pay
1 credit 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.

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.

01search
POST/olx/v1/search
{"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.

02offer
POST/olx/v1/offer
{"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.

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

countryMarketplaceLocal currency
plOLX Poland (default)PLN
uaOLX UkraineUAH
roOLX RomaniaRON
ptOLX PortugalEUR
bgOLX BulgariaBGN
kzOLX KazakhstanKZT
uzOLX UzbekistanUZS

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.

Markets

Poland, Ukraine, Romania, Portugal, Bulgaria, Kazakhstan and Uzbekistan. All seven answered on the measurement date; the country parameter picks one of them.

What country does

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.

Listing ids

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.

Currency

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.

From a listing URL

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.

Against us — how deep you can go

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.

10

endpoints

1

credit per call

01

Price-intelligence teams call search to track used-car and electronics prices across OLX countries.

02

Marketplace and lead-gen tools use user_offers to pull every active listing from one seller.

03

Classifieds aggregators use categories and locations to mirror OLX's taxonomy before ingesting listings.

04

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

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.