jobs.ch & jobup.ch Scraper - Swiss Jobs, Salary & Pensum avatar

jobs.ch & jobup.ch Scraper - Swiss Jobs, Salary & Pensum

Pricing

from $1.50 / 1,000 jobs

Go to Apify Store
jobs.ch & jobup.ch Scraper - Swiss Jobs, Salary & Pensum

jobs.ch & jobup.ch Scraper - Swiss Jobs, Salary & Pensum

Pricing

from $1.50 / 1,000 jobs

Rating

0.0

(0)

Developer

Nursultan Imanov

Nursultan Imanov

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

8 days ago

Last modified

Share

jobs.ch scraper and jobup.ch scraper in one API

jobs.ch & jobup.ch Scraper extracts job listings from jobs.ch and jobup.ch, the two largest job boards in Switzerland (both run by JobCloud). jobs.ch covers German-speaking Switzerland, jobup.ch the Romandie. Search one board or both at once and get clean, structured data: title, company, Pensum (workload %) as numbers, salary in CHF (min / max / period), employment type, canton, address, apply link, company rating and the full job description.

Use it as a jobs.ch API or jobup.ch API for job market research, salary benchmarking, recruiting and staffing agencies, lead generation for HR services, or your own Swiss job alerts.

Why use this jobs.ch scraper?

  • 🇨🇭 Two boards, one run, no double billing. Many jobs are published on both jobs.ch and jobup.ch with the same ID. With Job board = Both every job is saved once, and the copy on the other board is skipped for free.
  • 📊 Pensum as numbers. 80–100% becomes pensumMin: 80, pensumMax: 100, plus isFullTime. Filter by workload right in the input (e.g. part-time 40–60%).
  • 💰 Salary in CHF as numbers. When the employer states a salary (CHF 110'000 - 117'000, Fr. 28.– pro Stunde, 6'500 CHF par mois) you get salaryMin, salaryMax, salaryPeriod (year / month / hour). Otherwise you get the salary estimate the board shows for the job, marked salarySource: "estimate".
  • 🔔 Only new jobs since the last run. Turn on Only new jobs and schedule the Actor: each run returns only postings you have not received yet. Already-seen jobs are free.
  • 🏢 Company data. Website, size, rating and number of reviews from the company profile, plus industry and job category.
  • 🏷️ Sponsored jobs flagged with isSponsored, easy-apply jobs with easyApply.
  • 🛡️ GDPR / FADP-friendly by default. Phone numbers and personal e-mails in job texts are masked, contact persons are not saved (role mailboxes like jobs@ stay). Turn on Include personal data only if you have a legal basis.
  • ⚡ Fast and light. Plain HTTP, no browser, no proxy needed. 200 jobs with full descriptions take about 40 seconds.

How much does it cost to scrape jobs.ch?

$1.50 per 1,000 jobs, full description and salary included. You pay only for unique jobs saved to the dataset: duplicates between the two boards, jobs already delivered in Only new jobs mode and empty searches cost nothing. Cap spending with Max jobs and the run's maximum cost.

How to scrape jobs.ch and jobup.ch

  1. Enter Keywords, e.g. Data Engineer, Pflegefachfrau, comptable.
  2. Enter a Location (Zürich, Genève, Bern, 8001) or leave it empty for all of Switzerland.
  3. Choose the Job board: both (default), jobs.ch only or jobup.ch only.
  4. Optionally set Pensum from/to, Posted within and the page language.
  5. Set Max jobs and click Start. Download the results as JSON, CSV, Excel or HTML, or read them via the Apify API.

To browse a whole category without a keyword, set the filters on jobs.ch or jobup.ch, copy the page address and paste it into Start URLs, e.g. https://www.jobs.ch/de/stellenangebote/informatik-telekommunikation/?location=Zürich.

Input example

{
"keywords": "python",
"location": "Zürich",
"site": "both",
"pensumMin": 80,
"postedWithinDays": "7",
"maxItems": 100,
"includeDetails": true,
"onlyNewJobs": false
}

Output example

{
"id": "76e9fab0-6b95-4242-9773-24ab97f11990",
"site": "jobs.ch",
"url": "https://www.jobs.ch/de/stellenangebote/detail/76e9fab0-6b95-4242-9773-24ab97f11990/",
"title": "Wirtschaftsinformatiker/-in Professional (1253)",
"company": "Bundesamt für Informatik und Telekommunikation BIT",
"companyUrl": "https://www.jobs.ch/de/firmen/70645-bundesamt-fur-informatik-und-telekommunikation-bit/",
"place": "Zollikofen",
"pensumMin": 80,
"pensumMax": 100,
"pensum": "80–100%",
"isFullTime": true,
"publishedAt": "2026-10-03T04:02:21+02:00",
"isSponsored": true,
"easyApply": false,
"salaryMin": 72138,
"salaryMax": 112138,
"salaryCurrency": "CHF",
"salaryPeriod": "year",
"salarySource": "estimate",
"descriptionText": "Bern, Schweiz (und Homeoffice) | 80-100%\nDiesen Beitrag kannst du leisten\n\n• Service Asset and Configuration Manager/-in für BIT-DP ...",
"employmentType": "Festanstellung",
"workHours": "33.6 - 42 hours/week",
"position": "Fachverantwortung",
"industry": "Öffentl. Verwaltung / Verbände",
"category": "Technisch / Informatik / Telekommunikation / Beratung / Wirtschaftsinformatik",
"street": "Eichenweg 3",
"postalCode": "3052",
"city": "Zollikofen",
"canton": "BE",
"latitude": 46.9976,
"longitude": 7.46294,
"validThrough": "2026-11-03",
"applyUrl": "https://ohws.prospective.ch/public/v1/jobs/3a440760-1987-4ebd-b639-7a72efcc0476",
"applicationMethod": "external",
"companyWebsite": "https://www.admin.ch",
"companyEmployees": "> 1 000",
"companyRating": 2.91,
"companyReviews": 33,
"source": "jobs.ch",
"scrapedAt": "2026-10-12T21:07:42.115251+00:00"
}

Fields you get

FieldDescription
id, url, site, sourceJob ID (the same on both boards), job page and the board it was taken from
title, company, companyUrl, companyLogoJob title and employer
place, street, postalCode, city, canton, latitude, longitudeWorkplace (address and coordinates when the employer gives them)
pensumMin, pensumMax, pensum, isFullTime, workHoursWorkload in percent and hours per week
salaryMin, salaryMax, salaryCurrency, salaryPeriod, salaryText, salarySourceSalary stated in the job text, or the board's estimate (salarySource: "estimate")
salaryEstimateMin, salaryEstimateMaxThe board's yearly salary estimate in CHF, when shown
employmentType, position, industry, category, languageSkillsContract type, seniority, industry, job category, required languages
publishedAt, firstPublishedAt, validThrough, isNewDates
applyUrl, applicationMethod, easyApply, noCoverLetterHow to apply
companyWebsite, companyEmployees, companyRating, companyReviewsCompany profile
descriptionText, descriptionHtmlFull job description (contacts masked by default)
isSponsored, searchUrl, scrapedAtPromoted job flag, the search page it came from, time of scraping

With Include full job description turned off you get the fields from the search page only (title, company, place, Pensum, dates, flags), which is faster.

FAQ

Is it legal to scrape jobs.ch and jobup.ch? The Actor reads only public job pages, the same ones anyone sees without logging in, and follows the sites' robots.txt. Personal data of contact persons is masked or left out by default. You are responsible for how you use the data, especially if you turn on Include personal data (GDPR, Swiss FADP).

Do I need a proxy? No. The Actor works without proxy. If the site starts blocking requests during a run, it switches to Apify Proxy on its own.

How do I get only new jobs every day? Turn on Only new jobs since last run, give the search a Monitoring key (e.g. python-zurich) and create a schedule. Each run returns only jobs not delivered before under that key.

Why do I get jobs that don't contain my exact keyword? jobs.ch and jobup.ch use semantic search: they also return related jobs (synonyms, similar roles). The Actor returns what the site shows for your search.

Why is Keywords required? The boards show search results only for a search term or a category page. To browse all jobs of a category or region, paste the page address into Start URLs.

Something broke or a field is missing? Open an issue on the Actor page. We usually answer within 24–48 hours.

Known gaps

  • Salary: when the employer states no salary, the board's estimate is used (salarySource: "estimate"); some jobs have neither.
  • Street and coordinates are published only by some employers.