Praca.pl Scraper - Polish Job Listings · $1.5/1K avatar

Praca.pl Scraper - Polish Job Listings · $1.5/1K

Pricing

from $0.75 / 1,000 result items

Go to Apify Store
Praca.pl Scraper - Polish Job Listings · $1.5/1K

Praca.pl Scraper - Polish Job Listings · $1.5/1K

Extract job postings from Praca.pl (Poland) by keyword and location: title, employer, place, contract type, salary range, posting date, URL, newest first.

Pricing

from $0.75 / 1,000 result items

Rating

0.0

(0)

Developer

Yusuke Suda

Yusuke Suda

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 hours ago

Last modified

Categories

Share

Praca.pl Scraper — Polish job listings by keyword and town

Extract job postings from Praca.pl (Poland) by keyword and location: title, employer, place, contract type, salary range, posting date, URL, newest first.

Praca.pl is one of Poland's established job boards, with around 18,000 live postings: over 1,300 in Kraków alone, and large numbers in Warszawa, Wrocław, Poznań and Gdańsk. This Actor turns its search results into a clean table: the job title, the employer, the workplace, the contract and working time, the salary the employer states, the day the posting went online, and the link to the posting.

Press Start. The prefilled input searches for kierowca (driver) in Warszawa, so the first run needs no configuration.

What a row looks like

{
"title": "Operator wózka widłowego (K/M)",
"company": "Operis HR sp. z o.o.",
"location": "Warszawa",
"employment_type": "umowa o pracę, pełny etat",
"salary_min": 11000,
"salary_max": 15000,
"salary_currency": "PLN",
"salary_period": "month",
"posted_at": "2026-09-22",
"source_url": "https://www.praca.pl/operator-wozka-widlowego-k-m_11492461.html",
"external_id": "11492461"
}

company is the employer as the list shows it. When the employer hides its name (the site then shows "Klient portalu Praca.pl"), company is empty. Contact persons, email addresses and phone numbers are never collected. This Actor reads the search results only and never opens the job text.

location is the workplace the posting names: a town, a district ("Warszawa, Ursynów"), a voivodeship, or the employer's street address. A posting offered in several places ("3 regiony" on the site) is several postings, each with its own ID and link, and each becomes its own row. remote is true when the posting says fully remote work ("praca zdalna"), and empty otherwise.

employment_type is the contract and the working time as praca.pl writes them, in Polish: umowa o pracę (employment contract), umowa zlecenie (civil-law contract), kontrakt B2B, pełny etat (full-time), część etatu (part-time). salary_* is the pay the employer states, in złoty, per month or per hour as the posting says. Where the employer states nothing, the columns are empty.

Posting dates

praca.pl shows each posting's age ("3 godz.", "2 dni"), not a date. posted_at is the Polish calendar day on which that age began. Because the site rounds ages down, a posting shown as "1 dni" gets the later of its two possible days. A "posted after" filter therefore never drops a posting that may belong inside it. The filter compares days, not times.

What people use it for

  • Tracking which companies in a Polish city are hiring, week by week.
  • Salary benchmarking from the ranges employers state, by contract type.
  • Feeding a job board or a newsletter with Polish openings in a niche, such as drivers, warehouse staff or accountants.
  • Research on the Polish labour market that needs structured rows rather than a page of links.

Input

FieldWhat it does
searchTermsKeywords, e.g. kierowca, księgowa, magazynier. Each keyword is its own search. Leave empty for everything.
locationA Polish town or voivodeship, with or without Polish letters: Warszawa, Kraków, Bielsko-Biała, mazowieckie. Leave empty for the whole country.
postedAfterOnly postings from this day on, e.g. 2026-09-20.
maxItemsA hard stop, so your bill is predictable.
proxyConfigurationOff by default. Most runs do not need a proxy.

How much one run returns

praca.pl serves 50 cards per page, newest first, and the run follows the site's own "next page" link until the list ends or maxItems is reached. The site states how many postings a search holds, and the run report shows that number next to the rows delivered. The site's pager stops at page 255. A search larger than that is reported as capped, and more keywords or towns reach the rest. If you search several keywords, a posting that matches more than one is delivered only once per run.

Pricing

$1.50 per 1,000 postings, falling to $0.75 per 1,000 on higher Apify plans, plus $0.005 each time a run starts. Platform usage is not passed on to you.

You are charged only for rows you actually receive. If you set a maximum charge for the run, it stops cleanly at that limit instead of going over it.

Scope and limits

The Actor reads public listings only, from the search results pages. praca.pl's robots.txt allows these for all crawlers. No API is called, and job pages are not opened. The promoted "week offers" above the results and the labour-office list below them are not part of your search and are not delivered.

A town that praca.pl does not recognise fails the run with a clear message. On the site, an unknown town looks like a search with no results, and this Actor will not report that as an honest zero.

Every page is checked against what you asked for: keyword, town, page number and date order. If the site answered something else, the run fails rather than return rows you did not ask for and charge you for them.

If praca.pl changes its page structure, the run goes red. It does not return zero rows and report success. A silent scraper is worse than a broken one, because you only find out weeks later.

A run that is blocked or cut short partway also goes red, even though the rows it did collect are in the dataset and yours to keep. Red here means "this is not the complete answer", not "you lost the data". On a schedule, a run that quietly came back short is the thing you most need to hear about.

Same shape, other sites

This Actor shares its output shape with:

  • the Jobware Scraper (Germany)
  • the jobs.ch, jobup.ch and JobScout24 Scrapers (Switzerland)
  • the Jobindex Scraper (Denmark)
  • the Jobs.cz Scraper (Czech Republic)
  • the BestJobs Scraper (Romania)

A parser you write for one keeps working on the others, and on the countries added next.

Support

Open an issue on this Actor with the run ID and your input. We answer within one business day.