OLX Marketplace Scraper (7 Countries) avatar

OLX Marketplace Scraper (7 Countries)

Pricing

from $1.50 / 1,000 ads

Go to Apify Store
OLX Marketplace Scraper (7 Countries)

OLX Marketplace Scraper (7 Countries)

Scrape OLX classifieds across 7 countries (PL, UA, RO, BG, KZ, UZ, PT) from one actor. One row per ad: title, price in native currency, GPS, city/region, business-seller flag, and OLX's own category attributes (car make/model/mileage, property rooms/m²). Optional photos + seller profile.

Pricing

from $1.50 / 1,000 ads

Rating

0.0

(0)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Turn any OLX search into clean, structured classifieds data — across seven countries from a single actor: Poland, Ukraine, Romania, Bulgaria, Kazakhstan, Uzbekistan and Portugal. Search by keyword (iphone 15, opel astra, mieszkanie), or paste search, category or ad URLs — and get one flat row per ad with title, description, price in native currency, GPS, city/region, business-seller flag, and OLX's own normalised category attributes.

Built for cross-border arbitrage, used-car and property intelligence, price monitoring, and CEE/CIS marketplace research.

How it works

How the OLX Marketplace Scraper works

✨ Why use this scraper?

  • Seven countries, one actor, one schema — most OLX scrapers cover a single domain. Tick pl, ua, ro, bg, kz, uz, pt and the same keyword runs across all of them, returning identical columns with each market's own currency. Cross-border price comparison works out of the box.
  • OLX's own normalised attributes — every ad carries the structured attribute set OLX uses for its filters, in both raw and flattened form: car make/model/year/mileage/fuel, property rooms//floor, phone model/storage/colour. These are real typed fields, not text parsed out of a description.
  • GPS on every row — latitude/longitude plus OLX's full city → region → district hierarchy, on feed rows too, not only in deep mode.
  • Business vs private sellersisBusiness separates shops and dealers from private individuals, which is the filter that matters for lead-gen and dealer analysis.
  • No residential proxy needed — OLX serves its data to ordinary requests, so runs are fast and cheap. No premium-proxy surcharge buried in your bill.
  • Fast mode or deep mode — feed rows already include price, description, GPS, location and attributes. Turn on Also open each ad page to add all photos, the seller profile and contact flags. You choose cost vs depth.
  • Structured, not scraped — reads OLX's own embedded __PRERENDERED_STATE__ JSON rather than fragile HTML selectors, so the output stays reliable.
  • JSON, CSV, Excel or API — pipe straight into your sheet, CRM or pipeline. Billed per ad.

🎯 Use cases

You are a…Use it to…
Cross-border arbitrage traderCompare the same product's price across PL, RO, UA and PT in one run
Used-car dealer / analystPull local vehicle inventory with make, model, year, mileage and fuel type
Property analystTrack listings by rooms, m², floor and region across CEE markets
Price-monitoring / repricingTrack asking prices for a product across a country over time
Lead-genFind active business sellers (isBusiness: true) with contact channels
Market researcherMeasure supply, price distribution and category mix per country

📥 Supported inputs

InputExampleWhat it does
Search keyword + marketsiphone 15 × ["pl","ro"]Builds & paginates that search on each selected country
Search URLhttps://www.olx.pl/oferty/?q=iphonePaginates that search
Category URLhttps://www.olx.ro/imobiliare/Paginates that whole category
Ad URLhttps://www.olx.pl/d/oferta/...-ID123abc.htmlScrapes that single ad in full detail

Supported domains: olx.pl, olx.ua, olx.ro, olx.bg, olx.kz, olx.uz, olx.pt.

Not supported: olx.ba, olx.com.br and olx.in run on separate platforms and are not covered. Private messages, buyer data and anything behind a login are out of scope — the actor reads only public pages.

⚙️ How it works

  1. Classify every input — keywords are expanded across the selected markets; pasted URLs are sorted into search / ad, with the country detected from the domain.
  2. Fetch each page with a real browser TLS fingerprint. OLX needs no residential proxy, so this is a plain sequential retry — fewer requests, lower cost.
  3. Parse the embedded __PRERENDERED_STATE__ JSON — the search feed's ad array, and each ad page's full object.
  4. Enrich (optional) — for each ad, fetch its own page to add all photos, seller profile and contact flags.
  5. Push one flat, deduplicated row per ad to the dataset, tagged with its market.

🔧 Input configuration

FieldTypeDefaultDescription
searchQueriesarray["iphone 15"]Keywords to search. Each runs on every selected market.
marketsarray["pl"]Countries: pl, ua, ro, bg, kz, uz, pt.
startUrlsarray[]OLX search, category and/or ad URLs. Auto-classified.
scrapeDetailsbooleanfalseOpen each ad page for all photos, seller profile and contact flags.
maxItemsinteger1000Hard cap on rows for the whole run.
maxItemsPerSearchinteger1000Cap per feed. OLX stops paginating at page 25 (~1,250 ads).
maxConcurrencyinteger8Parallel requests.
maxRequestRetriesinteger6Retry budget per request.
proxyobjectApify datacenterOptional. Residential proxies are not required for OLX.

📤 Output overview

One row per ad, tagged with its market and country. In fast mode you get the feed fields — already rich; with Also open each ad page on (or when you paste an ad URL) every row adds photos, seller and contact data.

Fast mode (feed): adId, title, description, price/priceDisplay/currency, latitude/longitude, location, params/attributes, condition, isBusiness, isPromoted, createdTime, url.

Deep mode adds: all photos, primaryImage, seller (name, avatar, last-seen, online status, phone/chat/delivery flags), isJob, salary, externalUrl.

🧾 Output samples

A phone listing in Poland (deep mode):

{
"rowType": "listing",
"adId": "1075898915",
"market": "pl",
"country": "Poland",
"url": "https://www.olx.pl/d/oferta/...-ID1aOmsj.html",
"title": "Apple iPhone 15 128GB NOWA BATERIA 100%",
"price": 1997,
"priceDisplay": "1 997 zł",
"currency": "PLN",
"isNegotiable": false,
"condition": "Używane",
"location": { "cityName": "Kraków", "regionName": "Małopolskie" },
"latitude": 50.06026, "longitude": 19.9396,
"isBusiness": true,
"attributes": {
"state": "Używane",
"phonemodel": "iPhone 15",
"builtinmemory_phones": "128GB",
"rammemory_phones": "6 GB"
},
"photos": ["https://ireland.apollo.olxcdn.com/…", "… 6 more"],
"seller": { "name": "SmartSfera", "hasPhone": true, "chatEnabled": true }
}

The same search in Portugal — identical columns, native currency:

{
"adId": "…",
"market": "pt",
"country": "Portugal",
"title": "Iphone 15 128GB - Selado",
"price": 625,
"priceDisplay": "625 €",
"currency": "EUR",
"condition": "Novo",
"location": { "cityName": "Loures", "regionName": "Lisboa" },
"attributes": { "model": "iPhone 15", "capacity": "128GB", "operador": "Desbloqueado" },
"isBusiness": false
}

🔑 Key output fields

FieldDescription
adId / adCodeOLX numeric ad id and URL code (stable dedup keys)
market / countryWhich OLX country site the row came from
title / descriptionAd title and full description text
price / priceDisplay / currencyNumeric price, OLX's formatted string, native ISO currency
isNegotiable / isFree / isExchangeOLX's own price flags
paramsFull normalised attribute list (key, label, value, normalised value)
attributesThe same attributes flattened to key → value, for CSV
locationCity, region and district with OLX's ids
latitude / longitudeAd GPS coordinates
isBusinessShop/dealer vs private seller
conditionItem condition, in the market's own language
createdTime / lastRefreshTimeWhen the ad was posted and last bumped
photosArray of full-resolution image URLs (deep mode)
sellerName, avatar, last-seen, online status, phone/chat/delivery flags (deep mode)

❓ FAQ

Which countries are covered? Poland, Ukraine, Romania, Bulgaria, Kazakhstan, Uzbekistan and Portugal — seven OLX domains sharing one platform and therefore one schema. Bosnia (olx.ba), Brazil and India run separate platforms and are not supported.

Do I need a residential proxy? No. OLX serves its data to ordinary requests, so the default Apify datacenter proxy is enough. That's why this actor is cheaper to run than marketplace scrapers that require residential IPs.

What's the difference between fast and deep mode? Fast mode (default) returns feed rows, which already include price, description, GPS, location and the full attribute set — cheap and quick. Deep mode opens each ad page to add all photos, the seller profile and contact flags — richer rows, ~2× the requests.

Can I get seller phone numbers? OLX does not publish the number itself on the page; it exposes whether the seller accepts phone contact. Rows carry seller.hasPhone, chatEnabled and courierEnabled rather than a raw number.

Does it work for cars and property? Yes. Those categories carry the richest attribute sets — make, model, year, mileage and fuel for vehicles; rooms, m², floor and market for property — all in params/attributes.

How many results per search? OLX returns ~50 ads per page and stops at page 25 — about 1,250 per feed. Use several keywords, categories or markets to go wider.

🛟 Support

Found a bug or need a field added? Open an issue on the actor's Issues tab in the Apify Console and we'll take a look.

🚀 Additional services

Need a different marketplace, site, or a custom schema? We build and maintain scrapers across classifieds, real estate, jobs and e-commerce.

🔎 Explore more scrapers

  • OfferUp Marketplace Scraper
  • Kleinanzeigen Scraper
  • Willhaben Scraper
  • Craigslist Scraper
  • Facebook Marketplace Scraper

⚠️ Disclaimer

This actor scrapes only publicly available ad data from OLX. It does not access private messages, buyer data, or any content behind a login, and it does not collect personal data beyond the public seller information OLX itself displays on an ad. You are responsible for using the scraped data in compliance with OLX's Terms of Service, applicable laws (including GDPR and other data-protection and consumer-protection laws), and any restrictions on automated access. Use the output lawfully and ethically.

🔍 SEO Keywords

OLX scraper, OLX API, OLX data extractor, scrape OLX listings, OLX Poland scraper, olx.pl scraper, OLX Ukraine scraper, OLX Romania scraper, OLX Bulgaria scraper, OLX Portugal scraper, OLX Kazakhstan scraper, OLX classifieds scraper, OLX car scraper, OLX property scraper, OLX price monitoring, classifieds data export, CEE marketplace data, second-hand marketplace scraper, OLX JSON export.