Arbeit.Swiss Scraper - Swiss Government Job Portal
Pricing
from $3.00 / 1,000 results
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
Actor stats
1
Bookmarked
14
Total users
7
Monthly active users
a day ago
Last modified
Categories
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
JobListingschema format withsearch_querytracking - Proxy support - Optional proxy configuration for different network setups
Input
| Field | Type | Description | Default |
|---|---|---|---|
directUrls | string[] | Direct job URLs to scrape (skips search mode) | [] |
searchQueries | string[] | One or more search keywords. Each runs as a separate search, deduplicated. | [] |
keywords | string[] | Legacy: search keywords (use searchQueries instead) | [] |
cantonCodes | string[] | Swiss canton codes (e.g., ["ZH", "BE", "SG"]) | [] (all cantons) |
sortBy | string | Sort order: date_desc, date_asc, or empty for default | "" |
workloadMin | integer | Minimum workload percentage (Pensum) | 10 |
workloadMax | integer | Maximum workload percentage (Pensum) | 100 |
onlineSinceDays | integer | Only include jobs posted within this many days | 60 |
maxResultsPerQuery | integer | Max results per search keyword | 100 |
maxResults | integer | Total cap across all queries. 0 = unlimited. | 0 |
proxyConfiguration | object | Apify proxy settings | Residential CH |
Example: Multi-Query Search
{"searchQueries": ["Pflege", "IT", "Buchhaltung"],"cantonCodes": ["ZH", "BE"],"maxResultsPerQuery": 50,"sortBy": "date_desc"}
Example: Single Search
{"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
| Code | Canton | Code | Canton |
|---|---|---|---|
| AG | Aargau | NW | Nidwalden |
| AI | Appenzell I. | OW | Obwalden |
| AR | Appenzell A. | SG | St. Gallen |
| BE | Bern | SH | Schaffhausen |
| BL | Basel-Land | SO | Solothurn |
| BS | Basel-Stadt | SZ | Schwyz |
| FR | Fribourg | TG | Thurgau |
| GE | Geneve | TI | Ticino |
| GL | Glarus | UR | Uri |
| GR | Graubunden | VD | Vaud |
| JU | Jura | VS | Valais |
| LU | Luzern | ZG | Zug |
| NE | Neuchatel | ZH | Zurich |
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)
Legal Notice
This actor accesses publicly available job listings through the official API. Please ensure your use case complies with the arbeit.swiss terms of service.
Related Actors
Looking for more job data? Check out our other scrapers:
Switzerland
Germany
Global
Enrich your job data
- Website Job Extractor -- Extract jobs directly from company career pages
- Website Contact Extractor -- Get emails and phone numbers from company websites
- Website Email & Phone Scraper -- Fast email and phone extraction (no AI needed)
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