Skip to content

JobScout24 Scraper

Try for free

Scrape Swiss job ads from jobscout24.ch by keyword, city, region and filters: full description, requirements, benefits, contact person and phone, workload, canton, salary and company rating. No login needed.

🇨🇭 JobScout24 Scraper

Scrape Swiss job ads from jobscout24.ch by keyword, city, region and filters. Each job comes with the full description, requirements, tasks and benefits, the contact person and phone, workload, canton, apply link and company rating. No login needed.

✨ Why use JobScout24 Scraper?

  • 🔎 Every search option of the site: keywords, city, region, job category, contract type, workload range, company type, industry, position level, ad language and posting age.
  • 📄 Full job ads: description as plain text, Markdown and HTML, plus requirements, tasks and benefits as lists.
  • 📞 Contacts and addresses: contact person, phone, email when the ad lists one, street, postcode and canton.
  • ⚡ Fast and light: plain HTTP requests, no browser.
  • 🧹 Clean data: jobs found by several keywords are saved once, and offline ads are skipped and not charged.

🎯 Use cases

  • 📈 Labour-market research: track demand for roles, skills and workloads across Swiss cantons.
  • 🤝 Recruiting and staffing leads: find companies that are hiring, with the contact person and phone.
  • 🔔 Job alerts: run daily with "Posted within 1 day" and "Newest first" and get only new jobs.
  • 🧮 Salary and workload analysis: compare workload ranges and published salaries by region and category.
  • ✅ Still-online checks: re-check a list of job URLs; offline ads are reported and not charged.

🚀 How to use

  1. Enter one or more search keywords (or leave them empty and pick a city, region or category).
  2. Optionally set a location and filters.
  3. Set Max jobs in total (0 = everything that matches).
  4. Click Start and wait for the run to finish.
  5. Download the results as JSON, CSV or Excel, or use them through the API.

📥 Input

FieldWhat it does
searchQueriesKeywords, one search each, e.g. Software Engineer
locationCity as the site spells it, e.g. Zürich, Genf, St. Gallen
startUrlsJob ad URLs, job IDs or result-page URLs from jobscout24.ch
maxResultsMax jobs in the whole run (0 = no limit)
includeJobDetailsOpen each ad for the full details (default on)
region, category, contractType, workloadMin, workloadMax, companyType, industry, positionLevel, adLanguageThe site's own filters
postedWithinDays, maxAgeHoursOnly recent jobs
titleFilterKeep only titles that contain one of these words
sortByNewest first, best match, title, company or place of work
{
  "searchQueries": ["Software Engineer"],
  "region": "zurich",
  "postedWithinDays": 7,
  "maxResults": 50
}

📤 Output

Every row is one job ad. With Include full job details on (the default) you get all of these fields; with it off you get the fields marked ⚡ (from the result list).

FieldWhat it is
id ⚡, job_uuid ⚡jobscout24.ch job ID and ad ID
title ⚡, company ⚡, location ⚡Job title, employer, place of work
postal_code, street_address, canton, countryWorkplace address and canton code (e.g. ZH, BE)
workload_min ⚡, workload_max ⚡, workload_label ⚡Workload in percent (e.g. 80 to 100)
employment_type, employment_types, contract_typefull-time / part-time / temporary, and the contract (e.g. permanent position)
position_level, job_category, industry, company_type ⚡Level, occupational group, employer industry, SME / large company / staffing agency
posted_at ⚡, posted_age_label ⚡Posting time (exact with details, the day from the age label without)
salary_text, salary_min, salary_max, salary_currency, salary_unitSalary when the ad publishes one
remote_optionremote or hybrid when the ad mentions home office or remote work
description_full, description_md, description_html, description_snippetThe full ad as plain text, Markdown and HTML, plus the first 500 characters
requirements, responsibilities, company_benefitsBullet points under the profile, tasks and benefits headings
contact_salutation, contact_firstname, contact_lastname, contact_fullname, contact_position, contact_phone, contact_email, contact_rawContact person from the ad's contact box or its closing lines
emails, apply_url, apply_email, application_typeEmails in the ad, the apply link, an application email and internal / external application
company_id, company_url, company_logo_url, company_rating, company_review_count, company_social_urlsCompany profile on jobscout24.ch, logo, rating and number of ratings
top_listing ⚡true for promoted ads
video_url, header_image_urlEmployer video and header image when the ad has them
source_url ⚡, search_query ⚡, scraped_at ⚡Link to the ad, the keyword that found it, and when it was scraped

Example row from a test run (lists shortened, contact person replaced with a fictional one):

{
  "id": "10425671",
  "title": "Technische/r Projektleiter/in 80-100%",
  "company": "Spitalzentrum Biel / Centre hospitalier Bienne",
  "location": "Biel/Bienne",
  "postal_code": "2501",
  "canton": "BE",
  "country": "CH",
  "job_status": "online",
  "top_listing": true,
  "employment_type": "full-time",
  "contract_type": "permanent position",
  "workload_min": 80,
  "workload_max": 100,
  "workload_label": "80% - 100%",
  "position_level": "specialist",
  "job_category": "Technical Jobs / Engineers / Architects",
  "industry": "Health / Hospitals",
  "company_type": "Large companies",
  "ad_language": "de",
  "posted_at": "2026-10-09T00:03:46+02:00",
  "posted_age_label": "1 w",
  "description_snippet": "Technische/r Projektleiter/in 80-100%\nDas Spitalzentrum Biel ist das öffentliche Zentrumsspital der zweisprachigen Region Biel-Seeland-Berner Jura ...",
  "requirements": [
    "Abgeschlossenes Studium (HF/FH/Uni/ETH) im Bereich Elektrotechnik, Automatisierungstechnik, Gebäudetechnik HLKKSE ...",
    "Mehrjährige Berufserfahrung als technischer Projektleiter und beim Führen von Projektteams, idealerweise im Spitalumfeld"
  ],
  "responsibilities": [
    "Unterstützung im Bereich Haustechnik im Spital-Neubauprojekt",
    "Führen von technischen Projekten am Standort Beaumont und den Aussenstandorten"
  ],
  "company_benefits": [
    "Moderne Arbeitsbedingungen, flexible Arbeitszeitmodelle und zahlreiche Benefits",
    "Individuelle Weiterbildungs- und Entwicklungsmöglichkeiten"
  ],
  "contact_firstname": "Anna",
  "contact_lastname": "Muster",
  "contact_fullname": "Anna Muster",
  "contact_phone": "+41 32 000 00 00",
  "apply_url": "https://www.jobscout24.ch/en/job/technische-projektleiter/10425671/externalapply/",
  "application_type": "external",
  "company_url": "https://www.jobscout24.ch/en/company/spitalzentrum-biel-centre-hospitalier-bienne/119988/",
  "source_url": "https://www.jobscout24.ch/en/job/4cf69d4d-46b4-4dae-b3cc-ed52c79bedbd/",
  "source_platform": "jobscout24.ch",
  "search_query": "Projektleiter",
  "scraped_at": "2026-10-22T10:18:56+00:00"
}

The run summary (key-value store record OUTPUT) lists how many jobs the site shows for each search, inputs that failed and job URLs that were offline.

💰 Pricing

You pay $2.00 per 1,000 jobs ($0.002 per saved job), the same price with or without full job details. Offline ads, filtered-out jobs and failed pages are never charged.

Platform usage (compute and proxy traffic) comes on top and is small: 1,000 jobs with full details used about $0.05 of platform usage in our tests, and 10,000 jobs without details about $0.03 (both measured at 256 MB with the datacenter proxy; the default 512 MB adds less than half a cent to either run).

Example: 1,000 jobs with full details ≈ $2.00 + $0.05 = about $2.05.

❓ FAQ

Is it legal to scrape jobscout24.ch? The scraper only reads public job ads that anyone can open without an account. You are responsible for how you use the data, including data-protection rules for the contact details.

Do I need a login or my own proxy? No. The default datacenter proxy works; if a page is blocked, the scraper retries it on Swiss residential proxies automatically.

How many jobs can I get? As many as the search matches: set Max jobs in total to 0 to take every result. jobscout24.ch shows at most 100 result pages (about 2,000 jobs) per search, so larger searches are split automatically by region and filters; the run summary tells you how many jobs the site lists and how many were collected.

Why is a field empty? Not every ad has every field. Contact person, phone, salary, benefits and company rating are filled only when the ad or company profile shows them.

Can I schedule it or use the API? Yes. Schedule daily runs with "Posted within 1 day", or start runs and read the results through the API.

⚠️ Limits

  • Contact emails and the contact person's position come from the ad text, so they are filled only when the ad mentions them.
  • The site's apply button for external applications needs a jobscout24.ch account; apply_url is that jobscout24.ch link, not the employer's own form.
  • A city search includes jobs from the surrounding area, the same as on the site.
  • Without job details, posted_at is the date derived from the site's age label (e.g. "2 w"), so it is approximate.
  • jobscout24.ch shows at most 100 result pages per search. Searches with more matches are split by region, company type, category, contract type and level to collect the rest; on very broad searches (tens of thousands of jobs) a few jobs can still be out of reach, and the run summary says how many. Split searches are not in strict sort order.

Related actors

//From the blog\\

Latest articles

All articles
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.