jobs.ch Scraper
Pricing
from $0.25 / 1,000 jobs
jobs.ch Scraper
Swiss job ads from jobs.ch with the workload in percent, contract type, canton and the full description. Search in German, French or English by keyword and town, filter by workload or contract, or paste a jobs.ch search link.
Pricing
from $0.25 / 1,000 jobs
Rating
0.0
(0)
Developer
deriverge s.r.o.
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
jobs.ch is a Swiss job board that listed 41,730 jobs on 11 October 2026, written in German, French or English. This actor returns one row per job: title, employer and whether jobs.ch files it as an SME, a large company or a recruitment agency, the workload such as 80-100%, contract type, position level, the workplace with postcode and canton, required languages, benefits, the apply link and the full description. The form starts with the keyword python: click Start for 20 jobs. jobs.ch shows at most 2,000 jobs per search. It costs $0.50 per 1,000 jobs on the Free plan ($0.25 on Business), and the $5 of monthly credit in Apify's Free plan covers about 10,000 jobs.
Fields in each job
| Field | Description |
|---|---|
title, company | Job title as the employer wrote it and the employer's name, empty when the ad hides it. |
companyType | With details on: SME, Large company or Recruitment agency, as jobs.ch classifies the advertiser. |
workload, workloadMin, workloadMax | Share of full time as text, e.g. 80-100%, and its two ends as numbers, 80 and 100. |
employmentTypes | Contract types such as Permanent, Temporary, Freelance, Internship, Apprenticeship or Supplementary income. |
positionLevel | Employee, With responsibilities or Executive. |
place | Workplace as the result list shows it, e.g. Zürich or Bern, Biel, Zürich, Luzern for a job in several towns. |
street, postcode, city, canton | With details on: the workplace address and the two-letter canton code, such as ZH, BE or GE. |
latitude, longitude | With details on: coordinates of the workplace. |
occupation | With details on: the occupation jobs.ch assigns, e.g. Web Administrator or Nurse. |
languages, skills, benefits | With details on: languages the employer asks for, skill tags, and benefits such as Flexible working hours or Training. |
easyApply, applyUrl | true when the job takes a quick application on jobs.ch. For the other jobs, applyUrl (with details on) usually points to the employer's application page. |
publishedAt, firstPublishedAt, expiresAt | Latest and first publication time, and with details on the end date jobs.ch holds for the ad. |
preview, description, descriptionHtml | With details on: the title with the opening words of the ad, about 140 characters, then the full ad as plain text and as HTML. |
detailsIncluded | false when the job's details were not read, so only the search result fields are filled. |
url, companyUrl | The job and the company profile on jobs.ch, in the language set by Link language. |
How to scrape jobs.ch
- Put one or more Keywords in German, French or English, such as
Pflege,Buchhaltung,comptableordata engineer. Each keyword runs as its own search. - Add Locations as towns or postcodes (
Zürich,Lausanne,Basel,8001). Every keyword is searched in every location, and an empty field means all of Switzerland. jobs.ch decides how far around a town it looks: its search pages have no radius setting, so Radius (km) has no effect. - Narrow the search on jobs.ch's side with Contract types, Position levels, Minimum workload (%), Maximum workload (%) and Sort by. A job matches the minimum when its range reaches it: with 80, a job offered at
30-100%stays in. The maximum keeps jobs that can be done at that share or less, so 60 also returns60-100%. - A search made on jobs.ch can be pasted into Search links from jobs.ch (optional), e.g.
https://www.jobs.ch/en/vacancies/?term=python&location=Bern. The term, location, contract, position, region, category, workload and sort in the link are kept. - Keep Include full details on for the address, canton, coordinates, company type, occupation, languages, skills, benefits, expiry date, apply link and description. Each job is then one more page and the actor reads one page a second, so plan about 18 minutes for 1,000 jobs; without details 1,000 jobs take about a minute.
- Click Start and watch the rows arrive in Output, then export them as CSV, Excel or JSON or read them through the API.
As API input, permanent nursing jobs around Bern at 80% or more:
{"keywords": ["Pflege"],"locations": ["Bern"],"minWorkload": 80,"employmentTypes": ["5"],"maxItems": 300}
In the API, contract types are numbers: 5 is permanent, 1 temporary, 2 freelance, 3 internship, 6 apprenticeship and 4 supplementary income. Position levels are 3 for employee, 2 for a position with responsibilities and 1 for executive.
Example output
One job from a run on 11 October 2026, with description and descriptionHtml cut after the opening paragraph.
{"key": "jobsch:5f9964f1-86e3-4bb6-9f34-2cac4b1cdbb4","jobId": "5f9964f1-86e3-4bb6-9f34-2cac4b1cdbb4","title": "Data Engineer - Analytics Platform","url": "https://www.jobs.ch/en/vacancies/detail/5f9964f1-86e3-4bb6-9f34-2cac4b1cdbb4/","company": "Medgate AG","companyUrl": "https://www.jobs.ch/en/companies/a9dc0f67-54f9-4bee-8087-6a8f11a75640-medgate-ag/","companyLogo": "https://media.jobs.ch/media/6ccc96c7-1980-48db-865c-2f4525c59597","companyType": "Large company","place": "Allschwil","street": "Lachenstrasse 1","postcode": "4123","city": "Allschwil","canton": "BL","latitude": 47.56249,"longitude": 7.55503,"workloadMin": 80,"workloadMax": 100,"workload": "80-100%","employmentTypes": ["Permanent"],"positionLevel": "With responsibilities","occupation": "Data Architect","languages": ["English"],"skills": [],"benefits": [],"easyApply": false,"publishedAt": "2026-09-29T10:47:53+02:00","firstPublishedAt": "2026-09-29T08:47:53+00:00","expiresAt": "2026-10-30","applyUrl": "https://app.jobportal.abaservices.ch/job-advertisement/aaa92995-6005-40c1-a11f-593620a026c2/b4b51611-f764-3179-4f38-71bbba18ce52","preview": "Data Engineer - Analytics Platform Working place: Allschwil and Home- Office For 26 years, Medgate has been bringing doctors directly to ...","description": "Working place: Allschwil and Home- Office\nFor 26 years, Medgate has been bringing doctors directly to patients 24/7 thanks to telemedicine. At Medgate Switzerland, more than 300 motivated employees - including over 130 permanently employed doctors - are actively shaping the medicine of tomorrow with the help of future-oriented digital health solutions. ...","descriptionHtml": "<p> </p> <p> <strong>Working place: Allschwil and Home- Office</strong> </p> <p>For 26 years, Medgate has been bringing doctors directly to patients 24/7 thanks to telemedicine. At Medgate Switzerland, more than 300 motivated employees - including over 130 permanently employed doctors - are actively shaping the medicine of tomorrow with the help of future-oriented digital health solutions.</p> ...","detailsIncluded": true,"searchQuery": "\"python\"","scrapedAt": "2026-10-11T15:17:59.148Z"}
How much does it cost to scrape jobs.ch?
| Free plan | Starter | Scale | Business | |
|---|---|---|---|---|
| 1,000 jobs | $0.50 | $0.40 | $0.325 | $0.25 |
You pay only for the events in the table. There is no start fee, and compute time and proxies are included.
Collecting 5,000 Swiss jobs with every detail costs $2.50 on the Free plan and $1.25 on Business. A job found by two of your searches is charged once, and jobs removed by Exclude keywords or already delivered in new-only mode are not charged.
Limits
- jobs.ch stops a search at 2,000 jobs, 20 per page. On 11 October 2026
Pflegematched 2,789 jobs andcomptable1,093; the run log warns in such cases, and more keywords or locations split the search into reachable parts. - The actor reads only the search result pages and job pages that jobs.ch's robots.txt allows, one page a second. An October 2026 run of 500 jobs with details took 9 minutes. If jobs.ch refuses a request or answers with a bot check, the actor sends no further requests and ends with the jobs collected until then.
- Address fields depend on the ad. In that run of 500 jobs, 468 had a postcode, 420 a canton, 320 coordinates and 353 a street. Without details these fields and the company type stay empty.
- Few employers fill in skills or benefits: 32 and 39 of those 500 jobs had them.
expiresAtvaries a lot: for 339 of the 500 jobs it fell within 45 days of the first publication, for 118 more than 300 days later. It is empty when jobs.ch holds a placeholder date years ahead (20 jobs).
FAQ
Is it legal to scrape jobs.ch?
jobs.ch shows these job ads to anyone. The actor reads only the pages that jobs.ch's robots.txt allows for crawlers, one page a second, and does not collect the contact persons jobs.ch lists with an ad. Descriptions are the employers' own texts and can still name a contact: 8 of the 500 jobs in an October 2026 run contained an email address. You are responsible for how you use them.
Can I search the French-speaking part of Switzerland?
Yes. Use French keywords such as comptable, which matched 1,093 jobs on 11 October 2026, or towns such as Lausanne or Genève, and set Link language to French to get links in French. The job texts stay in the language the employer wrote them in.
Related scrapers
- XING Jobs Scraper
- karriere.at Jobs Scraper
- Arbeitsagentur Jobs Scraper
- HelloWork Jobs Scraper
- Career Site Jobs Search
Support
This actor is built and maintained by deriverge s.r.o., a software company based in the Czech Republic. If a run fails or a field you need is missing, please open an issue in the Issues tab or write to us at info@deriverge.com. We respond in English and Czech. Runs can be scheduled in Apify Console or started from the API tab, which has examples for Python, JavaScript and cURL and works with Make, Zapier, n8n and the Apify MCP server. If the actor saves you time, a short review helps other people find it.