Pracuj.pl Jobs Scraper
Pricing
from $0.79 / 1,000 jobs
Pracuj.pl Jobs Scraper
Scrape Pracuj.pl job offers in Poland: titles, companies, salaries, B2B and other contract types, remote and hybrid work, seniority, requirements, technologies, benefits and apply links. Filter by keyword, city, category and date. Export JSON, CSV, Excel or use the API.
Pricing
from $0.79 / 1,000 jobs
Rating
0.0
(0)
Developer
ParseBird
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Share
Pracuj.pl Jobs Scraper
Pracuj.pl Jobs Scraper extracts job offers from Pracuj.pl, the Polish job board, and gives you titles, companies, salaries, contract types, work modes, seniority, locations, requirements, technologies, benefits, and apply links as clean JSON, CSV, or Excel.
| Search Pracuj.pl by keyword, city and radius, category, contract type (including B2B), work mode, seniority, region, and posting date, or paste any pracuj.pl search URL, and get 40 fields per job, or 80+ with full details, with structured salaries and a NEW / UPDATED mode for monitoring. |
Copy to your AI assistant
Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.
Apify Actor: parsebird/pracuj-jobs-scraper. Scrapes job offers from Pracuj.pl (www.pracuj.pl), the Polish job board, including it.pracuj.pl and the other sub-portals. Call via ApifyClient: client.actor("parsebird/pracuj-jobs-scraper").call(run_input={"query": "python", "location": "Warszawa", "maxResults": 50, "includeDetails": true}). Inputs: query (string, keyword like the pracuj.pl search box; empty = all offers), location (string, city such as Warszawa, Kraków, Wrocław, Gdańsk, Poznań; Polish letters optional; comma-separate several), radius (integer km around the location), startUrls (array of pracuj.pl search URLs; when set, the other search fields are ignored), categories (array of category ids, e.g. "5016" IT - Software development, "5015" IT - Administration, "5028" Sales, "5022" Manual work), contractTypes (array: "0" employment contract, "3" B2B, "2" mandate contract, "1" contract for specific work, "4" substitution, "5" agency, "6" temporary work, "7" internship), workModes (array: full-office, hybrid, home-office, mobile), positionLevels (array: "1" intern, "3" assistant, "17" junior, "4" mid/regular, "18" senior, "19" expert, "5" team leader, "20" manager, "6" director, "21" CEO, "2" manual worker), workSchedules (array: "0" full-time, "1" part-time, "2" temporary), regions (array of voivodeship ids "1"-"16", "17" abroad), period (string: any, 1, 3, 7, 14, 30 days), postedBy (string: anyone, employer, agency), companyName (string), withSalary, oneClickApply, ukrainianFriendly, noPolishRequired, seniorFriendly, disabilityFriendly (booleans), sortBy (default, relevance, date, salary), maxResults (integer, default 50, 0 = no limit), includeDetails (boolean, default false, adds requirements, responsibilities, technologies, benefits, categories, address, salaries per contract, apply links), compact (boolean), incrementalMode (boolean), stateKey (string), emitUnchanged (boolean), latitude/longitude (map search), excludeLocations (string). Output fields per job: jobId, offerId, title, company, companyId, companyProfileUrl, location, locations, salaryText, salaryMin, salaryMax, salaryCurrency, salaryPeriod, salaryType, contractTypes, workModes, workSchedules, positionLevels, isRemote, isOneClickApply, highlights, description, aiSummary, url, allOfferUrls, offers, postedDate, firstPostedDate, expirationDate; with details also region, country, city, address, categories, leadingCategory, specializations, technologies, responsibilities, requirements, requirementsOptional, offered, benefits, aboutCompany, recruitmentStages, salaries, fullDescription, applyUrl, externalApplyUrl, isDirectEmployer; in incremental mode changeType (NEW, UPDATED, UNCHANGED). Pricing: pay per job saved, plus a details event per job when includeDetails is on. Full API spec: https://apify.com/parsebird/pracuj-jobs-scraper/api. Get your token: https://console.apify.com/settings/integrations.
What is Pracuj.pl Jobs Scraper?
Pracuj.pl is a Polish job board run by Grupa Pracuj. When we checked on October 15, 2026, it listed 65,666 job offers grouped into 50,621 jobs (an employer hiring in several cities publishes one offer per city). That included 12,182 jobs in Warszawa, 4,439 in Kraków, 4,379 in Wrocław, 4,983 IT jobs, 10,497 B2B jobs, and 2,649 fully remote jobs.
Pracuj.pl Jobs Scraper turns those offers into a structured dataset. Type a keyword and a city, click Start, and download the jobs. It works as a Pracuj.pl API alternative: you don't need a Pracuj.pl account, an API key, or any code.
What can Pracuj.pl Jobs Scraper do?
- 🔎 Keyword, city, and radius search. Search the way you do on pracuj.pl, with a search radius in kilometres or a map point (latitude and longitude). Big cities also include offers advertised to the whole of Poland, the same as on the website.
- 🔗 Paste pracuj.pl search URLs. Set up a search on pracuj.pl, it.pracuj.pl, sprzedaz.pracuj.pl, pracafizyczna.pracuj.pl, or inzynieria.pracuj.pl, and paste the URL. The Actor keeps every filter in it.
- 🗂️ All of Pracuj.pl's filters. Category, contract type (umowa o pracę, B2B, umowa zlecenie, and more), work mode (on-site, hybrid, remote), seniority, working time, region, posting date, company name, salary shown, one-click apply, and offers for Ukrainian speakers, candidates 50+, or candidates with disabilities.
- 🏢 Employer or agency. Keep only offers posted by the hiring company, or only offers posted by recruitment agencies, using Pracuj.pl's own classification.
- 💰 Parsed salaries. The salary label becomes min, max, currency, period (month or hour), and type (gross, net, net + VAT). With details on, you also get the salary for each contract type.
- 📄 Full job details. Requirements, responsibilities, technologies, benefits, what the employer offers, recruitment stages, company description, categories, street address, and the employer's own apply link.
- 🔁 Track new and changed jobs. Incremental mode remembers jobs between runs and saves only the new or changed ones, each tagged
NEWorUPDATED. - 🤖 Compact output for AI agents. One switch keeps only 15 core fields, which keeps LLM prompts and spreadsheets small.
- 📅 Scheduling and monitoring. Run daily or hourly with Apify Schedules.
- 🔌 API and integrations. Use the Apify API, or send jobs to Google Sheets, Zapier, Make, Slack, or webhooks with Apify integrations. Export as JSON, CSV, Excel, XML, or HTML.
What data can you extract from Pracuj.pl?
| Field | Description |
|---|---|
jobId / offerId | Pracuj.pl job group ID and the offer ID of the first city |
title / company / companyId | Job title, employer name, and employer ID |
companyProfileUrl / companyLogoUrl | Employer profile on pracodawcy.pracuj.pl and logo |
location / locations / offers | First city, every city the job is posted in, and one link per city |
salaryText | Salary as shown on Pracuj.pl, for example 20 000–23 500 zł netto (+ VAT) / mies. |
salaryMin / salaryMax / salaryCurrency / salaryPeriod / salaryType | Parsed salary range, currency, month or hour, and gross, net or net + VAT |
contractTypes / workModes / workSchedules / positionLevels | Contract types, work modes, working time, and seniority |
isRemote / isOneClickApply / highlights | Remote flag, one-click apply, and badges such as "Praca od zaraz" |
description / aiSummary | Short description and Pracuj.pl's own AI summary of the job |
postedDate / firstPostedDate / expirationDate | Last publication, first publication, and expiry date (ISO 8601) |
url / allOfferUrls | Offer page and every city's offer page |
categories / leadingCategory / specializations | Pracuj.pl categories (Parent > Child), main category, and specializations (details) |
technologies / technologiesOptional | Required and nice-to-have technologies (details) |
responsibilities / requirements / requirementsOptional | Bullet lists from the offer (details) |
offered / benefits / recruitmentStages / aboutCompany | What the employer offers, benefits, hiring steps, and company description (details) |
region / city / address / street / zipCode | Voivodeship, city, and street address when listed (details) |
salaries | Salary per contract type: min, max, currency, period, type (details) |
applyUrl / externalApplyUrl / isDirectEmployer | Pracuj.pl apply link, the employer's own application form, and employer-or-agency flag (details) |
fullDescription / language | Every section of the offer as text, and the offer's language (pl or en) (details) |
Fields marked (details) need Include full details. Fields are empty when an offer doesn't have them. In a sample of 3,000 jobs on October 15, 2026, 37% showed a salary, 6% were posted in more than one city, and 6% were remote. In 600 IT job details, 100% had requirements and responsibilities, 78% listed technologies, 71% listed benefits, 65% linked to the employer's own application form, and 54% had a structured salary. About half of the IT offers were written in English.
How to scrape Pracuj.pl jobs
- Open Pracuj.pl Jobs Scraper in Apify Console.
- Type a Keyword like
pythonorksięgowa, and a Location likeWarszawa. Or paste a pracuj.pl search URL into Pracuj.pl search URLs. - Add filters if you need them: category, contract type, work mode, seniority, region, or posting date.
- Set Max results to the number of jobs you want.
- Turn on Include full details if you need requirements, technologies, benefits, and apply links.
- Click Start and wait for the run to finish. A few hundred jobs usually take under a minute.
- Download the jobs as JSON, CSV, Excel, XML, or HTML from the Output tab, or read them through the API.
How much does it cost to scrape Pracuj.pl?
Pracuj.pl Jobs Scraper uses pay-per-event pricing. You pay for each job saved to the dataset, plus a details event for each job when Include full details is on. Compute and proxy costs are included in the event price.
| Event | Free | Bronze | Silver | Gold |
|---|---|---|---|---|
job-scraped (per job) | $0.00099 | $0.00089 | $0.00079 | $0.00079 |
job-details-scraped (per job, details on) | $0.00089 | $0.00079 | $0.00069 | $0.00069 |
| Per 1,000 jobs, listing fields | $0.99 | $0.89 | $0.79 | $0.79 |
| Per 1,000 jobs, with full details | $1.88 | $1.68 | $1.48 | $1.48 |
For example, 100 jobs cost about $0.10 on the Free plan, and 1,000 jobs with full details cost $1.88. A job is charged once even when it's posted in several cities. If an offer's details can't be loaded, you're not charged the details event for it. In incremental mode, you pay only for the new or changed jobs that are saved. You can set a maximum cost per run in Apify Console, and the Actor stops when it reaches it.
Input parameters
See the Input tab for the full form.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
query | string | No | — | Keyword, like the pracuj.pl search box. Empty = all offers |
location | string | No | — | City, like Warszawa, Kraków, Wrocław. Comma-separate several |
radius | integer | No | — | Kilometres around the location or the map point |
startUrls | array | No | — | pracuj.pl search URLs. When set, the search fields below are ignored |
categories | array | No | — | Pracuj.pl job categories (pick in the form) |
contractTypes | array | No | — | Employment contract, B2B, mandate contract, and more |
workModes | array | No | — | full-office, hybrid, home-office, mobile |
positionLevels | array | No | — | Intern to CEO, plus manual worker |
workSchedules | array | No | — | Full-time, part-time, temporary |
regions | array | No | — | Voivodeships, or abroad |
period | string | No | any | Posted within 1, 3, 7, 14, or 30 days |
postedBy | string | No | anyone | employer or agency |
companyName | string | No | — | Only offers from this employer |
withSalary | boolean | No | false | Only offers that show a salary |
oneClickApply | boolean | No | false | Only one-click apply offers |
ukrainianFriendly / noPolishRequired / seniorFriendly / disabilityFriendly | boolean | No | false | Pracuj.pl's inclusion filters |
sortBy | string | No | default | default, relevance, date (newest first), salary (highest first) |
maxResults | integer | No | 50 | Jobs to save. 0 = no limit |
includeDetails | boolean | No | false | Add the full offer details |
compact | boolean | No | false | Save only 15 core fields |
incrementalMode / stateKey / emitUnchanged | boolean / string / boolean | No | false / default / false | Save only jobs that are new or changed since the last run with the same state key |
latitude / longitude | string | No | — | Map search centre; replaces the location |
excludeLocations | string | No | — | Cities to leave out |
proxyConfiguration | object | No | Apify Proxy (datacenter) | Keep the default; see the FAQ |
Python jobs in Warszawa
{"query": "python","location": "Warszawa","maxResults": 50}
Senior B2B IT jobs with a salary, posted in the last 7 days, with full details
{"categories": ["5016", "5015"],"contractTypes": ["3"],"positionLevels": ["18"],"withSalary": true,"period": "7","maxResults": 200,"includeDetails": true}
Warehouse jobs within 30 km of Kraków from employers, not agencies
{"query": "magazynier","location": "Kraków","radius": 30,"postedBy": "employer","maxResults": 100}
Daily feed of new remote jobs (schedule this run)
{"workModes": ["home-office"],"sortBy": "date","maxResults": 500,"incrementalMode": true,"stateKey": "remote-jobs"}
Scrape a pracuj.pl search URL
{"startUrls": [{ "url": "https://www.pracuj.pl/praca/java;kw/wroclaw;wp?rd=30" }],"maxResults": 100}
Output example
Each job is one item in the dataset. This is a real job from October 15, 2026, with Include full details on (long lists shortened):
{"jobId": "fc0b0000-56be-0050-37bc-08df2aaa282c","offerId": 1005160537,"title": "C/C++ Engineer","company": "Connectis_","companyId": 20007649,"companyProfileUrl": "https://pracodawcy.pracuj.pl/company/20007649","location": "Łódź","locations": ["Łódź", "Warszawa"],"salaryText": "20 000–23 500 zł netto (+ VAT) / mies.","salaryMin": 20000,"salaryMax": 23500,"salaryCurrency": "PLN","salaryPeriod": "month","salaryType": "net + VAT","contractTypes": ["Kontrakt B2B"],"workModes": ["Praca hybrydowa"],"workSchedules": ["Pełny etat"],"positionLevels": ["Starszy specjalista / Starsza specjalistka (senior)"],"isRemote": false,"isOneClickApply": false,"url": "https://www.pracuj.pl/praca/c-c%2b%2b-engineer-lodz,oferta,1005160537","allOfferUrls": ["https://www.pracuj.pl/praca/c-c%2b%2b-engineer-lodz,oferta,1005160537","https://www.pracuj.pl/praca/c-c%2b%2b-engineer-warszawa,oferta,1005160536"],"postedDate": "2026-10-15T11:08:18.093Z","firstPostedDate": "2026-10-15T11:08:18.093Z","expirationDate": "2026-11-14T22:59:59Z","language": "pl","region": "łódzkie","country": "Polska","city": "Łódź","categories": ["IT - Rozwój oprogramowania > Analiza biznesowa i systemowa","IT - Rozwój oprogramowania > Programowanie"],"leadingCategory": "IT - Rozwój oprogramowania > Programowanie","specializations": ["Backend", "C++", "C", "Visual Studio", "GitHub Copilot", "angielski", "polski"],"technologies": ["C", "C++", "Visual Studio", "XML", "GitHub Copilot", "REST API", "SOLID"],"requirements": ["Ok. 5 letnie doświadczenie komercyjne w roli C/C++ Engineera.","Biegła znajomość języka polskiego i angielskiego."],"benefits": ["dofinansowanie zajęć sportowych", "prywatna opieka medyczna", "elastyczny czas pracy"],"salaries": [{ "contractType": "kontrakt B2B", "min": 20000, "max": 23500, "currency": "PLN", "period": "month", "type": "net + VAT" }],"applyUrl": "https://www.pracuj.pl/aplikuj/c-c%2b%2b-engineer-lodz,oferta,1005160537","externalApplyUrl": "https://hub.connectis.pl/offer/bccde0c3-2c76-49fb-99e6-f203c9f3bacb","isDirectEmployer": true,"scrapedAt": "2026-10-15T11:37:36.479Z","source": "pracuj.pl"}
In incremental mode, each job also has changeType (NEW, UPDATED, or UNCHANGED), firstSeenAt, and, for jobs seen before, previousSeenAt.
Use cases
- Job market research. Count offers by category, city, seniority, or contract type, and follow how demand changes over time.
- Salary benchmarking. Compare salary ranges for a role across cities and contract types (umowa o pracę vs B2B, gross vs net).
- Tech skills tracking. See which technologies Polish employers ask for in IT offers.
- Job alerts and aggregators. Feed new offers into your own job site, Slack channel, or newsletter with incremental mode and a schedule.
- Recruitment and sales leads. Find companies that are hiring, and see whether they recruit directly or through agencies.
- AI agents and LLM apps. Give an assistant fresh Polish job data through the API or the Apify MCP server, using compact output.
How it works
- The Actor turns your keyword, location, and filters (or each search URL) into a Pracuj.pl search.
- It reads the search result pages, 100 jobs at a time, in the order you chose.
- Offers of the same job in several cities are merged into one item, with every city's link kept.
- With Include full details, it opens each job's offer and adds the full sections, address, categories, and salaries.
- Jobs are saved to the dataset as they're found. The Actor stops at Max results, at the end of the results, or at your spending limit.
Use the Pracuj.pl Scraper API from Python or JavaScript
Get your API token in Apify Console, then call the Actor with the Apify API client.
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("parsebird/pracuj-jobs-scraper").call(run_input={"query": "python","location": "Warszawa","maxResults": 100,"includeDetails": True,})for job in client.dataset(run["defaultDatasetId"]).iterate_items():print(job["title"], "|", job["company"], "|", job.get("salaryText"))
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('parsebird/pracuj-jobs-scraper').call({query: 'python',location: 'Warszawa',maxResults: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach((job) => console.log(job.title, '|', job.company, '|', job.salaryText));
See the API tab for the HTTP endpoints and the OpenAPI spec.
Is it legal to scrape Pracuj.pl?
Pracuj.pl Jobs Scraper collects only job offers that Pracuj.pl shows publicly to every visitor, without logging in. It doesn't access candidate profiles, CVs, or any account data. Job offers can still include personal data, such as a recruiter's name or phone number, which is protected by the GDPR in Poland and the EU. Only collect the data you need, have a legitimate reason to process it, and check Pracuj.pl's terms before you reuse the content. If you're unsure, ask a lawyer. Read more in Apify's blog post on whether web scraping is legal.
Other job scrapers
| Actor | What it scrapes |
|---|---|
| JustJoin.it Jobs Scraper | IT jobs in Poland from JustJoin.it |
| EURES Jobs Scraper | Jobs across the EU from the European job mobility portal |
| LinkedIn Jobs Scraper | Job postings from LinkedIn |
| Indeed Jobs Scraper | Job postings from Indeed |
| Xing Jobs Scraper | Jobs in Germany, Austria, and Switzerland from Xing |
| Djinni Jobs Scraper | Tech jobs from Djinni |
FAQ
Do I need a Pracuj.pl account or API key? No. The Actor reads public job offers, the same ones you see on pracuj.pl without logging in.
Why does a job have several URLs?
Employers often publish the same job in several cities, and Pracuj.pl creates one offer per city. The Actor saves the job once and lists every city in locations, offers, and allOfferUrls. You're charged once.
Why do I get more results for Warszawa than "Warszawa" shows on the map? For big cities such as Warszawa, Kraków, Wrocław, Gdańsk, or Poznań, Pracuj.pl also shows offers that the employer advertises to the whole of Poland. The Actor does the same, so your results match the website.
How do I get only new jobs every day?
Turn on Only new or changed jobs, give the search a State key, and schedule the run. The first run saves everything it checks as NEW. Later runs save only jobs that are new or whose title, salary, contract, work mode, seniority, cities, or description changed. Use a different state key for each search. Jobs not seen for 90 days are forgotten.
What does "Newest first" sort by? By publication day, the same as on pracuj.pl. Within one day, promoted offers come first, so the times inside a day aren't strictly in order.
Are salaries gross or net?
Both appear on Pracuj.pl. salaryType tells you which: gross (brutto), net (netto), net + VAT (B2B rates), or depends on contract when the employer gives one range for several contract types. With details on, salaries lists the range for each contract type.
Can I scrape it.pracuj.pl or other Pracuj.pl sub-portals? Yes. Paste the URL into Pracuj.pl search URLs. You can also pick the matching categories: "IT - Software development" plus "IT - Administration" match it.pracuj.pl.
Are the offers in Polish or English?
In the language the employer wrote them in. The language field (details on) tells you which. Labels such as contract types and work modes are in Polish, as on pracuj.pl.
Do I need to set up a proxy? No. The Actor uses Apify Proxy (datacenter) by default, and if Pracuj.pl refuses those requests, it moves to residential proxies in Poland by itself. Proxy costs are included in the event price.
Something doesn't work or a field is missing? Open an issue on the Issues tab.