OLX Poland Job Listings Scraper
Pricing
from $0.72 / 1,000 item extracteds
OLX Poland Job Listings Scraper
Search OLX Poland public jobs by keyword or exact results URL and export normalized vacancies with employer, location, salary, contract, dates, description, and URL.
Pricing
from $0.72 / 1,000 item extracteds
Rating
0.0
(0)
Developer
Automation Lab
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Build a structured vacancy feed from OLX Poland job listings. Search by Polish job keyword or paste exact OLX.pl jobs result URLs, then export normalized titles, employers, locations, salary ranges, contract details, descriptions, dates, and canonical URLs.
The Actor is designed for recurring recruitment feeds and Polish labor-market monitoring. It covers OLX.pl jobs only; it does not mix listings from other OLX countries or unrelated classified categories.
What does this Actor do?
The Actor queries OLX Poland's public jobs data and writes one normalized vacancy per default-dataset item.
It supports two entry points:
searchQueryfor a nationwide job-keyword search.startUrlsfor exact OLX.pl/praca/result pages, including city and page filters.
For URL searches, the Actor reads OLX's own embedded data request so the selected location and supported filters remain intact. Multiple URLs are processed into one deduplicated feed.
Who is it for?
- Recruiters building sourcing lists for a Polish role or city.
- Staffing agencies comparing vacancy demand between Polish regions.
- Labor-market analysts collecting repeatable job snapshots.
- Data teams feeding vacancy records into a warehouse, spreadsheet, or dashboard.
- Automation teams scheduling newest-first searches and detecting IDs that appeared or changed.
This is a data extractor, not an applicant-tracking system. It does not apply for jobs, contact employers, or maintain change history for you.
Why use this OLX jobs scraper?
- Jobs-only scope prevents unrelated OLX classifieds from entering the feed.
- Exact URL mode preserves OLX location and supported search filters.
- Structured salary bounds, currency, and period avoid parsing one display string.
- Stable OLX IDs and canonical URLs make downstream deduplication straightforward.
- Multi-URL runs deduplicate repeated offers across overlapping searches.
- Fresh Poland residential sessions provide bounded recovery from transient blocks.
- HTTP and JSON extraction keeps memory and runtime below a browser workflow.
What data can I extract?
| Field | Meaning |
|---|---|
jobId | Stable OLX offer ID |
title | Vacancy title |
employer | Public company or advertiser name |
city, region | Public job location |
salaryFrom, salaryTo | Structured compensation bounds when advertised |
salaryCurrency, salaryPeriod, salaryGross | Compensation context |
employmentType | Full-time or part-time label |
contractType | Contract label shown by OLX |
workMode | Workplace mode when provided |
description | Plain-text vacancy description |
publishedAt, refreshedAt, validTo | OLX offer timestamps |
latitude, longitude | Approximate public map coordinates |
isBusiness | Whether OLX marks the advertiser as a business |
attributes | Additional labeled job requirements and benefits |
url | Canonical OLX job URL |
scrapedAt | Extraction timestamp |
Fields that are not present on a source offer are returned as null or omitted from the attributes object.
Getting started
- Open the Actor input page.
- Enter a Polish keyword such as
kierowca,magazynier, orprogramista. - Alternatively, paste one or more public OLX Poland jobs result URLs.
- Set
maxItemsto the maximum number of unique vacancies required. - Keep Newest first for scheduled monitoring, or choose relevance sorting.
- Run the Actor and open the Job listings dataset.
- Export the dataset as JSON, CSV, Excel, XML, or RSS through Apify.
A first test with 10–20 items is recommended before increasing the limit.
Input parameters
| Input | Type | Default | Description |
|---|---|---|---|
searchQuery | string | kierowca prefill | Nationwide Polish job keyword |
startUrls | URL array | empty | Public https://www.olx.pl/praca/ search/category URLs |
maxItems | integer | 100 | Unique jobs to save, from 1 to 1,000 |
sortBy | enum | created_at:desc | Newest-first or relevance ordering |
maxRequestRetries | integer | 3 | Additional fresh proxy sessions after a failed request, from 0 to 5 |
Provide either searchQuery or at least one startUrls entry. When startUrls is present, its OLX-selected keyword, location, category, and filters define the search.
Search by keyword
This input collects up to 20 newest driver vacancies nationwide:
{"searchQuery": "kierowca","maxItems": 20,"sortBy": "created_at:desc"}
Keyword matching follows OLX's own search behavior. The Actor does not broaden, translate, stem, or reinterpret your phrase.
Search by location and OLX filters
Copy a result URL from OLX Poland jobs after choosing the location and filters:
{"startUrls": [{ "url": "https://www.olx.pl/praca/warszawa/q-kierowca/" }],"maxItems": 10}
Only HTTPS OLX.pl jobs search/category URLs under /praca/ are accepted. Individual offer URLs and other countries are rejected with a clear input error.
Monitor several Polish job markets
Use multiple URL searches in one run:
{"startUrls": [{ "url": "https://www.olx.pl/praca/warszawa/q-magazynier/" },{ "url": "https://www.olx.pl/praca/krakow/q-magazynier/" }],"maxItems": 100,"sortBy": "created_at:desc"}
The global limit applies across all URLs. Duplicate OLX IDs are stored once.
Output example
A current result has this shape:
{"jobId": 1097558571,"title": "Pracownik z kat. prawa jazdy C - przesyłki paletowe","employer": "Example transport company","city": "Mysłowice","region": "Śląskie","salaryFrom": 6000,"salaryTo": null,"salaryCurrency": "PLN","salaryPeriod": "monthly","salaryGross": true,"employmentType": "Pełny etat","contractType": "Umowa o pracę","workMode": null,"description": "Public vacancy description...","publishedAt": "2026-09-12T10:00:00+02:00","refreshedAt": "2026-09-13T10:00:00+02:00","validTo": "2026-10-12T10:00:00+02:00","isBusiness": true,"latitude": 50.2,"longitude": 19.1,"url": "https://www.olx.pl/oferta/praca/example-CID4-IDexample.html","source": "olx.pl","scrapedAt": "2026-09-14T10:00:00.000Z","attributes": {"Wymiar pracy": "Pełny etat"}}
The example employer and URL are anonymized. Dataset records contain the corresponding public source values.
How much does it cost to extract OLX Poland job listings?
The Actor uses pay per event:
- Start: $0.005 once per run.
- Item: tiered per saved vacancy. The BRONZE rate is $0.001196 per job; higher account tiers receive the rates displayed in the Actor pricing tab.
At the BRONZE rate, 100 saved jobs cost about $0.125 including the start event, and 1,000 saved jobs cost about $1.201. Apify platform usage is included under pay-per-event pricing. Failed requests and duplicate or rejected records do not create item events.
Always treat the live pricing tab as authoritative if Apify displays an applicable account tier.
Scheduling and change detection
For a recurring feed:
- Sort by newest first.
- Schedule the Actor hourly, daily, or weekly in Apify Console.
- Export
jobId,refreshedAt, and the fields you monitor. - Upsert records in your database by
jobId. - Compare the new ID set and selected field values with the previous snapshot.
The Actor itself returns the current public snapshot. It does not persist historical state or label records as new, changed, or removed.
Integrations
Useful downstream options include:
- Apify schedules for periodic collection.
- Webhooks to start an ETL or notification after a run.
- Google Sheets, Make, Zapier, or n8n for operational workflows.
- Dataset API exports for Python, BI tools, or a data warehouse.
- Stable-ID upserts for a recruitment feed or labor-demand dashboard.
Avoid sending unsolicited messages or making automated employment decisions from scraped data.
Run with the Apify API
Replace YOUR_TOKEN with an Apify API token.
cURL
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~olx-poland-job-listings-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"searchQuery":"kierowca","maxItems":20}'
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/olx-poland-job-listings-scraper').call({searchQuery: 'kierowca',maxItems: 20,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
from apify_client import ApifyClientclient = ApifyClient(token="YOUR_TOKEN")run = client.actor("automation-lab/olx-poland-job-listings-scraper").call(run_input={"searchQuery": "kierowca", "maxItems": 20})items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(items)
For production, keep tokens in secrets or environment variables rather than source code.
Use with Apify MCP
Add the Actor to Claude Code:
claude mcp add --transport http apify \"https://mcp.apify.com?tools=automation-lab/olx-poland-job-listings-scraper"
Claude Desktop, Cursor, and VS Code setup
Use this equivalent MCP configuration in Claude Desktop, Cursor, or VS Code:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=automation-lab/olx-poland-job-listings-scraper"}}}
Example prompts:
- "Find the 20 newest OLX Poland driver jobs and summarize salary ranges by region."
- "Run this OLX Warsaw jobs URL and export title, employer, contract type, and URL."
- "Collect warehouse vacancies in Warsaw and Kraków for my weekly demand dashboard."
Reliability and retries
OLX may block individual proxy identities. Each request uses a coherent Poland residential session. A blocked or transient response rotates to a fresh session, up to maxRequestRetries additional attempts.
The Actor validates status, content type, JSON shape, and jobs category. If retries are exhausted, it fails rather than returning a misleading empty dataset. Start with the default retry value unless a support diagnosis suggests changing it.
Limits
- Source scope is OLX.pl public jobs.
- Other OLX countries are unsupported.
maxItemsis capped at 1,000 per run.- Search behavior and availability follow OLX's current public data.
- Some offers omit salary, employer company name, work mode, or other optional fields.
- Approximate map coordinates should not be treated as exact workplace addresses.
- Deleted or expired offers may disappear between scheduled snapshots.
- URL mode depends on OLX continuing to expose its selected search request in result-page data.
Troubleshooting
The run says I must provide a search.
Set a non-empty searchQuery or add at least one supported /praca/ result URL.
My URL is rejected.
Open a public OLX Poland jobs results page. Do not paste a detail offer, another OLX country, or a general classified category.
The dataset has fewer records than requested.
The source may have fewer matching jobs, overlapping URLs may return duplicates, or OLX may end pagination. maxItems is a ceiling, not a promised count.
The run failed after several OLX requests.
Review the run log for status/content-type evidence. Retry later rather than increasing retries without a bound; persistent source changes may require an Actor update.
Responsible use and legality
This Actor extracts publicly visible job-listing information. You are responsible for complying with OLX terms, applicable copyright/database rights, privacy law, employment law, and your organization's policies.
Collect only the fields you need. Do not use public contact or profile details for spam, harassment, discrimination, or automated decisions about individuals. Respect deletion requests and appropriate retention periods. This documentation is not legal advice.
Related Automation Lab Actors
- OLX Poland Classifieds Scraper for general OLX Poland categories beyond jobs.
- Pracuj.pl Jobs Scraper for a separate Polish vacancy source.
- Remote OK Jobs Feed Scraper for remote-first vacancies from another source.
Each related Actor has its own input, output, and pricing contract. This Actor does not aggregate those sources.
FAQ
Does this Actor require an OLX account?
No. It accesses public OLX Poland job search data.
Can it scrape job detail URLs directly?
No. Use a keyword or jobs result URL. The public search data already contains the normalized fields documented above.
Can it monitor only Warsaw or Kraków?
Yes. Configure the city on OLX.pl and paste the resulting /praca/ URL.
Does it track changes between runs?
It supplies stable IDs and timestamps for downstream comparison, but it does not maintain historical state itself.
Can I export CSV or Excel?
Yes. Use the dataset export controls or API format parameters after the run.
Can I scrape Romania, Portugal, Ukraine, or another OLX country?
No. This Actor intentionally supports Poland only.
Are all salary fields always present?
No. Salary and other optional fields are null when the advertiser did not provide them.