Jobs.cz at a glance
Jobs.cz is a ready-to-run Apify actor from abotapi for collecting jobs data. Its documented output includes job id, change type (incremental mode), title, company and location, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $2.00 per 1,000 results on the Apify Free plan and from $1.20 on paid plans, with smaller per-run or optional feature charges listed on Apify.
- Runs on
- Apify cloud: console, API, schedules and integrations
- Data type
- Jobs, Lead Generation, Automation
- Pricing
- $2.00 per 1,000 results (Free plan), from $1.20 on paid plans
- Output
- Documented below · JSON, CSV, Excel
- Inputs
- 22 options
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,.
What Jobs.cz can do
- Search builder and URL mode. Build a search from a Czech-language keyword, location, field, salary range and employment type, or paste any Jobs.cz listing, search or direct position URL, mixed freely in one run.
- Rich structured output. Salary range with currency and period, GPS coordinates, benefits, required education and languages, employment and contract type, suitability flags, employer phone, email and contact, remote or hybrid flag, posting date, and the full description in HTML and plain text, on a pasted single position link or with Fetch full job details on.
- Czech-language aware. Field labels and descriptions are extracted and normalized, and salary text such as "150 000 - 185 000 Kč" is parsed into structured salary.min / salary.max.
- Incremental monitoring, with a real limit. Schedule a recurring run against a search short enough to be read in full each time, and get only what changed. A search spanning more than a handful of pages is not currently guaranteed to be revisited in full on a scheduled run; see "Resume and recurring updates" below.
- Honest about blocked runs. A run that cannot read a single page fails loudly with a clear message instead of finishing green with an empty dataset, and nothing is ever marked as gone while a page could not be read.
Choose what to collect
These inputs let you configure Jobs.cz - Czech Jobs, Salary, Benefits & GPS. Open the actor on Apify to enter your values and review the current options.
| Input | What it controls |
|---|---|
modestring · required | search = build a Jobs.cz search from keywords, location, field, salary and employment type. url = paste one or more Jobs.cz listing/search or direct position URLs and walk them forward. |
keywordstring | Free-text search, e.g. "python", "programátor", "účetní" (Czech text works, Jobs.cz normalizes it). Leave blank to list everything. |
locationstring | Free-text location, e.g. "Praha", "Brno", "Plzeň". Matches Jobs.cz localities (regions, cities, districts). Leave blank for all of Czechia. |
fieldstring | Professional field (obor) as Jobs.cz names it, e.g. "IS/IT", "Doprava", "Ekonomika a podnikové finance". The Actor looks the name up in the Jobs.cz field list for you. Note this ADDS every job in that field to the results alongside your keyword, Jobs.cz treats keyword and field as alternatives, not as a combined filter, so use it on its own to sweep a whole field. Leave blank for all fields. |
minSalaryinteger | Only jobs advertising at least this monthly gross salary. 0/empty = no salary filter. |
employmentTypestring | Filter by employment type (typ úvazku). Empty = all types. All six values narrow the results (measured live: on a 247-job baseline, full 239 · part 13 · internships 7 · employment contract 222 · trade licence 20 · agreement 7). |
educationstring | Filter by required education. Empty = all. |
Show 15 more inputs
| Input | What it controls |
|---|---|
arrangementstring | Filter by work arrangement, this is where the remote/hybrid flag comes from. Empty = all. |
datePostedstring | Only jobs published within this window (Jobs.cz date filter). Empty = any date. Narrows whatever keyword/field matched. Jobs.cz offers no other sort or date options. |
urlsarray | Full Jobs.cz URLs to crawl. Listing pages are walked forward page by page; direct /rpd/{id}/ URLs are scraped as single jobs. To build a search URL, run your query on jobs.cz and copy the address bar URL. |
maxItemsinteger | Stop after this many jobs across all searches/URLs. This is the run's cap. |
maxPagesinteger | How many result pages to walk per search (Jobs.cz shows about 20 to 30 results per page). Leave empty / 0 for unlimited, in which case the run stops at Max items instead. |
fetchDetailsboolean | COSTS EXTRA. Off by default. Turning it on adds one request per job and is billed as a "detail-enrichment" surcharge on top of the base result price. You are charged only for rows you actually receive whose detail page was really read, and never more than once per job. Off = SERP-card fields only (title, company, location, teaser). |
resumeFromRunIdstring | Paste a previous run ID or dataset ID to continue a large crawl without returning or charging for jobs already collected there. For recurring daily monitoring of the same search, use Incremental mode below instead. |
incrementalModeboolean | Turn on for daily/recurring monitoring. The first run returns all matching jobs as NEW. Later runs return only NEW, UPDATED, and REAPPEARED jobs, plus EXPIRED ones when you enable Emit expired. State is kept separately for each keyword/location/field/salary/employment-type/URL setup; use State key to name or share a campaign. |
stateKeystring | Optional. Name this monitoring campaign to keep its state stable, or to share state across differently-configured runs. Leave empty to derive a key automatically from the search setup, different searches then never mix state. |
emitUnchangedboolean | Off by default. Turn on to also return jobs that have not changed since the last run, marked UNCHANGED. This returns, and bills, extra rows you already have. |
emitExpiredboolean | Off by default. Turn on to also return jobs that were present in a previous run but are no longer found, marked EXPIRED. This returns, and bills, extra rows. Only produced once a run fully scanned the tracked search: never when Max items or Max pages capped it, never when Resume was used, and never when a search page could not be read, so a temporary block cannot mark your live jobs as gone. |
ignoreFieldsForChangesarray | Field names that must NOT make a job count as UPDATED when only they change, e.g. teaser or benefits. Nested paths use dots (salary.raw). The ignored fields still appear in the output. The ad-promotion label (status) and the company logo URL are always ignored. Changing this list never causes a one-time wave of UPDATED rows. |
mcpConnectorsarray | Optionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON, the complete record stays in the dataset. Leave empty to skip. Supported: Notion, Linear, Airtable, Apify. |
notionParentPageUrlstring | URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors. |
maxNotifyListingsinteger | Cap on items written to each connector per run. Does not affect the dataset. |
Fields in the output
The documented dataset includes the fields below. Availability can depend on the source page and selected mode.
jobIdJob ID (text)changeTypeChange type (incremental mode) (text)titleTitle (text)companyNameCompany (text)locationLocation (text)coordinatesGPS coordinates (object)salarySalary (object)salaryRawSalary (raw) (text)employmentTypesEmployment type (array)contractTypeContract type (text)requiredEducationRequired education (text)requiredLanguagesRequired languages (text)Show 18 more fields
benefitsBenefits (array)remoteRemote (boolean)arrangementWork arrangement (text)postedDatePosted (text)descriptionTextDescription (text)employerPhoneEmployer phone (text)employerEmailEmployer email (text)jobUrlJob URL (link)detailSourceDetail source (text)changedFieldsChanged fields (incremental mode) (array)firstSeenAtFirst seen (incremental mode) (date)lastSeenAtLast seen (incremental mode) (date)salary.minSalary min (number)salary.maxSalary max (number)salary.unitSalary unit (text)salary.currencySalary currency (text)coordinates.latitudeLatitude (number)coordinates.longitudeLongitude (number)Example output
An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.
{
"jobId": "3300000001",
"jobUrl": "https://www.jobs.cz/rpd/3300000001/",
"title": "Senior Python Engineer, Cloud Platform",
"companyName": "Vzorová firma s.r.o.",
"companyLogo": "https://img.jobs.cz/logo/3300000001.png",
"location": "Praha 4, Hlavní město Praha",
"addressLocality": "Praha",
"addressRegion": "Hlavní město Praha",
"postcode": "14000",
"country": "Česká republika",
"coordinates": {
"latitude": 50.041,
"longitude": 14.437
},
"salary": {
"currency": "CZK",
"min": 90000,
"max": 120000,
"unit": "měsíc",
"raw": "90 000 - 120 000 Kč / měsíc"
},
"salaryRaw": "90 000 - 120 000 Kč / měsíc",
"employmentTypes": [
"Práce na plný úvazek"
],
"contractType": "Pracovní smlouva",
"contractDuration": "Na dobu neurčitou",
"hoursPerWeek": 40,
"requiredEducation": "Vysokoškolské / univerzitní",
"requiredLanguages": [
"Angličtina, úroveň Pokročilá"
],
"benefits": [
"Stravenky",
"Možnost občasné práce z domova",
"Příspěvek na vzdělávání"
],
"arrangement": "remote",
"remote": true,
"suitableForGraduate": false,
"suitableForDisabled": false,
"suitableForPensioner": false,
"suitableForMaternityLeave": false,
"postedDate": "2026-06-01T09:00:00+02:00",
"descriptionText": "Hledáme zkušeného vývojáře, který posílí náš tým...",
"contactCompanyName": "Vzorová firma s.r.o.",
"contactName": "Personální oddělení",
"employerPhone": "+420 200 300 400",
"employerEmail": "kariera@example.com",
"companyAddress": "Vzorová 12, Praha 4, 140 00, Česká republika",
"employerProfileUrl": "https://zetacompass.jobs.cz",
"detailSource": "employer-site",
"status": "Přidáno",
"scrapedAt": "2026-06-12T08:00:00.000Z"
}Ways to use this data
- Recruiters and staffing agencies: track competing postings across sectors, regions and salary bands to benchmark your own openings.
- Compensation and workforce researchers: build salary datasets by role, region and employment type straight from live listings.
- Job aggregators and alert bots: mirror a whole professional field or a narrow keyword search and get notified only when something changes.
- Talent sourcing tools: pull employer phone, email and contact name straight from a job posting to reach out directly.
- Market and content teams: track new-posting volume and remote/hybrid trends per field or region over time.
Before you run
Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.
Questions about this actor
What data does Jobs.cz return?
The documented output for Jobs.cz includes job id, change type (incremental mode), title, company, location, gps coordinates, salary and salary (raw). Availability of each field depends on the source page and the selected mode.
How much does Jobs.cz cost?
It costs $2.00 per 1,000 results on the Apify Free plan and from $1.20 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.
How do I get only new jobs on a schedule?
Turn on Incremental mode and schedule the run against the same search. The first run returns everything as NEW; later runs return only NEW and UPDATED jobs. REAPPEARED and EXPIRED are both off unless you also turn on Emit expired jobs, and even then EXPIRED only fires after a run that read every page of the search, so a job can only ever come back as REAPPEARED once a previous complete scan has already marked it EXPIRED.
Does it return salary and GPS for every job?
No. Many Czech listings do not publish a salary; when the site shows one, it is parsed into salary.min / salary.max with its currency and period. GPS coordinates come exact for jobs hosted on an employer's own careers micro-site, and are geocoded best-effort from the address for jobs hosted on Jobs.cz itself, only when Fetch full job details is on; not every job publishes an address to geocode.
Can I use it with AI agents or MCP?
Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable as they are scraped.
