OLX Poland Classifieds Scraper
Pricing
from $0.60 / 1,000 result extracteds
OLX Poland Classifieds Scraper
Scrape listings from OLX.pl — Poland's largest classifieds marketplace. Extract titles, prices, locations, images, and attributes from any category.
Pricing
from $0.60 / 1,000 result extracteds
Rating
0.0
(0)
Developer
Automation Lab
Maintained by CommunityActor stats
2
Bookmarked
58
Total users
9
Monthly active users
11 days ago
Last modified
Categories
Share
OLX Poland Classifieds Scraper 🇵🇱
Extract listings from OLX.pl — Poland's largest classifieds marketplace — without writing a single line of code. Scrape cars, real estate, electronics, jobs, furniture, and more from any category or keyword search.
What does it do?
OLX Poland Classifieds Scraper uses the OLX.pl public JSON API to collect structured listing data from any category, region, or keyword search. You provide one or more OLX.pl URLs (category pages, search results) or a search query, and the actor returns clean, structured data ready for export to spreadsheets, databases, or downstream integrations.
Each result includes the listing title, price (numeric + formatted label), seller type, location (city, region, GPS coordinates), all listing photos, category-specific attributes (e.g. mileage for cars, floor for apartments), promotion flags, and timestamps — everything visible on the OLX.pl listing card.
Who is it for?
- 🚗 Car dealerships and auto traders monitoring the used-car market in Poland — track prices, availability, and competitor listings
- 🏠 Real estate analysts and property investors tracking apartment and house prices across Polish cities
- 🛒 E-commerce entrepreneurs sourcing wholesale products, monitoring competitor prices on electronics, clothing, and household goods
- 📊 Market researchers and data analysts building price indices or demand datasets for the Polish classifieds market
- 🤖 Developers and data engineers building price comparison tools, lead generation pipelines, or inventory trackers powered by OLX.pl data
Why use OLX Poland Classifieds Scraper?
OLX.pl hosts millions of active listings across dozens of categories and is one of the most visited websites in Poland. The platform doesn't offer a public data export, and manually copying listings is impractical at scale. This actor:
- ✅ Returns structured JSON instead of raw HTML — every field is typed and cleaned
- ✅ Handles pagination automatically — extract up to 1,000 results per search
- ✅ Supports all OLX.pl categories — cars, real estate, jobs, electronics, fashion, pets, and more
- ✅ Accepts direct OLX.pl result URLs — category, city, keyword, price, condition, distance, and other OLX-applied filters stay attached to the scrape
- ✅ Extracts all listing attributes — category-specific params like mileage, fuel type, floor, and number of rooms
- ✅ Provides GPS coordinates — map each listing to an exact location
- ✅ Uses efficient HTTP requests with no browser overhead — fast and cost-effective
Data you can extract
| Field | Type | Description |
|---|---|---|
id | number | Unique OLX listing ID |
title | string | Full listing title |
description | string | Listing description (plain text) |
price | number | Numeric price in PLN |
currency | string | Currency (PLN) |
priceLabel | string | Formatted price (e.g. "114 900 zł") |
negotiable | boolean | Whether the price is negotiable |
priceArranged | boolean | Whether price is "do uzgodnienia" (TBD) |
city | string | City where the listing is located |
region | string | Polish province/region |
latitude | number | GPS latitude |
longitude | number | GPS longitude |
categoryId | number | OLX category ID |
categoryType | string | Category type (e.g. automotive, real_estate) |
condition | string | Item condition (Nowe / Używane) |
sellerName | string | Seller display name |
isBusiness | boolean | True if posted by a business |
photos | array | Image URLs (800×600 resolution) |
params | object | Category-specific attributes (mileage, fuel, floor, etc.) |
isHighlighted | boolean | Whether the ad is highlighted (promoted) |
isUrgent | boolean | Whether the ad is marked Urgent |
isTopAd | boolean | Whether the ad is a Top Ad |
createdTime | string | ISO 8601 creation timestamp |
lastRefreshTime | string | ISO 8601 last refresh timestamp |
validToTime | string | ISO 8601 expiry timestamp |
url | string | Direct URL to the listing on OLX.pl |
How much does it cost to scrape OLX Poland listings?
The actor uses pay-per-result (PPE) pricing. You only pay for the listings you extract.
| Volume | Approximate cost |
|---|---|
| 100 listings | ~$0.10 |
| 500 listings | ~$0.50 |
| 1,000 listings | ~$1.00 |
The FREE plan on Apify includes $5 of usage per month — enough for approximately 5,000 listings at no charge. Most users run this actor as part of a scheduled workflow and stay comfortably within the free tier.
Costs are always billed at the per-result rate listed in the actor pricing section. The start event ($0.005) covers infrastructure setup per run regardless of result count.
How to scrape OLX Poland listings (step by step)
- Open the actor on Apify and click Try for free (no credit card required for the free tier).
- Paste a public OLX.pl category or search-results URL into the Start URLs field. Keep the city and filters in the URL—for example,
https://www.olx.pl/motoryzacja/samochody/warszawa/for Warsaw cars orhttps://www.olx.pl/oferty/q-laptop/?search%5Bfilter_float_price%3Ato%5D=2000for laptops up to PLN 2,000. - Alternatively, type a search keyword into the Search query field (e.g.,
laptop,sofa,iPhone). - (Optional) Set a Category ID to narrow results to a specific subcategory, or a Region ID to filter by Polish province.
- Choose your sort order — newest first, recently refreshed, or by price.
- Set Max results (up to 1,000 per run).
- Click Start and wait a few seconds for results.
- Download your data as JSON, CSV, Excel, or HTML from the dataset view.
Input parameters
🔍 What to scrape
| Parameter | Type | Default | Description |
|---|---|---|---|
startUrls | array | — | Public OLX.pl category or search-results URLs; OLX-applied location and search[...] filters are preserved |
searchQuery | string | — | Keyword search (used when no startUrls provided) |
categoryId | integer | — | OLX category ID for direct filtering |
regionId | integer | — | OLX region ID for geographic filtering |
⚙️ Limits & settings
| Parameter | Type | Default | Description |
|---|---|---|---|
sortBy | select | created_at:desc | Newest / Refreshed / Price ascending / Price descending |
maxResults | integer | 100 | Maximum listings to return (1–1,000) |
maxRequestRetries | integer | 3 | Retry attempts for failed HTTP requests |
Common OLX category IDs:
| Category | URL slug | ID |
|---|---|---|
| All Motors | motoryzacja | 5 |
| Cars & Motorcycles | motoryzacja/samochody | 658 |
| Real Estate (all) | nieruchomosci | 3 |
| Apartments | nieruchomosci/mieszkania | 14 |
| Houses | nieruchomosci/domy | 15 |
| Electronics | elektronika | 6 |
| Home & Garden | dom-ogrod | 4 |
| Fashion | moda | 87 |
| Sport & Hobby | sport-hobby | 10 |
| Animals | zwierzeta | 20 |
Polish region IDs:
| Region | ID |
|---|---|
| Dolnośląskie | 2 |
| Kujawsko-Pomorskie | 15 |
| Lubelskie | 6 |
| Łódzkie | 9 |
| Małopolskie | 10 |
| Mazowieckie | 11 |
| Podkarpackie | 14 |
| Pomorskie | 5 |
| Śląskie | 17 |
| Wielkopolskie | 7 |
Output format
Each listing is stored as a JSON object in the default dataset. Example output for a car listing:
{"id": 1072603156,"url": "https://www.olx.pl/d/oferta/volvo-xc-60-CID5-ID1aAx4U.html","title": "Volvo XC 60 FULLED B4D Pakiet Czerń Kamera Virtual Panorama","description": "Witaj w firmie NEDERLAND AUTO. Rok 2024. Bezwypadkowy 100%. Przebieg autentyczny.","price": 219900,"currency": "PLN","priceLabel": "219 900 zł","negotiable": false,"priceArranged": false,"city": "Warszawa","region": "Mazowieckie","latitude": 52.2297,"longitude": 21.0122,"categoryId": 1383,"categoryType": "automotive","condition": "Używane","sellerName": "NEDERLAND AUTO","isBusiness": true,"photos": ["https://ireland.apollo.olxcdn.com:443/v1/files/abc123-PL/image;s=800x600"],"params": {"year": "2024","engine_capacity": "2000 cm3","fuel_type": "Diesel","mileage": "35000 km","color": "Czarny","car_type": "SUV"},"isHighlighted": true,"isUrgent": false,"isTopAd": true,"createdTime": "2026-05-11T18:22:53+02:00","lastRefreshTime": "2026-05-11T18:22:53+02:00","validToTime": "2026-06-10T18:21:40+02:00"}
Tips for getting the best results
- 🔗 Paste filtered OLX result URLs directly — the Actor resolves the same category, keyword, city/region, price, condition, distance, and other filters that OLX applies to that page
- ⚠️ Use category/search pages, not individual ads — invalid pages or filters that OLX itself does not apply fail clearly instead of returning broader, unrelated results
- 📂 Use Category IDs for precise filtering — look up the category ID from the table in this README for any OLX subcategory
- 📍 Combine region filter with keyword — e.g., search for "mieszkanie" with
regionId: 11(Mazowieckie) to get Warsaw apartments - 📄 OLX caps results at 1,000 per search — to get more than 1,000 listings from a large category, split your scrape by region or price range
- 🔄 Schedule runs daily or weekly to track price changes over time using Apify's scheduler
- 💰 Use price:asc sort to find the cheapest listings first — great for bargain hunters
- 🏷️ Filter promoted vs organic in post-processing using the
isHighlighted,isUrgent, andisTopAdfields
Integrations
Export scraped data to spreadsheets: Connect the actor to Google Sheets or Airtable via Apify's native integration or Zapier. Every new run automatically appends fresh OLX listings to your spreadsheet.
Build a price alert pipeline: Schedule the actor to run daily, compare prices using Apify's dataset API, and send Slack/email alerts when a listing drops below a target price.
Feed a real estate dashboard: Combine OLX apartment data with a BI tool like Google Looker Studio or Metabase to visualize price trends by city, region, or property type.
Lead generation for B2B: Scrape OLX job listings or business ads to identify companies actively hiring or purchasing in specific categories.
Power a price comparison site: Use the actor as a data source for a consumer-facing price comparison tool for Polish secondhand goods.
API usage
Node.js (Apify client)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('automation-lab/olx-poland-classifieds-scraper').call({startUrls: [{ url: 'https://www.olx.pl/motoryzacja/samochody/' }],maxResults: 100,sortBy: 'created_at:desc',});const dataset = await client.dataset(run.defaultDatasetId).listItems();console.log(dataset.items);
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("automation-lab/olx-poland-classifieds-scraper").call(run_input={"startUrls": [{"url": "https://www.olx.pl/motoryzacja/samochody/"}],"maxResults": 100,"sortBy": "created_at:desc",})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["title"], item.get("priceLabel"))
cURL
# Start the actor runcurl -X POST "https://api.apify.com/v2/acts/automation-lab~olx-poland-classifieds-scraper/runs" \-H "Authorization: Bearer YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"startUrls": [{"url": "https://www.olx.pl/motoryzacja/samochody/"}],"maxResults": 100}'# Fetch results (replace DATASET_ID with the run's defaultDatasetId)curl "https://api.apify.com/v2/datasets/DATASET_ID/items?token=YOUR_API_TOKEN"
Use with Claude Code and AI assistants (MCP)
You can use this actor directly from Claude Code, Claude Desktop, Cursor, or any MCP-compatible AI assistant:
Claude Code (terminal):
$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/olx-poland-classifieds-scraper"
Claude Desktop / Cursor / VS Code — add to your MCP config file:
{"mcpServers": {"apify": {"type": "http","url": "https://mcp.apify.com?tools=automation-lab/olx-poland-classifieds-scraper","headers": { "Authorization": "Bearer YOUR_API_TOKEN" }}}}
Once connected, you can ask your AI assistant:
- "Scrape the 50 newest car listings from OLX Poland and give me a price breakdown"
- "Find all apartments under 500,000 PLN in Kraków on OLX"
- "What's the average price of a used iPhone 14 on OLX Poland today?"
Legality and terms of service
This actor scrapes publicly accessible data from OLX.pl — the same information any visitor can see in their browser. It does not circumvent authentication, scrape private user data, or violate any login-gated content.
Web scraping of publicly available data is generally permissible under Polish and EU law. Users are responsible for complying with OLX.pl's terms of service and applicable data protection regulations (GDPR) when processing personal data such as seller names.
This actor is intended for market research, price analysis, and business intelligence purposes. Do not use it for spam, harassment, or any activity that violates OLX.pl's terms.
FAQ
What categories can I scrape? All publicly visible OLX.pl categories: cars, motorcycles, real estate (buy/rent), electronics, computers, furniture, clothing, sports, animals, agriculture, jobs, and more. See the category ID table above for the most common ones.
Why do I get up to 1,000 results maximum?
OLX.pl's search API limits results to 1,000 per search query. To collect more listings from a large category (e.g., all Polish car listings), split your scrape across multiple searches: by region (use regionId), by price range, or by subcategory.
Do pasted OLX URLs preserve their filters?
Yes. For public category and search-results pages, the Actor uses the category, keyword, city/region, price, condition, distance, and other filter parameters that OLX applies to that page. If OLX drops an unsupported search[...] filter or the URL is an individual ad instead of a results page, the run fails clearly rather than charging for a broader result set.
Why are some listings from unexpected categories?
OLX.pl's search algorithm may return results from all categories when a direct searchQuery is very broad. Use categoryId or a specific filtered Start URL to narrow the result set.
The actor extracted fewer results than I requested — why?
OLX.pl may have fewer active listings than your maxResults limit in that category/query. The actor returns all available results.
Can I get contact details (phone numbers)? OLX.pl hides phone numbers behind a click-to-reveal interaction that requires user authentication. This actor does not extract phone numbers.
I'm getting an error: "Input schema is not valid"
Make sure startUrls entries are objects with a url key: [{ "url": "https://www.olx.pl/..." }], not plain strings.
Related scrapers
- automation-lab/amazon-asin-scraper — Amazon product data for Polish market sellers
- automation-lab/google-maps-lead-finder — Local business leads from Google Maps
Built and maintained by Automation Lab — professional web scraping tools for business intelligence.