OLX Poland Scraper & New-Listing Monitor (OLX.pl)
Pricing
from $0.90 / 1,000 listing returneds
OLX Poland Scraper & New-Listing Monitor (OLX.pl)
OLX.pl scraper for resellers, deal hunters and price trackers: listings by search term, category, city or pasted OLX.pl URL with price, condition, location, dates, photos and business/private seller. Watch mode returns only listings created since your last check, and price drops.
Pricing
from $0.90 / 1,000 listing returneds
Rating
0.0
(0)
Developer
NeverEmpty
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
7 days ago
Last modified
Categories
Share
This OLX.pl scraper returns listings from OLX Poland as clean JSON, CSV or Excel rows: search by words, category, city or voivodeship, price range, condition and private/business seller, or paste any OLX.pl search address. It also works as an OLX new-listing alert: run it on a schedule in watch mode and each run returns only the listings created since your last check, plus price drops.
No login, no cookies, no API key needed. One row per listing with price in PLN, condition, city, district and voivodeship, created and refreshed time, all photos, category attributes and a business-or-private flag.
What you can do with it
- Deal alerts on OLX.pl: watch "iphone 13" in Warszawa under 2,000 zł, or a whole category, every 10 minutes and get only listings that are really new. Old listings that a seller pushes back to the top are not sent again as new.
- Reselling and sourcing: pull up to 1,000 listings per search with price, condition and photos into a sheet, a database or a Telegram/Slack bot.
- Price tracking: watch mode returns a
price-droprow with the previous price and the difference. Every row also carries the earlier price OLX.pl itself shows when a seller lowered it (previousPriceShown). - Market research: how many listings OLX.pl shows for a search (
listingsInSearch), price spread, condition mix, and how many sellers are businesses.
Why this one
- Search exactly like the site: categories and cities are turned into OLX.pl's own IDs, and a pasted search address is translated to the same request the OLX.pl page makes (checked against the page's own data). Price, condition and seller filters are applied by OLX.pl, so every page you pay for is in range.
- Honest "new": new means created after your watch started, using the listing's creation time, not "appeared near the top".
- No silent surprises: when OLX.pl finds nothing for your words it shows unrelated listings instead; this Actor recognises that and returns a free
no-resultsrow rather than selling them. An unknown category or city, or a filter OLX.pl refuses, also comes back as a free row that says why. - Every row says whether its title names what you searched (
queryInTitle), andrequireWordsInTitlekeeps only those. - Private sellers stay private: no seller names, user IDs or phone numbers. For businesses, the public business name is included.
Input
| Field | What it does |
|---|---|
searchQueries | Search words, one per line (iphone 13, rower szosowy, kanapa). |
categories | OLX.pl category path from the address: elektronika/telefony, motoryzacja/samochody, sport-hobby/rowery. |
locations | City or voivodeship: warszawa, Kraków, gdansk, mazowieckie. |
searchUrls | Or paste an OLX.pl search address, such as https://www.olx.pl/elektronika/telefony/warszawa/q-iphone-13/?search[filter_float_price:to]=2000. Its category, place, words, price range, condition, seller type and sort order are kept, so you get the same results as on the page (no sort order in the address means OLX.pl's default order). |
minPrice / maxPrice | Price range in PLN, applied by OLX.pl. |
condition | any, new, used, almost-new, refurbished, damaged. |
sellerType | any, private or business. |
sort | newest (default), relevance, price-asc, price-desc, for searches built from the fields above. |
maxResultsPerSearch | Listings per search, 1 to 1,000 (default 40). |
requireWordsInTitle | Only listings whose title contains every search word. |
includePromoted | Also return OLX.pl's paid promoted listings (about 12 per page, outside the sort order). Off by default. |
onlyNew | Watch mode (below). |
includePriceDrops, watchPages, watchName, resetMonitoringState | Watch mode settings. |
Each search word is combined with each category and each location; up to 10 searches per run.
Example: { "searchQueries": ["iphone 13"], "maxResultsPerSearch": 40, "requireWordsInTitle": true } (only listings whose title names every search word). Add "locations": ["warszawa"], "maxPrice": 2000, "condition": "used" to narrow it.
Output
| Field | Meaning |
|---|---|
listingId, url, title | OLX.pl listing ID, link and title. |
price, currency, priceType, priceLabel, negotiable | Price in PLN. priceType is OLX.pl's own word: price, arranged (negotiable), free (price 0), exchange (swap, price null). |
previousPriceShown | The earlier price OLX.pl shows next to a lowered price. |
condition, conditionLabel | new, used, … and the Polish label (Nowe, Używane). |
description | Listing text as plain text (emails and phone numbers removed). |
city, district, region | Location (region is the voivodeship). |
categoryId, categoryType | OLX.pl category of the listing. |
createdAt, refreshedAt, validTo | When the listing was created, last refreshed by the seller, and when it expires. |
imageUrl, imageUrls, photoCount | Photos, full size. |
attributes | Category fields such as model, memory, size, brand, as shown on OLX.pl. |
isBusiness, businessName | Business or private seller; the public business name for businesses only. |
olxDelivery | true when the listing offers OLX delivery (Przesyłka OLX). |
isPromoted, queryInTitle | Paid promoted slot; title contains all search words. |
positionInSearch, listingsInSearch | Position in the results and the total OLX.pl shows. |
changeType, previousPrice, priceChange | Watch mode: new or price-drop, with the remembered price and the difference. |
searchQuery, searchCategory, searchCategoryId, searchLocation, searchUrl, watchName, checkedAt | Which search the row came from. |
In the pages read while building this Actor (283 listings, 9 pages, October 2026), 98% had a price and a condition, 100% had a city and photos, 63% a district, 35% came from businesses and 75% offered OLX delivery.
Watch mode: new OLX.pl listings only
Turn on onlyNew and schedule the run (every 5 to 60 minutes is typical).
- First run: remembers what is listed now and returns nothing. It is free: no rows, no charge.
- Every later run returns:
new: a listing created after the newest listing your first check saw, that you have not received yet. A listing that a seller refreshes or promotes back to the top keeps its old creation time and is not called new.price-drop: a listing seen before whose price went down, withpreviousPriceandpriceChange. Price rises are remembered, not returned.
- A check that finds nothing returns one free
no-new-listingsrow and is charged as one smallsearch-checkedevent.
Watch mode always reads newest first and stops once it reaches listings older than the previous check (with a 30-minute overlap, because OLX.pl adds new listings to its search results a few minutes after they are created). Listings that could not be returned because of your run's maximum charge are not marked as delivered; the next run returns them. Use watchName to keep separate watches for the same search.
Rows that explain instead of data (never charged)
no-results, not-found (unknown category or place, a filter OLX.pl refused, or an answer for a different search), watch-started, no-new-listings, watch-coverage, incomplete (a later page could not be read), blocked (OLX.pl showed a check page; this Actor does not solve it), unreadable, not-allowed-by-robots-txt, bad-input, budget-reached, more-not-returned. Each has a note that says what happened.
FAQ
Is there an OLX Poland API I can use instead of writing a scraper? This Actor is that API: send a search (words, category, city, price, condition) and get JSON rows back, or call it from the Apify API, Make, Zapier or n8n on a schedule.
How do I get alerts for new OLX.pl listings? Run it in watch mode on a schedule and connect the dataset to email, Slack, Telegram or a webhook. Each run returns only listings created since the last check.
Can I scrape a whole OLX.pl category or city?
Yes. Leave searchQueries empty and set categories and/or locations. OLX.pl serves up to 1,000 listings per search, so split very large categories by city or price range.
Does it return seller phone numbers?
No. This Actor returns no personal data of private sellers, and phone numbers or emails written into titles and descriptions are replaced with [phone removed] / [email removed].
Good to know
- OLX.pl serves at most 1,000 listings per search (25 pages of 40). For more, split by city, voivodeship or price range.
- OLX.pl's search also matches listing descriptions and close words, so not every result names your words in its title; use
queryInTitleorrequireWordsInTitle. newestis OLX.pl's newest-first order, which also moves refreshed listings up;createdAttells you which ones are really new.- OLX.pl shows a new listing in its search results roughly 10 to 15 minutes after it is created (measured October 2026), so a watch sees it from then on.
- Price drops are seen for listings on the pages a watch reads (newest first).
- Pasted addresses with filters this Actor cannot pass on (for example
search[photos]) are refused with a message instead of being silently dropped. Districts in the path are not supported; use the city. - Unofficial: this Actor is not affiliated with OLX Group. It reads public search results only, and checks OLX.pl's robots.txt on every run.
Thanks for using this Actor
We build these tools for people who run them every day, and we improve them from what users tell us.
- Missing a field, or need another filter? Tell us in the Issues tab. If the data is there, we add it.
- Found a bug or a wrong value? Post the run ID in the Issues tab. Wrong data is the thing we fix first.
If this Actor saved you time, a short review helps other people find it.