Pracuj.pl Scraper
Pricing
$15.00/month + usage
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.
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:
| Parameter | Type | Description | Required | Default |
|---|---|---|---|---|
startUrls | Array | Direct URLs to Pracuj.pl search results | No | - |
keyword | String | Job search keyword (e.g., "python developer", "marketing manager") | No | - |
location | String | City or location (e.g., "warszawa", "krakow", "wroclaw") | No | - |
seniorityLevel | Array of Strings | Filter by seniority level - URL param values (e.g., ["1", "2"]) | No | [] |
workMode | Array of Strings | Filter by work mode - URL param values (e.g., ["1", "2"]) | No | [] |
contractType | Array of Strings | Filter by contract type - URL param values (e.g., ["1", "3"]) | No | [] |
workingTime | Array of Strings | Filter by working time - URL param values (e.g., ["1"]) | No | [] |
maxItems | Integer | Maximum items to scrape (0 = unlimited) | No | 100 |
extractFullDetails | Boolean | Visit each job page for full details | No | true |
proxyConfiguration | Object | Proxy settings for the scraper | No | - |
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
keywordand/orlocation(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)
| Polish | English | URL Value |
|---|---|---|
| praktykant, stażysta | intern, trainee | 1 |
| asystent | assistant | 17 |
| junior, młodszy specjalista | junior | 4 |
| mid, regular, specjalista | mid, specialist | 16 |
| senior, starszy specjalista | senior | 18 |
| ekspert | expert | 5 |
| kierownik, koordynator | manager | 6 |
| menedżer | manager | 7 |
| dyrektor | director | 8 |
| prezes | ceo | 9 |
Contract Type (contractType)
| Polish | English | URL Value |
|---|---|---|
| umowa o pracę, uop | employment contract, permanent | 1 |
| kontrakt b2b, b2b | contract | 3 |
| umowa zlecenie, uz | mandate contract | 5 |
| umowa o dzieło, uod | specific task contract | 6 |
| umowa na zastępstwo | temporary replacement | 13 |
| umowa agencyjna | agency contract | 14 |
| umowa o pracę tymczasową | temporary work | 15 |
| umowa o staż, praktyki | internship | 16 |
Working Time (workingTime)
| Polish | English | URL Value |
|---|---|---|
| pełny etat, full time | full-time, fulltime | 1 |
| część etatu, part time | part-time, parttime | 2 |
| dodatkowa, tymczasowa | additional, temporary | 3 |
Work Mode (workMode)
| Polish | English | URL Value |
|---|---|---|
| stacjonarna, praca stacjonarna, biuro | office, on-site, onsite | 1 |
| hybrydowa, praca hybrydowa | hybrid | 2 |
| zdalna, praca zdalna | remote | 3 |
| mobilna, praca mobilna | mobile | 4 |
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.pllocation- 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 listingurl- Direct URL to the job listingscrapedAt- 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: falsefor 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
maxItemsto 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
isFeaturedflag marks promoted/featured job listings - Filter values (
seniorityLevel,contractType, etc.) are Pracuj.pl-specific and may change - The scraper automatically handles pagination until
maxItemsis reached or no more pages exist
Related Actors
Check out our other scrapers for automotive and e-commerce data:
- Vehis.pl Vehicle Details Scraper - Scrape detailed vehicle information from Vehis.pl
- Vehis.pl Vehicle Scraper - Extract vehicle listings from Vehis.pl
- Fast VIN Decoder - Decode vehicle VIN numbers to get detailed specifications
- Empik Product Search Scraper - Search and scrape products from Empik.com
- Empik Product Page Details Scraper - Get detailed product information from Empik
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.
On this page
Share Actor:
