OLX Scraper: olx.pl/ua/ro/pt/bg/kz/uz (search, filters, alerts)
Pricing
from $0.80 / 1,000 result items
OLX Scraper: olx.pl/ua/ro/pt/bg/kz/uz (search, filters, alerts)
OLX scraper for olx.pl, olx.ua, olx.ro, olx.pt, olx.bg, olx.kz and olx.uz: search by keyword, category, city, region and price. Rows carry price, currency, condition, location, coordinates, seller type, photos and every OLX parameter. Monitor mode alerts on new listings and price cuts. No login.
Pricing
from $0.80 / 1,000 result items
Rating
0.0
(0)
Developer
Viktor Dubnytskiy
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
3
Monthly active users
13 days ago
Last modified
Categories
Share
Search seven OLX marketplaces — olx.pl (Poland), olx.ua (Ukraine), olx.ro (Romania), olx.pt (Portugal), olx.bg (Bulgaria), olx.kz (Kazakhstan) and olx.uz (Uzbekistan) — from one actor, no login, no proxy needed.
What you get
Real rows from the example dataset (query велосипед, country: ua):
| title | price / currency | city / region | sellerType |
|---|---|---|---|
| Велосипед з двигуном Sachs | 10000 / UAH | Фастів / Київська область | private |
| Велосипед Specialized Stumpjumper 15 Comp Alloy 2025 размер XL 29 | 2500 / USD | Київ / Київська область | business |
| Велосипед Royal Baby 16" — відмінний дитячий міський велосипед | 3500 / UAH | Дніпро / Дніпропетровська область | private |
Full row: id, url, platform, country, title, description (detail rows), price, currency, priceLabel, priceNegotiable, priceType, categoryId, condition, city, district, region, lat, lon, images, sellerId, sellerName, sellerType, createdAt, refreshedAt, validTo, isPromoted, deliveryAvailable, params, status, query, rank, source, scrapedAt.
Use cases
- Resale and arbitrage — watch a keyword across OLX countries, get an alert the moment a listing appears or its price drops.
- Price research — pull a full category with price, condition and attributes to build a price curve before you buy or list.
- Market monitoring — track how many business vs. private sellers are active in a category, and how fast listings rotate.
Try it in 10 seconds
Hit Start/Try it — the input already works: country: pl, queries: ["rower"], maxItems: 20, nothing required. Swap in your own country and keywords and run again.
To track a search over time instead of a one-off pull: save the task, set Mode to monitor, and put it on a schedule (Apify → Schedules → cron 0 8 * * * for daily). Each run then returns only listings that are new or changed price/status since last time.
How it works
Search goes through OLX's own public offers API, so rows arrive structured rather than scraped out of HTML — no login, no cookies, no proxy needed. Each query is paginated separately (40 listings per page) until maxPages or maxItems is reached. In monitor mode the actor compares the current result set against the state stored by the previous run of the same Task and pushes only new listings and price/status changes, optionally POSTing a summary to your webhook or Telegram chat.
Input
| Field | Meaning | Default |
|---|---|---|
country | Which OLX site: pl, ua, ro, pt, bg, kz, uz | pl |
queries | Free-text searches, e.g. ["rower"]; each is paginated separately | ["rower"] |
categoryId | OLX numeric category id, e.g. 1607 (taken from OLX's own filter URLs) | — |
cityId / regionId | OLX numeric city / region id, e.g. 17871 | — |
priceFrom / priceTo | Price range in the site's own currency, e.g. 100 / 900 | — |
sortBy | created_at:desc, relevance:desc, filter_float_price:asc, filter_float_price:desc | created_at:desc |
maxPages | Pages per query, 40 listings each | 5 |
offerIds | Numeric offer ids for full detail rows, e.g. ["928010872"] | — |
maxItems | Stop after this many listings | 20 |
mode | scrape, or monitor for new/changed only | scrape |
webhookUrl, telegramBotToken, telegramChatId | Where monitor-mode change summaries are sent | — |
Pricing
| Event | Price |
|---|---|
| result | $0.001 per listing ($1 per 1,000) |
| monitor-check | $0.005 per monitor run |
| change | $0.001 per new/changed listing |
Charged only for listings actually pushed — an empty run costs you nothing.
Why this actor
- Seven OLX countries behind one input instead of one actor per domain.
- Every category attribute is kept in
params, so bike frame size, car mileage or flat rooms survive into your sheet. - Monitor mode with price-drop and new-listing alerts, plus webhook and Telegram delivery.
- No OLX account, no cookies and no proxy configuration.
- Coordinates and
sellerTypeon every search row, not only on detail pages.
Limits
- Category, city and region take OLX numeric ids (see the
category_id/city_idparameters in OLX's own filter URLs). - Phone numbers are not included (OLX shows them only to logged-in users).
- Search rows carry the short description OLX returns in search; use
offerIdsfor full text. - OLX serves at most 1,000 listings per query — split by category or price range to go deeper.
FAQ
Can I monitor new listings for a search? Yes. Save your input as a Task, set mode: monitor and schedule it. Each run returns only listings that appeared or changed price/status since the previous run, and can POST a summary to webhookUrl or a Telegram chat.
Which countries does OLX support here? Poland (olx.pl), Ukraine (olx.ua), Romania (olx.ro), Portugal (olx.pt), Bulgaria (olx.bg), Kazakhstan (olx.kz) and Uzbekistan (olx.uz). One run covers one country; run several Tasks to cover more.
Do I need an OLX login or a proxy? No. The actor reads OLX's public offers API directly, so there is nothing to configure and no account to risk.
Changelog
- 0.1: initial release — 7 countries, filters, details, monitor mode.
If this actor saved you time, please leave a review on its Store page — it is the main way other buyers find it. Bug reports and field requests are welcome in the Issues tab.