Sozjobs.ch Scraper - Swiss Social & Healthcare Jobs avatar
Sozjobs.ch Scraper - Swiss Social & Healthcare Jobs

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Sozjobs.ch Scraper - Swiss Social & Healthcare Jobs

Sozjobs.ch Scraper - Swiss Social & Healthcare Jobs

Scrapes job listings from Sozjobs.ch, the leading portal for social work, healthcare, and education jobs in German-speaking Switzerland. Filter by region and contract type.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Alessandro Santamaria

Alessandro Santamaria

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

20 days ago

Last modified

Share

Sozjobs.ch Job Scraper

Scrapes job listings from sozjobs.ch, the leading Swiss job portal for social and healthcare professions (Sozialwesen, Pflege, Gesundheit).

Three Scraping Modes

This scraper supports three distinct modes for different use cases:

ModeInputOutputUse Case
SERP OnlyincludeContactExtraction: falseBasic job data (title, company, location, URL)Fast mass collection, deduplication
SERP + DetailsincludeContactExtraction: true (default)Full job data with contact infoComplete data in one run
Direct URLsdirectUrls: [...]Full job data + job_statusStill-alive checks, re-scraping specific jobs

Features

  • Browser-based scraping - Uses PlaywrightCrawler for full JavaScript rendering
  • Contact extraction - Extracts contact person details from each job listing
  • Healthcare focus - Specializes in Pflege, Sozialarbeit, Betreuung, and related fields
  • Region filtering - Filter by Swiss regions (Zurich, Bern, Ostschweiz, etc.)
  • Three scraping modes - SERP only, SERP + details, or direct URL scraping
  • Job status detection - Track if jobs are still online, offline, or expired
  • Standardized output - Returns data in the JobListing schema format
  • Infinite scroll handling - Automatically clicks "Load More" to get all results
  • Proxy support - Built-in proxy rotation for reliability

Input

FieldTypeDescriptionDefault
directUrlsarrayDirect job URLs to scrape (skips search mode)[]
searchQuerystringJob title, skills, or keywords to search for"" (all jobs)
regionsstring[]Regions to search inAll German-speaking regions
contractTypesstring[]Contract types: permanent, temporary["permanent"]
maxResultsintegerMaximum number of job listings to scrape500
includeContactExtractionbooleanVisit detail pages for contact infotrue
proxyConfigurationobjectApify proxy settingsResidential

Mode 1: SERP Only - Fast Mass Collection

Set includeContactExtraction: false to scrape only search results without visiting detail pages:

  • Fastest mode - Only scrapes search result pages
  • Most cost-efficient - Minimal compute and proxy usage
  • Basic data - Title, company, location, URL
  • Use case - Mass job collection for deduplication against existing database

Mode 2: SERP + Details - Full Data

Default mode with includeContactExtraction: true:

  • Two-phase scraping - First collects from SERP, then visits each detail page
  • Complete data - Full descriptions, contact info, benefits
  • Use case - Initial comprehensive scraping of new jobs

Mode 3: Direct URLs - Still Alive Checks

When directUrls is provided, the scraper operates in direct mode:

  • Skips search phase - Goes directly to provided job URLs
  • Job status detection - Returns online, offline, expired, or unknown
  • Full data extraction - Same as detail page scraping
  • Use case - Periodic "still alive" checks, re-scraping specific jobs after deduplication

Available Regions

Region IDCoverage
zurichZürich and surroundings
berneBern and Mittelland
eastOstschweiz (SG, TG, AI, AR)
northwestBasel, Aargau, Solothurn
mittellandBern, Fribourg, Solothurn
centralZentralschweiz (LU, UR, SZ, OW, NW, ZG)
graubundenGraubünden

Example: SERP Only Mode

{
"searchQuery": "Pflegefachfrau",
"regions": ["zurich", "east"],
"contractTypes": ["permanent"],
"maxResults": 500,
"includeContactExtraction": false
}

Returns basic job data quickly for comparison with existing database. After deduplication, use Mode 3 to scrape full details of new jobs only.

Example: SERP + Details Mode (Default)

{
"searchQuery": "Pflegefachfrau",
"regions": ["zurich", "east"],
"contractTypes": ["permanent"],
"maxResults": 200,
"includeContactExtraction": true
}

Default mode - collects complete job data including descriptions, contact info, and benefits.

Example: Direct URLs Mode - Still Alive Checks

{
"directUrls": [
"https://www.sozjobs.ch/stelle/pflegefachfrau-spital-12345",
"https://www.sozjobs.ch/stelle/sozialarbeiter-heim-67890",
"https://www.sozjobs.ch/stelle/betreuung-kita-11223"
]
}

Use this mode for:

  • Still alive checks - Verify if previously scraped jobs are still online
  • Post-deduplication enrichment - After SERP-only scraping, fetch full details for new jobs only
  • Re-scraping specific jobs - Update data for specific job URLs

Output includes job_status field: online, offline, expired, or unknown.

Output

Each job listing follows the standardized JobListing schema:

{
"id": "pflegefachfrau-spital-12345",
"title": "Dipl. Pflegefachfrau/-mann HF 80-100%",
"company": "Kantonsspital St. Gallen",
"location": "St. Gallen",
"canton": "SG",
"job_status": "online",
"top_listing": null,
"employment_type": "full-time",
"workload_min": 80,
"workload_max": 100,
"remote_option": null,
"description_snippet": "Wir suchen eine erfahrene Pflegefachperson für unsere...",
"description_full": "...",
"requirements": [],
"posted_at": "2024-01-15T00:00:00.000Z",
"expires_at": null,
"source_url": "https://www.sozjobs.ch/stelle/pflegefachfrau-spital-12345",
"source_platform": "sozjobs.ch",
"contact_salutation": "Frau",
"contact_firstname": "Anna",
"contact_lastname": "Keller",
"contact_position": "Leiterin Personal",
"contact_email": "personal@kssg.ch",
"contact_phone": "+41712341234",
"apply_url": "https://www.sozjobs.ch/stelle/pflegefachfrau-spital-12345",
"apply_email": "personal@kssg.ch",
"company_url": "https://www.kssg.ch",
"scraped_at": "2024-01-16T12:00:00.000Z"
}

Notes:

  • job_status - Indicates job availability: online, offline, expired, or unknown. Most useful in Direct URL mode (Mode 3). In search modes, jobs are always considered online (field set to null).
  • top_listing - Not available from sozjobs.ch (always null)
  • contact_position - Contact person's job title/role (e.g., "Leiterin Personal", "HR Manager")
  • Contact fields - Only populated when includeContactExtraction: true or when using Direct URLs mode

Usage

Via Apify Console

  1. Go to the actor page
  2. Configure input parameters
  3. Click "Start"
  4. Download results from the Dataset tab (JSON, CSV, Excel)

Via API

curl -X POST "https://api.apify.com/v2/acts/santamaria~sozjobs-ch-scraper/runs" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"searchQuery": "Sozialarbeiter",
"regions": ["zurich", "berne"],
"maxResults": 100
}'

Via Apify SDK (Node.js)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('santamaria/sozjobs-ch-scraper').call({
searchQuery: 'Betreuung',
regions: ['east', 'central'],
maxResults: 300,
includeContactExtraction: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Found ${items.length} jobs`);

Job Categories Covered

Sozjobs.ch specializes in these healthcare and social work sectors:

CategoryExamples
PflegePflegefachperson, Fachfrau Gesundheit, Pflegehelfer
SozialarbeitSozialarbeiter, Sozialpädagoge, Sozialbegleiter
BetreuungBetreuungsperson, Fachperson Betreuung, Nanny
TherapiePhysiotherapeut, Ergotherapeut, Logopäde
PädagogikHeilpädagoge, Sonderpädagoge, Schulische Heilpädagogin
AdministrationTeamleitung, Pflegedienstleitung, Heimleitung

Performance

  • Speed: ~30-50 jobs/minute (browser-based, respects site limits)
  • Cost: ~0.1-0.3 CU per 100 jobs (higher due to browser usage)
  • Reliability: Built-in retry logic and graceful error handling

Technical Notes

This actor uses PlaywrightCrawler because sozjobs.ch:

  • Requires JavaScript rendering to display job listings
  • Uses infinite scroll with a "Load More" button for pagination
  • Serves dynamic content that cannot be scraped with simple HTTP requests

The actor operates in different modes:

SERP Only Mode

  1. SERP Phase: Loads search results and clicks "Load More" to collect all job URLs

SERP + Details Mode

  1. SERP Phase: Loads search results and clicks "Load More" to collect all job URLs
  2. Detail Phase: Visits each job page to extract full descriptions and contact info

Direct URLs Mode

  1. Direct Phase: Visits provided URLs directly, detects job status (online/offline/expired/unknown)
  2. Data Extraction: Extracts full job data from detail pages

Data Source

This actor scrapes data from the leading Swiss healthcare job portal:

  • Website: sozjobs.ch
  • Focus: Social work, healthcare, and education professions
  • Coverage: German-speaking Switzerland

This actor accesses publicly available job listings. Please ensure your use case complies with the sozjobs.ch terms of service.

Version History

  • v1.1.0 (2025-12-12): Direct URL mode for still alive checks

    • Added directUrls input parameter for direct job page scraping
    • Added job_status field (online/offline/expired/unknown) for job availability tracking
    • Added top_listing field to output schema (always null for sozjobs.ch)
    • Added contact_position field to capture contact person's job title/role
    • Skip search phase when direct URLs are provided
    • Detect offline jobs by checking for 404, "nicht gefunden", etc.
    • Performance improvements for direct URL mode
  • v1.0.0 (2025-12-05): Initial release

    • Search-based scraping with region and contract type filtering
    • Contact person extraction
    • Infinite scroll handling
    • Standardized JobListing schema output

Part of the Santamaria Job Scrapers Suite - Professional-grade job data for the DACH region and beyond. Need help with integration, aggregation, or custom scraping solutions? Contact us at contact@alessandrosantamaria.com