OLX logo

Marketplaces · Live on Apify

OLX Scraper for Seven Countries

Search OLX by keyword or paste an OLX results link. Get one clean row per ad, with price, place and details. It works on seven OLX country sites.

About $0.71 for 1,000 listings$0.0007 per listing + $0.01 per run. Apify bills you, not us.One listing in a run of its own: about $0.01.Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed.

Run it on Apify Opens apify.com, the website where our tools run. Sign up free with Google or email, no card needed.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure

What you get, for example

urlhttps://www.olx.pl/d/oferta/szklo-hartowane-na-obiektyw-3mk-apple-ipho…
titleSzkło hartowane na obiektyw 3MK Apple iPhone 15 Plus
descriptionLens Protection Pro to szkło ochronne na obiektyw aparatu iPhone'a…

How to use it: 3 steps

  1. Make a free Apify accountApify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
  2. Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example: iphone in Search keywords. Each start is one run.
  3. Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.

What it does

OLX Listings Scraper collects public listings from OLX in Poland, Ukraine, Kazakhstan, Portugal, Romania, Bulgaria and Uzbekistan by keyword, city, price or a pasted OLX category URL, and returns one clean row per listing with price, location, category, parameters, dates, photos and seller type.

  • Keywords (queries): one OLX search per keyword on the site you choose in country. You can limit keyword searches by city.
  • OLX URLs (categoryUrls): paste any OLX results page. The category, city and filters from the page are kept.

Good for

  • Track prices of used phones, laptops or cars in one or more countries.
  • Build a list of apartments or cars in one city with price, area, year and mileage.
  • Watch a search on a schedule and get only listings that appeared since the last run.

Not a good fit

  • OLX Brazil (olx.com.br), OLX India and other non-listed OLX sites are not supported.
  • No phone numbers, e-mails or names of private sellers. The Actor does not log in and does not open single listing pages.
  • OLX shows at most about 1,000 listings per search. To get more, split the search by city, category or price range.

Who uses it

Resellers

Find cheap phones, laptops or cars and check prices fast.

Real estate researchers

List flats in one city with price and area.

Market analysts

Compare prices of the same item in several countries.

Price

Pay per event: you pay for each result the tool saves, plus a small start fee for each run. The price includes Apify platform costs. Apify bills you, not us. Prices below are for the Apify free plan.

What you pay forPriceWhen
Start fee$0.01Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more.
Saved listing$0.0007 (from $0.0006 on paid Apify plans)One OLX listing saved to the default Dataset. A listing found by two searches in the same run is saved and charged once.

Examples

  • One listing: about $0.01.
  • 1,000 listings: about $0.71.
  • Every day 100 listings, for 30 days: about $2.40 a month.

Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed. That is enough for about 7,000 listings.

Prices checked on 24 October 2026. See the current price on Apify.

Questions

Which OLX sites can I use?

Poland, Ukraine, Kazakhstan, Portugal, Romania, Bulgaria and Uzbekistan. OLX Brazil and India are not supported.

Do I need a proxy or an OLX login?

No. The tool reads public search pages. If a request is blocked, it retries with Apify Proxy. The proxy is in the price.

Why do some ads have no price?

The seller wants an exchange or gave no price. Free items show a price of 0.

Can I get seller names and phones?

No phones or emails. A seller name is shown only for business sellers.

Why is price null for some listings?

The listing has no numeric price: it is for exchange (priceType: exchange) or the seller did not give a price. Free listings have price: 0.

Are the results complete and fresh?

Each row is what OLX showed at fetchedAt. OLX limits a search to about 1,000 listings, and paid listings can appear in several places. The Actor saves each listing once per run.

Can I search OLX Brazil or India?

No. Only olx.pl, olx.ua, olx.kz, olx.pt, olx.ro, olx.bg and olx.uz are supported.

Details

Step by step on Apify
  1. Open the Input tab.
  2. Keep Country = pl and Search keywords = iphone (the form prefill), or add your own keyword.
  3. Keep Max listings per search = 20 (prefill) for a first test.
  4. Click Start.
  5. Open the Output tab → Listings and check title, price and city.
Use cases
TaskInputYou getKey fieldsNext step
Resell phones and electronicsqueries, priceMaxlistingprice, params, postedAt, urlGoogle Sheets or CSV
Car market analysiscategoryUrls (cars category)listingprice, params (year, mileage, fuel), cityBI tool via API
Real estate in one citycategoryUrls or queries + citylistingprice, params (area, rooms), district, latitudemap or spreadsheet
Price comparison across countriessame keyword, different countrylistingprice, currency, countryDataset export
New listing alertsonlyNew on a schedulenew listingtitle, price, url, isNewwebhook, Slack or e-mail
Tips for better results
  • OLX shows about 1,000 ads per search. Split big searches by city, category or price.
  • Paste an OLX category URL to keep the filters you set on the site.
  • Schedule the run with only-new mode to get new ads as alerts.
Limits and good to know
  • At most about 1,000 listings per search (OLX limit). RUN_SUMMARY.searches[].totalAvailable shows how many OLX reports
  • Up to 50 keywords and URLs per run, of them at most 10 URLs (each URL search first loads the OLX page to read its filters). 5 searches × 1,000 listings (5,000 rows) were tested in one run
  • The run stops new requests shortly before its timeout and keeps saved rows (PARTIAL, TIME_LIMIT). The default timeout is 300 s; raise it for large runs
  • Search relevance is OLX's own: a keyword can return related items (for example cases and glass for iphone). Use priceMin or a category URL to narrow
  • OLX blurs coordinates: latitude and longitude are approximate

For developers

Sample result

One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.

one result · JSON
{
  "id": 1009568339,
  "url": "https://www.olx.pl/d/oferta/szklo-hartowane-na-obiektyw-3mk-apple-iphone-15-plus-CID99-ID16k2Qj.html",
  "title": "Szkło hartowane na obiektyw 3MK  Apple iPhone 15 Plus",
  "description": "Lens Protection Pro to szkło ochronne na obiektyw aparatu iPhone'a, które odznacza się naj…",
  "price": 25,
  "priceLabel": "25 zł",
  "currency": "PLN",
  "priceType": "price",
  "negotiable": false,
  "previousPrice": null,
  "priceConverted": null,
  "convertedCurrency": null,
  "city": "Kraków",
  "cityId": 8959,
  "district": "Mistrzejowice",
  "region": "Małopolskie",
  "regionId": 4,
  "latitude": 50.09557,
  "longitude": 20.00366,
  "locationRadiusKm": 7,
  "categoryId": 2911,
  "category": "Folie i szkła ochronne",
  "categoryPath": "Elektronika > Telefony > Akcesoria > Folie i szkła ochronne",
  "categoryType": "electronics",
  "params": { "state": "Nowe", "type": "Szkło hartowane" },
  "paramsDetailed": [{ "key": "state", "name": "Stan", "value": "Nowe", "valueKey": "new" }],
  "postedAt": "2025-06-21T16:36:04+02:00",
  "refreshedAt": "2026-10-14T16:23:01+02:00",
  "pushedUpAt": null,
  "validTo": "2026-11-13T15:36:05+01:00",
  "photos": ["https://ireland.apollo.olxcdn.com/v1/files/tz6bc091m3xh2-PL/image;s=750x1000"],
  "photoCount": 1,
  "sellerType": "private",
  "sellerName": null,
  "sellerSince": "2016-01-24T18:22:06+01:00",
  "isPromoted": false,
  "isHighlighted": false,
  "isUrgent": false,
  "hasDelivery": true,
  "offerType": "offer",
  "status": "active",
  "country": "pl",
  "domain": "www.olx.pl",
  "search": "iphone",
  "searchUrl": "https://www.olx.pl/api/v1/offers/?offset=0&limit=40&query=iphone&sort_by=created_at%3Adesc",
  "position": 4,
  "isNew": null,
  "source": "olx",
  "fetchedAt": "2026-10-14T14:26:33.531Z"
}

Use it from code

Actor ID: cliqtomedia/olx-listings-scraper. You need your Apify API token from Apify Console → Settings → API & Integrations.

Python · apify-client
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/olx-listings-scraper").call(run_input={
    "country": "pl",
    "queries": [
        "iphone"
    ]
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
cURL
curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~olx-listings-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"country": "pl", "queries": ["iphone"]}'
LangChain · langchain-apify
# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool

tool = ApifyActorsTool("cliqtomedia/olx-listings-scraper")
result = tool.invoke({"run_input": {"country": "pl", "queries": ["iphone"]}})
print(result)

The cURL call waits for the results, up to 300 seconds. For longer runs, start a run (/runs) and get the results with a webhook or by checking the run. Apify API docs. LlamaIndex, MCP for AI agents and the JavaScript client: AI agents & MCP.

Data fields (40)
FieldTypeMeaning
idintegerOLX listing id.
urlstringListing page URL.
titlestringListing title.
descriptionstringDescription as plain text; null when includeDescription is off.
pricenumberAsking price as a number in currency. 0 = free. null = no numeric price (exchange or not given).
priceLabelstringPrice as shown on OLX, e.g. "1 199 zł" or "Za darmo".
currencystringPrice currency, e.g. PLN, UAH, KZT, EUR, RON, BGN, UZS; null when price is null.
priceTypestringprice, arranged (negotiable asking price), free or exchange.
negotiablebooleantrue if the seller marked the price as negotiable.
previousPricenumberEarlier price when the seller lowered it; null otherwise.
priceConvertednumberPrice converted by OLX to a second currency when OLX shows one; null otherwise.
convertedCurrencystringCurrency of priceConverted.
citystringCity name.
cityIdintegerOLX city id.
districtstringDistrict, when the seller gave one.
regionstringRegion (voivodeship, oblast, district) name.
regionIdintegerOLX region id.
latitudenumberApproximate latitude (OLX blurs the location within locationRadiusKm).
longitudenumberApproximate longitude.
locationRadiusKmnumberBlur radius of the coordinates in km.
categoryIdintegerOLX category id.
categorystringLeaf category name, e.g. iPhone or BMW.
categoryPathstringFull category path, e.g. Motoryzacja > Samochody osobowe > BMW.
categoryTypestringOLX vertical: goods, automotive, real_estate, electronics, job and others.
paramsobjectListing parameters as key → value, e.g. model, year, milage, petrol, m (area), rooms.
paramsDetailedarraySame parameters with display name, value and machine value key.
postedAtstringWhen the listing was created (ISO 8601 with offset).
refreshedAtstringLast refresh or bump time.
pushedUpAtstringLast paid push-up time; null if never.
validTostringWhen the listing expires.
photosarrayPhoto URLs in original size.
photoCountintegerNumber of photos.
sellerTypestringprivate or business.
sellerIdintegerOLX seller id (to group listings by seller).
sellerNamestringBusiness seller name; always null for private sellers.
sellerSincestringWhen the seller account was created.
isPromotedbooleantrue for paid listings: promoted slots and OLX TOP ads shown among the results.
isHighlightedbooleanPaid highlight flag.
isUrgentbooleanPaid urgent flag.
hasDeliverybooleantrue if OLX delivery is available.
Input settings (11)

The main fields of the input form. With the API you send them as JSON.

SettingName in the APITypeExample value
Country (OLX site)countrystring"pl"
Search keywordsqueriesarray["iphone"]
OLX category or search URLscategoryUrlsarray
City (for keyword searches)citystring
Minimum pricepriceMininteger
Maximum pricepriceMaxinteger
Sort bysortBystring"newest"
Max listings per searchmaxItemsinteger20
Only new listings since the last runonlyNewbooleanfalse
Include description textincludeDescriptionbooleantrue
Include promoted listingsincludePromotedbooleantrue

Start on Apify

Make a free Apify account: you get $5 of free usage every month. Missing a tool? Suggest it. We read every idea, but we do not promise to build it.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure