OLX Scraper: Poland, Romania, Ukraine, Portugal & Bulgaria
Pricing
from $1.00 / 1,000 results
OLX Scraper: Poland, Romania, Ukraine, Portugal & Bulgaria
Scrape OLX listings from Poland (olx.pl), Romania (olx.ro), Ukraine (olx.ua), Portugal (olx.pt) and Bulgaria (olx.bg). Paste any search or category URL: cars, real estate, electronics. Get title, price, city, attributes and photos. Export to Excel, CSV or JSON. No personal data.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Zibounne
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Paste one or more OLX search or category URLs and get back structured listing data -- title, price, location, photos, and the listing's full spec table -- for Poland, Romania, Ukraine, Portugal, and Bulgaria.
What it does
- Fetches one or more OLX search/category URLs through a residential proxy in the matching country.
- Paginates each URL until
maxItemsis reached (per URL) or OLX has no more results. - Deduplicates listings by id across the entire run -- including the rare case where OLX repeats the same promoted ad twice on one page.
- Pushes a strict, fixed set of fields per listing (see below) -- nothing else.
- Reports a clear run status: how many listings, how many pages, and how many of the requested URLs actually succeeded.
Supported countries
| Country | Domain |
|---|---|
| Poland | olx.pl |
| Romania | olx.ro |
| Ukraine | olx.ua |
| Portugal | olx.pt |
| Bulgaria | olx.bg |
URLs from other OLX domains, or single-listing URLs, are skipped with a clear message; the run continues with the valid URLs.
Input
{"startUrls": [{"url": "https://www.olx.ro/auto-masini-moto-ambarcatiuni/autoturisme/"},{"url": "https://www.olx.pl/motoryzacja/samochody/"}],"maxItems": 60}
startUrls-- one or more OLX search/category URLs. Plain strings also work:["https://www.olx.ro/..."].maxItems-- maximum listings per URL (not shared across URLs).
Output fields
Each dataset row is built from an explicit field allow-list -- nothing is copied wholesale from OLX's internal data:
id, url, title, price (value, currency, negotiable, isFree, isExchange), category (id, type), attributes (flat key -> normalizedValue map -- model, year, mileage, etc., machine-comparable), attributesDisplay (flat key -> value map -- the same fields as OLX displays them, with units), location (city, region only), photos (image URLs), createdTime, lastRefreshTime, isPromoted, itemCondition, country.
attributes are flat key/value columns, so exports stay readable in Excel and CSV.
Example (from a real run, a car listing found via keyword search):
{"id": 673043953,"url": "https://www.olx.pt/d/anuncio/bmw-116-d-advantage-IDJy1tD.html","title": "BMW 116 d Advantage","price": { "value": 21900, "currency": "EUR", "negotiable": false, "isFree": false, "isExchange": false },"category": { "id": 741, "type": "automotive" },"attributes": {"body_type": "compact", "year": "2023", "modelo": "116","engine_capacity": "1496", "combustivel": "diesel", "engine_power": "116","quilometros": "68000", "gearbox": "manual", "condicao": "usado"},"attributesDisplay": {"body_type": "Utilitário", "year": "2023", "modelo": "116","engine_capacity": "1.496", "combustivel": "Diesel", "engine_power": "116","quilometros": "68.000 km", "gearbox": "Manual", "condicao": "Usado"},"location": { "city": "Gandra", "region": "Porto" },"photos": ["https://ireland.apollo.olxcdn.com:443/v1/files/dnqk7owlm73n-PT/image;s=1814x1360"],"createdTime": "2026-08-25T19:47:34+01:00","lastRefreshTime": "2026-09-10T11:53:41+01:00","isPromoted": true,"itemCondition": "","country": "PT"}
Beyond vehicles: any OLX category or keyword search
This actor isn't vehicle-specific -- it reads whatever OLX renders for a given URL. Validated against real runs so far:
- Category pages: vehicles (all 5 countries), real estate (
olx.ro/imobiliare/), electronics (olx.pl/elektronika/). - Keyword search within a category: append
q-<keyword>/to a category URL, e.g.olx.pt/carros-motos-e-barcos/carros/q-bmw/.
OLX's 1000-result cap
OLX itself caps any single search at 1000 results (25 pages), regardless of how large maxItems is set. This has been observed identically across all five supported countries. If you need more than 1000 listings from one category, split the search into narrower slices and run the actor with one startUrls entry per slice -- e.g. one region at a time, or a price range via OLX's own price filter query parameter (search[filter_float_price:from] / search[filter_float_price:to], seen in OLX's own generated links).
Use cases
- Automated price tracking -- run on a schedule against the same category/keyword URL and compare
price.valueover time. - Real estate market analysis -- OLX's real estate categories carry the same structured
attributes(rooms, area, furnishing) as vehicle listings. - Deal-hunting -- combine a keyword search URL with OLX's own price filter to surface only listings under a threshold.
This actor can be run on a schedule (Apify Schedules) and combined with Apify's native integrations (webhooks, email/Slack notifications on run failure, or piping the dataset straight into a downstream Apify actor or external system) without any code changes on your side.
No personal data
This actor does not collect and will never output seller names, phone numbers, seller/shop profile data, free-text ad descriptions, or vehicle identification numbers (VIN). Location is limited to city and region -- no precise coordinates. This is a deliberate, structural exclusion in the parsing code, not a filter applied after the fact.
Export tip: choose the Overview view when exporting to get only the main columns (title, price, location, date, URL).