Jobs.cz Jobs Scraper avatar

Jobs.cz Jobs Scraper

Pricing

Pay per event

Go to Apify Store
Jobs.cz Jobs Scraper

Jobs.cz Jobs Scraper

Search Jobs.cz and extract structured Czech vacancy data for recruiting, labor-market analysis, exports, and recurring job monitoring.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Extract public jobs and vacancy details from Jobs.cz into structured JSON, CSV, Excel, or any Apify integration.

Jobs.cz Jobs Scraper searches Czech vacancies, follows each result to its detail source, and returns a stable job ID, title, employer, workplace, disclosed salary, employment terms, work arrangement, requirements, description, posting metadata, and canonical URL.

Use it for one-time labor-market research or schedule the same input to monitor new and changed Czech vacancies.

What does Jobs.cz Jobs Scraper do?

The Actor supports two discovery routes:

  1. search Jobs.cz with one or more role, skill, or employer queries;
  2. process real Jobs.cz search pages or individual vacancy URLs.

It paginates search results, deduplicates vacancies by Jobs.cz job ID, opens detail pages, normalizes the fields, applies optional filters, and saves accepted records to the default dataset.

Jobs.cz serves some vacancies on its standard detail layout and others on employer-hosted Jobs.cz career sites. The Actor handles both public layouts: standard details come from server-rendered HTML, while hosted career details use the same public data endpoint as the employer page.

Who is it for?

  • Recruitment teams tracking hiring activity by role, employer, or Czech locality.
  • Labor-market analysts comparing vacancy counts, requested skills, and disclosed salaries.
  • Job aggregators collecting canonical source links and normalized vacancy descriptions.
  • Sales and staffing teams identifying employers actively recruiting in a chosen specialty.
  • Data engineers feeding current Jobs.cz jobs data into a warehouse, sheet, or dashboard.
  • Candidates and career researchers comparing current roles without copying pages manually.

This Actor focuses only on public Jobs.cz vacancies. It does not log in, apply for jobs, bypass access controls, or collect candidate profiles.

Why use this Actor?

  • Search and direct URL inputs use one consistent output model.
  • Search pagination stops at user-controlled item and page limits.
  • Stable jobId and canonicalUrl fields support recurring comparisons.
  • Full descriptions and list-form requirements are included when public.
  • Salary remains null when an employer does not disclose it; values are never invented.
  • Standard Jobs.cz and employer-hosted Jobs.cz details are normalized together.
  • Filters are verified against normalized detail data rather than trusted only from a URL.
  • Direct HTTP is the default, keeping memory and network cost low.
  • Optional proxy configuration is available if direct access degrades.
  • Accepted items are charged once, after validation and filtering.

What jobs data can I extract?

FieldMeaning
jobIdStable Jobs.cz vacancy identifier
titleVacancy title
employerPublic employer name
locationWorkplace address, city, district, or region
salaryEmployer-disclosed salary text, otherwise null
employmentTypeFull-time, part-time, or other source wording
contractTypeEmployment contract, freelance relationship, or other source wording
contractDurationPermanent, fixed-term, or other stated duration
workArrangementNormalized remote, hybrid, or onsite value
educationRequired education when stated
languagesRequired languages and proficiency
categoriesJobs.cz professions or employer career-site categories
requirementsList items extracted from the vacancy description
descriptionFull normalized public vacancy description
contactNamePublic contact name when displayed
contactPhonePublic contact phone when displayed
applicationUrlPublic Jobs.cz application route when available
canonicalUrlCanonical public vacancy URL
sourceStatusResult-card response or promotional badge
postedAtPublication timestamp when the source exposes it
searchQueryQuery that discovered the vacancy, or null for a direct detail URL
searchPageSearch page that discovered the vacancy
scrapedAtISO timestamp for this extraction

Nullable fields reflect what the employer and page layout actually disclose.

How to scrape Jobs.cz vacancies

  1. Open the Actor in Apify Console.
  2. Enter one or more values in Search queries, such as python developer.
  3. Optionally add a Czech location, employment type, or work arrangement filter.
  4. Set Maximum vacancies and Maximum pages per search.
  5. Run the Actor.
  6. Open the Vacancies dataset view.
  7. Download JSON, CSV, XML, Excel, or connect the dataset to another service.
  8. To monitor changes, schedule the same task and compare records by jobId.

A low maxItems value is best for the first run. Increase it after confirming the search and filters return the intended market segment.

Input parameters

searchQueries

An array of real Jobs.cz search terms. Role, technology, employer, and Czech-language terms are supported because they are passed to Jobs.cz search.

{
"searchQueries": ["python developer", "data engineer"],
"maxItems": 50,
"maxPages": 3
}

startUrls

An optional array of Jobs.cz /prace/ search URLs or /rpd/ vacancy URLs.

{
"startUrls": [
{ "url": "https://www.jobs.cz/prace/praha/?q=prodej" }
],
"maxItems": 20
}

Only jobs.cz URLs are accepted. Login, employer administration, and unrelated paths fail input validation.

location

Case-insensitive locality text. The Actor includes it during query discovery and verifies that each normalized vacancy location contains it.

Examples: Praha, Brno, or Jihomoravský kraj.

employmentTypes

Optional source-language text matches, such as Práce na plný úvazek. A vacancy without matching employment data is not emitted when this filter is active.

workArrangements

Keep any combination of:

  • remote;
  • hybrid or occasional home working;
  • onsite.

Classification uses public arrangement badges and detail wording. Read the description for edge cases because employer terminology varies.

maxItems and maxPages

maxItems limits accepted dataset rows across all inputs. maxPages limits each query or search URL. The Actor stops once enough accepted vacancies are saved.

proxyConfiguration

Direct access is the default. A user can supply Apify Proxy settings if Jobs.cz access degrades from their run environment. Czech residential routing is the recommended fallback, but it is never enabled or charged automatically.

Example output

The following shape is based on a current local extraction; public contact details are omitted from the example:

{
"jobId": "2001304864",
"title": "Senior Data Engineer / Architect",
"employer": "Atlas Copco Services s.r.o.",
"location": "Holandská, 1006, Brno, Štýřice",
"salary": null,
"employmentType": "Full-time work",
"contractType": "employment contract",
"contractDuration": "Permanent",
"workArrangement": "hybrid",
"education": "Education is not important",
"languages": ["English (Advanced)"],
"categories": ["Information technology"],
"requirements": ["Expert SQL skills and strong hands-on data engineering experience."],
"description": "We are looking for a Senior Data Engineer / Architect...",
"contactName": null,
"contactPhone": null,
"applicationUrl": "https://www.jobs.cz/rpd/2001304864/",
"canonicalUrl": "https://www.jobs.cz/rpd/2001304864/",
"sourceStatus": "Příležitost dne",
"postedAt": "2026-07-31T00:00:00+02:00",
"searchQuery": "python",
"searchPage": 1,
"scrapedAt": "2026-08-01T08:00:00.000Z"
}

Descriptions and arrays can be longer than this shortened documentation sample.

How much does it cost to extract Jobs.cz vacancies?

The Actor uses pay-per-event pricing:

  • one Start event per run;
  • one Item processed event per accepted vacancy.

The start fee is $0.0015. At the BRONZE rate of $0.0006 per vacancy, 10 vacancies cost about $0.0075, 100 cost about $0.0615, and 1,000 cost about $0.6015, before higher-volume tier discounts.

Filtered-out, duplicate, unavailable, and failed records do not receive an item charge. Apify platform compute and proxy usage may be included or shown separately according to your Apify plan and active pricing screen. The live pricing table in Console is authoritative.

Monitoring new and changed vacancies

A useful recurring workflow is:

  1. save a Task with stable search queries and filters;
  2. schedule it daily or weekly in Apify Console;
  3. export jobId, title, employer, location, postedAt, and scrapedAt;
  4. compare the current dataset with the previous run;
  5. treat unseen jobId values as new vacancies;
  6. compare normalized fields for changes;
  7. treat IDs missing from later runs as possibly closed, then confirm against the canonical URL.

Each run writes only to its own default dataset, so results from an older run are not mixed into the current run.

Export Jobs.cz jobs to spreadsheets and pipelines

The default dataset works with Apify integrations and dataset APIs.

Common patterns include:

  • append rows to Google Sheets;
  • load JSON into BigQuery, Snowflake, or PostgreSQL;
  • trigger Make, Zapier, or n8n after a scheduled run;
  • feed vacancy text into an approved classification or skill-tagging workflow;
  • build a dashboard grouped by employer, locality, arrangement, or category;
  • send internal notifications only for newly observed job IDs.

Use jobId as the primary source key. Do not rely on result order, which can change as Jobs.cz ranks vacancies.

Use the Jobs.cz scraper API

Replace APIFY_TOKEN with your Apify API token.

cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~jobs-cz-scraper/runs?token=APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchQueries":["python developer"],"maxItems":10,"maxPages":2}'

To wait for results in one request:

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~jobs-cz-scraper/run-sync-get-dataset-items?token=APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchQueries":["data engineer"],"location":"Brno","maxItems":10}'

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/jobs-cz-scraper').call({
searchQueries: ['python developer'],
maxItems: 25,
maxPages: 3,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map(({ jobId, title, employer }) => ({ jobId, title, employer })));

Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/jobs-cz-scraper').call(run_input={
'searchQueries': ['data engineer'],
'location': 'Brno',
'maxItems': 25,
'maxPages': 3,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
for item in items:
print(item['jobId'], item['title'], item.get('employer'))

Use with Apify MCP

Add the Actor to Claude Code:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/jobs-cz-scraper"

Claude Desktop, Cursor, and VS Code setup

Claude Desktop, Cursor, and VS Code can use this MCP configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/jobs-cz-scraper"
}
}
}

Example prompts:

  • “Run the Jobs.cz scraper for Python developer jobs and summarize employers by Czech city.”
  • “Collect up to 50 data vacancies in Brno and list hybrid roles with their canonical URLs.”
  • “Extract this Jobs.cz search URL and return job ID, title, salary, and employment type.”

Accuracy, limits, and failure behavior

  • Jobs.cz content changes continuously; a run is a point-in-time observation.
  • Salary, publication date, contact, education, language, and contract fields may be absent.
  • Employer-hosted career sites can use different languages from the main Czech listing.
  • Work-arrangement classification follows source wording and may not capture informal flexibility.
  • Search ranking and visible counts can differ by time, locale, cookies, or source experiments.
  • Vacancies can close between search discovery and detail extraction; those rows are skipped without an item charge.
  • The Actor retries transient timeouts, HTTP 429, and server failures with bounded backoff.
  • An unrecognized response shape fails or warns instead of silently reporting a fake empty dataset.
  • maxPages is a safety limit, not a promise that every Jobs.cz result will be collected.

For high-volume monitoring, split unrelated searches into separate Tasks. This makes failures, costs, and dataset comparisons easier to interpret.

Proxy guidance

Start without a proxy. If direct runs receive repeated access errors, configure Apify Proxy and choose Czech residential routing.

Keep one coherent proxy session for a request attempt rather than rotating every successful detail. The Actor changes the bounded identity only when retrying a transient failure.

Proxy transfer has a cost. Test a small maxItems value before a larger proxied run. The Actor does not silently fall back from direct access to paid residential traffic.

Responsible use and legality

Jobs.cz exposes vacancies publicly, but public availability does not remove user obligations.

  • Review Jobs.cz terms and applicable robots guidance.
  • Collect only the fields needed for a legitimate purpose.
  • Respect copyright, database rights, privacy law, and employment regulations.
  • Do not use public contact data for spam or unlawful profiling.
  • Keep personal contact fields secure and delete them when no longer needed.
  • Do not misrepresent stale vacancies as currently open.
  • Apply reasonable run frequency and volume.

You are responsible for deciding whether your use, retention, and redistribution are lawful.

Troubleshooting

The dataset is empty

Check that at least one search query or supported Jobs.cz URL was supplied. Remove restrictive location, employment, or work-arrangement filters and run with maxItems: 5. Confirm the same search currently has public vacancies on Jobs.cz.

Some fields are null

This usually means the employer does not disclose that value. Null salary or posting date is expected and is preferable to an inferred value.

A search returns fewer records than maxItems

Increase maxPages, loosen filters, or use a broader query. Closed vacancies and duplicate IDs are skipped. maxItems is a ceiling, not a guaranteed count.

The run reports access or transient HTTP errors

Retry a small direct run once. If the problem persists, configure a Czech residential proxy. Do not repeatedly launch large runs against the same failed route.

A direct vacancy URL fails validation

Use a public https://www.jobs.cz/rpd/... detail URL or a https://www.jobs.cz/prace/... search URL. Login, company administration, and third-party career domains are outside the input contract.

FAQ

Yes, within your maxItems and maxPages limits. Search result availability and source changes still apply.

Can I scrape one vacancy?

Yes. Put its public Jobs.cz /rpd/ URL in startUrls and set maxItems to 1.

Does it extract salary?

Yes when Jobs.cz or the hosted career detail discloses salary. Otherwise salary is null.

Does it apply for jobs?

No. It extracts public vacancy data only.

Does it need a login?

No. Authenticated pages and candidate data are not supported.

Does it always need a proxy?

No. Direct access is the default. Proxy use is explicit and optional.

Can it monitor removed jobs?

Scheduled datasets can be compared by jobId. Absence is a signal, not definitive proof of closure, so verify the canonical page before taking action.

Can I search jobs in Germany?

This Actor is for Jobs.cz and Czech vacancies. The broad keyword research phrase “jobs in Germany” was not adopted because the Actor does not support German job boards.

Choose this Actor when Jobs.cz is the required source and Czech vacancy identity, terms, and descriptions are the core dataset.

Support

When reporting a reproducible problem, include:

  • a sanitized input;
  • the failed run URL;
  • expected versus actual behavior;
  • whether a proxy was configured;
  • one affected public Jobs.cz URL, if safe to share.

Do not post Apify tokens, private candidate data, or credentials.