Jobs.ch Scraper - Swiss Job Listings API avatar

Jobs.ch Scraper - Swiss Job Listings API

Deprecated

Pricing

from $0.72 / 1,000 jobs

Go to Apify Store
Jobs.ch Scraper - Swiss Job Listings API

Jobs.ch Scraper - Swiss Job Listings API

Deprecated

Scrape job listings from jobs.ch, Switzerland's largest job board: full descriptions, company, address, workload (Pensum), skills, languages and apply links. Filter by keyword, location and date. New-jobs-only mode for job alerts.

Pricing

from $0.72 / 1,000 jobs

Rating

0.0

(0)

Developer

Kamer Ozkan

Kamer Ozkan

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

22 days ago

Last modified

Security

Limited permissions

Share

Scrape job listings from jobs.ch, Switzerland's largest job board, as clean structured data: title, company, street address, canton, workload (Pensum), required languages, skills, apply method and link, publication and expiry dates, plus the full job description. Search by keyword and location, keep only recent jobs, or run it on a schedule in new-jobs-only mode so you pay only for listings you have not seen yet.

No jobs.ch account, API key, cookies or proxy setup needed.

What does Jobs.ch Scraper do?

It runs the same keyword and location search you would run on jobs.ch and returns every matching job as one row, with the details page already opened for you. Results come as JSON, CSV, Excel or via the Apify API, so you can feed a job board, a CRM, a spreadsheet or a dashboard without copying anything by hand. Like every Apify Actor, it can be scheduled, called from code and connected to Make, n8n, Zapier or a webhook.

Who is it for?

  • Recruiters and staffing agencies in Switzerland: see which companies are hiring for your specialties in Zürich, Bern, Basel, Geneva or Lausanne, with workload and language requirements, and contact them first.
  • Job boards and aggregators: import fresh Swiss listings daily with stable job IDs, expiry dates and apply links.
  • HR and labour-market analysts: track demand for roles, skills and languages by canton and over time.
  • Sales teams selling to HR: build lead lists of companies that are actively hiring, with company type (SME or large company).

What data can you get from jobs.ch?

FieldExample
jobId24bed6ed-7416-480a-b55f-6400d13e8285
title.NET Software Engineer
companyFurado AG
companyTypeSME or large company
street, postalCode, city, canton, countryTödistrasse 46, 8810, Horgen, ZH, CH
latitude, longitude47.26055, 8.58444
workloadMinPercent, workloadMaxPercent80, 100 (the Swiss "Pensum")
languages[{"language": "de", "level": 3}, {"language": "en", "level": 2}]
skills["Business Development", "Key Account Management"] when the employer lists them
applicationMethod, quickApplyform, true
externalUrlthe employer's own application link when the job uses one
urljobs.ch link in English, German or French
publishedAt, firstPublishedAt, expiresAt2026-09-10T15:38:06+02:00, 2026-09-10T13:38:06+00:00, 2026-10-11
logoUrlcompany logo on jobs.ch
descriptionfull job text, plain text without HTML

Contact persons are never returned as fields, and private e-mail addresses inside descriptions are masked. Anonymous postings have companyVisible: false and an empty company.

How much does it cost to scrape jobs.ch?

You pay only for jobs delivered to your dataset: $0.90 per 1,000 jobs on the Free plan, with lower prices on paid Apify plans (up to 20% off). Platform usage is included.

Worked example: a daily alert for "Software Engineer" in Zürich that returns 40 new jobs a day costs 40 x $0.0009 = $0.036 per day, about $1.08 per month. A one-off export of 1,000 jobs costs $0.90. Set Max jobs or a maximum cost per run to cap spending; the run stops cleanly at your limit.

How to scrape jobs.ch

  1. Click Try for free.
  2. Enter one or more search terms (for example Software Engineer, Pflegefachfrau or comptable) and a location such as Zürich, or leave the location empty for all of Switzerland.
  3. Optionally set Published within (days), turn on Only new jobs for alerts, and set Max jobs.
  4. Click Start. A run of 50 jobs with descriptions takes about 10 seconds.
  5. Download the results as JSON, CSV or Excel, or read them through the API.

For a daily job alert, save the input as a task, turn on Only new jobs and add an Apify Schedule. Each run then returns only listings that earlier runs did not deliver.

Input example

{
"searchTerms": ["Software Engineer"],
"location": "Zürich",
"publishedWithinDays": 7,
"includeDescription": true,
"urlLanguage": "en",
"onlyNewJobs": false,
"maxItems": 20
}

jobs.ch returns at most 2,000 jobs per search term. For larger exports, split the search by term or location.

Output example

A real row from a test run on 2026-10-09 (description shortened):

{
"jobId": "24bed6ed-7416-480a-b55f-6400d13e8285",
"title": ".NET Software Engineer",
"company": "Furado AG",
"companyVisible": true,
"companyType": "SME",
"place": "Horgen",
"street": "Tödistrasse 46",
"postalCode": "8810",
"city": "Horgen",
"canton": "ZH",
"country": "CH",
"latitude": 47.26055,
"longitude": 8.58444,
"workloadMinPercent": 100,
"workloadMaxPercent": 100,
"languages": [{"language": "de", "level": 3}, {"language": "en", "level": 2}],
"applicationMethod": "form",
"quickApply": true,
"externalUrl": null,
"url": "https://www.jobs.ch/en/vacancies/detail/24bed6ed-7416-480a-b55f-6400d13e8285/",
"publishedAt": "2026-09-10T15:38:06+02:00",
"firstPublishedAt": "2026-09-10T13:38:06+00:00",
"expiresAt": "2026-10-11",
"description": "Your main responsibilities:\nMaintain, support, and further develop existing .NET desktop applications in combination with SQL Server.\n...",
"searchQuery": "Software Engineer",
"searchLocation": "Zürich",
"scrapedAt": "2026-10-09T12:23:38Z"
}

The dataset has two views: Overview (title, company, city, canton, workload, apply method, dates, links) and With description.

Integrations and API

Run it from your code with the Apify API or the apify-client package, schedule it in Apify, or connect it to Make, n8n, Zapier, Google Sheets or a webhook.

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("kamerozkan/jobs-ch-scraper").call(run_input={
"searchTerms": ["Software Engineer"], "location": "Zürich", "onlyNewJobs": True, "maxItems": 100,
})
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
print(job["title"], job["company"], job["city"], job["url"])

With a webhook on ACTOR.RUN.SUCCEEDED you can push every new job to Slack, a database or your ATS as soon as the run finishes.

FAQ

Do I need a jobs.ch account or API key? No. The Actor reads the same public listings anyone can see on jobs.ch.

Which languages does it handle? All of them. The job text stays in the language the employer used (German, French, Italian or English); urlLanguage only sets the language of the jobs.ch link.

Why is company empty for some jobs? Some employers post anonymously or through an agency. Those rows have companyVisible: false.

Can I get only new jobs every day? Yes. Turn on Only new jobs and schedule the Actor. Jobs delivered by earlier runs with the same search are skipped and not charged.

Is it legal to collect this data? It collects publicly available job listings that companies publish to attract applicants. Contact persons are not returned as fields. You are responsible for how you use the data, including privacy laws like the Swiss FADP and GDPR, and the terms of jobs.ch.

Something is not working? Open an issue on the Issues tab with your run link and it will be fixed quickly.

Support and feedback

  • Found a bug or missing a field? Open an issue on the Issues tab of this Actor. We reply within 48 hours and ship most fixes within a few days.
  • Have an idea for a feature? Issues are the fastest way to get it built.
  • If the Actor saves you time, a short review on this page helps other users find it.