# Indeed Switzerland Jobs Scraper (`unfenced-group/indeed-ch-scraper`) Actor

Scrape job listings from Indeed Switzerland. Returns titles, full descriptions, salary, company profiles, geo-coordinates and hiring signals. Pay per result.

- **URL**: https://apify.com/unfenced-group/indeed-ch-scraper.md
- **Developed by:** [Unfenced Group](https://apify.com/unfenced-group) (community)
- **Categories:** Jobs
- **Stats:** 4 total users, 3 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.70 / 1,000 jobs

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## 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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use 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

## Indeed CH Scraper

![Indeed CH Scraper](https://api.apify.com/v2/key-value-stores/MZycmv9AeAXYnOg6G/records/banner.png)

Extract job listings from ch.indeed.com at scale, with the richest field set available: full descriptions, structured salary, company profiles, precise geo-coordinates and hiring signals. No API key required.

---

### Why this scraper?

#### 🎯 Built for Switzerland
A dedicated Swiss scraper, not a global tool with a country dropdown. Salary parsing, location handling and currency (CHF) are tuned for ch.indeed.com.

#### 📄 Complete job data
Full job title, description in both HTML and plain text, apply URL, publish date, and the date the job first appeared on Indeed.

#### 💶 Structured salary
Minimum, maximum, pay period and currency, parsed from the listing. Estimated figures are flagged so you can filter them out.

#### 🏢 Company profiles
Company name, industry, employee count, revenue band, corporate website and logo where Indeed publishes them.

#### 📍 Precise location
Full address, city, postal code, region code, country and latitude/longitude, plus a remote-work flag.

#### 🔁 Repost detection
Every record carries hiring-demand signals so you can spot urgent and high-volume postings at a glance.

---

### Input parameters

| Parameter | Type | Default | Description |
|---|---|---|---|
| `query` | string | `"entwickler"` | Job title or keyword to search for. |
| `location` | string | (empty) | City, region or postal code. Leave empty to search all of Switzerland. |
| `radius` | integer | `25` | Search radius around the location, in kilometres. |
| `sort` | string | `"relevance"` | Sort by `relevance` or `date` (newest first). |
| `fromDays` | string | (empty) | Limit to jobs posted within the last 1, 3, 7 or 14 days. Empty means any time. |
| `maxItems` | integer | `100` | Maximum number of listings to return. Set to `0` for unlimited. |

---

### Output schema

Every field below is present on every record. Fields that Indeed does not publish for a given job are returned as `null` rather than omitted.

| Field | Type | Description |
|---|---|---|
| `jobKey` | string | Indeed's unique identifier for the listing. |
| `title` | string | Job title. |
| `jobUrl` | string | Direct link to the listing on ch.indeed.com. |
| `descriptionHtml` | string | Full job description as HTML. |
| `descriptionText` | string | Full job description as plain text. |
| `descriptionMarkdown` | string | Full job description converted to Markdown. |
| `location.raw` | string | Full address line as published. |
| `location.city` | string | City. |
| `location.postalCode` | string | Postal code (null if not published). |
| `location.streetAddress` | string | Street address (null if not published). |
| `location.countryName` | string | Country name. |
| `location.countryCode` | string | Two-letter country code. |
| `location.admin1Code` | string | Region or province code. |
| `location.admin2Code` | string | Sub-region code (null if not published). |
| `location.latitude` | number | Latitude. |
| `location.longitude` | number | Longitude. |
| `location.isRemote` | boolean | Whether the role is remote. |
| `salary.salaryText` | string | Salary as published (null if not stated). |
| `salary.salaryMin` | number | Minimum salary (null if not published). |
| `salary.salaryMax` | number | Maximum salary (null if not published). |
| `salary.salaryType` | string | Pay period: HOUR, DAY, WEEK, MONTH or YEAR. |
| `salary.salaryCurrency` | string | Currency code (e.g. CHF). |
| `salary.isEstimated` | boolean | Whether the figure is an Indeed estimate rather than employer-stated. |
| `companyName` | string | Employer name (null if not published). |
| `companyUrl` | string | Indeed company profile URL (null if not published). |
| `companyIndustry` | string | Industry (null if not published). |
| `companyNumEmployees` | string | Employee-count band (null if not published). |
| `companyRevenue` | string | Revenue band (null if not published). |
| `companyLogo` | string | Company logo URL (null if not published). |
| `companyHeaderUrl` | string | Company header image URL (null if not published). |
| `corporateWebsite` | string | Employer's own website (null if not published). |
| `datePublished` | string | ISO date the job was published. |
| `dateOnIndeed` | string | ISO date the job first appeared on Indeed. |
| `attributes` | array | Skill and requirement labels attached to the listing. |
| `hiringDemand.isUrgentHire` | boolean | Whether Indeed flags the role as an urgent hire. |
| `hiringDemand.isHighVolumeHiring` | boolean | Whether the role is part of high-volume hiring. |
| `language` | string | Language of the listing. |
| `locale` | string | Locale of the source site (de_CH). |
| `source` | string | Source host (ch.indeed.com). |
| `scrapedAt` | string | ISO timestamp of the scrape. |

#### Example record

```json
{
  "jobKey": "2aa489becfc76419",
  "title": "Softwareentwickler",
  "jobUrl": "https://ch.indeed.com/viewjob?jk=2aa489becfc76419",
  "descriptionText": "...",
  "location": {
    "raw": "Bahnhofstrasse 45, Zürich",
    "city": "Zürich",
    "postalCode": "8001",
    "countryCode": "CH",
    "admin1Code": "ZH",
    "latitude": 52.16878,
    "longitude": 4.989674,
    "isRemote": false
  },
  "salary": {
    "salaryText": "CHF 95'000 - CHF 120'000 pro Jahr",
    "salaryMin": 95000,
    "salaryMax": 120000,
    "salaryType": "YEAR",
    "salaryCurrency": "CHF",
    "isEstimated": false
  },
  "companyName": "Example Company",
  "companyIndustry": "Information Technology",
  "datePublished": "2026-07-01T05:00:00.000Z",
  "dateOnIndeed": "2026-07-01T09:12:00.000Z",
  "attributes": [
    "C#",
    ".NET",
    "Azure"
  ],
  "hiringDemand": {
    "isUrgentHire": false,
    "isHighVolumeHiring": false
  },
  "language": "de",
  "locale": "de_CH",
  "source": "ch.indeed.com",
  "scrapedAt": "2026-07-02T08:00:00.000Z"
}
````

***

### Examples

**Search for entwickler roles in Zürich:**

```json
{
  "query": "entwickler",
  "location": "Zürich",
  "maxItems": 100
}
```

**Recent postings only, sorted by date:**

```json
{
  "query": "entwickler",
  "location": "Zürich",
  "sort": "date",
  "fromDays": "3",
  "maxItems": 200
}
```

**Wide-area search with a larger radius:**

```json
{
  "query": "entwickler",
  "location": "Zürich",
  "radius": 50,
  "maxItems": 500
}
```

**Daily feed of new jobs across Switzerland:**

```json
{
  "query": "entwickler",
  "location": "",
  "sort": "date",
  "fromDays": "1",
  "maxItems": 1000
}
```

***

### 💰 Pricing

**$0.76 per 1,000 results** — you only pay for successfully retrieved listings. Failed retries are never charged.

| Results | Cost |
|---|---|
| 100 | ~$0.08 |
| 1,000 | ~$0.76 |
| 10,000 | ~$7.60 |
| 100,000 | ~$76.00 |

> Flat-rate alternatives typically charge $29–$49/month regardless of usage.

Subscription tiers lower the rate further, from $0.73 per 1,000 down to $0.64 per 1,000 at the highest tier. Use the **Max results** cap in the input to control your spend exactly.

***

### Performance

| Run size | Typical time |
|---|---|
| 100 results | under 1 minute |
| 1,000 results | 2–4 minutes |
| 10,000 results | 20–35 minutes |

***

### Known limitations

- Salary is only returned when the employer or Indeed publishes it. Many listings have no salary.
- Company profile depth varies by employer. Large companies return full profiles; smaller employers return only what Indeed holds.
- Indeed caps how deep any search can page. Very broad queries return a large but finite slice, not every matching job ever posted.

***

### Technical details

- **Source:** ch.indeed.com — Switzerland job listings
- **Coverage:** nationwide, filterable by location and radius
- **Retry:** automatic retry on network errors with exponential backoff

***

### Need a custom scraper?

**[Unfenced Group](https://www.unfencedgroup.nl)** builds Apify actors for any website — for free.

If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.

**Get in touch:** [www.unfencedgroup.nl](https://www.unfencedgroup.nl)

# Actor input Schema

## `query` (type: `string`):

Job title or keyword. Example: 'softwareentwickler'.

## `location` (type: `string`):

City, region or postal code. Example: 'Zürich'. Leave empty to search all of Switzerland.

## `radius` (type: `integer`):

Search radius around the location, in kilometres.

## `sort` (type: `string`):

Sort results by relevance or date posted.

## `fromDays` (type: `string`):

Limit to jobs posted within the last N days.

## `maxItems` (type: `integer`):

Maximum number of job listings to return. Set to 0 for unlimited (up to the source's paging cap).

## Actor input object example

```json
{
  "query": "entwickler",
  "location": "Zürich",
  "radius": 25,
  "sort": "relevance",
  "fromDays": "",
  "maxItems": 100
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "query": "entwickler"
};

// Run the Actor and wait for it to finish
const run = await client.actor("unfenced-group/indeed-ch-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 = { "query": "entwickler" }

# Run the Actor and wait for it to finish
run = client.actor("unfenced-group/indeed-ch-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 '{
  "query": "entwickler"
}' |
apify call unfenced-group/indeed-ch-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=unfenced-group/indeed-ch-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Indeed Switzerland Jobs Scraper",
        "description": "Scrape job listings from Indeed Switzerland. Returns titles, full descriptions, salary, company profiles, geo-coordinates and hiring signals. Pay per result.",
        "version": "0.1",
        "x-build-id": "HIwVsSfUfCHYdF704"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/unfenced-group~indeed-ch-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-unfenced-group-indeed-ch-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/unfenced-group~indeed-ch-scraper/runs": {
            "post": {
                "operationId": "runs-sync-unfenced-group-indeed-ch-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/unfenced-group~indeed-ch-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-unfenced-group-indeed-ch-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "query": {
                        "title": "Search query",
                        "type": "string",
                        "description": "Job title or keyword. Example: 'softwareentwickler'."
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "City, region or postal code. Example: 'Zürich'. Leave empty to search all of Switzerland."
                    },
                    "radius": {
                        "title": "Search radius (kilometres)",
                        "minimum": 0,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Search radius around the location, in kilometres.",
                        "default": 25
                    },
                    "sort": {
                        "title": "Sort order",
                        "enum": [
                            "relevance",
                            "date"
                        ],
                        "type": "string",
                        "description": "Sort results by relevance or date posted.",
                        "default": "relevance"
                    },
                    "fromDays": {
                        "title": "Posted within (days)",
                        "enum": [
                            "",
                            "1",
                            "3",
                            "7",
                            "14"
                        ],
                        "type": "string",
                        "description": "Limit to jobs posted within the last N days.",
                        "default": ""
                    },
                    "maxItems": {
                        "title": "Max results",
                        "minimum": 0,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Maximum number of job listings to return. Set to 0 for unlimited (up to the source's paging cap).",
                        "default": 100
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
