Jobs.cz Scraper
Pricing
from $1.00 / 1,000 results
Jobs.cz Scraper
Turn Jobs.cz into structured Czech hiring data. Pull salary ranges, benefits, geo coordinates, required languages and full descriptions from any search or position URL. Handles every Jobs.cz page type, one clean row per job. JSON or CSV out, billed per result.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Muhamed Didovic
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
2 days ago
Last modified
Share
Extract structured job listings from Jobs.cz, the largest job board in the Czech Republic. Turn any search, profession, or direct position URL into clean rows carrying title, employer, salary, location, benefits, required education and languages, and the full job description — ready for market research, salary benchmarking, and recruitment analytics.
How it works

✨ Why use this scraper?
- Rich structured output — salary min/max with currency and period, map coordinates, benefits, required education, and required languages, not just a title and a blob of text.
- Every page type handled — Jobs.cz serves positions through three different templates (interactive widget, classic server-rendered, and employer-branded micro-sites). This scraper detects and parses all three, so you never get empty rows.
- Direct + search URLs — paste a filtered search URL, a profession/location route, or a direct
/rpd/{id}/position URL. They're auto-classified and can be mixed in one run. - Recency filter — restrict a run to positions published in the last N hours for lightweight daily monitoring.
- Clean, deduplicated rows — one row per position, deduped by ID, normalised into a stable column layout.
- Optional employer email enrichment — opt-in, best-effort contact-email discovery per employer.
🎯 Use cases
| Audience | What they get |
|---|---|
| Market analysts | Track hiring demand by profession, city, and region across the Czech market. |
| Compensation teams | Benchmark salary ranges by role, employer, and location using structured min/max values. |
| Recruiters & sourcers | Monitor competitor hiring, high-volume employers, and fresh postings. |
| Job boards & aggregators | Feed normalised Jobs.cz listings into an internal search product or pipeline. |
| Data teams | Build datasets with geo coordinates, benefits, and language requirements for modelling. |
📥 Supported inputs
| Input pattern | Example | Handled as |
|---|---|---|
| Profession / location route | https://www.jobs.cz/prace/programator/ | Listing |
| Filtered search URL | https://www.jobs.cz/prace/praha/?q[]=vývojář | Listing |
| Direct position URL | https://www.jobs.cz/rpd/2001279170/ | Position detail |
Not supported: logged-in recruiter areas, candidate accounts, or any content behind a Jobs.cz login. Only publicly available position pages are accessed.
⚠️ Proxy note
Jobs.cz works over direct connections and residential proxies; Apify datacenter proxies are blocked by the site. The input defaults to a residential proxy pinned to the Czech Republic, which is recommended for larger runs.
🔄 How it works
- Classify each start URL as a listing/search page or a direct position URL.
- Walk pagination on listing pages (
?page=N), collecting position IDs until the results run out ormaxItemsis reached. - Detect the page type for each position: interactive widget, classic server-rendered, or employer-branded micro-site.
- Extract the structured data — via the site's own position-detail GraphQL API for widget pages, or by parsing the DOM for classic/branded pages.
- Normalise & push one clean row per position to the dataset.
⚙️ Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
startUrls | array | ["https://www.jobs.cz/prace/programator/"] | Jobs.cz listing/search and/or direct position URLs. |
enrichEmails | boolean | false | Opt-in employer contact-email discovery (billed per email found). |
postedWithinHours | integer | 24 (prefill) | Keep only positions published within the last N hours; 0/empty = all. |
maxItems | integer | 1000 | Hard cap on positions collected. |
maxConcurrency | integer | 10 | Max position detail requests in parallel. |
proxy | object | Residential (CZ) | Proxy configuration. |
📊 Output overview
Each dataset item is one job position. Fields common to all Jobs.cz positions (title, employer, location, apply URL, description) are always present; the richer structured block (salary, coordinates, benefits, required education/languages, suitability flags) is populated from the site's position-detail API when available. A small share of employer-branded listings expose core fields (title, company, teaser, apply URL) but not the full structured block — those rows carry detailSource: "branded" so you can tell them apart.
📦 Output sample
{"type": "job","source": "jobs.cz","jobId": "2001279170","jobUrl": "https://www.jobs.cz/rpd/2001279170/","title": "Senior Data Science, Python Developer","companyName": "Agnostix, s.r.o.","location": "Hybernská, Nové Město, Praha, Hlavní město Praha, Česká republika","remote": false,"salary": { "currency": "CZK", "min": 140000, "max": 180000, "unit": "měsíc", "raw": "140000–180000 Kč/měsíc" },"salaryRaw": "140000–180000 Kč/měsíc","categories": ["IS/IT: Vývoj aplikací a systémů", "Machine Learning Engineer", "Python vývojář"],"employmentTypes": ["Práce na plný úvazek"],"contractType": "pracovní smlouva, práce na živnostenský list (IČO)","requiredEducation": "Vysokoškolské / univerzitní","requiredLanguages": ["Čeština — Výborná"],"benefits": ["Firemní akce", "Možnost občasné práce z domova", "Nadstandardní lékařská péče"],"coordinates": { "latitude": 50.08714305470315, "longitude": 14.433809200686099 },"postedDate": "2026-06-12T16:22:22+02:00","companyPhone": "+420 774 527 762","description": "<p>🧐 <strong>Hledáme Data Science se znalostí Pythonu…</strong></p>","descriptionText": "🧐 Hledáme Data Science se znalostí Pythonu pro projekt v oblasti Telco…","applyType": "internal","applyUrl": "https://www.jobs.cz/jof/2001279170/","detailSource": "graphql","scrapedAt": "2026-07-12T03:44:48.167Z"}
🗂 Key output fields
| Category | Fields |
|---|---|
| Identity | jobId, jobUrl, title, source |
| Employer | companyName, companyPhone, companyEmail, employerHost |
| Location | location, addressLocality, addressRegion, postcode, country, coordinates |
| Compensation | salary (currency, min, max, unit, raw), salaryRaw |
| Classification | categories, employmentTypes, contractType, contractDuration, hours, requiredEducation, requiredLanguages, benefits, remote |
| Suitability | suitableForGraduate, suitableForDisabled, suitableForPensioner, suitableForMaternityLeave |
| Dates | postedDate, closingDate |
| Content | description (HTML), descriptionText (plain), teaser |
| Apply | applyType, applyUrl, applyEmail |
| Meta | detailSource (graphql / classic / branded), scrapedAt |
❓ FAQ
Why do some rows have less data than others?
Jobs.cz renders positions through three templates. Widget and classic pages yield the full structured block. A minority of employer-branded micro-sites expose only core fields (title, company, teaser, apply URL); those rows are tagged detailSource: "branded".
Does it return salary for every job?
No — many Czech listings don't publish a salary. When the site shows one, it's parsed into salary.min/salary.max with currency and period.
Can I scrape a specific search?
Yes. Run your search on jobs.cz with any keyword, location, or filter, then copy the resulting address-bar URL into startUrls.
How do I get only fresh jobs?
Set postedWithinHours (e.g. 24). Positions without a published date are always kept.
Does it need a proxy? Direct connections work, but a residential proxy (Czech Republic) is recommended for larger runs. Apify datacenter proxies are blocked by the site.
💬 Support
Found a bug or need a new field? Open an issue on the actor's Issues tab and it'll be looked at.
🛠 Additional services
Need a custom scraper for another job board, directory, or listing site? Custom builds, scheduled runs, and enrichment pipelines are available on request.
🔎 Explore more scrapers
Looking for other markets? Check out the other job-board scrapers in the same style, covering boards across Europe and beyond.
⚠️ Disclaimer
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Jobs.cz, Alma Career, LMC s.r.o., or any of their subsidiaries or affiliates. All trademarks mentioned are the property of their respective owners.
The scraper accesses only publicly available job-listing pages — no authenticated endpoints, recruiter-only features, or content behind a Jobs.cz login. Users are responsible for ensuring their use complies with Jobs.cz's Terms of Service, applicable data-protection law (GDPR, CCPA, etc.), and any contractual obligations of their own organisation.
SEO Keywords
jobs.cz scraper, scrape jobs.cz, jobs.cz api, jobs.cz job scraper, czech job board scraper, czech republic jobs data, prague jobs scraper, jobs.cz crawler, apify jobs.cz, czech jobs api, salary benchmark czech republic, recruitment data czech, hiring trends czech republic, alma career scraper, lmc jobs scraper, jobs.cz salary data, czech vacancy scraper, job listings czech republic, jobs.cz alternative api, praha jobs scraper