jobs.ch Scraper: Stellenanzeigen als Tabelle exportieren

Du suchst Stellenanzeigen von jobs.ch und willst sie in Excel oder in eine eigene Auswertung bekommen? Der Jobs.ch Scraper holt die Anzeigen zu deinen Suchbegriffen und deinem Ort und liefert sie als Tabelle: Titel, Arbeitgeber, Ort, Kanton, Pensum, Datum und Link zur Anzeige. Ohne Code, in wenigen Minuten.

Niveau: Einsteiger
Dauer: 5 Minuten
Kosten: 426 Stellen mit Details: ca. 2,13 $
Werkzeuge: Apify Console (ohne Code)
Actor auf Apify öffnen → Kosten ansehen

In diesem Tutorial

  1. Das bekommst du
  2. Alle Felder
  3. Beispiel: Pflegefachpersonen in Zürich
  4. Schritt 1: Apify-Konto anlegen
  5. Schritt 2: Suche und Ort eintragen
  6. Schritt 3: Actor starten
  7. Schritt 4: Daten exportieren
  8. Welche Filter es gibt
  9. API und Zeitplan
  10. Kosten
  11. Anwendungen
  12. FAQ

Das bekommst du

jobs.ch bietet keine Export-Funktion für Stellenanzeigen. Der jobs.ch-Scraper holt die Anzeigen zu deinen Suchbegriffen und legt sie als Tabelle ab, die du als CSV, Excel oder JSON herunterladen kannst. Er findet Stellen in der ganzen Schweiz, auch in französischer und italienischer Sprache. Jede Zeile ist eine Anzeige, hier gekürzt und mit erfundenen Beispielwerten zur Veranschaulichung der Struktur:

{
  "id": "...",
  "title": "...",
  "company_name": "...",
  "location": "...",
  "canton": "ZH",
  "employment_type": "...",
  "workload_min": 60,
  "workload_max": 100,
  "posted_at": "...",
  "source_url": "https://www.jobs.ch/...",
  "source_platform": "jobs.ch",
  "search_query": "..."
}

Die Werte hängen von der einzelnen Anzeige ab. Ein echter Lauf mit Zahlen steht weiter unten im Beispiel.

Alle Felder im Überblick

So sind die Felder laut Ausgabe-Schema des Actors aufgebaut. Ohne includeJobDetails fehlen die Felder, die nur auf der Detailseite stehen (zum Beispiel der volle Anzeigentext und die Anforderungen).

FeldTypInhalt
idTextEindeutige Anzeigen-ID
titleTextTitel der Anzeige
company_nameTextArbeitgeber (das ältere Feld company ist veraltet)
location / cantonTextOrt und Kanton als Kürzel (ZH, BE, AG ...)
employment_typeTextBeschäftigungsart, zum Beispiel permanent, temporary, freelance, full-time oder part-time
workload_min / workload_maxZahlPensum in Prozent
remote_optionTextremote, hybrid oder onsite, falls vorhanden
salary_min / salary_max / salary_currency / salary_periodZahl / TextGehalt, falls die Anzeige eines nennt
description_snippet / description_fullTextKurzbeschreibung und voller Anzeigentext
requirementsListeGenannte Anforderungen
posted_at / expires_atTextVeröffentlichungs- und Ablaufdatum
contact_firstname, contact_lastname, contact_email, contact_phone, contact_positionTextKontaktperson, falls die Anzeige eine nennt
apply_url / apply_emailTextBewerbungslink und Bewerbungs-E-Mail, falls angegeben
company_profile_url / company_jobs_url / company_job_countText / ZahlFirmenprofil auf jobs.ch, Link zu allen Stellen des Arbeitgebers und deren Anzahl
company_website, company_industry, company_size, company_ratingText / ZahlFirmendaten aus dem Profil, laut Schema gefüllt bei includeCompanyDetails
company_benefitsListeBenefits des Arbeitgebers, falls auf jobs.ch genannt
source_url / source_platformTextLink zur Originalanzeige und Plattform (jobs.ch)
search_query / scraped_atTextSuchbegriff, der die Anzeige gefunden hat, und Zeitpunkt des Abrufs
Nicht jedes Feld ist immer gefüllt. Gehalt, Kontaktperson und Firmendaten stehen nur dann in der Tabelle, wenn die Anzeige oder das Firmenprofil sie nennt.

Beispiel: Pflegefachpersonen in Zürich

Wir haben die Suche einmal lokal laufen lassen (21.10.2026): Suchbegriff „Pflegefachperson“, Ort Zürich, Anzeigen der letzten 30 Tage, klassische Suche, Personalvermittler ausgeblendet. Das Ergebnis:

Das war der Input:

{
  "searchQueries": ["Pflegefachperson"],
  "locations": ["Zürich"],
  "language": "de",
  "maxResultsPerQuery": 2000,
  "sortBy": "newest",
  "publicationDate": "30",
  "searchMode": "classic",
  "companyFilter": "exclude-hr",
  "includeJobDetails": true
}
Namensabgleich, kein Register. exclude-hr prüft nur den Firmennamen. Prüfe die Arbeitgeberliste kurz, bevor du sie weitergibst.

Die Kosten dieses Laufs findest du im Abschnitt Kosten.

Die Auswertung nach Arbeitgebern und Teilzeit kannst du in Excel machen. Oder du lässt Claude das über den Apify-MCP-Server erledigen (mehr dazu in den weiterführenden Links). Ein Prompt dafür:

Nutze den Actor santamaria-automations/jobs-ch-scraper mit diesem Input:
{"searchQueries": ["Pflegefachperson"], "locations": ["Zürich"],
 "language": "de", "maxResultsPerQuery": 2000, "sortBy": "newest",
 "publicationDate": "30", "searchMode": "classic",
 "companyFilter": "exclude-hr", "includeJobDetails": true}
Gruppiere die Stellen nach company_name und zähle sie.
Zähle zusätzlich pro Arbeitgeber, wie viele Stellen in Teilzeit möglich sind
(workload_min unter 100). Zeige die 10 grössten Arbeitgeber als Tabelle.
Sag mir vor dem Start, was der Lauf kostet, und warte auf mein OK.
SCHRITT 1

Apify-Konto anlegen

  1. Öffne die Seite des jobs.ch-Scrapers auf Apify.
  2. Klicke auf Try for free und registriere dich mit Google oder E-Mail.
  3. Du landest in der Apify Console im Tab Input des Actors. Für kleine Läufe reicht das monatliche Gratis-Guthaben des Free-Plans.
SCHRITT 2

Suche und Ort eintragen

Im Feld searchQueries trägst du ein oder mehrere Suchbegriffe ein. Jeder Begriff läuft als eigene Suche, doppelte Anzeigen werden über alle Begriffe hinweg entfernt. Den Ort gibst du bei locations an, Kantone bei cantons. Ein kleiner Testlauf sieht so aus:

{
  "searchQueries": ["Pflegefachperson"],
  "locations": ["Zürich"],
  "maxResultsPerQuery": 20,
  "sortBy": "newest",
  "includeJobDetails": true
}
Starte klein. Setze beim ersten Lauf maxResultsPerQuery auf 10 bis 30. So siehst du in kurzer Zeit, ob die Treffer zu deinem Suchbegriff passen, und zahlst nur wenige Cent.
SCHRITT 3

Actor starten und Ergebnis ansehen

Klicke unten auf Save and Run. Auf der Lauf-Seite siehst du im Tab Log den Fortschritt, im Tab Dataset die Ergebnisse als Tabelle. Mehrere Suchbegriffe in einem Lauf sehen so aus:

{
  "searchQueries": ["Pflegefachperson", "Pflegefachfrau", "Pflegefachmann"],
  "locations": ["Zürich"],
  "maxResultsPerQuery": 50,
  "includeJobDetails": false
}
SCHRITT 4

Daten exportieren

  1. Öffne im Lauf den Tab Dataset.
  2. Klicke auf Export.
  3. Wähle das Format: CSV, Excel, JSON und weitere stehen zur Auswahl. Mit der Feld-Auswahl exportierst du nur die Spalten, die du brauchst, zum Beispiel title, company_name, location, workload_min und source_url.

Welche Filter es gibt

Der Actor filtert bei der Suche nach diesen Angaben:

Per API und automatisch abrufen

Du kannst den Actor auch aus eigenen Skripten, n8n oder Make aufrufen. Dieser Aufruf startet einen Lauf und gibt die Ergebnisse direkt zurück (Apify-Endpunkt run-sync-get-dataset-items):

curl -X POST "https://api.apify.com/v2/acts/santamaria-automations~jobs-ch-scraper/run-sync-get-dataset-items?token=DEIN_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"searchQueries": ["Pflegefachperson"], "locations": ["Zürich"], "publicationDate": "30", "searchMode": "classic", "companyFilter": "exclude-hr", "maxResultsPerQuery": 100}'

Deinen API-Token findest du in der Apify Console unter Settings → API & Integrations. Für Abrufe, die regelmässig laufen sollen, legst du in der Console unter Schedules einen Zeitplan an. Setze sortBy auf newest und vergleiche die Ergebnisse mit dem letzten Abruf (Feld id), damit du nur neue Anzeigen weiterverarbeitest.

Was das kostet

Der Actor rechnet pro Ergebnis ab (Preise live aus dem Apify Store, Stand 21.10.2026, Free-Plan; höhere Apify-Pläne zahlen etwas weniger):

Jede Anzeige wird nur einmal berechnet, entweder als Treffer oder mit Details. Rechenbeispiel für die Suche oben mit 426 Stellen: mit Details 0,001 $ + 426 x 0,005 $ = 2,131 $, also etwa 2,13 $. Ohne Details 0,001 $ + 426 x 0,00287 $ = 1,224 $, also etwa 1,22 $. Annahmen: Free-Plan-Preise, jede der 426 Stellen wird einmal berechnet, ein Startereignis pro Lauf (bei 128 MB Speicher). Die aktuellen Preise findest du immer auf der Apify-Seite des Actors.

Wofür Leute die Daten nutzen

Recruiting

Sieh, welche Arbeitgeber in deiner Region für ein Berufsbild Leute suchen, wie viele Stellen offen sind und welche Pensen sie anbieten. Mit company_job_count und company_jobs_url kommst du schnell zu allen Stellen eines Arbeitgebers.

Personalvermittlung

Mit only-hr siehst du, welche Vermittler welche Stellen ausschreiben. Mit exclude-hr bekommst du die Direktausschreibungen von Arbeitgebern, die selbst suchen und als mögliche Kunden infrage kommen.

Lohn- und Marktanalyse

Wenn eine Anzeige ein Gehalt nennt, findest du es in salary_min, salary_max und salary_period. Lass den Lauf regelmässig laufen und zähle, wie viele Stellen pro Woche und Kanton dazukommen.

Häufige Fragen

Brauche ich Programmierkenntnisse für den jobs.ch-Scraper?

Nein. In der Apify Console füllst du ein Formular aus, klickst auf Save and Run und lädst die Tabelle herunter. Code brauchst du nur, wenn du den Actor per API in ein eigenes System einbauen willst.

Kann ich eine fertige jobs.ch-Suche verwenden?

Ja. Stelle deine Suche mit allen Filtern auf jobs.ch ein, kopiere die URL aus dem Browser und füge sie im Feld startUrls ein. Der Actor liest die Filter aus der URL.

Was macht der Filter exclude-hr?

Mit companyFilter exclude-hr blendet der Actor Personalvermittler und Recruiting-Agenturen aus. Er erkennt sie am Firmennamen, zum Beispiel an Wörtern wie Personal, Recruiting, Zeitarbeit oder Stellen. Das ist ein Namensabgleich, kein Register. Prüfe die Tabelle trotzdem kurz, weil einzelne Arbeitgeber mit solchen Wörtern im Namen mit ausgeblendet werden können.

Warum sind weniger Stellen mit Pflege-Titel in der Tabelle als Treffer?

Die Suche liefert auch Anzeigen, in denen der Begriff nur im Text vorkommt. Im Beispiellauf hatten 382 von 426 Stellen einen Pflege-Titel (Titel mit Pflege, FaGe, Fachfrau/Fachmann Gesundheit, HF, Spitex, Pflegehelfer oder Pflegeassistenz, als Filter nach dem Lauf). Mit dem Feld titleFilter behältst du nur Anzeigen, deren Titel einen deiner Begriffe enthält.

Was kostet der jobs.ch-Scraper?

Im Free-Plan 0,001 $ pro Lauf, dazu 0,00287 $ pro Anzeige aus der Trefferliste oder 0,005 $ pro Anzeige mit Detailseite. Die Beispielsuche mit 426 Stellen und Details kostet damit etwa 2,13 $.

Darf ich die Daten verwenden?

Das hängt von deinem Anwendungsfall ab, besonders bei Angaben zu Kontaktpersonen wie Name, E-Mail oder Telefonnummer. Prüfe das für deinen Fall, bevor du Daten speicherst oder weiterverwendest.

Weiterführende Links

Actor auf Apify öffnen → Alle Tutorials