Jobs.cz - Czech Jobs, Salary, Benefits & GPS avatar

Jobs.cz - Czech Jobs, Salary, Benefits & GPS

Pricing

from $1.20 / 1,000 job results

Go to Apify Store
Jobs.cz - Czech Jobs, Salary, Benefits & GPS

Jobs.cz - Czech Jobs, Salary, Benefits & GPS

Scrape Czech job listings from Jobs.cz. Search builder (keyword, location, field, salary, employment type) or paste any Jobs.cz URL. Title, company, salary range with currency and period, benefits, GPS coordinates, required education and languages, employer contact info, remote/hybrid flag,.

Pricing

from $1.20 / 1,000 job results

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

Jobs.cz Scraper

Turn Jobs.cz, the largest job board in the Czech Republic, into structured hiring data. Build a search (keyword, location, field, salary range, employment type) or paste any Jobs.cz URL, and get one clean row per job with salary, benefits, GPS coordinates, required education and languages, the full description, and employer contact info.

Why use this scraper?

  • Search builder + URL mode — build a search from Czech-language keywords, locations, fields, salary range and employment type, or paste any Jobs.cz listing/search/position URL (they mix freely in one run).
  • No empty rows — jobs published on Jobs.cz itself come back fully populated, and so do employer micro-sites that expose their listing. When a page genuinely cannot be read, the run says so instead of returning a row of nulls you would still be billed for.
  • Rich structured output — salary min/max with currency and period, GPS coordinates, benefits, required education and languages, employment/contract type, suitability flags, employer phone/email/contact, remote/hybrid flag, posting date, and the full HTML + plain-text description.
  • Czech-language aware — field labels (Požadované vzdělání, Požadované jazyky, Typ pracovního poměru, …) and descriptions are extracted and normalized, and the salary text (150 000 – 185 000 Kč) parses into structured salary.min/salary.max.
  • Incremental monitoring — schedule a daily run against the same search and get only what changed (NEW / UPDATED / REAPPEARED / EXPIRED), remembering state itself between runs.
  • Cheap — light footprint, runs at 512 MB (vs. heavier scrapers), over Apify datacenter or residential proxy.

Inputs

Search mode

Jobs.cz has two kinds of search input, and they behave differently. Keyword and field say what to look for and the site treats them as alternatives — adding a field returns more jobs, not fewer. Everything else narrows what those matched.

InputKindDescription
keywordwhat to look forFree-text search, e.g. python, programátor, účetní. Czech text works.
fieldwhat to look forProfessional field (obor) as Jobs.cz names it, e.g. IS/IT, Doprava. Looked up in the site's field list for you. Widens the results — use it on its own to sweep a whole field.
locationnarrowsFree-text location, e.g. Praha, Brno, Plzeň. Resolved to a Jobs.cz locality automatically.
minSalarynarrowsMinimum gross salary in CZK/month.
employmentTypenarrowsFull-time, part-time, employment contract, trade license, agreement, or internships.
educationnarrowsRequired education: without diploma / high-school / university.
arrangementnarrowsWork arrangement: partial from home, mostly from home, flexible hours.

How much each one narrows, measured live on 2026-08-10 against a 247-job python search: minimum salary 60 000 CZK → 178 · 150 000 CZK → 15 · full-time → 239 · part-time → 13 · internships → 7 · employment contract → 222 · trade licence → 20 · agreement → 7 · without diploma → 2 · high-school → 117 · university → 108 · partial from home → 153 · mostly from home → 22 · flexible hours → 159 · Praha → 160.

URL mode

Paste any Jobs.cz URL — listing pages (/prace/{profession}/, /prace/{location}/, filtered searches) and direct position URLs (/rpd/{id}/) are auto-classified and mixed freely.

A direct position URL whose job has been taken down returns no row and is reported as gone (and, in incremental mode, marked EXPIRED). A position whose page could not be read at all — a block, or an employer careers template this Actor cannot parse — also returns no row, but is reported as unread: nothing is billed for it, nothing is marked expired, and the incremental baseline is left untouched so a temporary failure cannot look like a job disappearing.

Output and limits

maxItems is the run's cap (default 20). maxPages is unlimited by default and defers to maxItems.

Resume & recurring updates

  • resumeFromRunId — continue ONE interrupted crawl without re-returning already-collected jobs.
  • incrementalMode — recurring monitoring: the actor remembers the previous run of the same search itself (keyed on the search setup) and returns only NEW / UPDATED / REAPPEARED / EXPIRED jobs.

EXPIRED is only ever emitted after a run that read every search page it asked for. If a run is capped by maxItems/maxPages, resumed from a run id, or stopped because a page could not be read, the actor keeps the previous state as-is, tells you so in the log, and does not advance its saved baseline, so a temporary block can never mark your tracked jobs as gone (and never bills you for those rows, nor for the REAPPEARED rows when they come back).

Send results into your apps (MCP connectors)

InputDescription
mcpConnectorsOptional MCP connectors to export results into (Notion, Linear, Airtable, Apify). Leave empty to skip.
notionParentPageUrlNotion connector only: the page under which item pages are created.
maxNotifyListingsCap on items exported to each connector per run (default 50). Does not affect the dataset.

Detail enrichment (optional surcharge)

fetchDetails (off by default) opens each job's detail page and adds the full description, structured salary, benefits, GPS, education/languages, employer contact and remote/hybrid flags. It adds one request per job and is billed as a separate detail-enrichment surcharge on top of the base result price.

You are charged the surcharge only for rows you actually receive, and only when their detail page was really read — never more than once per job:

  • A minority of Jobs.cz positions live on an employer careers site that publishes no readable detail page. Those jobs are still returned, with their search-page fields and detailSource: null, and are not charged. If a whole run turns out to be like that, the actor stops opening detail pages altogether and says so in the log and in the run summary (detailEnrichmentDisabled), rather than paying for pages it cannot read.
  • In Incremental mode an unchanged job's detail page still has to be read to tell whether anything changed, but if the row is suppressed (not delivered) it is not charged. A run that returns nothing therefore costs no surcharge at all.

Output

Each dataset item is one job. Key fields:

CategoryFields
IdentityjobId, jobUrl, title
EmployercompanyName, companyLogo, employerPhone, employerEmail, contactName, contactCompanyName, companyAddress, employerProfileUrl
Locationlocation, addressLocality, addressRegion, postcode, country, coordinates (latitude/longitude)
Compensationsalary (currency, min, max, unit, raw), salaryRaw
Classificationcategories, employmentTypes, contractType, contractDuration, hoursPerWeek, requiredEducation, requiredLanguages, benefits, remote, arrangement
SuitabilitysuitableForGraduate, suitableForDisabled, suitableForPensioner, suitableForMaternityLeave
DatespostedDate
Contentdescription (HTML), descriptionText (plain), teaser
ApplyapplyUrl, applyType
MetadetailSource (job-page / employer-site), scrapedAt
IncrementalchangeType (NEW / UPDATED / REAPPEARED / EXPIRED), changedFields, firstSeenAt, lastSeenAt

Output sample

Illustrative only — the employer, contact details and coordinates below are fictional placeholders, not a real posting.

{
"jobId": "0000000000",
"jobUrl": "https://www.jobs.cz/rpd/0000000000/",
"title": "Senior Data Science, Python Developer",
"companyName": "Example Company s.r.o.",
"location": "Praha 1, Hlavní město Praha",
"coordinates": { "latitude": 50.0755, "longitude": 14.4378 },
"salary": { "currency": "CZK", "min": 140000, "max": 180000, "unit": "měsíc", "raw": "140000–180000 Kč měsíc" },
"employmentTypes": ["Práce na plný úvazek"],
"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"],
"remote": true,
"arrangement": "hybrid",
"postedDate": "2026-06-12T16:22:22+02:00",
"employerPhone": "+420 555 010 042",
"employerEmail": "kariera@example.com",
"detailSource": "employer-site",
"descriptionText": "Hledáme datového vědce se znalostí Pythonu…"
}

Proxy

Jobs.cz works over both the Apify datacenter and residential proxy groups. Leave the default (no group) for the cheapest runs; switch to Residential with country CZ for larger runs where a Czech exit improves reliability. The actor fails fast on a repeated block rather than grinding.

If it cannot read a single search page after retrying on fresh exit IPs, the run fails with a message saying so, rather than finishing green with an empty dataset. A run that read some pages but not all finishes with a partial-results warning. Either way nothing is marked EXPIRED and the incremental baseline is left untouched. Re-run, ideally on Residential with country CZ.

Free-tier users: the actor works over the Apify proxy included with your plan. Larger runs work best on a paid plan with residential access.

Send results into your apps (MCP connectors)

Optionally pipe results into the apps you already use through Model Context Protocol (MCP) connectors. Authorize a connector once under Apify, Settings, Integrations, then select it in the mcpConnectors field. Each connector receives a condensed, human-readable summary per job (title plus key fields), while the complete record always stays in the Apify dataset. For Notion, set notionParentPageUrl to the page the item pages should be created under, and use maxNotifyListings to cap how many items are exported per connector per run. Supported connectors: Notion, Linear, Airtable and Apify. Leave the field empty to skip; it never changes the dataset output.

FAQ

Does it return salary for every job? No — many Czech listings don't publish one. When the site shows a salary, it's parsed into salary.min/salary.max with currency and period.

Does it return GPS for every job? Employer-branded micro-site listings come back with exact coordinates. Other listings are geocoded from their address (best-effort). Not every job publishes an address.

How do I get only fresh jobs? Turn on Incremental mode and schedule the run. Every later run of the same search returns only what changed — new jobs, jobs whose details moved, and (optionally) jobs that have gone.

What does detailSource mean? Which page a row's fields came from: job-page for a listing hosted on Jobs.cz itself, employer-site for one published on the employer's own careers micro-site.

This Actor is an independent tool and is not affiliated with or endorsed by Jobs.cz, Alma Career, or LMC s.r.o. It accesses only publicly available job-listing pages. Users are responsible for complying with Jobs.cz's Terms of Service and applicable law.