Praca.PL Scraper
Pricing
from $1.19 / 1,000 results
Praca.PL Scraper
Extract job listings from Praca.pl — Poland's largest job board. Filter by keyword, city, province, contract type, work model and seniority.
Pricing
from $1.19 / 1,000 results
Rating
0.0
(0)
Developer
Unfenced Group
Maintained by CommunityActor stats
1
Bookmarked
4
Total users
2
Monthly active users
4 days ago
Last modified
Categories
Share

Extract job listings from praca.pl at scale, in a clean, consistent structure ready for analysis, job boards, recruiting tools and market research. No API key required.
Why this scraper?
🎯 Built for Poland
A dedicated Polish scraper, not a global tool with a country dropdown. Search, locations and currency (PLN) are tuned for praca.pl.
📄 Complete job data
Full job title and description, direct listing URL and publish date for every record.
💶 Salary data
Salary information parsed from the listing where the employer publishes it, in PLN. Missing salaries are returned as null, never guessed.
📍 Location fields
Structured location data for every listing, ready for filtering and analysis.
🔁 Repost & change detection
Every record carries isRepost and changeStatus, so daily feeds return genuinely new jobs instead of reposted duplicates.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQuery | string | "developer" | Search or filter by keyword. |
location | string | (empty) | Search or filter by location. |
province | string | (empty) | Search or filter by province. |
publicationPeriod | string | (empty) | publicationPeriod. |
employmentType | string | (empty) | employmentType. |
workModel | string | (empty) | workModel. |
jobLevel | string | (empty) | jobLevel. |
professionalArea | string | (empty) | professionalArea. |
maxResults | integer | 100 | Maximum number of results (0 = no limit). |
fetchDetails | boolean | false | Enable fetchDetails. |
skipReposts | boolean | false | Enable skipReposts. |
startUrls | array | (empty) | Filter by startUrls. |
Output schema
Every field below is present on every record. Fields the source does not publish for a given job are returned as null rather than omitted.
| Field | Type | Description |
|---|---|---|
id | string | Platform internal listing ID |
url | string | Direct link to the listing |
source | string | Source. |
title | string | Job or listing title |
summary | string | Summary. |
employer | string | Employer. |
location | string | City, e.g. Warszawa, Kraków |
city | string | City |
country | string | Country |
workModel | string | e.g. remote, hybrid, office |
jobLevel | string | Job level. |
contractType | string | e.g. Permanent, Contract |
workSchedule | string | Work schedule |
employmentTypeRaw | string | Employment type raw. |
workingTimeRaw | string | Working time raw. |
salaryRaw | string | Salary raw. |
salaryMin | number | Minimum salary (numeric), or null |
salaryMax | string | Maximum salary (numeric), or null |
salaryCurrency | string | Currency code, e.g. EUR, USD |
salaryPeriod | string | Pay period the salary refers to (e.g. year, month, hour). |
postedAgo | string | Posted ago. |
publishDate | string | Date posted |
descriptionText | string | Full job description in plain text. |
descriptionMarkdown | string | Description markdown. |
descriptionHtml | string | Full job description in HTML. |
applyUrl | string | Direct application link. |
changeStatus | string | NEW, CHANGED or UNCHANGED compared to the previous time this job was seen. |
isRepost | boolean | true when the listing is a repost of an earlier job (detected by content hash). |
contentHash | string | Stable hash of the listing content, used for repost and change detection. |
scrapedAt | string | Timestamp when this record was scraped. |
Example record
{"id": "11195017","url": "https://www.praca.pl/lider-zespolu-pmo-k-m_11195017.html","source": "praca.pl","title": "Lider Zespołu PMO K/M","summary": "Lider Zespołu PMO K/M · Belma Accessories Systems Sp. z o.o. · Białe Błota","employer": "Belma Accessories Systems Sp. z o.o.","location": "Białe Błota","city": "Białe Błota","country": "PL","workModel": "praca stacjonarna","jobLevel": "kierownik / kierowniczka / koordynator / koordynatorka","contractType": "Permanent","workSchedule": "Full-time","employmentTypeRaw": "umowa o pracę","workingTimeRaw": "pełny etat","salaryRaw": null,"salaryMin": null,"salaryMax": null,"salaryCurrency": null,"salaryPeriod": null,"postedAgo": "1 dni","publishDate": "2026-07-02","descriptionText": "W BAS tworzymy miejsce, w którym technologia nabiera sensu dopiero wtedy, gdy stoi za nią człowiek. Jesteśmy największym producentem i eksporterem wyrobów z blach w regionie oraz jednym z kluczowych p …","descriptionMarkdown": "W BAS tworzymy miejsce, w którym technologia nabiera sensu dopiero wtedy, gdy stoi za nią człowiek. Jesteśmy **największym producentem i eksporterem wyrobów z blach w regionie** oraz jednym z kluczowy …","descriptionHtml": "<div class=\"szcont gtm-offer-cont\">\n<div class=\"f1template_main\">\n <div class=\"f1template_content\">\n <div class=\"f1top\"></div>\n <div class=\"f1template_center\">\n <div class= …","applyUrl": "https://www.praca.pl/apply/external/11195017.html","changeStatus": "NEW","isRepost": false,"contentHash": "488de02fd9060746","scrapedAt": "2026-07-03T17:51:53.248Z"}
Examples
Search for księgowa roles in Warszawa:
{"searchQuery": "księgowa","location": "Warszawa","maxResults": 100}
Filter by contract type:
{"searchQuery": "księgowa","location": "Warszawa","maxResults": 100,"employmentType": "FULL_TIME"}
Scrape a specific search URL:
{"startUrls": [{"url": "https://www.praca.pl/"}],"maxResults": 200}
Daily feed (run on a schedule):
{"searchQuery": "księgowa","skipReposts": true,"maxResults": 500}
Schedule this input in the Apify Scheduler (for example daily at 07:00) to keep an always-fresh feed of the newest listings.
💰 Pricing
$1.49 per 1,000 results — you only pay for successfully retrieved listings. Failed retries are never charged.
| Results | Cost |
|---|---|
| 100 | ~$0.15 |
| 1,000 | ~$1.49 |
| 10,000 | ~$14.9 |
| 100,000 | ~$149 |
Flat-rate alternatives typically charge $29–$49/month regardless of usage.
Subscription tiers lower the rate further, down to $0.89 per 1,000 at the highest tier. Use the Max results cap in the input to control your spend exactly.
Performance
| Run size | Typical time |
|---|---|
| 100 results | under 1 minute |
| 1,000 results | 2–4 minutes |
| 10,000 results | 20–35 minutes |
Known limitations
- Salary is only returned when the employer publishes it — many listings carry
nullsalary fields. - Company details vary per listing; the scraper returns what the source publishes and never invents data.
- Very large result sets are bounded by the source's own paging limits.
- Listings can be removed by the source at any time, so a small share of URLs may expire shortly after scraping.
Technical details
- Source: praca.pl — Poland job listings
- Coverage: everything the public search exposes, filterable via the input parameters above
- Retry: automatic retry on network errors with exponential backoff
Need a custom scraper?
Unfenced Group builds Apify actors for any website — for free.
If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.
Get in touch: www.unfencedgroup.nl