Jobs.ch Swiss Job Listings by Region & Industry

Scrape job listings from jobs.ch, Switzerland's largest job board. Search by keyword or browse by canton, industry, occupational field, or contract type, with filters for workload and seniority. Returns title, company, location, and job URL.

Open in Apify Store$0.99 / 1K on Free

Short answer

Jobs.ch Swiss Job Listings by Region & Industry is an Apify Store Actor that returns 9 published output fields, including title, companyName, location, workloadText. It lists $0.99 per 1,000 results on the Free plan (pay per event), $0.49 on the Business plan. It takes 26 input settings; one is required (mode). Last updated Nov 2, 2026.

From the public Store listing and published build schema, synced 2026-11-12.
JobsAutomationLead generation

What it returns

9 fields from the published dataset schema. Export as JSON, CSV or Excel, or read the dataset through the Apify API.

  • title
  • companyName
  • location
  • workloadText
  • contractType
  • salaryMin
  • salaryMax
  • postedDate
  • jobUrl

Input

Input settings for Jobs.ch Swiss Job Listings by Region & Industry
SettingTypeRequiredDefaultWhat it does
mode string Yes search What to fetch. `search` runs classic keyword search (or semantic with `searchMode=semantic`). `browse` uses filters only. `byCompany` resolves company names/IDs. `byUrls` accepts jobs.ch search or job-detail URLs. The `byRegion`/`byIndustry`/`byEmploymentType`/`byCategory` modes are kept for backwar
searchMode string No classic `classic` uses jobs.ch's exact keyword API with all filters and sort. `semantic` uses the site's fuzzy, cross-language search page (filters still apply; sort is relevance-only).
searchQueries array No [] One or more free-text keywords (mode=search). Multiple queries are run in order and deduplicated by job ID. Leave empty to browse all jobs matching the filters.
companyNames array No [] Company names to resolve against jobs.ch's company directory (mode=byCompany). Exact names are preferred; unmatched names fall back to a keyword search filtered by company name.
companyIds array No [] jobs.ch company IDs (mode=byCompany). IDs are the most reliable company filter and take priority over names.
startUrls array No [] jobs.ch search URLs or job-detail URLs (mode=byUrls). Search URLs carry their own filters; invalid or non-jobs.ch URLs are skipped.
regions array No [] Filter by one or more Swiss canton/language-regions (multi-value OR). Allowed IDs: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25. Required for mode=byRegion; optional elsewhere.
industries array No [] Filter by one or more employer industries (multi-value OR). Allowed IDs: 1-24. Required for mode=byIndustry; optional elsewhere.
categories array No [] Filter by one or more occupational fields / job functions (multi-value OR). Allowed IDs: 97-261 (165 jobs.ch categories; labels in README). Required for mode=byCategory.
employmentTypes array No [] Filter by one or more contract types (multi-value OR). Allowed IDs: 1 Temporary, 2 Freelance, 3 Internship, 4 Supplementary income, 5 Permanent position, 6 Apprenticeship. Required for mode=byEmploymentType.
Show the other 16 settings
More input settings for Jobs.ch Swiss Job Listings by Region & Industry
SettingTypeRequiredDefaultWhat it does
positions array No [] Filter by one or more seniority levels (multi-value OR). Allowed IDs: 1 Executive position, 2 Specialist, 3 Employee.
languageSkills array No [] Filter by one or more required working languages (multi-value OR). Allowed values: de, en, fr, it.
companySegments array No [] Filter by employer segment (multi-value OR). Allowed values: gu (large company), kmu (SME), pdl (personnel-service provider).
location string No – Optional free-text city/place refinement (e.g. Zürich, Geneva, Basel).
employmentGradeMin integer No 0 Lower bound of the workload range in percent.
employmentGradeMax integer No 100 Upper bound of the workload range in percent.
publishedSince string No – Only jobs first published within this time window.
sortBy string No relevance Classic search sort order: relevance or newest-first. Semantic search always uses relevance.
includeDetails boolean No false Fetch each job's detail page for full description, apply URL/method, salary estimate, contacts, languages, categories, regions, deadline, benefits and company profile/ratings. Adds one request per job plus one cached request per company.
descriptionFormat string No text Format of the enriched description: plain text, original HTML, or both.
maxDescriptionLength integer No 0 Truncate descriptions to this many characters (0 = no truncation).
maxItems integer No 20 Maximum number of jobs to return. jobs.ch serves 20 rows per page and caps each search at 2,000 rows.
maxPages integer No 100 Maximum result pages to request per query/filter combination (jobs.ch caps searches at 100 pages).
locale string No en jobs.ch site language for URLs and translated labels.
incrementalMode boolean No false When enabled, only new or changed jobs are pushed. State is stored under `stateKey` in the key-value store.
stateKey string No – Key-value store key for incremental state (default `jobs_ch_incremental_state`). Only used when `incrementalMode` is true.

Example input

Built from the input form's published example values and defaults.

{
  "mode": "search",
  "searchMode": "classic",
  "searchQueries": [
    "software engineer"
  ],
  "companyNames": [],
  "companyIds": [],
  "startUrls": [],
  "regions": [],
  "industries": [],
  "categories": [],
  "employmentTypes": [],
  "positions": [],
  "languageSkills": [],
  "companySegments": [],
  "employmentGradeMin": 0,
  "employmentGradeMax": 100,
  "sortBy": "relevance",
  "includeDetails": false,
  "descriptionFormat": "text",
  "maxDescriptionLength": 0,
  "maxItems": 3,
  "maxPages": 1,
  "locale": "en",
  "incrementalMode": false
}

Run it from code or an AI agent

The same run through the Apify API, with the example input. You need an Apify API token; the run is billed to your account at the Store price.

Python

from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
    "mode": "search",
    "searchMode": "classic",
    "searchQueries": [
        "software engineer"
    ],
    "companyNames": [],
    "companyIds": [],
    "startUrls": [],
    "regions": [],
    "industries": [],
    "categories": [],
    "employmentTypes": [],
    "positions": [],
    "languageSkills": [],
    "companySegments": [],
    "employmentGradeMin": 0,
    "employmentGradeMax": 100,
    "sortBy": "relevance",
    "includeDetails": False,
    "descriptionFormat": "text",
    "maxDescriptionLength": 0,
    "maxItems": 3,
    "maxPages": 1,
    "locale": "en",
    "incrementalMode": False
}

run = client.actor("vexaloom-labs/jobs-ch-swiss-job-listings-by-region-and-industry").call(run_input=run_input)
if run is None:
    raise RuntimeError("The Actor run was not found.")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

pip install apify-client

JavaScript

import { ApifyClient } from "apify-client";

const client = new ApifyClient({ token: "<YOUR_APIFY_TOKEN>" });
const input = {
    "mode": "search",
    "searchMode": "classic",
    "searchQueries": [
        "software engineer"
    ],
    "companyNames": [],
    "companyIds": [],
    "startUrls": [],
    "regions": [],
    "industries": [],
    "categories": [],
    "employmentTypes": [],
    "positions": [],
    "languageSkills": [],
    "companySegments": [],
    "employmentGradeMin": 0,
    "employmentGradeMax": 100,
    "sortBy": "relevance",
    "includeDetails": false,
    "descriptionFormat": "text",
    "maxDescriptionLength": 0,
    "maxItems": 3,
    "maxPages": 1,
    "locale": "en",
    "incrementalMode": false
};

const run = await client.actor("vexaloom-labs/jobs-ch-swiss-job-listings-by-region-and-industry").call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

npm install apify-client

cURL

curl -X POST "https://api.apify.com/v2/actors/vexaloom-labs~jobs-ch-swiss-job-listings-by-region-and-industry/run-sync-get-dataset-items"   -H "Authorization: Bearer $APIFY_TOKEN"   -H "Content-Type: application/json"   -d '{"mode":"search","searchMode":"classic","searchQueries":["software engineer"],"companyNames":[],"companyIds":[],"startUrls":[],"regions":[],"industries":[],"categories":[],"employmentTypes":[],"positions":[],"languageSkills":[],"companySegments":[],"employmentGradeMin":0,"employmentGradeMax":100,"sortBy":"relevance","includeDetails":false,"descriptionFormat":"text","maxDescriptionLength":0,"maxItems":3,"maxPages":1,"locale":"en","incrementalMode":false}'

Waits for the run and returns the dataset items (runs over 300 seconds return HTTP 408; start an async run instead).

MCP (AI agents)

{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=vexaloom-labs/jobs-ch-swiss-job-listings-by-region-and-industry",
      "headers": {
        "Authorization": "Bearer <YOUR_APIFY_TOKEN>"
      }
    }
  }
}

Adds this Actor as a tool in an MCP client that takes a remote server URL (Cursor, VS Code, Claude Code) through Apify's hosted MCP server. OAuth sign-in also works without the header. Clients that only start local servers can wrap the URL with npx mcp-remote.

What a run costs

The result rate falls on higher Apify plans. Each figure is the published per-result rate times the number of results.

Cost of Jobs.ch Swiss Job Listings by Region & Industry results by Apify plan
Apify planPer 1,00010,000 results100,000 results
Free plan$0.99$9.90$99
Starter plan$0.82$8.20$82
Scale plan$0.66$6.60$66
Business plan$0.49$4.90$49
  • Every run also has a start event, charged per GB of memory (minimum one): $0.10 on Free, $0.03 on Business. At its default memory of 4 GB a run starts at $0.40 on Free. Fewer, larger runs keep this small.
  • The Free plan includes $5 of monthly usage (Apify pricing, checked 2026-11-11); at the Free rate that covers at most about 5,050 results, less start events and platform usage.
  • Worked example: 10,000 results in one run on the Free plan cost $10.30 ($9.90 for results + $0.40 start), plus Apify platform usage (compute), billed separately by Apify.
  • Pay per event. Platform usage (compute) is billed by Apify on top of the event prices. Compare other tools in the cost estimator.

What people use it for

  • search Swiss job listings
  • filter roles by region

JobsDB Hong Kong & Thailand Job Listings Extractor

Pull job listings from JobsDB's Hong Kong and Thailand markets by keyword, category, location, or company, with salary, work-type,…

7 output fields $0.99 per 1K

Czech Jobs.cz Postings, Salary & Brigady Finder

Search Jobs.cz Czech job postings and part-time brigady gigs by keyword, city, or profession, with salary, employment type, education, and…

14 output fields $0.99 per 1K

Glassdoor Job Listings Salary & Rating Scraper

Pull Glassdoor job listings by keyword and location or from a single company's jobs page, with salary estimates, employer ratings, Easy Apply…

15 output fields $0.99 per 1K

GulfTalent Job Listings Across 16 Middle East Markets

Search GulfTalent by keyword, category, industry, job type or nationality preference, or browse one employer's careers page, and get salary,…

12 output fields $0.99 per 1K

Handshake Campus Jobs & Employer Showcase Extractor

Reads Handshake's public job explore page for campus internships and entry-level roles, plus the public employer showcase, returning title,…

13 output fields $0.99 per 1K

HelloWork France Job Listings & Salary Filter Scraper

Search HelloWork.com by keyword, region, city, sector or job function, and filter by contract type, remote-work frequency, experience level,…

8 output fields $0.99 per 1K

Questions people ask

How much does Jobs.ch Swiss Job Listings by Region & Industry cost?

The published result rate depends on your Apify plan: $0.99 per 1,000 on Free, $0.82 per 1,000 on Starter, $0.66 per 1,000 on Scale, $0.49 per 1,000 on Business. So 10,000 results cost about $9.90 on the Free plan and $4.90 on Business, plus a start fee of $0.10 per run per GB of memory on Free. Platform usage is billed separately.

What data does Jobs.ch Swiss Job Listings by Region & Industry return?

Its published output schema lists 9 fields: title, companyName, location, workloadText, contractType, salaryMin, salaryMax, postedDate, jobUrl. A listed field is not guaranteed to be filled in every row.

What input does Jobs.ch Swiss Job Listings by Region & Industry need?

Required: mode. Optional settings include searchMode, searchQueries, companyNames, companyIds, startUrls, regions.

How do I run Jobs.ch Swiss Job Listings by Region & Industry from Python or the API?

Use the Apify API client: in Python, ApifyClient(token).actor("vexaloom-labs/jobs-ch-swiss-job-listings-by-region-and-industry").call(run_input=...), then read the run's default dataset (run.default_dataset_id); in JavaScript the same call is client.actor("vexaloom-labs/jobs-ch-swiss-job-listings-by-region-and-industry").call(input). Without a client, POST the input JSON to https://api.apify.com/v2/actors/vexaloom-labs~jobs-ch-swiss-job-listings-by-region-and-industry/run-sync-get-dataset-items with your API token. Ready-to-paste code with the example input is on this page.

Sources

Actor updated 2026-11-02 Data synced 2026-11-12
Cite this page

Scraper Finder. "Jobs.ch Swiss Job Listings by Region & Industry." https://scraperfinder.com/catalogue/jobs-ch-swiss-job-listings-by-region-and-industry/ (data checked 2026-11-12).

Run Jobs.ch Swiss Job Listings by Region & Industry

$0.99 per 1,000 results. Paste the example input above, set your target query, then export the dataset.

Open in Apify Store