Arbeit.Swiss Scraper - Swiss Government Job Portal avatar

Arbeit.Swiss Scraper - Swiss Government Job Portal

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Arbeit.Swiss Scraper - Swiss Government Job Portal

Arbeit.Swiss Scraper - Swiss Government Job Portal

Scrapes job listings from Arbeit.Swiss (Job-Room.ch), Switzerland's official public employment service. Filter by canton, workload percentage, and posting date. Supports multiple keyword searches. Government and RAV job listings.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Alessandro Santamaria

Alessandro Santamaria

Maintained by Community

Actor stats

1

Bookmarked

14

Total users

7

Monthly active users

a day ago

Last modified

Share

Arbeit.Swiss Job Scraper

Scrapes job listings from arbeit.swiss, the official Swiss government job portal operated by RAV/SECO (Staatssekretariat fur Wirtschaft).

Features

  • Multi-query support - Run multiple search keywords in a single actor run, deduplicated across queries
  • Per-query limits - Control how many results each keyword returns independently
  • API-based scraping - Uses the official Job-Room API for fast, reliable data extraction
  • Three scraping modes - Search mode or direct URL mode for different use cases
  • Job status detection - Track if jobs are still online, offline, or expired (direct URL mode)
  • Comprehensive job data - Extracts title, company, location, workload, contact details, and more
  • Canton filtering - Filter jobs by Swiss canton codes
  • Sort order - Sort by date (newest/oldest first) or default
  • Standardized output - Returns data in the JobListing schema format with search_query tracking
  • Proxy support - Optional proxy configuration for different network setups

Input

FieldTypeDescriptionDefault
directUrlsstring[]Direct job URLs to scrape (skips search mode)[]
searchQueriesstring[]One or more search keywords. Each runs as a separate search, deduplicated.[]
keywordsstring[]Legacy: search keywords (use searchQueries instead)[]
cantonCodesstring[]Swiss canton codes (e.g., ["ZH", "BE", "SG"])[] (all cantons)
sortBystringSort order: date_desc, date_asc, or empty for default""
workloadMinintegerMinimum workload percentage (Pensum)10
workloadMaxintegerMaximum workload percentage (Pensum)100
onlineSinceDaysintegerOnly include jobs posted within this many days60
maxResultsPerQueryintegerMax results per search keyword100
maxResultsintegerTotal cap across all queries. 0 = unlimited.0
proxyConfigurationobjectApify proxy settingsResidential CH
{
"searchQueries": ["Pflege", "IT", "Buchhaltung"],
"cantonCodes": ["ZH", "BE"],
"maxResultsPerQuery": 50,
"sortBy": "date_desc"
}
{
"searchQueries": ["Software Engineer"],
"cantonCodes": ["ZH"],
"maxResultsPerQuery": 200
}

Example: Direct URLs (Still Alive Checks)

{
"directUrls": [
"https://www.job-room.ch/job-search/abc123-def456",
"https://www.job-room.ch/job-search/xyz789-uvw012"
]
}

Output

Each job listing follows the standardized JobListing schema:

{
"id": "abc123-def456",
"title": "Dipl. Pflegefachperson HF/FH",
"company": "Universitatsspital Zurich",
"location": "Zurich, ZH",
"canton": "ZH",
"job_status": null,
"employment_type": "full-time",
"workload_min": 80,
"workload_max": 100,
"remote_option": null,
"description_snippet": "Wir suchen eine engagierte Pflegefachperson...",
"description_full": "...",
"requirements": [],
"posted_at": "2024-01-15T00:00:00.000Z",
"expires_at": "2024-02-15T00:00:00.000Z",
"source_url": "https://www.job-room.ch/job-search/abc123-def456",
"source_platform": "arbeit.swiss",
"contact_salutation": "Frau",
"contact_firstname": "Maria",
"contact_lastname": "Mueller",
"contact_email": "jobs@usz.ch",
"contact_phone": "+41442551111",
"apply_url": "https://careers.usz.ch/apply/123",
"apply_email": "bewerbung@usz.ch",
"company_url": "https://www.usz.ch",
"search_query": "Pflege",
"scraped_at": "2024-01-16T12:00:00.000Z"
}

Field Notes

  • search_query - The search keyword that found this job (null for direct URL mode)
  • job_status - Only populated in Direct URL mode; null in search mode
  • Salary fields - Not available in arbeit.swiss API; always null
  • requirements - Not easily extractable from API; empty array

Important: Network Requirements

The arbeit.swiss API (job-room.ch) has strict access controls:

  • Works: Residential IPs, corporate networks, VPNs with residential exit
  • Blocked: Cloud/datacenter IPs (including Apify infrastructure)

Recommended: Use residential proxy (configured by default).

Swiss Canton Codes

CodeCantonCodeCanton
AGAargauNWNidwalden
AIAppenzell I.OWObwalden
ARAppenzell A.SGSt. Gallen
BEBernSHSchaffhausen
BLBasel-LandSOSolothurn
BSBasel-StadtSZSchwyz
FRFribourgTGThurgau
GEGeneveTITicino
GLGlarusURUri
GRGraubundenVDVaud
JUJuraVSValais
LULuzernZGZug
NENeuchatelZHZurich

Performance

  • Speed: ~250 jobs/minute (limited by respectful rate limiting)
  • Cost: ~0.01-0.05 CU per 1,000 jobs
  • Reliability: Built-in retry logic with exponential backoff

Data Source

  • Website: arbeit.swiss
  • Search API: POST https://www.job-room.ch/jobadservice/api/jobAdvertisements/_search
  • Operator: SECO (Staatssekretariat fur Wirtschaft)

This actor accesses publicly available job listings through the official API. Please ensure your use case complies with the arbeit.swiss terms of service.

Looking for more job data? Check out our other scrapers:

Switzerland

Germany

Global

Enrich your job data


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