jobs.ch & jobup.ch Jobs Scraper: Swiss Job Ads avatar

jobs.ch & jobup.ch Jobs Scraper: Swiss Job Ads

Pricing

from $0.90 / 1,000 jobs

Go to Apify Store
jobs.ch & jobup.ch Jobs Scraper: Swiss Job Ads

jobs.ch & jobup.ch Jobs Scraper: Swiss Job Ads

Paste jobs.ch or jobup.ch search URLs, or keywords + a Swiss place, get each job ad: title, company, place, workload (e.g. 80-100%), contract type, position level, publication date, link. No login. Pay per job ($0.0012 or less) plus a $0.001 start fee per run.

Pricing

from $0.90 / 1,000 jobs

Rating

0.0

(0)

Developer

PlainRows

PlainRows

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

17 hours ago

Last modified

Share

jobs.ch & jobup.ch Jobs Scraper

Get Swiss job ads from jobs.ch and jobup.ch (same publisher, JobCloud) for any keyword and place: job title, company, place of work (city, postal code, canton), workload (100%, 80-100%), contract type, position level, publication dates and link. Paste search URLs from either site, or type keywords + Swiss places and choose one site or both: a job shown on both sites is returned once.

Plain HTTP requests, no browser: no login, no account, no cookies. The Actor reads only the public search pages, one page at a time per search with a pause between pages, and respects the robots.txt of each site.

Typical uses

  • Swiss job market research: how many engineering, nursing or finance jobs are open in Zürich, Geneva or Bern, and at which workload.
  • Recruitment agencies and sales teams: which Swiss companies are hiring, for what, where.
  • Job boards and alerts: feed new Swiss ads into your own site, Slack, Google Sheets or an AI agent every day.
  • Part-time and workload analysis: share of 80-100 % or part-time positions in your field.
  • Spreadsheets, BI and AI agents: clean rows for Google Sheets, n8n, Make, Zapier or an MCP client.

What you get

One row per job ad:

FieldDescription
search, searchUrl, siteYour search, the page read, and jobs.ch or jobup.ch
jobId, urlJob ID (shared by both sites) and job link
titleJob title
employer, employerIdCompany that posted the ad (never a contact person)
place, city, postalCode, cantonPlace of work as shown, and the work address parts when the ad gives them
workload, workloadMin, workloadMaxWorkload as shown (80-100%) and its bounds in percent
contractTypePermanent position, Temporary, Freelance, Internship, Apprenticeship or Supplementary income
positionLevelEmployee, Specialist or Executive position
languagesRequiredLanguage skills asked, when the search page lists them
publishedAt, firstPublishedAtLast and first publication dates (Swiss time)
quickApply, promotedQuick apply offered, boosted ad
page, position, totalResultsWhere the job was, and how many jobs the site reports
observedAtWhen the page was read (UTC)

Missing values are always null, never guessed. No contact name is collected. A search without jobs (or blocked, or unreadable) gets one free row with found: false, a status and a message.

Example row

{
"search": "https://www.jobs.ch/en/vacancies/?term=engineer",
"site": "jobs.ch",
"found": true,
"jobId": "37f4aa81-d687-4f1e-b37c-759b3ef7f896",
"title": "Technical Support Engineer",
"employer": "Axetris AG",
"place": "Kägiswil",
"workload": "100%",
"contractType": "Permanent position",
"positionLevel": "Employee",
"firstPublishedAt": "2026-10-08T13:03:41+02:00",
"url": "https://www.jobs.ch/en/vacancies/detail/37f4aa81-d687-4f1e-b37c-759b3ef7f896/",
"status": "FOUND"
}

Input

{
"searchUrls": ["https://www.jobup.ch/fr/emplois/?term=comptable"],
"keywords": ["data analyst", "Pflegefachperson"],
"locations": ["Zürich", "Genève"],
"site": "both",
"maxResultsPerSearch": 40
}
  • searchUrls: search pages from jobs.ch (/en/vacancies/, /de/stellenangebote/, /fr/offres-emplois/) or jobup.ch (/en/jobs/, /fr/emplois/), with any filter. The page number is ignored.
  • keywords and locations: each keyword is searched in each place; with no place, across Switzerland.
  • site: both (default), jobs.ch or jobup.ch, for keywords only.
  • maxResultsPerSearch: 1 to 1,000 (default 40). Both sites show 20 jobs per page; the Actor reads up to 50 pages per search.

Up to 100 searches per run. Jobs found by two of your searches (or on both sites) are returned and billed once.

Pricing

Pay per event: one event per job returned, plus a small start fee per run ($0.001).

PlanPer jobPer 1,000 jobs
Free$0.0012$1.20
Bronze$0.0011$1.10
Silver$0.0010$1.00
Gold$0.0009$0.90

Free: searches without jobs, pages that are blocked or cannot be read, ads without title, company or place (a few ads hide their company), duplicates and input mistakes. On the free Apify plan, a run reads up to 3 searches and 20 jobs per search.

FAQ

Is it legal? The Actor reads only pages anyone can see without an account, at a slow pace, and respects robots.txt. It returns the job ad as the site publishes it, and no contact name. You are responsible for how you use the data.

Does it return the salary and the full description? Not yet: the search pages of jobs.ch and jobup.ch show neither. Open url for the full ad. A version that reads the ad page is planned if users ask for it.

Why are some searches empty or BLOCKED? If a site refuses a request (rate limit or bot check), the Actor stops that search and charges nothing beyond the results already delivered. If this happens after the first page, the run summary warns that the search stopped early and its results are partial. It never solves or bypasses a check. Try again later.

Which language? Labels (contract type, position level) are in English; titles stay in the language of the ad (German, French, Italian or English).

More PlainRows tools

Same pay-per-result pricing, same clean JSON, built to chain together in n8n, Make, Zapier or AI agents.

Support

Open an issue on the Actor's page: issues are read and answered. Need another field, a higher limit or a custom version for your workflow? Ask in an issue.