Skip to content

Jobs.ch Scraper

Try for free

Scrape Swiss job listings from jobs.ch and jobup.ch: title, company, workload %, contract type, location and canton, salary when published, full description, apply link and contact. Search by keyword, URL or company with filters.

🇨🇭 Jobs.ch Scraper

Get Swiss job listings from jobs.ch, Switzerland's largest job board, and its French-speaking sister site jobup.ch. Search by keyword, paste any search, job or company URL, or type an employer's name, and get clean rows with title, company, workload (Pensum), contract type, canton, salary when published, the full description, apply link and contact person. No login and no browser: 1,000 complete listings take well under a minute.

✨ Why use Jobs.ch Scraper?

  • ⚡ Fast: reads the site's own job search data directly, 100 listings per page, with full details loaded in parallel.
  • 🧾 Complete listings: description as text (and HTML if you want it), bullet lists such as tasks and profile split into items, apply link or email, contact name and phone, address, required languages and skills.
  • 🎯 Swiss filters built in: location or canton, region, workload from/to %, contract type, position level, occupational field, industry, company type, home office, posted within N days.
  • 🏢 Employer data on demand: website, industry, size, rating, review count, open jobs and social links from the company profile.
  • 🌍 Two boards in one run: jobs.ch, jobup.ch or both, with duplicates removed.
  • 💰 Cheap and simple: one flat price per saved job, full details included.

🎯 Use cases

  • 📋 Job boards and aggregators: keep a niche Swiss board (IT, health care, finance, Romandie) in sync every day.
  • 📈 Hiring signals for sales: see which Swiss companies are growing a team and in which canton, then reach out at the right time.
  • 🧠 Labour-market research: compare demand, workloads and contract types by region, field or industry.
  • 🕵️ Competitor watch: follow every open job of chosen employers week by week.
  • 🤝 Recruiting and staffing: find direct-employer jobs (agencies filtered out) with contact persons for your candidates.
  • 🤖 Automation: send new jobs to a spreadsheet, CRM, Slack or your ATS on a schedule.

🚀 How to use

  1. Type one or more search keywords (for example Software Engineer, Pflegefachfrau, comptable), or paste jobs.ch / jobup.ch URLs, or enter company names.
  2. Optionally set filters: locations (Zürich, ZG, 3011), workload %, contract type, posted within N days and more.
  3. Set Max results (default 20). Choose Newest first for monitoring.
  4. Click Start, then download the jobs as JSON, CSV, Excel or HTML, or read them through the API.

📥 Input

FieldWhat it does
searchQueriesKeywords; each one runs as its own search, results are deduplicated. Empty = all jobs matching the filters.
startUrlsjobs.ch or jobup.ch search URLs (their filters are used), single job URLs or company pages.
companyNamesAll open jobs of these employers.
maxResults / maxResultsPerQueryTotal cap (0 = no limit, up to 100,000) and an optional cap per search.
locations, regionsCities, postal codes or canton codes; jobs.ch regions.
workloadMin / workloadMaxWorkload (Pensum) range in percent.
contractTypes, positionLevelsPermanent, temporary, freelance, internship, apprenticeship, side job; executive, specialist, employee.
postedWithinDaysOnly jobs first published in the last N days.
occupationalFields, industries, companyTypes, excludeAgenciesNarrow by field, industry or employer type.
workFromHome, requiredLanguagesHome office jobs only; jobs asking for German, French, English or Italian.
titleKeywords / excludeTitleKeywordsKeep or drop jobs by words in the title (filtered jobs are free).
site, sortBy, semanticSearchjobs.ch, jobup.ch or both; relevance or newest; the site's AI search.
includeDetails, includeCompanyDetails, includeHtml, languageWhat to load and the language of the links.
{
  "searchQueries": ["Software Engineer", "Data Engineer"],
  "locations": ["Zürich", "ZG"],
  "workloadMin": 80,
  "contractTypes": ["permanent"],
  "postedWithinDays": 7,
  "excludeAgencies": true,
  "sortBy": "newest",
  "maxResults": 200
}

📤 Output

One row per job.

FieldDescription
title, company, companyLogo, companyProfileUrlJob title, employer, logo and jobs.ch company page.
location, street, postalCode, city, canton, country, latitude, longitude, regionsWorkplace details.
workload, workloadMin, workloadMax, isFullTimePensum, for example 80–100%.
commitment, contractTypes, level, occupationalFields, industry, professionContract type, position level and classification.
salaryMin, salaryMax, salaryCurrency, salaryPeriod, salaryTextPay, only when the employer publishes it (rare on jobs.ch).
postedAt, firstPostedAt, lastOnlineDate, isActiveDates and status.
jobUrl, applyUrl, applyEmail, applicationMethod, easyApplyWhere and how to apply.
contactName, contactPhone, contactEmail, contactAddressContact person when the listing names one.
descriptionText, lists, descriptionHtmlFull description, bullet lists as {title, items}, optional HTML.
languageSkills, skills, workFromHome, isPromotedRequired languages with level, skills, home office, paid listing.
companyWebsite, companyIndustry, companyEmployees, companyRating, companyReviewCount, companyJobCount, …Company profile (with includeCompanyDetails).
source, searchQuery, scrapedAtBoard, the keyword that found the job, scrape time.

Example (trimmed, sample data):

{
  "id": "0b6f3c1e-5a2d-4c8e-9f11-2d7a6b3c9e40",
  "title": "Senior Software Engineer (80–100%)",
  "company": "Alpenblick Software AG",
  "location": "Zürich",
  "street": "Seestrasse 12",
  "postalCode": "8002",
  "canton": "ZH",
  "regions": ["German part of Switzerland", "Region of Zurich / Schaffhausen"],
  "workload": "80–100%",
  "workloadMin": 80,
  "workloadMax": 100,
  "commitment": "Permanent position",
  "level": "Specialist",
  "occupationalFields": ["Information Technology / Telecom.", "Software Development"],
  "salaryMin": 110000,
  "salaryMax": 135000,
  "salaryCurrency": "CHF",
  "salaryPeriod": "year",
  "salaryText": "CHF 110'000–135'000 per year",
  "postedAt": "2026-10-13T07:12:40Z",
  "jobUrl": "https://www.jobs.ch/en/vacancies/detail/0b6f3c1e-5a2d-4c8e-9f11-2d7a6b3c9e40/",
  "applyUrl": "https://careers.example.ch/jobs/1234/apply",
  "contactName": "Anna Muster",
  "languageSkills": [{"language": "de", "level": "Fluent"}, {"language": "en", "level": "Fluent"}],
  "lists": [{"title": "Your tasks", "items": ["Design and build our booking platform", "Mentor two junior engineers"]}],
  "descriptionText": "Senior Software Engineer (80–100%)\n\nAlpenblick builds booking software for Swiss mountain resorts…",
  "source": "jobs.ch",
  "searchQuery": "Software Engineer"
}

💰 Pricing

You pay $2.00 per 1,000 saved jobs ($0.002 per job), and that price already includes full details and, if you turn it on, the company profile. Platform usage (compute and datacenter proxy) is billed on top but is tiny for this actor: a 1,000-job run with full details uses well under one cent of it.

Example: 1,000 jobs with full descriptions ≈ $2.01 in total. Jobs dropped by your title filters are never charged.

❓ FAQ

Is it legal to scrape jobs.ch? The actor only reads public job listings that anyone can open without an account. Contact names and phone numbers are personal data: process them in line with the Swiss FADP and GDPR, and check the site's terms for your use case.

Do I need a login or my own proxy? No. Datacenter proxies (the default) work well.

How many jobs can I get? All of them. jobs.ch serves at most 10,000 matches per search, so for bigger searches the actor splits the search by publication date automatically and keeps going (the AI search mode is limited to the first 10,000 matches).

Why are some fields empty? Fields are filled only when the listing has them. Salary in particular is published on only a small share of jobs.ch listings; contact persons appear on roughly one in five.

Can I schedule it or use the API? Yes. Schedule it (for example daily with sortBy: newest and postedWithinDays: 1) and read the results via the API, webhooks or integrations.

Does it cover jobup.ch? Yes, set Job board to jobup.ch or both, or paste jobup.ch URLs.

⚠️ Limits

  • Salary data exists only when the employer publishes it.
  • Some listings are PDF or external ads; for those the description text can be short and the apply link points to the employer's site.
  • Filters other than the title keywords run on the site's side and follow its logic: for example a workload range matches jobs whose range overlaps yours.
  • Company profile ratings come from jobs.ch reviews and are empty for companies without reviews.
  • Search URLs keep their own filters; the other input filters apply to keyword and company searches (posted within days also applies to URLs that have no date filter).

Related actors

G2
4.7/5
Excellent
Trustpilot

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.

No credit card. No setup calls.