Jobs-cz Jobs Scraper · Apify
Jobs-cz Jobs Scraper avatar

Jobs-cz Jobs Scraper

Pricing

from $0.40 / 1,000 job results

Go to Apify Store
Jobs-cz Jobs Scraper

Jobs-cz Jobs Scraper

Scrapes job offers from jobs.cz: salaries, contract types, work mode, experience levels, locations and the full description. Same output schema as our other Polish job portal actors.

Pricing

from $0.40 / 1,000 job results

Rating

0.0

(0)

Developer

DataWatcher

DataWatcher

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 hours ago

Last modified

Categories

Features

Limited permissions

Share

Scrape jobs.cz job offers as clean data, from the Apify Store or through the Apify API. Each row has a title, company, city, contract type and salary. Search by keyword, city, category, contract, work type or experience. Switch on one option to read each offer's own page for the full description.

🔎 What does Jobs-cz Jobs Scraper do?

  • Reads job offers from jobs.cz and returns one row per offer.
  • Searches by keywords, or reads a jobs.cz listing page or a single offer page that you give it.
  • Filters by city, category, contract type, work type, experience level and "salary shown".
  • Turns the pay text into numbers: minimum, maximum, currency and period.
  • Can open each offer's page for the description, benefits, languages and extra details.

⭐ Why this one

1️⃣ One schema across job portals. All our job actors share one output schema and one input schema. Build your pipeline once: our other job actors (Nofluffjobs, Aplikuj, Bluelionjob, Bulldogjob, Hollylist, Just Join IT, Pracuj, Reed, RocketJobs.pl, Skillshot, theprotocol.it) take the same input and return the same fields, so adding a portal means changing the actor name, not your code.

  • Six ways to start. Run it with no input, with keywords, with filters, with a listing URL, with one offer URL, or with a mix of URLs.
  • Pay as numbers. Salary text becomes min, max, currency and period, so you can sort and compare it.
  • Cheap by default. A listing row costs $0.40 per 1,000 results. The median result price of the ten most-used job scrapers in the Store is $1.75 per 1,000.
  • Details only when you ask. The extra charge for reading an offer's page applies only to offers whose page was read.
  • Six filters. City, category, contract type, work type, experience and "salary shown" narrow the rows.

🚀 How to scrape jobs.cz jobs

  1. Open the actor on Apify and click Try for free.
  2. Type keywords, a city or a jobs.cz URL, or leave the input empty to read the default search. Turn on Extract full details if you want the description.
  3. Click Start.
  4. Download the jobs.cz jobs data as JSON, CSV or Excel from the Output tab, or fetch it with the Apify API.

Data

This actor returns only what the site shows publicly at run time. We don't store or keep that data and are not its controller — you decide how you use it.

This actor is not affiliated with or endorsed by jobs.cz. Salary and contract data appear only where the offer shows them.

🤖 Use with AI agents (MCP)

AI assistants (Claude, ChatGPT, Cursor…) can run this actor through Apify's MCP server. Connect the server in your assistant, then ask, for example:

Use the Jobs-cz Jobs Scraper to find 20 job offers for "python" in Praha on jobs.cz and show me the title, company and salary of each.

🔌 Run it your way

  • Schedule it with Apify schedules.
  • Call it from the Apify API and its clients (Python, JavaScript).
  • Connect it to Make, n8n, Zapier, webhooks or Google Sheets.
  • Ask an AI agent to run it: see Use with AI agents (MCP).

⚙️ Input

Every field is optional. Pick one of the modes below, or combine them.

{
"searchQueries": ["python"],
"locations": ["Praha"],
"maxResults": 10,
"extractFullDetails": false
}
FieldDefaultNotes
maxResults50Maximum number of offers returned, in total. Set 0 to remove the cap.
startUrlsemptyA listing URL is read as that listing. An offer URL is read directly. The filters below still apply to these URLs. searchQueries is not applied to them.
searchQueriesemptyKeywords, one search per line: a technology or a job title.
locationsemptyCity names. Accents and case do not matter. A city the portal does not know gives a warning and no search for it.
categoriesemptyOne or more of backend, frontend, fullstack, mobile, devops, data, ai-ml, testing, security, it-admin, support, embedded, gamedev, erp, architecture, project-management, product, ux-ui, business-analysis, sales, marketing, hr, finance, customer-service, engineering, production, logistics, legal, administration, consulting, education, healthcare, construction, hospitality.
contractTypesemptyOne or more of employment, b2b, mandate, specific-task, internship.
workTypeemptyOne or more of remote, hybrid, onsite, mobile.
experienceemptyOne or more of intern, junior, mid, senior, expert, lead, manager, executive.
withSalaryOnlyoffKeep only offers that show a salary.
extractFullDetailsoffRead each offer's own page for the description, skills, benefits, languages and company details. An offer start URL is read either way.
maxConcurrency1Searches and detail pages processed in parallel (1 to 10).
maxRequestsPerMinute60Request rate for the whole run.
proxyConfigurationoffOptional proxy settings, useful when many detail pages are requested.
maxRequestRetries2Retries after a failed request (0 to 10).

When you filter by work type without extractFullDetails, rows that the listing alone cannot confirm are left out, and the run reports a warning. Turn on extractFullDetails to check them on each offer's page.

🧭 Input modes: what you give, what you get

Pick the mode that matches what you know. Each one runs with extractFullDetails off or on.

ModeYou giveRowsOffer pages read
1. Default searchnothingOffers from the default jobs.cz searchOnly with extractFullDetails
2. KeywordssearchQueriesOffers matching the keywordsOnly with extractFullDetails
3. Filtered searchlocations, categories, contractTypes, workType, experience or withSalaryOnlyOffers matching the filtersWith extractFullDetails, or when a filter needs the page
4. Listing URLa jobs.cz listing URL in startUrlsOffers from that listingOnly with extractFullDetails
5. One offer URLan offer URL in startUrlsThat one offer, with full detailsYes, the offer page is read
6. Mixed URLsa listing URL and an offer URL in startUrlsOffers from the listing plus the offerThe offer URL is read directly, listing offers with extractFullDetails

Copy one of the inputs below and change the values.

{
"maxResults": 10
}

🔤 2. Keywords

{
"searchQueries": ["specialista"],
"maxResults": 10
}
{
"locations": ["Praha"],
"workType": ["hybrid"],
"maxResults": 10,
"extractFullDetails": true
}

📄 4. Listing URL

{
"startUrls": [{ "url": "https://www.jobs.cz/prace/" }],
"maxResults": 10
}

📌 5. One offer URL

{
"startUrls": [{ "url": "https://www.jobs.cz/rpd/2001515826/" }]
}

🔗 6. Mixed URLs

{
"startUrls": [
{ "url": "https://www.jobs.cz/prace/" },
{ "url": "https://www.jobs.cz/rpd/2001515826/" }
],
"maxResults": 10
}

Filters apply to URL modes too: rows that do not match are dropped.

📦 Output: jobs.cz jobs data

Each row is one job offer. It holds the title, company, locations, categories, contract types, work time, salaries, benefits, languages, dates and the description. Salaries are listed as min, max, currency, period and grossNet. Fields the offer does not show stay empty.

{
"recordType": "job",
"source": "jobs.cz",
"id": "2001515826",
"url": "https://www.jobs.cz/rpd/2001515826/",
"title": "Staňte se srdcem naší farmy – HLEDÁME RECEPČNÍ!",
"company": {
"name": "RODINNÁ FARMA A-04 s.r.o."
},
"locations": [
{
"city": "Praha",
"street": "Vinohradská 3217/167"
}
],
"contractTypes": [
{
"value": "employment",
"original": "pracovní smlouva",
"source": "portal"
}
],
"workTime": "full-time",
"salaries": [
{
"contractType": "employment",
"currency": "CZK",
"min": 35000,
"max": 38000,
"period": "month",
"isOriginal": true
}
],
"benefits": ["Multisport karta"],
"description": {
"text": "Rodinná farma je síť prodejen s farmářskými produkty a výběrovými uzeninami. ..."
},
"dates": {
"scraped": "2026-11-13T14:00:17Z"
}
}

Missing data is null, never a guess.

Run status. After each run, open the run's key-value store (Storage tab) to see how it went:

  • RUN_HEALTH: ok, or degraded with the reason (no rows, a failed request, a warning, or a row that broke a data rule).
  • RUN_SUMMARY: the run's numbers: rows, requests, retries, failed requests, warnings and billed events.

💰 Pricing (Pay-Per-Event)

EventPriceTrigger
Job result (job-scraped)$0.40 per 1,000 eventsOne job offer returned by the Actor.
Job details (job-details-scraped)$1.50 per 1,000 eventsAdditional charge for a job offer whose detail page was read.

There is no start fee. You pay for the offers returned, plus the extra event when an offer's page was read.

Free plan: each run returns up to 1,000 results.

🎯 Use cases

  • Hiring demand. Count new offers by category or city over time.
  • Employer watch. See which companies post the most offers.
  • Pay research. Compare the minimum and maximum salary by role, city and contract type.
  • Job boards. Fill a board with current Czech offers.

🩺 If a run fails

The run health (the RUN_HEALTH record, RUN_SUMMARY and the last line of the log) names the cause, for example site down: list request answered 500 x3. Find that start of the message in the table.

Error in the log / run healthWhat it meansWhat you do
site down: <request> answered 500, 502-504, 520-526The site is offline or has a fault. The actor waits longer between tries, then stops the run.Try again later.
blocked: <request> answered 401, 403, 1020 or a captcha pageThe site refused the request or showed a captcha page.The actor already retries once through the Apify proxy. If it still fails, turn on the Apify proxy in the input (use the RESIDENTIAL group if it is already on).
rate limited: <request> answered 429The site asks for fewer requests. The actor waits and slows down by itself.If it keeps happening, lower maxRequestsPerMinute.
gone: <request> answered 404, 410The page or offer was removed. The actor skips it and it is not charged.Nothing; this is normal.
network error: <request> failed with timeout (or connection error, DNS error)A timeout or a broken connection. The actor retries with a pause.Try again later.
wrong answer: <request> returned HTML instead of JSON (or an empty body)The site answered with a page that is not data (HTML instead of JSON, an empty body). The site has probably changed.Report it in the Issues tab; we fix it.

❓ FAQ

How many jobs can I scrape per run?

Set maxResults to the number you want. The free plan returns up to 1,000 results per run.

How do I export jobs.cz jobs to Excel or CSV?

Run the actor, open the Output tab and pick Excel or CSV in the export options. JSON, XML and HTML are there too, and the Apify API returns the same data.

Can I scrape only offers that show a salary?

Yes. Turn on withSalaryOnly. Offers without a salary are dropped.

Can I combine it with other portals?

Yes. All our job actors share one output schema and one input schema, so rows from different portals fit one table. See the list below.

🔗 Other job scrapers (same schema)

💬 Feedback and custom work

Need another portal, a field or a custom feed? Open an issue on the Issues tab.