Pracuj.pl Scraper avatar
Pracuj.pl Scraper

Pricing

$15.00/month + usage

Go to Apify Store
Pracuj.pl Scraper

Pracuj.pl Scraper

Automated web scraper for extracting job listings from Pracuj.pl, Poland's leading job portal. This actor collects comprehensive job data including titles, companies, locations, salary information, and detailed job descriptions.

Pricing

$15.00/month + usage

Rating

0.0

(0)

Developer

Paweł

Paweł

Maintained by Community

Actor stats

0

Bookmarked

6

Total users

4

Monthly active users

4 days ago

Last modified

Share

Pracuj.pl Job Scraper

A fast and efficient Apify Actor for scraping job listings from Pracuj.pl, Poland's leading job search portal. Extract comprehensive job data including salaries, locations, company information, work modes, and detailed job descriptions.

Features

  • Flexible Search Options - Use direct URLs or build searches with keyword and location
  • Advanced URL Filtering - Apply Pracuj.pl filters via URL parameters (seniority, work mode, contract type, working time)
  • Automatic Pagination - Scrape multiple pages automatically with configurable item limits
  • Full Job Details - Optional extraction of complete job descriptions, requirements, responsibilities, and benefits
  • Salary Information - Capture salary ranges when disclosed
  • Work Mode Detection - Automatically extract work mode (remote, hybrid, office, mobile)
  • Company Data - Extract company names and profile links
  • Text Normalization - Clean formatting with capitalized first letters for all text fields
  • Cost-Effective - Minimal compute usage with smart concurrency settings

Input Configuration

The actor accepts the following input parameters:

ParameterTypeDescriptionRequiredDefault
startUrlsArrayDirect URLs to Pracuj.pl search resultsNo-
keywordStringJob search keyword (e.g., "python developer", "marketing manager")No-
locationStringCity or location (e.g., "warszawa", "krakow", "wroclaw")No-
seniorityLevelArray of StringsFilter by seniority level - URL param values (e.g., ["1", "2"])No[]
workModeArray of StringsFilter by work mode - URL param values (e.g., ["1", "2"])No[]
contractTypeArray of StringsFilter by contract type - URL param values (e.g., ["1", "3"])No[]
workingTimeArray of StringsFilter by working time - URL param values (e.g., ["1"])No[]
maxItemsIntegerMaximum items to scrape (0 = unlimited)No100
extractFullDetailsBooleanExtract detailed sections (responsibilities, requirements, benefits) - requires residential proxies!Nofalse
maxConcurrencyIntegerMax parallel requests (1-100)No10
minConcurrencyIntegerMin parallel requests (1-100)No1
maxRequestRetriesIntegerMax retries for failed requestsNo3
maxRequestsPerMinuteIntegerMax requests per minuteNo120
proxyConfigurationObjectProxy settings - required only when extractFullDetails: trueNo-

How Search & Filters Work

The scraper can work in two modes:

1. Direct URLs (startUrls)

  • Provide complete Pracuj.pl URLs with all filters already applied
  • Fastest and most reliable method
  • Example: "https://www.pracuj.pl/praca/python;kw?et=1&ct=2"

2. Build from keyword/location + filters

  • Provide keyword and/or location (both are optional)
  • Optionally add filter parameters
  • Scraper builds the URL automatically

Available Filter Parameters

Filters can be provided as text values (Polish or English) or numeric URL parameter values. The scraper automatically converts text values to the appropriate URL parameters.

Seniority Level (seniorityLevel)

PolishEnglishURL Value
praktykant, stażystaintern, trainee1
asystentassistant17
junior, młodszy specjalistajunior4
mid, regular, specjalistamid, specialist16
senior, starszy specjalistasenior18
ekspertexpert5
kierownik, koordynatormanager6
menedżermanager7
dyrektordirector8
prezesceo9

Contract Type (contractType)

PolishEnglishURL Value
umowa o pracę, uopemployment contract, permanent1
kontrakt b2b, b2bcontract3
umowa zlecenie, uzmandate contract5
umowa o dzieło, uodspecific task contract6
umowa na zastępstwotemporary replacement13
umowa agencyjnaagency contract14
umowa o pracę tymczasowątemporary work15
umowa o staż, praktykiinternship16

Working Time (workingTime)

PolishEnglishURL Value
pełny etat, full timefull-time, fulltime1
część etatu, part timepart-time, parttime2
dodatkowa, tymczasowaadditional, temporary3

Work Mode (workMode)

PolishEnglishURL Value
stacjonarna, praca stacjonarna, biurooffice, on-site, onsite1
hybrydowa, praca hybrydowahybrid2
zdalna, praca zdalnaremote3
mobilna, praca mobilnamobile4

Usage Examples:

{
"seniorityLevel": ["senior", "mid"],
"contractType": ["b2b", "umowa o pracę"],
"workMode": ["remote", "hybrid"],
"workingTime": ["full-time"]
}

Or with numeric values:

{
"seniorityLevel": ["18", "16"],
"contractType": ["3", "1"],
"workMode": ["3", "2"],
"workingTime": ["1"]
}

Note: Text values are case-insensitive. Both Polish and English are accepted interchangeably.

Example Input - Using Direct URL

{
"startUrls": [
{
"url": "https://www.pracuj.pl/praca/senior%20software%20engineer;kw"
}
],
"maxItems": 50,
"extractFullDetails": false
}

Example Input - Using Keyword and Filters (Text Values)

{
"keyword": "python developer",
"location": "warszawa",
"seniorityLevel": ["senior", "mid"],
"workMode": ["remote", "hybrid"],
"contractType": ["b2b", "umowa o pracę"],
"workingTime": ["full-time"],
"maxItems": 100,
"extractFullDetails": true
}

Example Input - Using English Text Values

{
"keyword": "software engineer",
"location": "krakow",
"seniorityLevel": ["senior", "mid"],
"workMode": ["remote"],
"contractType": ["contract", "permanent"],
"workingTime": ["full-time"],
"maxItems": 50,
"extractFullDetails": false
}

Example Input - Using Numeric URL Values

{
"keyword": "data analyst",
"seniorityLevel": ["18", "16"],
"workMode": ["3", "2"],
"contractType": ["1"],
"maxItems": 200,
"extractFullDetails": true
}

Output Format

Default Output (extractFullDetails: false)

Each job listing contains comprehensive data extracted from listing pages:

{
"jobTitle": "QA Automation Test Engineer",
"companyName": "PRETIUS SOFTWARE SP. Z O.O.",
"companyId": 20298218,
"companyUrl": "https://pracodawcy.pracuj.pl/company/20298218",
"location": "Warszawa",
"locations": ["Warszawa"],
"salary": "110–140 zł netto (+ VAT) / godz.",
"workMode": "Praca zdalna",
"employmentType": "Kontrakt B2B",
"seniorityLevel": "Starszy specjalista (Senior)",
"workingHours": "Pełny etat",
"publishedDate": "2025-11-18T15:07:00Z",
"expirationDate": "2025-11-21T22:59:59Z",
"isFeatured": true,
"isRemoteAllowed": true,
"aiSummary": "<ul><li>Masz doświadczenie jako <b>QA Automation Test Engineer</b> i znasz narzędzia do automatyzacji testów.</li><li>Posiadasz umiejętność <b>testowania API</b> oraz znajomość języków skryptowych, np. JavaScript i Playwright.</li><li>Pracujesz z <b>CI/CD</b> oraz narzędziami jak Jenkins lub GitLab.</li><li>Cenisz <b>benefity</b> takie jak prywatna opieka medyczna, Multisport oraz elastyczne godziny pracy.</li><li>Chcesz rozwijać i utrzymywać <b>automatyczne testy</b> oraz usprawniać procesy testowania.</li></ul>",
"jobDescription": "Your responsibilities, Develop and execute automated test scripts using standard tools and frameworks., Perform API testing to validate the functionality, performance, and reliability of our software., Design, implement, and maintain automated...",
"jobUrl": "https://www.pracuj.pl/praca/qa-automation-test-engineer-warszawa,oferta,1004436512",
"allOfferUrls": ["https://www.pracuj.pl/praca/qa-automation-test-engineer-warszawa,oferta,1004436512"],
"scrapedAt": "2025-11-18T15:10:33.335Z"
}

Note: The default mode provides comprehensive job information including AI-generated summaries. Fast, reliable, works without proxies!

Full Details Output (extractFullDetails: true)

When enabled, all data is merged into a single record including detailed sections:

{
"jobTitle": "Node.js Developer",
"companyName": "PRETIUS SOFTWARE SP. Z O.O.",
"companyId": 20298218,
"companyUrl": "https://pracodawcy.pracuj.pl/company/20298218",
"location": "Rzeszów",
"locations": ["Rzeszów"],
"salary": "150–180 zł netto (+ VAT) / godz.",
"workMode": "Praca zdalna",
"employmentType": "Kontrakt B2B",
"seniorityLevel": "Starszy specjalista (Senior)",
"workingHours": "Pełny etat",
"publishedDate": "2025-11-18T15:07:00Z",
"expirationDate": "2025-11-21T22:59:59Z",
"isFeatured": false,
"isRemoteAllowed": true,
"aiSummary": "<ul><li>Masz doświadczenie w budowaniu aplikacji z użyciem <b>Node.js</b>...</li></ul>",
"jobDescription": "Rozwój modułu zarządzania kartami płatniczymi, budżetami i transakcjami...",
"responsibilities": [
"Rozwój modułu zarządzania kartami płatniczymi, budżetami i transakcjami",
"Tworzenie nowych funkcjonalności, budowa zupełnie nowego API integracyjnego",
"Architektura mikroserwisów, 100% cloud w AWS (50+ serwisów)"
],
"requirementsExpected": [
"Doświadczenie w budowaniu aplikacji z użyciem Node",
"Doświadczenie w pisaniu testów automatycznych",
"Jęz. angielski na poziomie B2"
],
"benefits": [
"Stawiamy na długofalowe relacje oparte na uczciwych zasadach i rzetelności",
"Dofinansowanie karty sportowej Multisport i opieki zdrowotnej Medicover",
"Możliwość pracy w nowoczesnym biurze"
],
"jobUrl": "https://www.pracuj.pl/praca/node-js-developer-rzeszow,oferta,1004436512",
"allOfferUrls": ["https://www.pracuj.pl/praca/node-js-developer-rzeszow,oferta,1004436512"],
"scrapedAt": "2025-11-18T15:10:33.335Z"
}

Output Fields Reference

Always extracted (no proxies needed) with extractFullDetails: false (DEFAULT):

  • jobTitle - Position title
  • companyName - Employer name
  • companyId - Unique company identifier
  • companyUrl - Link to company profile on Pracuj.pl
  • location - Primary job location (e.g., "Warszawa")
  • locations - Array of all locations for multi-location offers
  • salary - Salary information when disclosed (cleaned - nbsp replaced with spaces)
  • workMode - Work arrangement (e.g., "Praca zdalna", "Praca hybrydowa")
  • employmentType - Contract type (e.g., "Kontrakt B2B", "Umowa o pracę")
  • seniorityLevel - Position level (e.g., "Starszy specjalista (Senior)")
  • workingHours - Working time (e.g., "Pełny etat")
  • publishedDate - ISO 8601 timestamp when posted
  • expirationDate - ISO 8601 timestamp when offer expires
  • isFeatured - Boolean indicating promoted/super offer status
  • isRemoteAllowed - Boolean indicating if remote work is allowed
  • aiSummary - AI-generated HTML summary with highlighted keywords (very comprehensive!)
  • jobDescription - Brief job description text snippet
  • jobUrl - Primary direct URL to the job listing
  • allOfferUrls - Array of all URLs for multi-location grouped offers
  • scrapedAt - ISO 8601 timestamp of scraping time

Additional fields with extractFullDetails: true (REQUIRES RESIDENTIAL PROXIES ⚠️):

These fields are merged into the same record with all basic fields above:

  • responsibilities - Array of job responsibilities (Twój zakres obowiązków)
  • requirementsExpected - Array of required qualifications
  • requirementsOptional - Array of optional qualifications (Mile widziane)
  • benefits - Array of company benefits (To oferujemy)

Notes:

  • Fields may be empty strings or arrays if information is not available
  • Not all jobs have salary information (~40-60% don't disclose)
  • Multi-location offers are grouped - check locations and allOfferUrls arrays
  • Non-breaking spaces (nbsp) are automatically cleaned from salary field
  • The aiSummary field provides comprehensive information for most use cases!

Use Cases

  • Job Market Analysis - Analyze salary trends and in-demand skills across Poland
  • Career Research - Find job opportunities matching specific criteria
  • Recruitment Intelligence - Track competitor hiring patterns and job market trends
  • Remote Work Monitoring - Identify companies offering remote and hybrid positions
  • Salary Benchmarking - Compare salary ranges across different positions and locations
  • Skills Analysis - Identify most requested skills and requirements in your field
  • Company Research - Track hiring activity of specific companies
  • Location Analysis - Understand job market dynamics in different Polish cities

Performance & Best Practices

Performance Tips

  • Use extractFullDetails: false (default) for fast, cost-effective scraping
    • Default mode: ~0.5-1 second per listing (listing pages only)
    • Full details mode: ~2-3 seconds per listing (visits each job page)
    • Default mode is recommended for 99% of use cases
  • Set maxItems to control the number of jobs scraped and limit run duration
  • Adjust concurrency carefully:
    • Higher concurrency without proxies = guaranteed 429 errors!
  • Use specific filters to narrow down results before scraping
  • Monitor costs when using extractFullDetails: true with proxies

Important Notes

  • Pracuj.pl has strict rate limiting - respect it to avoid blocks
  • The scraper extracts publicly available data from Pracuj.pl
  • Not all job listings have complete information:
    • Salary is often not disclosed (~40-60% of listings)
    • Some detailed fields may be empty even with extractFullDetails: true
  • The isFeatured flag marks promoted/super offer listings
  • Filter values are Pracuj.pl-specific and may change over time

Check out our other scrapers for Polish e-commerce, automotive, and job market data:

Your Feedback

We are always working to improve Actors' performance. So, if you have any technical feedback about Pracuj.pl Job Scraper or simply found a bug, please create an issue on the Actor's Issues tab in Apify Console.