OLX Scraper: Listings, Ad Details, Phone Numbers
Pricing
from $2.00 / 1,000 results
OLX Scraper: Listings, Ad Details, Phone Numbers
Scrape OLX in Poland, Ukraine, Romania, Bulgaria, Portugal, Kazakhstan, Uzbekistan, and India. Search by keyword, category, location, and price, or paste an OLX search link. Get ad details with descriptions and photos, and seller phone numbers where OLX allows it. $2 per 1,000 results.
Pricing
from $2.00 / 1,000 results
Rating
5.0
(1)
Developer
Sourabh Kumar
Maintained by CommunityActor stats
1
Bookmarked
51
Total users
18
Monthly active users
4 hours ago
Last modified
Categories
Features
Share
OLX scraper: search listings, offer details and seller phone numbers
Get OLX classifieds data in 2 ways: search by keyword, filters or a pasted OLX link, or fetch specific offers by URL. Press Start and download a clean spreadsheet.
$2 per 1,000 results, plus $0.01 per run. No proxy setup or login needed.
Works on OLX Poland, Ukraine, Romania, Bulgaria, Portugal, Kazakhstan, Uzbekistan and India.
Pick a mode
Set Mode (mode) and Market (market), then fill the section for your mode. The other mode's sections are ignored.
| You want | mode | Paste into |
|---|---|---|
| Offers for a keyword, category or location | search | query, or the filters |
| The results of a search you built on the OLX website | search | startUrls (OLX search or category links) |
| Specific offers you already have | detail | offerUrls (offer links or IDs) |
Every mode can be scheduled. A schedule repeats the same input, so move Posted after forward between runs to get only new listings.
Why this OLX scraper?
- 💸 One flat price: the same in both modes, with no monthly fee.
- 🌍 Eight countries, one tool: the same columns on all eight OLX sites.
- 🔗 Paste any OLX search: every filter you set on the website comes with the link, even category-only ones like car model.
- 📞 Seller phone numbers: looked up on request, and each row says what happened.
- 💼 Job pay included: salary range, currency and pay type as separate columns, where OLX gives them.
- 🆕 New-listings monitoring: get only the offers created on or after a date.
- 🧾 You pay only for rows you get: each offer is charged once per run, duplicates are free.
1. Search: find offers by keyword, filters or OLX link
Paste a keyword, or an OLX search link with your filters already set.
Get one row per offer: title, price, condition, description, location, seller, photos, dates and every attribute the ad lists, such as mileage or room count. Search rows already carry the full description and photos, so you need the second mode only for offers you already have.
| Option | Field | Default | What it does |
|---|---|---|---|
| Keyword | query | Free-text search | |
| OLX search URLs | startUrls | OLX search or category links. Each keeps its own country and filters | |
| Category ID, Region ID, City ID | categoryId, regionId, cityId | Numeric IDs, shown on any result row (a row shows its narrowest category) | |
| Min price, Max price | priceMin, priceMax | In the currency OLX uses for that category: usually the local one, but euros on OLX Romania property and cars, and always UZS on OLX Uzbekistan, even for offers priced in UYE | |
| Condition | condition | any | any, new or used |
| Sort by | sortBy | relevance | relevance, created_desc, price_asc, price_desc |
| Posted after | postedAfter | Only offers created on or after this date | |
| Reveal phone numbers | includePhone | off | Look up the seller's number |
| Max results | maxItems | 100 | 0 means no limit |
Input
{"mode": "search","market": "pl","query": "iphone 13","categoryId": 99,"priceMin": 800,"priceMax": 2000,"condition": "used","includePhone": true,"maxItems": 100}
Or paste a link from the website:
{"mode": "search","market": "pl","startUrls": ["https://www.olx.pl/motoryzacja/samochody/bmw/?search%5Bfilter_enum_model%5D%5B0%5D=3-as-sorozat"],"maxItems": 500}
Output (one real row, selected fields)
{"id": 1071736548,"url": "https://www.olx.pl/d/oferta/iphone-13-pro-max-128gb-gold-100-telakces-manufaktura-CID99-ID1avTDm.html","title": "IPHONE 13 PRO MAX 128GB GOLD 100% Telakces Manufaktura","price": 1799,"priceLabel": "1 799 zł","currency": "PLN","priceType": "price","condition": "used","createdTime": "2026-05-07T13:15:43+02:00","lastRefreshTime": "2026-11-04T15:18:17+01:00","city": "Łódź","region": "Łódzkie","district": "Bałuty","lat": 51.80141,"lon": 19.43061,"sellerType": "business","companyName": "TELAKCES.COM","hasPhone": true,"phoneStatus": "revealed","sponsoredSlot": false,"photoCount": 5,"params": {"state": "Używane","phonemodel": "iPhone 13 Pro Max","builtinmemory_phones": "128GB"},"status": "active","market": "pl"}
Output for a job ad (one real row, selected fields)
{"id": 1103608719,"url": "https://www.olx.pl/oferta/praca/specjalista-ds-obslugi-i-koordynacji-zamowien-novi-pawilony-CID4-ID1cGD2D.html","title": "Specjalista ds. Obsługi i Koordynacji Zamówień / Novi Pawilony","price": null,"salaryFrom": 4800,"salaryTo": 7000,"salaryCurrency": "PLN","salaryType": "monthly","categoryType": "job","city": "Radom","region": "Mazowieckie","companyName": "Novi Pawilony","params": {"type": "Pełny etat","experience": "Wymagane doświadczenie"},"market": "pl"}
price: 0 can mean a free or exchange offer, so check priceType. In search rows, priceLabel is what the site shows, which can be in a different currency from price on Ukrainian, Romanian and Uzbek offers. convertedPrice then holds that amount. On OLX Uzbekistan, currency is UZS or UYE, the unit the site shows as у.е.
2. Offer details: fetch specific offers
Paste OLX offer links or numeric offer IDs. A link uses its own country, and an ID uses the Market setting.
Get the same fields as search, plus inputUrl, the link or ID you pasted, so you can match each row to your list. Here priceLabel shows the seller's own currency, and convertedPrice and sponsoredSlot stay empty.
| Option | Field | Default | What it does |
|---|---|---|---|
| Offer URLs or IDs | offerUrls | Offer links or bare numeric IDs | |
| Reveal phone numbers | includePhone | off | Look up the seller's number |
| Max results | maxItems | 100 | 0 means no limit |
Input
{"mode": "detail","market": "pl","offerUrls": ["https://www.olx.pl/d/oferta/jak-nowy-iphone-13-128gb-2-lata-gwarancji-rozne-kolory-CID99-ID14FiGI.html","1071736548"],"includePhone": true}
Output (one real row, selected fields)
{"id": 985081464,"inputUrl": "https://www.olx.pl/d/oferta/jak-nowy-iphone-13-128gb-2-lata-gwarancji-rozne-kolory-CID99-ID14FiGI.html","url": "https://www.olx.pl/d/oferta/jak-nowy-iphone-13-128gb-2-lata-gwarancji-rozne-kolory-CID99-ID14FiGI.html","title": "JAK NOWY | IPHONE 13 128GB | 2 lata gwarancji! | Różne kolory","price": 999,"priceLabel": "999 zł","currency": "PLN","condition": "used","city": "Tychy","region": "Śląskie","sellerName": "LUXTRADE STORE Tychy","sellerSince": "2017-07-11T16:11:47+02:00","phoneStatus": "revealed","photoCount": 7,"market": "pl"}
An offer that has left the site delivers no row and is not charged. The run says how many were not found.
Use it from an AI agent (Claude, ChatGPT, MCP)
Connect Claude, ChatGPT, Cursor or any MCP client to Apify's MCP server with this scraper as a tool:
https://mcp.apify.com?tools=sourabhbgp/olx-scraper
Then ask in plain words. The agent fills in the input, and you pay the same per result. For example:
- "Find used iPhone 13 offers in Poland between 800 and 2,000 zł."
- "What do sellers ask for flats in this OLX Romania search?" (with a link)
- "List offers for bicycles in Portugal posted since Monday."
- "Get the details of these three OLX offers."
Notes for the agent:
| Question | Mode | Minimum input |
|---|---|---|
| Offers for a keyword | search | market, query |
| Offers in a category or place | search | market, categoryId or regionId or cityId |
| Results of an OLX link | search | startUrls |
| New offers since a date | search | market, query, postedAfter |
| Specific offers | detail | offerUrls |
- Keep the cost small: $2 per 1,000 rows, so set
maxItemsto what the question needs (20 to 100 for a quick answer). Each phone lookup withincludePhonemakes a run slower, so leave it off unless numbers are needed. - Dates:
postedAftertakesYYYY-MM-DD, or a full time such as2026-11-01T08:00:00Z. A date alone means midnight UTC. It forces newest-first order. - IDs and links:
offerUrlstakes offer links or numeric IDs, never a search link. Search links go instartUrls, and an offer link there is refused. Numeric category and region IDs differ per market: read them from any result row, or use a link. - Filters that a category refuses:
conditionis not available on every category, such as cars on OLX Poland. OLX rejects the search and the run explains it, so retry withoutcondition. - Keywords:
queryalso matches ad descriptions, so addcategoryIdor use a link when the question is about one kind of item, above all withpostedAfter. - Key output fields:
priceis incurrency, as the seller set it.priceTypesays what kind of price it is, andprice: 0on a free or exchange offer is not a real price.phonesis null unlessphoneStatusisrevealed:withheldmeans OLX refused to give the number, andfailedmeans our lookup did not get through.no_phonemeans the offer lists no number,not_availablemeans the site gives no numbers (OLX India),not_triedmeans the run ran out of time, andoffer_gonemeans the offer left the site. On OLX India,hasPhoneis true where the site offers a call and null otherwise, and always null on search rows.hasPhonetrue does not promise a number.latandlonare approximate unlessmapShowDetailedis true. - Reading the result: the status message starts with a code when a run ends short:
[U_...]means the input,[E_...]means our side, except[E_PAGE_CEILING], which means OLX stopped serving the search. TheRUN_SUMMARYrecord in the run's key-value store has the totals and, fordetailorstartUrls, each input's outcome. - Time: 15 offers take about 10 seconds; a full search of about 1,300 offers takes about 5 minutes. OLX India reads about 3 to 4 offers a second, so a full 10,000 takes about 45 minutes. A pasted link can add a minute or more. Phone lookups add about a second per offer.
What people use it for
- 🛒 Price research: track asking prices for a product or brand across a whole country.
- 🚗 Car and property data: pull mileage, year, area, rooms and location at scale.
- 💼 Job market research: compare pay ranges by role and city.
- 🧲 Lead generation: collect business sellers in a category or region.
- 📈 Resellers: spot underpriced offers as they appear, with a daily run.
- 🗺️ Local market analysis: map supply and pricing by city, district or region.
How much does it cost?
You pay per row, and each row is charged once per run. The price is the same in both modes and with phone lookups.
| What you get | Per 1,000 |
|---|---|
| One offer | $2.00 |
Each run also costs $0.01 to start.
- Free plan: your $5 monthly credit covers about 2,500 rows.
- Starter plan ($19): about 9,500 rows a month.
Limitations
- About 1,300 offers per search, or 10,000 on OLX India: OLX stops serving a search there, however many matches it reports. The run says so. To reach more, split the search by category, region or price.
- Phone numbers are often not available: OLX refuses the lookup on many offers, most of them in some countries, and
phoneStatusshows which. - Location is usually approximate: OLX places most offers near a city or district, not at the exact address.
- Newest first follows refresh dates: OLX moves refreshed offers up, so an old offer can appear near the top.
- Sponsored offers: OLX mixes them into most pages, as on the website. They count towards
maxItems, andsponsoredSlotmarks them. - Kazakh and Uzbek links: rows from OLX Kazakhstan and Uzbekistan carry Russian
paramslabels, even from a link in another language. - OLX India gives less: no phone numbers, no new or used filter, and no negotiable, delivery or chat fields, so those columns stay empty. With
includePhoneon,phoneStatusisnot_available. Relevance gives the same order as Newest first, andcreatedTimeis the first-posted date, while the site shows the last refresh date. Deep pages of a keyword and city search can include a few nearby cities. - Other OLX countries are not covered: only the eight sites listed above.
FAQ
How do I scrape OLX without coding?
Pick a mode, enter a keyword or paste a link, and press Start. Download the results as Excel, CSV or JSON.
How do I get only new listings every day?
Run a search with Posted after set to the date of your last run. You get only the offers created since then. A schedule repeats the same input, so update the date before each run, for example through the Apify API. An offer that falls inside two runs' dates is charged in both.
Can I get more than 1,300 offers?
Yes, across several searches. Split by category, region or price band, then paste the links into OLX search URLs. An offer found twice in one run is charged once.
Do I need a proxy or an OLX account?
No. It works out of the box, and it doesn't log in.
Can I use it from code or an AI agent?
Yes. Call it through the Apify API, or connect it to an AI agent through Apify's MCP server (see above).
Is scraping OLX legal?
It collects only what OLX shows any visitor, with no login. How you use the data is your responsibility, especially personal data such as names and phone numbers.
Your feedback
Something missing or wrong? Open an issue.