Alpha.ch + Topjobs.ch Scraper - Swiss JobCloud Vertical Boards
Pricing
from $2.49 / 1,000 job search results
Alpha.ch + Topjobs.ch Scraper - Swiss JobCloud Vertical Boards
Scrape Swiss job listings from alpha.ch or topjobs.ch (JobCloud/Netiva family, shared inventory ~4,700 jobs). 41 fields: title, company, canton, coordinates, workload, salary, contact, apply URL, full description in 4 formats. DE/FR/IT/EN. Pay-per-result.
Pricing
from $2.49 / 1,000 job search results
Rating
0.0
(0)
Developer
NanoScrape
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Alpha.ch + Topjobs.ch Scraper — Swiss JobCloud Vertical Boards
Scrape job listings from Alpha.ch or Topjobs.ch — two Swiss vertical job boards operated by JobCloud AG on the shared Netiva backend. Both sites share the same inventory (~4,700 active listings), the same API, and the same job IDs — the difference is UI branding only. Pick either surface with the host input parameter.
Returns 41 fields: title, company, canton, coordinates, workload, salary (CHF), recruiter contact person / email / phone, external apply URL, and full description in 4 formats (plain text, snippet, HTML, markdown). Multi-language (DE / FR / IT / EN).
Cost-effective: uses the public JSON API + /GetById detail endpoint. No login required, no anti-bot friction (JobCloud endpoints work from datacenter proxies).
Why one actor for two hosts?
Phase 0 verification (2026-09-03) confirmed alpha.ch and topjobs.ch are one platform:
- Same Netiva backend (
jobboard-api.netiva.chproxied by tenant subdomainsapi.alpha.ch/api.topjobs.ch) - Same Next.js frontend (identical
buildId) - Same job IDs, same ordering, byte-identical SERP responses
- Same result count (~4,735 across both hosts on the same probe)
Building two separate actors would produce duplicate output. Instead, one actor with the host input parameter lets you pick which branding surface to attribute the listings to.
Features
- 4 input modes: searchQueries (keywords) · searchUrls (paste any alpha.ch / topjobs.ch SERP URL) · startUrls (alias) · directUrls (single-job re-scrape / still-alive checks)
- Multi-language: DE, FR, IT, EN
- Sort by newest (default; recommended for scheduled scrapes) or relevance (default when a search query is supplied)
- Filter by JobCloud category tags (
categoryTags: ["632"]= Informatik,["638"]= Medizin/Pflege, etc.), region IDs (regionIds: ["103"]= Stadt Zürich,["105"]= Deutschschweiz), and workload range (workload: "80-100") - Fleet-canonical field names:
job_url,title,company_name,postal_code,posted_at_datetime,valid_through,employment_type,workload_min/max,salary_min/max,remote_type,apply_url,contact_email,contact_phone,contact_person_name, etc. - Description quartet:
description_full(plain text),description_snippet(300-char preview),description_html(cleaned HTML),description_md(markdown for LLM ingestion) - Rich tag taxonomy: 6 categories exposed as separate fields (employment type, position, region, industry, profession, company size)
- Detail-page enrichment via
/Api/JobsPublic/GetById/{id}— full JobCloud record with tags, coordinates, valid-through date, contact person, external apply URL (usually the JobCloud sibling jobs.ch/stellenangebote/detail/{jcJobId}) - Multilingual
requirements/benefitsextraction: scans DE/FR/IT/EN section headers (Anforderungen / Votre profil / Requisiti / Requirements etc.) - Salary extraction from Swiss CHF patterns (
CHF 80'000 - 120'000 par an) - Fast SERP-only mode:
includeJobDetails: falsereturns baseline fields at ~10 items/sec, no PPE detail charge - Concurrent detail fetching (default 8 workers)
- 3-tier proxy fallback (user proxy → auto → direct) for resilience
- 128 MB memory, ~$0.001 base charge per run
Sample input
{"host": "alpha.ch","searchQueries": ["informatik", "buchhalter"],"language": "de","sortBy": "newest","includeJobDetails": true,"maxResultsPerQuery": 50,"maxResults": 100,"maxConcurrency": 8,"proxyConfiguration": { "useApifyProxy": true }}
Filter by category + region (no keyword — returns all Zürich IT jobs):
{"host": "alpha.ch","categoryTags": ["632"],"regionIds": ["103"],"workload": "80-100","maxResults": 100}
Search URL mode — paste any alpha.ch / topjobs.ch SERP URL:
{"searchUrls": ["https://www.alpha.ch/de/jobs?tag=632®ion=105","https://www.topjobs.ch/fr/jobs?q=developer®ion=111"],"includeJobDetails": true,"maxResultsPerQuery": 30}
Direct URL mode — re-scrape specific jobs:
{"directUrls": ["https://www.alpha.ch/de/jobs/14727114","https://www.topjobs.ch/de/jobs/14727096"],"language": "de"}
Sample output
{"id": "14727114","job_url": "https://www.alpha.ch/de/jobs/14727114","source_host": "alpha.ch","title": "Akquisition TU-Submissionen, Gesamtleistungswettbewerbe 80–100%","company_name": "e-selection AG","company_logo_url": "https://media.jobs.ch/images/05389230-0f42-4c2b-953f-369385f87d72/2067x322.png","company_website": "https://www.e-selection.ch","location": "Luzern","postal_code": "6003","region": "Region Zentralschweiz","country": "CH","latitude": 47.05048,"longitude": 8.30635,"posted_at_datetime": "2026-09-03T19:03:27+00:00","valid_through": "2026-10-18T21:59","employment_type": "permanent","employment_position": "specialist","workload_min": 80,"workload_max": 100,"workload_text": "80 - 100%","salary_min": null,"salary_max": null,"salary_currency": "CHF","salary_period": null,"remote_type": null,"language": "de","description_full": "In dieser Rolle sind Sie die erste Ansprechperson im Akquisitionsprozess...","description_snippet": "In dieser Rolle sind Sie die erste Ansprechperson im Akquisitionsprozess und stehen am Anfang unserer Immobilienprojekte...","description_html": "<p>In dieser Rolle sind Sie die erste Ansprechperson im Akquisitionsprozess...</p><p><strong>Ihre Aufgaben</strong></p><ul><li>Ausarbeitung überzeugender Angebote...</li></ul>","description_md": "In dieser Rolle sind Sie die erste Ansprechperson...\n\n**Ihre Aufgaben**\n\n- Ausarbeitung überzeugender Angebote...","apply_url": "https://www.jobs.ch/de/stellenangebote/detail/f64abc08-a878-42cc-b772-89168f2a4dec/","contact_email": null,"contact_phone": null,"contact_person_name": "Michael Benjamin","requirements": ["Fachkenntnisse und Erfahrung: abgeschlossene Ausbildung in Architektur oder Bauingenieurwesen...","Kundenbeziehung: Kompetenz im Aufbau vertrauensvoller Kundenbeziehungen..."],"benefits": ["Arbeitsplatz mit Gestaltungsspielraum und direktem Einfluss auf nachhaltige Immobilienprojekte.","Kollegiales Arbeitsklima mit Förderung von Diversität und Chancengleichheit."],"tags": ["Festanstellung", "Fachverantwortung", "Region Zentralschweiz", "Bau / Architektur / Engineering"],"categories": ["Bau / Architektur / Engineering", "Architektur / Bauplanung / Zeichner"],"coordinates": [47.05048, 8.30635],"source_query": "","scraped_at": "2026-09-03T21:40:53Z"}
Pricing
Pay-per-event (PPE). Every SERP result is billed as job-serp-result; every enriched detail is billed as job-detail-result (once per job). A tiny apify-actor-start charge covers the run itself.
Typical cost estimate: ~$0.005 per enriched job at the introductory rate — one of the cheapest ways to build a live Swiss job dataset.
Related actors (JobCloud family)
- jobs-ch-scraper — jobs.ch, Switzerland's largest general job board
- jobup-ch-scraper — jobup.ch, French-Swiss sister site
- arbeit-swiss-scraper — arbeit.swiss, government job board
- swissdevjobs-ch-scraper — swissdevjobs.ch, tech-focused
- ictjobs-ch-scraper — ictjobs.ch, ICT vertical
Troubleshooting / Issues
Report issues or request fields via nanoscrape.com/contact or open a GitHub issue.
Changelog
- 0.1.0 (2026-09-03): Initial build. Phase 0 verified alpha.ch and topjobs.ch share the JobCloud/Netiva backend. Description quartet,
applyPrefillDefaults(),sortByenum, 3-tier proxy fallback, safeCharge PPE billing.