Pracuj.pl Scraper avatar
Pracuj.pl Scraper

Pricing

$15.00/month + usage

Go to Apify Store
Pracuj.pl Scraper

Pracuj.pl Scraper

Developed by

Paweł

Paweł

Maintained by Community

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.

0.0 (0)

Pricing

$15.00/month + usage

0

2

1

Last modified

4 days ago

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
extractFullDetailsBooleanVisit each job page for full detailsNotrue
proxyConfigurationObjectProxy settings for the scraperNo-

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

All text fields are automatically normalized: cleaned of extra whitespace, lowercased, and then capitalized (first letter uppercase).

Basic Output (extractFullDetails: false)

Each job listing contains:

{
"jobTitle": "Senior software engineer",
"companyName": "Example tech sp. z o.o.",
"companyUrl": "https://www.pracuj.pl/praca/example-tech",
"location": "Warszawa, mokotów",
"salary": "15 000 - 20 000 pln netto / mies.",
"workMode": "Praca zdalna",
"employmentType": "Umowa o pracę",
"seniorityLevel": "Starszy specjalista (senior)",
"workingHours": "Pełny etat",
"publishedDate": "2 dni temu",
"isFeatured": false,
"url": "https://www.pracuj.pl/praca/senior-software-engineer-example-tech,oferta,12345",
"scrapedAt": "2025-01-04T12:00:00.000Z"
}

Full Output (extractFullDetails: true)

Includes all basic fields plus detailed information from the job page:

{
"jobTitle": "Senior software engineer",
"companyName": "Example tech sp. z o.o.",
"companyUrl": "https://www.pracuj.pl/praca/example-tech",
"location": "Warszawa, mokotów",
"salary": "15 000 - 20 000 pln netto / mies.",
"workMode": "Praca zdalna",
"employmentType": "Umowa o pracę",
"seniorityLevel": "Starszy specjalista (senior)",
"workingHours": "Pełny etat",
"publishedDate": "2 dni temu",
"isFeatured": false,
"jobDescription": "Poszukujemy doświadczonego programisty...\n\nW naszym zespole będziesz...",
"responsibilities": [
"Projektowanie i rozwój aplikacji backendowych",
"Code review i mentoring juniorów",
"Uczestnictwo w planowaniu sprintów"
],
"requirements": [
"5+ lat doświadczenia z python",
"Znajomość django/flask",
"Znajomość baz sql"
],
"whatWeOffer": [
"Elastyczne godziny pracy",
"100% praca zdalna",
"Budżet szkoleniowy 5000 pln rocznie"
],
"benefits": [
"Prywatna opieka medyczna",
"Karta multisport",
"Dofinansowanie do wypoczynku"
],
"technologies": [
"Python",
"Django",
"Postgresql",
"Docker"
],
"url": "https://www.pracuj.pl/praca/senior-software-engineer-example-tech,oferta,12345",
"scrapedAt": "2025-01-04T12:00:00.000Z"
}

Output Fields Reference

Basic fields (always extracted):

  • jobTitle - Position title (capitalized)
  • companyName - Employer name (capitalized)
  • companyUrl - Link to company profile on Pracuj.pl
  • location - Job location, e.g., "Warszawa, mokotów" (capitalized)
  • salary - Salary information when disclosed (capitalized)
  • workMode - Work arrangement: remote, hybrid, office, mobile (capitalized)
  • employmentType - Type of contract, e.g., "Umowa o pracę, B2b" (capitalized)
  • seniorityLevel - Position level, e.g., "Senior", "Mid", "Junior" (capitalized)
  • workingHours - Working time, e.g., "Pełny etat", "Część etatu" (capitalized)
  • publishedDate - When posted, e.g., "2 dni temu" (capitalized)
  • isFeatured - Boolean indicating if this is a promoted listing
  • url - Direct URL to the job listing
  • scrapedAt - ISO 8601 timestamp of scraping time

Detailed fields (only with extractFullDetails: true):

  • jobDescription - Full job description text (capitalized paragraphs joined with \n\n)
  • responsibilities - Array of job responsibilities (each item capitalized)
  • requirements - Array of job requirements (each item capitalized)
  • whatWeOffer - Array of what the company offers (each item capitalized)
  • benefits - Array of company benefits (each item capitalized)
  • technologies - Array of technologies/tools (each item capitalized)

Notes:

  • Fields may be empty strings or empty arrays if information is not available
  • Multiple employment types are joined with ", " (e.g., "Umowa o pracę, B2b")
  • All text is normalized: extra whitespace removed, lowercased, then first letter capitalized

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 for faster scraping when detailed information isn't needed
    • Basic mode: ~1-2 seconds per listing
    • Full details mode: ~3-5 seconds per listing (visits each job page)
  • Set maxItems to control the number of jobs scraped and limit run duration
  • Adjust concurrency (maxConcurrency, minConcurrency) based on your needs
    • Higher concurrency = faster but more resource-intensive
    • Lower concurrency = slower but more stable
  • Use specific filters in the URL to narrow down results before scraping
  • Enable proxies when scraping large datasets to avoid rate limiting

Important Notes

  • All text fields are automatically normalized (cleaned, lowercased, first letter capitalized)
  • 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/featured job listings
  • Filter values (seniorityLevel, contractType, etc.) are Pracuj.pl-specific and may change
  • The scraper automatically handles pagination until maxItems is reached or no more pages exist

Check out our other scrapers for automotive and e-commerce 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.