Pracuj.pl Job Offers Scraper
Pricing
from $2.00 / 1,000 job offers
Pracuj.pl Job Offers Scraper
The Pracuj.pl Job Offers Scraper extracts job listings from Poland's largest job board, capturing titles, companies, salary ranges, locations, contract types, AI requirement summaries, full descriptions, and application links — ideal for recruitment analytics and labor market research.
Pricing
from $2.00 / 1,000 job offers
Rating
0.0
(0)
Developer
FalconScrape
Maintained by CommunityActor stats
1
Bookmarked
16
Total users
5
Monthly active users
11 days ago
Last modified
Categories
Security
Limited permissionsShare
🇵🇱 Pracuj.pl Scraper: Jobs in Poland with Salaries and Tech Stacks
Export job offers from Pracuj.pl, Poland's largest job board, as clean JSON, CSV or Excel. The Pracuj.pl Job Offers Scraper returns each offer's title, company, salary, locations, work mode, contract types and Pracuj.pl's AI summary of the requirements, and on request the full description, structured salary ranges, required technologies and apply links. Use it to monitor jobs in Poland, research IT jobs and programmer salaries, or as a practical alternative to a Pracuj.pl API.
🎯 Use Cases
- Track jobs in Poland: collect every new offer for a role or city (for example "oferty pracy Warszawa") on a schedule and feed it into your own job board, newsletter or alert channel.
- IT jobs in Poland market research: see which companies hire Java, Python or .NET developers, in which cities, on which contracts and at which seniority levels.
- Salary benchmarking (zarobki programisty): pull advertised pay ranges with currency, period (hourly or monthly) and gross/net type to compare salaries for a role across companies.
- Remote jobs in Poland: filter offers by work mode (remote, hybrid, on-site) and by the fully-remote flag.
- Recruitment and sales leads: find employers that are actively hiring, with their Pracuj.pl company profile and logo.
- Tech-stack demand analysis: count which technologies employers list as required or nice to have.
✨ Features
- Search by keyword and location: any job title, skill or company, in any Polish city or region, or the whole country.
- Your own search URLs: fine-tune a search on Pracuj.pl (salary, contract type, seniority and so on) and paste the URL to scrape exactly those results.
- Salary text on every offer: the salary as Pracuj.pl shows it, when the employer discloses one.
- AI requirement summary: Pracuj.pl's own summary of the key requirements, as plain text.
- Optional full details: structured salary ranges per contract type, job categories, required and optional technologies, the full description split into sections, exact workplace addresses with coordinates, the apply link, the employer's own application form link and the reference number.
- No duplicates: an offer posted in several locations is saved once, with all its locations.
- Nothing lost: if an offer page can't be loaded in detail mode, the list data is saved instead, marked
"detailsScraped": falseand charged at the list price.
🛠️ How It Works
- Enter a keyword and/or a location, for example
programistainWarszawa, or paste Pracuj.pl search URLs. - Set Max job offers (default 50) and switch on Scrape full job details if you need the full description, structured salaries and technologies.
- Run the scraper and download the results as JSON, CSV or Excel, or fetch them through the Apify API.
⚙️ Input
| Field | What it does |
|---|---|
| Keyword | Job title, skill or company, e.g. programista, accountant, python. Empty = all offers. |
| Location | City or region in Poland, e.g. Warszawa, Kraków, Wrocław. Empty = all of Poland. |
| Max job offers | Maximum number of offers to save in one run. Default 50. |
| Scrape full job details | Also open every offer page for the full details. Default off. Charged at the higher detail price. |
| Search URLs | Optional Pracuj.pl search result URLs, used instead of keyword and location. Category and work-mode URL filters are not supported. |
{"keyword": "programista","location": "Warszawa","maxItems": 100,"scrapeJobDetails": true}
💰 Pricing
Pay only for the job offers you get. No monthly rental.
| Event | Price | What you get |
|---|---|---|
| Job offer | $0.002 per offer ($2.00 per 1,000) | One offer with the list data (Scrape full job details off). |
| Job offer details | $0.005 per offer ($5.00 per 1,000) | One offer with the list data plus all detail fields. |
| Actor start | $0.00005 per run | Charged once when the run starts. |
Examples: 50 offers with list data = $0.10 · 1,000 offers with list data = $2.00 · 1,000 offers with full details = $5.00 (plus $0.00005 per run). Set a maximum cost per run in the run options and the scraper stops when it is reached.
📊 Sample Output Data
A real row from a run with Scrape full job details on (long texts shortened with "…"):
{"id": "9c3b0000-56be-0050-7e4e-08df20876a24","url": "https://www.pracuj.pl/praca/programista-python-m-k-warszawa-swietokrzyska-36,oferta,1005133784","title": "Programista Python (m/k)","company": {"name": "B2B.NET S.A.","id": 20424689,"profileUrl": "https://pracodawcy.pracuj.pl/company/20424689","logoUrl": "https://logos.gpcdn.pl/loga-firm/20424689/03000000-bb2f-3863-a2ad-08d9952c4759_280x280.png"},"salary": "100–105 zł netto (+ VAT) / godz.","locations": ["Warszawa, Śródmieście"],"workModes": ["Praca zdalna"],"isRemoteWorkAllowed": true,"positionLevels": ["Specjalista / Specjalistka (mid / Regular)"],"typesOfContract": ["Kontrakt B2B"],"workSchedules": ["Pełny etat"],"publishedAt": "2026-10-21T13:21:03.863Z","expiresAt": "2026-11-01T22:59:59.000Z","descriptionSnippet": "Twój zakres obowiązków, tworzenie i rozwój usług backendowych w Pythonie z wykorzystaniem FastAPI, projektowanie i rozwój REST API…","aiSummary": "- Masz minimum rok doświadczenia w Python i komercyjną praktykę z FastAPI.\n- Potrafisz projektować i rozwijać REST API…","scrapedAt": "2026-10-21T14:34:00.231Z","categories": [{ "id": 5016003, "name": "Programowanie", "parent": "IT - Rozwój oprogramowania" }],"salaries": [{"contractType": "kontrakt B2B","from": 100,"to": 105,"currency": "PLN","timeUnit": "godzinowo","kind": "netto (+ VAT)"}],"applyUrl": "https://www.pracuj.pl/aplikuj/programista-python-m-k-warszawa-swietokrzyska-36,oferta,1005133784","atsFormUrl": null,"referenceNumber": null,"workplaces": [{"displayAddress": "Świętokrzyska 36, Śródmieście, Warszawa","city": "Warszawa","region": "mazowieckie","country": "Polska","coordinates": { "latitude": 52.233760833740234, "longitude": 20.999576568603516 }}],"entirelyRemoteWork": true,"technologiesExpected": ["Python", "FastAPI", "Git", "JavaScript"],"technologiesOptional": ["Kubernetes", "Elasticsearch", "Selenium", "Jenkins", "SQL"],"descriptionSections": [{"type": "responsibilities","plainText": "Twój zakres obowiązków, tworzenie i rozwój usług backendowych w Pythonie…","elements": ["tworzenie i rozwój usług backendowych w Pythonie z wykorzystaniem FastAPI", "projektowanie i rozwój REST API"]}],"isActive": true,"firstPublishedAt": "2026-10-02T13:21:03.863Z","detailsScraped": true}
With Scrape full job details off, each row has the fields from id to scrapedAt. salary is the text Pracuj.pl shows; salaries has one structured range per contract type, with from/to as numbers. Labels such as work modes, contract types and the salary period come in the language of the offer, so they are usually Polish and sometimes English. publishedAt is the latest publication date, firstPublishedAt the date the offer first went live.
🔁 Schedule and Integrate
To follow new job offers, run the scraper once a day with the same keyword and location: Pracuj.pl offers stay up for a few weeks, so a daily run catches every new posting, and the id lets you skip offers you already have. Set it up in Apify Schedules. Send the results to Google Sheets, Zapier, Make, n8n or a webhook with Apify integrations, so new offers land where your team already works.
🤖 Use with AI Agents (MCP)
This Actor works as a tool in Claude, ChatGPT, Cursor and other MCP clients through the Apify MCP server (https://mcp.apify.com). An agent can call it with:
{ "keyword": "python", "location": "Kraków", "maxItems": 20 }
❓ FAQ
Does Pracuj.pl have an official API? Pracuj.pl does not offer a public API for reading job offers; its integrations are aimed at employers publishing their own offers. This Actor needs no key or account and returns the public data a job seeker sees, with structured fields such as salary ranges, technologies and coordinates.
Do I need a Pracuj.pl account? No. The scraper reads only public offers and never logs in.
Why is the salary or a detail field empty? Many employers don't publish pay, so salary is null and salaries is empty for those offers. atsFormUrl, referenceNumber, technologiesOptional and coordinates are empty when the employer didn't provide them. Detail fields are only filled when Scrape full job details is on.
How many offers can I get? As many as the search matches, up to Max job offers, 50 per results page. A broad search such as "programista" in Warszawa matches hundreds of offers. For thousands of offers with full details, raise the run timeout in the run options.
Can I filter by remote work or category? Use the keyword and location fields or a pasted search URL with salary, contract or seniority filters. Category and work-mode URL filters are not supported; filter the workModes and entirelyRemoteWork fields in your results instead.
Where else can I find jobs in Poland? Pracuj.pl is the largest Polish job board. LinkedIn, Indeed and Google Jobs also list Polish offers; the scrapers below cover them.
🔗 Related Scrapers
- LinkedIn Jobs Search Scraper: LinkedIn job search results, to cover offers in Poland posted outside Pracuj.pl.
- LinkedIn Company Jobs Scraper: all open roles of the employers you find here.
- Indeed Jobs Scraper: Indeed job offers, for a second source on the same roles.
- Google Jobs Scraper: offers aggregated from many job boards in one search.
- StepStone Jobs Scraper: job offers from StepStone in Germany, for cross-border market research.