Skip to content

Job-Room.ch Scraper

Try for free

Export Swiss job listings from job-room.ch (arbeit.swiss / travail.swiss / lavoro.swiss / work.swiss), the job portal of the Swiss public employment service. Search by keyword, canton, city and radius, workload, contract type and posting date, or paste job links. Get employer, location, coordinates, workload, contract, start date, occupation, full description, contacts and apply links. No login needed.

🇨🇭 Job-Room.ch Scraper

Export Swiss job listings from job-room.ch, the job portal of the Swiss public employment service (also served as arbeit.swiss, travail.swiss, lavoro.swiss and work.swiss). Search by keyword, canton, city and radius, workload, contract type and posting date, and get clean rows with the employer, place of work, coordinates, workload, contract, start date, occupation, full description, contacts and apply links. No login needed: 10 jobs take about 5 seconds, 1,000 jobs with full descriptions about 25 seconds, and you pay $2.00 per 1,000 jobs.

✨ Why use Job-Room.ch Scraper?

  • ⚡ Fast: reads the site's own data feed, 100 jobs per request, with full descriptions fetched in parallel.
  • 🇨🇭 All of Switzerland: every canton and all four portal languages (DE, FR, IT, EN), with occupation names in your language.
  • 🎯 Precise filters: canton, city or postcode with a 10–150 km radius, workload %, permanent or temporary, company, posting date and job-title words.
  • 📇 Contacts included: contact person, email and phone when the employer publishes them, plus the apply link, apply email and company website.
  • 📈 Big exports: up to 100,000 jobs per run; searches above the site's 10,000-job window are split by canton automatically.
  • 🔓 No login, no browser: plain data requests through Swiss residential exits (the fastest route to the site), with an automatic switch to datacenter exits if they are refused.

🎯 Use cases

  • 🧲 Recruiting and lead generation: find employers and agencies hiring for nursing, IT, construction or hospitality roles in a canton, with the contact person.
  • 📊 Labour-market research: count openings by canton, occupation, workload or contract type over time.
  • 🔔 Job alerts: schedule a daily run with "Posted within 1 day" and get only the newest jobs.
  • 🏢 Competitor and client monitoring: track every opening of a company with the company filter.
  • 🔁 Still-online checks: paste job links to see whether they are still published and when they expire.

🚀 How to use

  1. Enter one or more search terms (for example Pflege, Informatiker, comptable), or * for all jobs that match your filters.
  2. Optionally pick cantons, a location and radius, a workload range, a contract type or Posted within days.
  3. Set Maximum jobs (20 by default, 0 = no limit).
  4. Click Start. Small runs finish in about 5 seconds.
  5. Download the results as JSON, CSV, Excel or HTML, or read them through the API.

📥 Input

FieldWhat it does
searchQueriesSearch terms, one search each (* = all jobs matching the filters)
startUrlsJob links or job ids to read in full
maxResultsTotal jobs to save (0 = no limit)
cantonsTwo-letter canton codes, e.g. ZH, VD, TI
location / radiusKmSwiss city or postcode and a 10–150 km radius
postedWithinDaysOnly jobs published in the last N days (1–60)
workloadMin / workloadMaxWorkload (Pensum) range in %
contractTypeany, permanent or temporary
companyNameEmployer name contains
titleFilterComma-separated words the job title must contain
sortBynewest, oldest or relevance
includeJobDetailsFull description and contacts for keyword searches (on by default)
languagede, fr, it or en for descriptions, occupation names and salutations
{
  "searchQueries": ["Pflege"],
  "cantons": ["ZH", "AG"],
  "workloadMin": 80,
  "contractType": "permanent",
  "postedWithinDays": 7,
  "maxResults": 100
}

📤 Output

One row per job.

FieldDescription
titleJob title
companyEmployer or agency
location, city, postal_code, canton, latitude, longitudePlace of work
workload_min, workload_maxWorkload (Pensum) in %
employment_typefull-time or part-time (from the workload)
contract_typepermanent or temporary
start_date, starts_immediately, end_dateWhen the job starts and ends
occupation, occupation_codesOccupation name and code (Swiss AVAM classification)
language_skillsRequired languages and levels
description_full, description_md, description_snippetFull description as plain text and Markdown, plus a short excerpt
posted_at, expires_atPublication period
job_statusonline, expired, offline or unknown
contact_*, apply_url, apply_email, apply_phoneContact person and how to apply
company_url, company_city, …Employer details
job_number, reporting_obligationFederal job number and whether the job falls under the job-reporting obligation
source_url, search_query, scraped_atJob link, the search that found it and when it was saved
{
  "id": "d5eb9f09-0e3c-487b-bda5-bbbcb260535e",
  "title": "Dipl. Pflegefachperson HF/FH & Teamleiter/in Pflegeabteilung 80-100% in Schlieren",
  "company": "MediPersonal",
  "location": "Schlieren, ZH",
  "city": "Schlieren",
  "postal_code": "8952",
  "canton": "ZH",
  "canton_name": "Zürich",
  "latitude": 47.397,
  "longitude": 8.446,
  "job_status": "online",
  "employment_type": "full-time",
  "contract_type": "permanent",
  "workload_min": 100,
  "workload_max": 100,
  "start_date": null,
  "starts_immediately": true,
  "number_of_jobs": 1,
  "occupation": "Pflegefachmann/frau",
  "occupation_codes": ["101224"],
  "language_skills": [{"language": "de", "spoken": "basic", "written": "basic"}],
  "description_snippet": "Dipl. Pflegefachperson HF/FH & Teamleiter/in Pflegeabteilung 80-100% in Schlieren – Ihre Führungsqualitäten sind gefragt! Schlieren liegt westlich von Zürich …",
  "description_full": "Dipl. Pflegefachperson HF/FH & Teamleiter/in Pflegeabteilung 80-100% in Schlieren – Ihre Führungsqualitäten sind gefragt!\n\nSchlieren liegt westlich von Zürich …",
  "posted_at": "2026-10-14",
  "expires_at": "2026-11-12",
  "job_number": "242821002",
  "reporting_obligation": false,
  "contact_salutation": "Frau",
  "contact_name": "Anna Muster",
  "contact_email": "anna.muster@example.ch",
  "contact_phone": "+41440000000",
  "apply_url": "https://www.example.ch/jobs/pflegefachperson-schlieren",
  "apply_email": "jobs@example.ch",
  "company_url": "https://www.example.ch",
  "company_city": "Wallisellen",
  "source_url": "https://www.job-room.ch/job-search/d5eb9f09-0e3c-487b-bda5-bbbcb260535e",
  "source_platform": "job-room.ch",
  "search_query": "Pflege",
  "scraped_at": "2026-10-21T16:25:20Z"
}

The run's OUTPUT record lists every search with the number of jobs the site reports for it, plus job links that no longer exist.

💰 Pricing

You pay $2.00 per 1,000 jobs saved ($0.002 per job), full descriptions and contacts included. Platform usage (compute and Swiss residential proxy traffic) is billed on top and stays small: about $0.02–0.03 per 1,000 jobs in our test runs. Example: 1,000 jobs ≈ $2.00 + ~$0.03 usage ≈ $2.03.

❓ FAQ

Is it legal to scrape job-room.ch? The actor reads only public job ads that anyone can see without an account. You are responsible for how you use the data, especially personal data such as contact names (GDPR and the Swiss FADP).

Do I need a login or a proxy? No login. Swiss residential exits are the default because they reach the site fastest; datacenter exits work too (a little slower). If the chosen exits are refused, the run switches to the other group on its own.

How many jobs can I get? Up to 100,000 per run. The site lists jobs of the last 60 days and shows at most 10,000 per search; bigger searches are split by canton, and the run's status says if a search still hit the ceiling.

Why is a field empty? The site only has what the employer entered: many ads have no contact person, start date or company website. Salaries are not published on job-room.ch.

Can I schedule it or use the API? Yes. Schedule runs (for example daily with "Posted within" 1 day) and read the dataset through the API, webhooks or integrations.

⚠️ Limits

  • Only publicly visible jobs are included. Ads the site shows only to signed-in job seekers (for example during the head start of the job-reporting obligation) are not.
  • The site lists jobs of the last 60 days only; older jobs are not available.
  • One search returns at most 10,000 jobs on the site; very broad searches inside a single canton can stop at 20,000 (newest and oldest 10,000).
  • No salary data: job-room.ch does not publish salaries.

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.