DEV Community

voiddo
voiddo

Posted on Originally published at voidd0.github.io

Pracuj.pl Scraper: how to get Poland Jobs and Salaries as JSON or CSV (Python, API, no code)

Scrape Polish job postings from pracuj.pl: title, company, workplaces and address, salary per contract type, gross or net, position level, contract, schedule, remote or hybrid, category, technologies, requirements, benefits and dates.

This tutorial shows what the Actor v0iddo/pracuj-pl-scraper returns, how to run it on the Apify Store without code, and how to call it from Python and cURL.

What data you get

One row per result. Every row can be downloaded as JSON, CSV, Excel or HTML, or read through the API.

Field Label Type Example
title Title text Accountant [m/f/d]
company Company text Scania Polska S.A.
location Workplace text Nadarzyn (pow. pruszkowski)
salaryText Salary text
positionLevels Level list ["mid"]
contractTypes Contract list ["employment contract"]
workModes Work mode list ["hybrid"]
postedAt Posted date 2026-10-26T10:35:41Z
expiresAt Expires date 2026-11-20T22:59:59Z
url Posting URL https://www.pracuj.pl/praca/accountant-m-f-d-nadarzyn-pow-pruszkows...
jobId jobId number 1005171506
groupId groupId text 8c230000-56be-0050-9117-08df2f503af0
companyId companyId number 18797454
companyUrl companyUrl text https://pracodawcy.pracuj.pl/company/18797454
companyLogo companyLogo text https://logos.gpcdn.pl/loga-firm/18797454/2c580000-43a8-f403-2396-0...
locations locations list ["Nadarzyn (pow. pruszkowski)"]
wholePoland wholePoland true/false false
city city text Nadarzyn
region region text Masovian
workSchedules workSchedules list ["full time"]
remote remote true/false false
category category text Bookkeeping
parentCategory parentCategory text Finance / Economy
responsibilities responsibilities list ["Recording and verifying accounting transactions", "Managing fixed...
requirements requirements list ["Strong analytical skills and a good command of MS Excel", "A proa...
niceToHave niceToHave list ["Previous experience in a similar accounting or finance position",...
benefits benefits list ["Private medical care through Lux Med", "Group life insurance with...
immediateStart immediateStart true/false true
oneClickApply oneClickApply true/false false
directEmployer directEmployer true/false true
promoted promoted true/false true
firstPostedAt firstPostedAt text 2026-10-21T09:35:41Z
summary summary text - Masz doświadczenie w księgowości i prowadzisz rejestrację oraz we...
descriptionText descriptionText text Your responsibilities - Recording and verifying accounting transac...
language language text en
scrapedAt scrapedAt text 2026-10-26T10:36:55Z

Real rows from a run of the Actor (fields that name people are left out):

[
  {
    "jobId": 1005171506,
    "groupId": "8c230000-56be-0050-9117-08df2f503af0",
    "title": "Accountant [m/f/d]",
    "company": "Scania Polska S.A.",
    "companyId": 18797454,
    "companyUrl": "https://pracodawcy.pracuj.pl/company/18797454",
    "companyLogo": "https://logos.gpcdn.pl/loga-firm/18797454/2c580000-43a8-f403-2396-08d8ccf0f2ac_280x280.png",
    "location": "Nadarzyn (pow. pruszkowski)",
    "locations": [
      "Nadarzyn (pow. pruszkowski)"
    ],
    "wholePoland": false,
    "city": "Nadarzyn",
    "region": "Masovian",
    "positionLevels": [
      "mid"
    ],
    "contractTypes": [
      "employment contract"
    ],
    "workSchedules": [
      "full time"
    ],
    "workModes": [
      "hybrid"
    ],
    "remote": false,
    "category": "Bookkeeping",
    "parentCategory": "Finance / Economy",
    "responsibilities": [
      "Recording and verifying accounting transactions",
      "Managing fixed assets accounting, including reconciliations, reporting and audit support",
      "Analyzing and reconciling inventory balances"
    ],
    "requirements": [
      "Strong analytical skills and a good command of MS Excel",
      "A proactive and solution-oriented mindset",
      "Accuracy, accountability and the ability to work independently"
    ],
    "niceToHave": [
      "Previous experience in a similar accounting or finance position",
      "Experience working with Microsoft Dynamics 365 (D365)",
      "Degree in Accounting, Finance, Economics, Taxation or a related field"
    ],
    "benefits": [
      "Private medical care through Lux Med",
      "Group life insurance with Generali",
      "Medicover Sport membership"
    ],
    "immediateStart": true,
    "oneClickApply": false,
    "directEmployer": true,
    "promoted": true,
    "postedAt": "2026-10-26T10:35:41Z",
    "firstPostedAt": "2026-10-21T09:35:41Z",
    "expiresAt": "2026-11-20T22:59:59Z",
    "summary": "- Masz doświadczenie w księgowości i prowadzisz rejestrację oraz weryfikację transakcji księgowych.\n- Umiesz analizować i uzgadniać zapas...",
    "descriptionText": "Your responsibilities\n\n- Recording and verifying accounting transactions\n- Managing fixed assets accounting, including reconciliations, r...",
    "language": "en",
    "url": "https://www.pracuj.pl/praca/accountant-m-f-d-nadarzyn-pow-pruszkowski,oferta,1005171506",
    "scrapedAt": "2026-10-26T10:36:55Z"
  }
]
Enter fullscreen mode Exit fullscreen mode

No code: run it on the Apify Store

  1. Open the Pracuj.pl Scraper page on Apify.
  2. Fill in the input form. An example input is already filled in.
  3. Press Start, wait for the run to finish, and download the results as JSON, CSV or Excel from the Output tab.

The input that is pre-filled on the Actor page:

{
  "keywords": [
    "księgowa"
  ],
  "location": "Warszawa",
  "includeDetails": true,
  "maxItems": 20
}
Enter fullscreen mode Exit fullscreen mode

Ready-made examples

Saved inputs on Apify: run one as it is, or copy it and change the values.

Python (apify-client)

Get your API token in Apify Console under Settings, then Integrations. The Actor id is v0iddo/pracuj-pl-scraper.

from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run_input = {'keywords': ['księgowa'],
 'location': 'Warszawa',
 'includeDetails': True,
 'maxItems': 20}

run = client.actor("v0iddo/pracuj-pl-scraper").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
Enter fullscreen mode Exit fullscreen mode

cURL

curl -X POST "https://api.apify.com/v2/acts/v0iddo~pracuj-pl-scraper/run-sync-get-dataset-items" \
  -H "Authorization: Bearer YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"keywords": ["księgowa"], "location": "Warszawa", "includeDetails": true, "maxItems": 20}'
Enter fullscreen mode Exit fullscreen mode

Good to know

  • One search runs per search term, with the city, distance and filters you chose. Pasted search URLs keep their own filters. Postings are unique by ID across the whole run.
  • One row is one posting. A posting offered in several towns lists them all in locations; location is the first, and the address fields are those of the first workplace.
  • positionLevels, contractTypes, workSchedules and workModes are in English (for example junior, B2B, full time, remote); category, the posting's own text and the summary stay in Polish as published.

Price

$0.50 per 1,000 results. You pay per result row. There is no separate charge per run. Higher Apify plans pay less per result, down to $0.35 per 1,000.

FAQ

What data does the Pracuj.pl Scraper return?

Each result is one row in an Apify dataset. Fields include title, company, location, salaryText, positionLevels, contractTypes, workModes, postedAt, and more. The table above shows every field with an example value.

Can I use it without writing code?

Yes. Open the Actor page on Apify, fill in the input form (an example is already filled in), press Start, and download the results as JSON, CSV, Excel or HTML. You can also schedule runs there.

How much does it cost?

$0.50 per 1,000 results. You pay per result row. There is no separate charge per run. Higher Apify plans pay less per result, down to $0.35 per 1,000. A new Apify account gets $5 of platform credit every month.

Links

Top comments (0)