# Jobbern Jobs Details Scraper (`alexist/jobbern-jobs-details-scraper`) Actor

Extract comprehensive job data from Jobbern.ch, Switzerland's job portal. Gather 27+ fields per listing including titles, requirements, salary ranges, company info, and application URLs — perfect for recruiters, data analysts, and job aggregators.

- **URL**: https://apify.com/alexist/jobbern-jobs-details-scraper.md
- **Developed by:** [Alex](https://apify.com/alexist) (community)
- **Categories:** Automation, Developer tools, Jobs
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-usage

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Jobbern.ch Jobs Scraper: Collect Swiss Job Listings at Scale

***

### What Is Jobbern.ch?

Jobbern.ch is one of Switzerland's leading job boards, hosting thousands of active employment listings across retail, finance, administration, hospitality, and specialized sectors. The platform connects Swiss employers with qualified candidates nationwide. Manually collecting and organizing job data from Jobbern is labor-intensive — the **Jobbern Jobs Scraper** automates this process, delivering clean, structured datasets instantly.

***

### Overview

The **Jobbern Jobs Scraper** extracts detailed job postings from Jobbern.ch, transforming HTML pages into organized data records. It serves:

- **Recruiters** tracking open positions and hiring trends across Switzerland
- **HR professionals** building talent market analysis and salary benchmarks
- **Data analysts** studying Swiss employment patterns by region and sector
- **Job aggregator platforms** integrating Jobbern listings into multi-source feeds
- **Market researchers** monitoring labor demand across industries

Key advantages include high-volume collection (up to 200 items per URL), robust error handling with `ignore_url_failures`, and comprehensive field extraction covering location, compensation, requirements, and company details.

***

### Input Format

The scraper accepts JSON configuration specifying which job URLs to collect:

```json
{
  "urls": [
    "https://www.jobbern.ch/job/verkaeuferin-food/327461",
    "https://www.jobbern.ch/job/rayonleiterin-fruechte-gemuse/327460",
    "https://www.jobbern.ch/job/steuerspezialist-in-recht-mwst/327298"
  ],
  "max_items_per_url": 200,
  "ignore_url_failures": true
}
```

| Parameter | Description |
|---|---|
| `urls` | Array of Jobbern job detail page URLs (copy directly from your browser) |
| `max_items_per_url` | Maximum records per URL (e.g., `200` for full extraction) |
| `ignore_url_failures` | If `true`, scraper continues even if some URLs fail — recommended for large runs |

> **Tip:** Use bulk editing to paste multiple URLs at once. Each URL should point to a job detail page, not search results.

***

### Output Format

**Example output record:**

```json
{
  "id": 327461,
  "title": "Verkäufer:in Food",
  "company_id": 27365,
  "workplace_zip": "3818",
  "workplace_city": "Grindelwald Terminal",
  "activity": "<p><b>Arbeiten,</b> wo die <b>Schweiz</b> einkauft</p><p>Bei Coop kauft die Schweiz ein! Wir sind stolz darauf, unsere Kundschaft willkommen zu heissen und ihr Einkaufserlebnis mitzugestalten. Als Teil unseres Teams hilfst du genau dabei. Lass uns gemeinsam dafür sorgen, dass unsere Kundschaft immer wieder gerne zu uns kommt und sei Teil des Schweizer Einkaufserlebnisses.</p><p><b>Pensum</b></p><p>80 - 100%</p><p><b>Vertrag</b></p><p>unbefristet</p><p><b>Stellenantritt</b></p><p>per sofort oder nach Vereinbarung</p><p><b>Aufgaben</b></p><p></p><ul><li>Du liebst die Abwechslung, darum bedienst und berätst du unsere Kundschaft in verschiedenen Abteilungen – stets freundlich und engagiert.</li><li>Dank deinem aktiven Einsatz verkaufen sich die Waren besser und werden top bewirtschaftet.</li><li>Klar, dass du unsere Vorgaben einhältst, sei es bei Frische und Qualität, punkto Hygiene, Temperaturvorschriften oder des Verfalldatums.</li><li>Abwechslungsreich ist auch dein Einsatz an den Kassen, wenn du das Team unterstützt.</li></ul><p><b>Anforderungen</b></p><p></p><ul><li>Bist du im Detailhandel ausgebildet (Grundbildung) oder hast du bereits viel Erfahrung im Verkauf gemacht? Bingo, dann bewirb dich.</li><li>Deine Einsatzzeiten sind flexibel, aber das macht dir keine Probleme.</li><li>Deutsch beherrschst du gut, und zwar im Gespräch und auf Papier.</li></ul><p></p><ul><li><b>Vergünstigungen</b>: Rabatt auf das Reiseangebot ITS Coop Travel, 5-fache Anzahl Superpunkte im Supermarkt, bis zu 20% Rabatt auf verschiedene Versicherungsleistungen, bis zu 20% Rabatt in allen Formaten der Coop-Gruppe, günstigere Mobile- und Prepaid-Abos bei Coop Mobile, Reka-Card: Vergünstigung bei Bezug, Vergünstigung bei Mobility CarSharing, Personalrabatt auch für Partner:in (im gleichen Haushalt lebend), Vergünstigung bei GA-Abonnement, Vergünstigungen bei Kulturanlässen, Vergünstigungen für Freizeitaktivitäten</li><li><b>Anstellungsbedingungen</b>: Pensionskasse: 2/3 wird von Coop einbezahlt, Attraktive Anstellungsbedingungen und zertifizierte Lohngleichheit, Treueprämien, Sparplan bei der Pensionskasse,Gesamtarbeitsvertrag (GAV), 18 Wochen bezahlter Mutterschaftsurlaub und drei Wochen bezahlter Vaterschaftsurlaub</li><li><b>Arbeitszeit</b>: 5 Wochen Ferien, flexible Arbeitszeitmodelle</li><li><b>Weiterbildung</b>: Über 600 interne Weiterbildungskurse, Talentmanagement mit vielfältigen Entwicklungsmöglichkeiten, Aus- und Weiterbildungsangeboten des L-GAV und Coop</li><li><b>Nachhaltigkeit</b>: Engagement für Mensch, Tier und Natur mit über 400 Taten</li><li><b>Kommunikation</b>: interne App für Mitarbeitende</li><li><b>Gesundheit</b>: Update-Fitness: Fr. 200.– Rabatt aufs Jahresabonnement, Gratis Teilnahme an verschiedenen Firmenläufen, Firmeninterne Sportangebote</li></ul><p><b>Deine Ansprechperson</b></p><p>der Coop Genossenschaft</p>",
  "requirements": null,
  "offer": "<ul><li>Du liebst die Abwechslung, darum bedienst und berätst du unsere Kundschaft in verschiedenen Abteilungen – stets freundlich und engagiert.  </li><li>Dank deinem aktiven Einsatz verkaufen sich die Waren besser und werden top bewirtschaftet.</li><li>Klar, dass du unsere Vorgaben einhältst, sei es bei Frische und Qualität, punkto Hygiene, Temperaturvorschriften oder des Verfalldatums.</li><li>Abwechslungsreich ist auch dein Einsatz an den Kassen, wenn du das Team unterstützt.</li></ul>",
  "contact": "<b>Germann Steiner</b><br />HR Marketing",
  "url_application": "https://ohws.prospective.ch/public/v1/redirect/c71e6167-4faf-4ae8-95ff-a28c664b17b3/ats",
  "url_description": "https://ohws.prospective.ch/public/v1/jobs/c71e6167-4faf-4ae8-95ff-a28c664b17b3",
  "is_shown_on_company_minisite": false,
  "company_description": null,
  "type_key": 5,
  "type_value_min": 80,
  "type_value_max": 100,
  "date_actualization": "2026-07-18",
  "date_start": "2026-07-18",
  "date_first_published": "2026-07-18 04:10:42.570443+0200",
  "is_special_offer": false,
  "is_promoted": false,
  "home_office": false,
  "position": [],
  "external_id": "10117816",
  "country_code": [
    "ch"
  ],
  "company": {
    "id": 27365,
    "name": "Coop",
    "description": "<strong><span style=\"font-size:18px;\">Jobs und Karriere bei Coop</span></strong><br />\n<br />\nDetailhandel, Grosshandel und Produktion – mit vielfältigen Jobs in unserer Coop-Welt bieten wir Ihnen spannende Berufs- und Karrieremöglichkeiten. Mit über 90'000 Mitarbeitenden aus 120 Nationen, verteilt auf 22 Länder gehen wir gemeinsam an die Spitze.",
    "homepage": "https://www.coopjobs.ch/de.html",
    "additional_address": "",
    "vacancy_list_style_class": "Ostjob_Vacancy_ListStyle_Default",
    "zip": "4002",
    "city": "Basel",
    "hide_first_publication_date": false,
    "street": "Thiersteinerallee",
    "house_number": "14",
    "po_box": "",
    "country": "Schweiz",
    "additional_name": "Personal Hauptsitz",
    "main_phone_number": "+41 61 336 66 66",
    "pdf_preview_enable": true,
    "contact_and_application_url_enable": true,
    "vacancies_in_popup": false,
    "is_shown_iframe_on_mobile_pages": true,
    "show_template_on_mobile": false,
    "logo_id": "2b32fee1fcf612b0c158",
    "country_of_origin_code": "ch",
    "is_free_company": false,
    "profile": {
      "id": 45,
      "company_id": 27365,
      "social_urls": [
        {
          "name": "facebook",
          "url": "https://www.facebook.com/coop.ch"
        },
        {
          "name": "twitter",
          "url": "https://twitter.com/coop_ch"
        },
        {
          "name": "instagram",
          "url": "https://www.instagram.com/coop.ch/"
        },
        {
          "name": "youtube",
          "url": "https://www.youtube.com/coopschweiz"
        },
        {
          "name": "xing",
          "url": "https://www.xing.com/pages/coop"
        },
        {
          "name": "kununu",
          "url": "https://www.kununu.com/ch/coop"
        },
        {
          "name": "linkedin",
          "url": "https://www.linkedin.com/company/coop_2/"
        }
      ],
      "company_site": "https://www.coopjobs.ch/de.html ",
      "career_site": "https://www.coopjobs.ch/de.html",
      "contact": {
        "firstname": "Employer Branding",
        "email": "employerbranding@coop.ch"
      },
      "benefits": [],
      "active_sections": [
        "jobs",
        "about_us",
        "photo_video",
        "benefits",
        "career"
      ]
    }
  },
  "categories": [
    {
      "id": 55,
      "title": "Verkauf, Handel, Kundenberatung, Aussendienst",
      "description": "",
      "order_position": 19,
      "is_active": true,
      "platform_id": [
        7
      ]
    },
    {
      "id": 56,
      "title": "Gastronomie, Hotellerie, Tourismus, Lebensmittel",
      "description": "",
      "order_position": 9,
      "is_active": true,
      "platform_id": [
        7
      ]
    }
  ],
  "address_country": null
}
```

The scraper extracts 27+ structured fields from each Jobbern listing:

#### Core Job Information

| Field | Meaning |
|---|---|
| `id` | Unique Jobbern identifier for this job posting |
| `title` | Official job title as displayed (e.g., "Verkäuferin Food") |
| `external_id` | Third-party or employer job ID if provided |
| `url_description` | Direct link to the job detail page |
| `url_application` | Link to submit an application |
| `type_key` | Employment type category (e.g., full-time, part-time) |
| `type_value_min` | Minimum value for employment type (e.g., hours per week) |
| `type_value_max` | Maximum value for employment type |

#### Location Details

| Field | Meaning |
|---|---|
| `workplace_city` | City where the job is located (e.g., "Bern", "Zurich") |
| `workplace_zip` | Postal code of the workplace |
| `address_country` | Country code (e.g., "CH" for Switzerland) |
| `country_code` | ISO country code for filtering |
| `position` | Specific position type or seniority level |

#### Company & Employer Info

| Field | Meaning |
|---|---|
| `company_id` | Unique identifier for the employer |
| `company` | Company name and branding |
| `company_description` | Text description of the employer (industry, size, culture) |
| `is_shown_on_company_minisite` | Whether the listing is featured on the company's Jobbern profile |
| `contact` | Contact person or HR department details |
| `activity` | Company activity/industry classification |

#### Job Content

| Field | Meaning |
|---|---|
| `requirements` | Candidate qualifications, skills, and experience needed |
| `offer` | What the employer offers (benefits, perks, compensation details) |
| `categories` | Job categories (e.g., "Sales", "Finance", "Administration") |

#### Publication & Status

| Field | Meaning |
|---|---|
| `date_first_published` | When the listing was first posted to Jobbern |
| `date_actualization` | Last update or refresh date |
| `date_start` | Earliest start date for the position |
| `is_special_offer` | Flag indicating a featured or promoted listing |
| `is_promoted` | Whether the employer paid for promotion |
| `home_office` | Work-from-home or flexible location availability |

***

### How to Use

1. **Collect URLs** — Browse Jobbern.ch and copy the URLs of job listings you want to scrape (e.g., `https://www.jobbern.ch/job/...`).
2. **Paste into the input** — Add URLs to the `urls` array one at a time or use bulk edit for efficiency.
3. **Set parameters** — Adjust `max_items_per_url` based on your needs (200 is the maximum per URL).
4. **Enable error tolerance** — Set `ignore_url_failures: true` for robust runs that continue even if a URL fails.
5. **Start the run** — Execute the scraper and monitor progress in the run log.
6. **Export data** — Download results as JSON, CSV, or Excel for analysis or integration.

**Best practices:**

- Use job detail page URLs, not search result links.
- If scraping multiple URLs, enable `ignore_url_failures` to avoid interruptions.
- Check the run log for any failed URLs and re-attempt separately if needed.

***

### Use Cases & Business Value

- **Talent acquisition:** Monitor competitor hiring activity and open positions in your industry or region.
- **Salary benchmarking:** Analyze compensation ranges and position types across Swiss employers.
- **Market research:** Study employment trends by sector, region, or company size.
- **Job aggregation:** Build a comprehensive Swiss job feed by combining Jobbern data with other sources.
- **Career analytics:** Track how long positions stay open or identify hiring patterns by season.

By automating data collection, the Jobbern Jobs Scraper saves hours of manual work and provides clean, normalized data ready for spreadsheets, databases, dashboards, or machine learning workflows.

***

### Conclusion

The **Jobbern.ch Jobs Scraper** is your gateway to Swiss employment data. With 27+ fields per listing and reliable bulk processing, it transforms Jobbern's rich job inventory into actionable intelligence. Whether you're a recruiter, researcher, or data professional, this scraper unlocks insights that drive better hiring decisions and market understanding.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the Specific jobs urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## Actor input object example

```json
{
  "urls": [
    "https://www.jobbern.ch/job/verkaeuferin-food/327461",
    "https://www.jobbern.ch/job/rayonleiterin-fruechte-gemuse/327460",
    "https://www.jobbern.ch/job/rayonleiterin-molkerei-eier-kaese/327459",
    "https://www.jobbern.ch/job/assistentin-assistent-der-stadtpraesidentin-80/327322",
    "https://www.jobbern.ch/job/steuerspezialist-in-recht-mwst/327298"
  ],
  "ignore_url_failures": true
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "urls": [
        "https://www.jobbern.ch/job/verkaeuferin-food/327461",
        "https://www.jobbern.ch/job/rayonleiterin-fruechte-gemuse/327460",
        "https://www.jobbern.ch/job/rayonleiterin-molkerei-eier-kaese/327459",
        "https://www.jobbern.ch/job/assistentin-assistent-der-stadtpraesidentin-80/327322",
        "https://www.jobbern.ch/job/steuerspezialist-in-recht-mwst/327298"
    ],
    "ignore_url_failures": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("alexist/jobbern-jobs-details-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "urls": [
        "https://www.jobbern.ch/job/verkaeuferin-food/327461",
        "https://www.jobbern.ch/job/rayonleiterin-fruechte-gemuse/327460",
        "https://www.jobbern.ch/job/rayonleiterin-molkerei-eier-kaese/327459",
        "https://www.jobbern.ch/job/assistentin-assistent-der-stadtpraesidentin-80/327322",
        "https://www.jobbern.ch/job/steuerspezialist-in-recht-mwst/327298",
    ],
    "ignore_url_failures": True,
}

# Run the Actor and wait for it to finish
run = client.actor("alexist/jobbern-jobs-details-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "urls": [
    "https://www.jobbern.ch/job/verkaeuferin-food/327461",
    "https://www.jobbern.ch/job/rayonleiterin-fruechte-gemuse/327460",
    "https://www.jobbern.ch/job/rayonleiterin-molkerei-eier-kaese/327459",
    "https://www.jobbern.ch/job/assistentin-assistent-der-stadtpraesidentin-80/327322",
    "https://www.jobbern.ch/job/steuerspezialist-in-recht-mwst/327298"
  ],
  "ignore_url_failures": true
}' |
apify call alexist/jobbern-jobs-details-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=alexist/jobbern-jobs-details-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/ahiortnDuTWbQjWDQ/builds/o4Pr7bmLc9HhcntDF/openapi.json
