# Werk.nl | Search | Detail | Scraper \[only $1.25] \[/w EMAILS] (`memo23/werk-nl-cheerio`) Actor

Extract comprehensive job data including titles, salaries, locations, employer details, contact information, requirements (education, languages, licenses), working hours, contract types, and application methods - everything needed for job market analysis.

- **URL**: https://apify.com/memo23/werk-nl-cheerio.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Jobs, Automation, Lead generation
- **Stats:** 17 total users, 2 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $1.25 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.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/platform/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

## Werk.nl Job Scraper

### How it works

This actor allows you to scrape job listings from Werk.nl (https://www.werk.nl/werkzoekenden/) and extract important details such as job title, company, location, salary, and other relevant data. The scraper is designed to help you gather comprehensive data on job vacancies in the Netherlands, which can be useful for job market research, recruitment, or analyzing employment trends.

### Features

- **Advanced Filtering:** Supports multiple filter options including:
  - **Keyword Search:** Search for specific job titles or keywords
  - **Location:** Filter jobs by location (optional)
  - **Profession:** Select from 96+ professions across various industries
  - **Education Levels:** Filter by 7 education levels (Primary to Master's degree)
  - **Hours per Week:** Filter by working hours (0-8, 9-16, 17-24, 25-32, 33-40, 40+ hours)
  - **Working Hours:** Office hours or otherwise
  - **Driving License:** Filter by required driving license (A, B, C, CE, AM)
  - **Language:** Filter by required languages (Dutch, German, English, French, Spanish, Turkish, Japanese, Frisian, Low Saxon)
  - **Contract Type:** Fixed, Possibly fixed, or Temporary
  - **Country:** Filter jobs by country (Netherlands, Norway, Belgium, Germany, UK, France, Spain, Italy)

### How to Use

1. **Set Up:** Ensure you have an Apify account and access to the Apify platform.
2. **Configure Search Parameters:** Set your desired keyword and optional filters to narrow down job results.
3. **Configure Proxy Settings:** (Optional) For enhanced reliability, configure proxy settings.
4. **Run the Scraper:** Execute the scraper and obtain the extracted data in your preferred format, such as JSON, CSV, Excel, or others as supported by Apify.

### Input Data

Here's an example of how to set up a job search:

```json
{
    "keyword": "developer",
    "location": "Amsterdam",
    "profession": ["Developer", "Frontend developer", "Backend developer"],
    "educationLevels": ["4", "5", "6"],
    "hoursPerWeek": ["4", "5"],
    "workingHours": ["1"],
    "language": ["1", "3"],
    "contractType": ["1", "2"],
    "maxItems": 20,
    "maxConcurrency": 50,
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": ["RESIDENTIAL"]
    }
}
````

### Input Options

#### Required Parameters

- **Keyword** (`keyword`): Keyword to search for jobs (e.g., 'development', 'marketing', 'sales'). **Required**.

#### Optional Filter Parameters

- **Location** (`location`): Location to search for jobs. Leave empty to search all locations.
- **Profession** (`profession`): Array of professions to filter jobs. Choose from 96+ professions including developers, managers, engineers, sales, assistants, and more.
- **Education Levels** (`educationLevels`): Array of education level codes:
  - `1` - Basisonderwijs (Primary education)
  - `2` - VMBO
  - `3` - Havo/VWO (Pre-university education)
  - `4` - MBO
  - `5` - HBO/bachelor
  - `6` - WO/master
  - `7` - Niet opgegeven (Not specified)
- **Hours per Week** (`hoursPerWeek`): Array of working hours ranges:
  - `1` - 0 - 8 uur
  - `2` - 9 - 16 uur
  - `3` - 17 - 24 uur
  - `4` - 25 - 32 uur
  - `5` - 33 - 40 uur
  - `6` - Meer dan 40 uur (More than 40 hours)
- **Working Hours** (`workingHours`): Array of shift types:
  - `1` - Kantoortijden (Office hours)
  - `2` - Anders (Otherwise)
- **Driving License** (`drivingLicense`): Array of required driving licenses:
  - `a` - A (Motorcycle)
  - `b` - B (Car)
  - `c` - C (Truck)
  - `ce` - CE (Truck with trailer)
  - `am` - AM (Moped)
- **Language** (`language`): Array of required language codes:
  - `1` - Nederlands (Dutch)
  - `2` - Duits (German)
  - `3` - Engels (English)
  - `4` - Frans (French)
  - `5` - Spaans (Spanish)
  - `15` - Turks (Turkish)
  - `46` - Japans (Japanese)
  - `72` - Fries (Frisian)
  - `74` - Nedersaksisch (Low Saxon)
- **Contract Type** (`contractType`): Array of contract types:
  - `1` - Vast (Fixed)
  - `2` - Mogelijk vast (Possibly fixed)
  - `3` - Tijdelijk (Temporary)
- **Country** (`country`): Array of country codes:
  - `NL` - Nederland (Netherlands)
  - `NO` - Noorwegen (Norway)
  - `BE` - België (Belgium)
  - `DE` - Duitsland (Germany)
  - `GB` - Verenigd Koninkrijk (United Kingdom)
  - `FR` - Frankrijk (France)
  - `ES` - Spanje (Spain)
  - `IT` - Italië (Italy)

#### Scraper Configuration

- **Max Items** (`maxItems`): Maximum number of job listings that will be scraped. Default is `20`.
- **Max Concurrency** (`maxConcurrency`): Maximum number of pages that can be processed at the same time. Default is `50`.
- **Min Concurrency** (`minConcurrency`): Minimum number of pages that will be processed at the same time. Default is `1`.
- **Max Request Retries** (`maxRequestRetries`): Number of times the scraper will retry a failed request before giving up. Default is `100`.
- **Proxy Configuration** (`proxy`): Specifies proxy servers that will be used by the scraper to hide its origin, ensuring greater reliability and anonymity. For more details, see the [Proxy configuration](https://apify.com/apify/web-scraper#proxy-configuration).

### Output Structure

The output data typically includes:

```json
 {
  "referenceNumber": 65800173,
  "externalReferenceId": null,
  "employerInternalVacatureId": null,
  "title": "Junior Interim Manager",
  "expirationDate": "2025-10-15T00:00:00",
  "modifiedDate": "2025-09-18T00:00:00",
  "proposition": {
      "termsOfEmploymentDescription": "Afhankelijk van je kennis en ervaring een salaris tussen de 3500,- en 4500,- bruto per maand;\nEen rechtstreekse aanstelling bij de opdrachtgever;\nEen opleidingstraject waarbij jij in- en externe cursussen en persoonlijke coaching krijgt. ",
      "workLocation": {
          "type": 1,
          "countryCode": null,
          "postcode": "6041RE",
          "city": "ROERMOND",
          "employerLocationDistance": 0
      },
      "function": {
          "code": "1000400762",
          "name": "Hoofd informatievoorziening en automatisering",
          "description": "Leidinggevende ervaring in een operationele omgeving;\nMinimaal een afgeronde hbo-opleiding;\nFlexibel in jouw inzetbaarheid, doorzettingsvermogen, hands-on mentaliteit, en bereidheid om jezelf verder te ontwikkelen;\nGoede beheersing van de Nederlandse en Engelse taal; sterke communicatieve vaardigheden;\nLogistiek en technisch inzicht, met een sterke focus op processen;\nJe bent een 'People manager' met een empathisch vermogen en een luisteren oor;\nJe bent resultaatgericht en stuurt aan op doelen en kwaliteit.",
          "customDescription": "Manager"
      },
      "salary": {
          "type": 1,
          "amountIndication": "4000"
      },
      "contract": {
          "type": 1,
          "startDate": null,
          "endDate": null
      },
      "doelgroepen": [],
      "soortTypes": [],
      "voorkeurTypes": [],
      "workhours": {
          "minimumHours": 40,
          "maximumHours": 45,
          "werktijden": 1
      }
  },
  "contactPerson": {
      "referenceNumber": 1299845,
      "name": "Partner HR Solutions",
      "department": null,
      "phoneNumber": "0031475317430",
      "email": "roermond@partner.nl"
  },
  "description": "Ben jij klaar om je carrière als interim manager te starten en op te klimmen naar senior niveau? Wij zoeken gedreven kandidaten die tijdens hun eerste opdracht een intensief opleidingstraject volgen en zich ontwikkelen tot volwaardig senior Interim Manager. Klinkt dit als jouw volgende stap? Lees verder!",
  "createdDate": "2025-08-11T00:00:00",
  "isEuresPriority": false,
  "isAcquisitionNotAppreciated": true,
  "source": "WNL",
  "isByEmployerDirectly": true,
  "isPreferenceOrTargetGroup": false,
  "cvOffer": {
      "sources": [],
      "educationLevel": null,
      "otherRequirements": "Je start als Productieleider op niveau 2 tot 3, afhankelijk van je ervaring. Je eerste opdracht duurt 1,5 tot 2 jaar als Shiftleader (Productieleider niveau 3). Hier krijg je de kans om essentiële vaardigheden te ontwikkelen en je theoretische kennis in de praktijk toe te passen. Hierin voer jij taken uit als:\n\nVerantwoordelijk voor de aansturing en coaching van 40 tot 50 directe en indirecte medewerkers;\nRegelt en optimaliseert de productie- en personeelsplanning en volgt de voortgang van de werkzaamheden op;\nOrganiseren van werkoverleggen op de productievloer;\nMeedenken met verbetervoorstellen en het implementeren;\nKlantverzoeken afhandelen samen met de accountmanagers;\nOntwikkelen en realiseren van een productieplan.\nOm deze taken goed uit te kunnen voeren, ontvang je intensieve coaching en begeleiding van een externe Senior Interim Manager. Hiermee versterk je tevens je communicatieve vaardigheden, leiderschapskwaliteiten en timemanagement. Je gaat een opleiding tot Lean Black Belt volgen, inclusief een praktijkopdracht voor een organisatiebrede procesverbetering bij de opdrachtgever. Daarnaast volg je de Prince 2 Foundation cursus. Na het behalen van je Lean Black Belt kun je zelf verbetertrajecten initiëren en begeleiden.",
      "driversLicenses": [],
      "languageSkills": [],
      "workExperiences": [],
      "educations": []
  },
  "applicationMethods": [
      {
          "sollicitatieWijze": 3,
          "urlApplicationForm": ""
      },
      {
          "sollicitatieWijze": 2,
          "urlApplicationForm": ""
      },
      {
          "sollicitatieWijze": 4,
          "urlApplicationForm": "https://www.partner.nl/vacatures/industrie-productie/junior-interim-manager-in-roermond"
      }
  ],
  "employer": {
      "referenceNumber": 1480143,
      "organizationName": "Partner Group",
      "website": "www.partner.nl",
      "sector": "31318",
      "addressNetherlands": {
          "postcode": "6041KA",
          "city": "ROERMOND",
          "antwoordnummer": null,
          "postbusnummer": null,
          "streetName": "Neerstraat",
          "houseNumber": "37",
          "houseNumberSuffix": null
      },
      "addressForeign": null
  },
  "basicInfo": {
      "key": "2001:L:65800173",
      "referenceNumber": 65800173,
      "score": 100,
      "resultDepth": 0,
      "internalReferenceNumber": null,
      "profession": "Manager",
      "vacatureTitle": "Junior Interim Manager",
      "modified": "2025-09-18 00:00:00",
      "organisation": "Partner Group",
      "workLocationCity": "ROERMOND",
      "workLocationType": "Vaste werklocatie",
      "workLocationForeignCountry": null,
      "workLocationForeignCity": null,
      "minHours": 40,
      "maxHours": 45,
      "contractType": "Vast",
      "studyLevel": "Niet opgegeven",
      "distance": null,
      "leerbaan": false,
      "wajongers": false,
      "banenafspraak": false,
      "gehandicapt": false,
      "etnisch": false,
      "stageplaats": false,
      "vrouwen": false,
      "vijftigPlussers": false,
      "jongeren": false
  }
}
```

### Output Fields Explanation

#### Main Job Information

- `referenceNumber`: Unique reference number for the job vacancy.
- `externalReferenceId`: External reference identifier, if applicable.
- `employerInternalVacatureId`: Internal vacancy ID used by the employer.
- `title`: Job title/position name.
- `description`: Detailed description of the job vacancy.
- `expirationDate`: Date when the job posting expires.
- `modifiedDate`: Date when the job posting was last modified.
- `createdDate`: Date when the job posting was created.

#### Proposition Details

- `proposition`: Object containing job offer details:
  - `termsOfEmploymentDescription`: Description of employment terms, salary range, and benefits.
  - `workLocation`: Object with work location details:
    - `type`: Location type (1 = Fixed location).
    - `countryCode`: Country code for foreign locations.
    - `postcode`: Postal code of the work location.
    - `city`: City where the job is located.
    - `employerLocationDistance`: Distance from employer's main location.
  - `function`: Object with function/role details:
    - `code`: Function code identifier.
    - `name`: Official function name.
    - `description`: Detailed requirements and responsibilities.
    - `customDescription`: Custom/simplified function description.
  - `salary`: Object with salary information:
    - `type`: Salary type indicator.
    - `amountIndication`: Salary amount indication.
  - `contract`: Object with contract details:
    - `type`: Contract type (1 = Fixed, 2 = Possibly fixed, 3 = Temporary).
    - `startDate`: Contract start date, if specified.
    - `endDate`: Contract end date, if specified.
  - `doelgroepen`: Array of target groups for the position.
  - `soortTypes`: Array of job types.
  - `voorkeurTypes`: Array of preference types.
  - `workhours`: Object with working hours information:
    - `minimumHours`: Minimum hours per week.
    - `maximumHours`: Maximum hours per week.
    - `werktijden`: Working hours type (1 = Office hours, 2 = Otherwise).

#### Contact Information

- `contactPerson`: Object containing contact details:
  - `referenceNumber`: Contact person's reference number.
  - `name`: Name of the contact person or department.
  - `department`: Department name, if applicable.
  - `phoneNumber`: Contact phone number.
  - `email`: Contact email address.

#### Application Methods

- `applicationMethods`: Array of available application methods:
  - `sollicitatieWijze`: Application method type (2 = Email, 3 = Phone, 4 = External URL).
  - `urlApplicationForm`: URL to external application form, if applicable.

#### Employer Information

- `employer`: Object containing employer details:
  - `referenceNumber`: Employer's reference number.
  - `organizationName`: Name of the organization/company.
  - `website`: Company website URL.
  - `sector`: Industry sector code.
  - `addressNetherlands`: Object with Dutch address details (postcode, city, streetName, houseNumber, etc.).
  - `addressForeign`: Object with foreign address details, if applicable.

#### CV Offer Requirements

- `cvOffer`: Object containing job requirements:
  - `sources`: Array of recruitment sources.
  - `educationLevel`: Required education level.
  - `otherRequirements`: Detailed text description of other requirements and responsibilities.
  - `driversLicenses`: Array of required driving licenses.
  - `languageSkills`: Array of required language skills.
  - `workExperiences`: Array of required work experiences.
  - `educations`: Array of required education qualifications.

#### Basic Information Summary

- `basicInfo`: Object containing summarized job information:
  - `key`: Unique key identifier.
  - `referenceNumber`: Job reference number.
  - `score`: Search relevance score.
  - `resultDepth`: Search result depth indicator.
  - `internalReferenceNumber`: Internal reference number.
  - `profession`: Profession category.
  - `vacatureTitle`: Vacancy title.
  - `modified`: Last modification date and time.
  - `organisation`: Organization name.
  - `workLocationCity`: Work location city.
  - `workLocationType`: Type of work location (e.g., "Vaste werklocatie" = Fixed location).
  - `workLocationForeignCountry`: Foreign country, if applicable.
  - `workLocationForeignCity`: Foreign city, if applicable.
  - `minHours`: Minimum working hours per week.
  - `maxHours`: Maximum working hours per week.
  - `contractType`: Type of contract (Vast = Fixed, Mogelijk vast = Possibly fixed, Tijdelijk = Temporary).
  - `studyLevel`: Required education level.
  - `distance`: Distance from search location, if applicable.
  - Target group indicators (all boolean):
    - `leerbaan`: Apprenticeship position.
    - `wajongers`: Position for young people with disabilities.
    - `banenafspraak`: Job agreement position.
    - `gehandicapt`: Position for people with disabilities.
    - `etnisch`: Position targeting ethnic minorities.
    - `stageplaats`: Internship position.
    - `vrouwen`: Position targeting women.
    - `vijftigPlussers`: Position for 50+ age group.
    - `jongeren`: Position for young people.

#### Additional Flags

- `isEuresPriority`: Boolean indicating if the job is a EURES priority position.
- `isAcquisitionNotAppreciated`: Boolean indicating if acquisition is not appreciated.
- `source`: Source of the job posting (e.g., "WNL" = Werk.nl).
- `isByEmployerDirectly`: Boolean indicating if posted directly by employer.
- `isPreferenceOrTargetGroup`: Boolean indicating if the job has preference or target group specifications.

### Explore More Scrapers

If you found this Werk.nl Job Scraper useful, be sure to check out our other powerful scrapers and actors at [memo23's Apify profile](https://apify.com/memo23). We offer a wide range of tools to enhance your web scraping and automation needs across various platforms and use cases.

### Support

- For issues or feature requests, please use the [Issues](https://console.apify.com/actors/hhCtq6GLmE7c6TwQw/issues) section of this actor.
- If you need customization or have questions, feel free to contact the author:
  - Author's website: <https://muhamed-didovic.github.io/>
  - Email: <muhamed.didovic@gmail.com>

### Additional Services

- Request customization or whole dataset: <muhamed.didovic@gmail.com>
- If you need anything else scraped, or this actor customized, email: <muhamed.didovic@gmail.com>
- For API services of this scraper (no Apify fee, just usage fee for the API), contact: <muhamed.didovic@gmail.com>
- Email: muhamed.didovic@gmail.com

# Actor input Schema

## `keyword` (type: `string`):

Keyword to search for jobs (e.g., 'development', 'marketing', etc.)

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

Location to search for jobs (optional). Leave empty to search all locations.

## `profession` (type: `array`):

Select professions to filter jobs. Leave empty to include all professions.

## `educationLevels` (type: `array`):

Select education levels to filter jobs. Leave empty to include all levels.

## `hoursPerWeek` (type: `array`):

Select hours per week ranges to filter jobs. Leave empty to include all ranges.

## `workingHours` (type: `array`):

Select working hours type to filter jobs. Leave empty to include all types.

## `drivingLicense` (type: `array`):

Select driving license type to filter jobs. Leave empty to include all types.

## `language` (type: `array`):

Select required languages to filter jobs. Leave empty to include all languages.

## `contractType` (type: `array`):

Select contract types to filter jobs. Leave empty to include all types.

## `country` (type: `array`):

Select countries to filter jobs. Leave empty to include all countries.

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

Maximum number of listings/items that will be scraped.

## `enrichEmails` (type: `boolean`):

If enabled, tries to find a contact email for each employer by discovering the company's website (Clearbit) and reading its contact/about pages. Adds contactEmail + contactWebsite columns plus a detailed emailEnrichment object. Best-effort, billed per contact email found; only charged when an email is returned, never for misses.

## `maxConcurrency` (type: `integer`):

Maximum number of pages that can be processed at the same time.

## `minConcurrency` (type: `integer`):

Minimum number of pages that will be processed at the same time.

## `maxRequestRetries` (type: `integer`):

Number of times the crawler will retry a failed request before giving up.

## `proxy` (type: `object`):

Specifies proxy servers that will be used by the scraper in order to hide its origin.<br><br>For details, see <a href='https://apify.com/apify/web-scraper#proxy-configuration' target='_blank' rel='noopener'>Proxy configuration</a> in README.

## Actor input object example

```json
{
  "keyword": "development",
  "location": "",
  "profession": [],
  "educationLevels": [],
  "hoursPerWeek": [],
  "workingHours": [],
  "drivingLicense": [],
  "language": [],
  "contractType": [],
  "country": [],
  "maxItems": 20000,
  "enrichEmails": false,
  "maxConcurrency": 50,
  "minConcurrency": 1,
  "maxRequestRetries": 100,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/werk-nl-cheerio").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 = { "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    } }

# Run the Actor and wait for it to finish
run = client.actor("memo23/werk-nl-cheerio").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 '{
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call memo23/werk-nl-cheerio --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=memo23/werk-nl-cheerio",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Werk.nl | Search | Detail | Scraper [only $1.25] [/w EMAILS]",
        "description": "Extract comprehensive job data including titles, salaries, locations, employer details, contact information, requirements (education, languages, licenses), working hours, contract types, and application methods - everything needed for job market analysis.",
        "version": "0.0",
        "x-build-id": "NeEziNS6dPywB5xmN"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/memo23~werk-nl-cheerio/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-memo23-werk-nl-cheerio",
                "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/memo23~werk-nl-cheerio/runs": {
            "post": {
                "operationId": "runs-sync-memo23-werk-nl-cheerio",
                "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/memo23~werk-nl-cheerio/run-sync": {
            "post": {
                "operationId": "run-sync-memo23-werk-nl-cheerio",
                "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",
                "required": [
                    "keyword"
                ],
                "properties": {
                    "keyword": {
                        "title": "Keyword",
                        "type": "string",
                        "description": "Keyword to search for jobs (e.g., 'development', 'marketing', etc.)",
                        "default": "development"
                    },
                    "location": {
                        "title": "Location (Optional)",
                        "type": "string",
                        "description": "Location to search for jobs (optional). Leave empty to search all locations.",
                        "default": ""
                    },
                    "profession": {
                        "title": "Profession (Optional)",
                        "type": "array",
                        "description": "Select professions to filter jobs. Leave empty to include all professions.",
                        "items": {
                            "type": "string",
                            "enum": [
                                ".NET developer",
                                "Account Manager",
                                "ADL assistant",
                                "Advanced assistant accountant",
                                "Application engineer",
                                "Application software engineer",
                                "Assistent manager",
                                "Assistent office manager",
                                "Assistant accountant",
                                "Assistant accountant audit",
                                "Assistant branch manager",
                                "Assistant controller",
                                "Assistant gardener",
                                "Assistant Project Manager",
                                "Assistant store manager",
                                "Assistant supervisor",
                                "Assistant team leader",
                                "Automation engineer",
                                "Backend developer",
                                "Banqueting",
                                "Banqueting manager",
                                "Business development",
                                "c# developer",
                                "Commercial employee",
                                "Commissioning engineer",
                                "Consultant",
                                "Customer service employee",
                                "Data engineer",
                                "Developer",
                                "Development manager",
                                "Devops engineer",
                                "Digital manager",
                                "Electrical engineer",
                                "Engineer",
                                "Engineer e",
                                "Engineering leader",
                                "Event medewerker",
                                "Facilitair manager",
                                "Field service engineer",
                                "Food/beverage manager",
                                "Food/beverage medewerker",
                                "Food/beverage supervisor",
                                "Frontend developer",
                                "Front office manager",
                                "Front office supervisor",
                                "Full stack developer",
                                "Full-stack developer",
                                "Global manager",
                                "Hardware engineer",
                                "Horeca manager",
                                "Hotelmanager",
                                "Housekeeping manager",
                                "Housekeeping supervisor",
                                "ICT engineer",
                                "ICT specialist",
                                "Internal Account Manager",
                                "Internal commercial employee",
                                "Java engineer",
                                "Key account manager",
                                "Lead engineer",
                                "Lead mechanical engineer",
                                "Management assistant",
                                "Manager",
                                "Manager engineering",
                                "Manager technology",
                                "Manufacturing engineer",
                                "Mechanical engineer",
                                "Medewerker housekeeping",
                                "Medewerker technische dienst",
                                "Mendix developer",
                                "Operations engineer",
                                "Orthoptist",
                                "PHP developer",
                                "Prevention assistant",
                                "Product designer",
                                "Project engineer",
                                "Research/development",
                                "Research/development engineer",
                                "Sales account manager",
                                "Sales associate",
                                "Sales engineer",
                                "Sales manager",
                                "Sales representative",
                                "Sales specialist",
                                "Sales support",
                                "Sales support employee",
                                "Sales-inside sales",
                                "Service manager",
                                "Shiftleader",
                                "Software developer",
                                "Software engineer",
                                "Software engineering",
                                "Supervisor",
                                "Team coordinator",
                                "Traffic manager",
                                "Veterinary surgeon"
                            ]
                        },
                        "default": []
                    },
                    "educationLevels": {
                        "title": "Education Levels (Optional)",
                        "type": "array",
                        "description": "Select education levels to filter jobs. Leave empty to include all levels.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "1",
                                "2",
                                "3",
                                "4",
                                "5",
                                "6",
                                "7"
                            ],
                            "enumTitles": [
                                "Basisonderwijs (Primary education)",
                                "VMBO",
                                "Havo/VWO (Pre-university education)",
                                "MBO",
                                "HBO/bachelor",
                                "WO/master",
                                "Niet opgegeven (Not specified)"
                            ]
                        },
                        "default": []
                    },
                    "hoursPerWeek": {
                        "title": "Hours per Week (Optional)",
                        "type": "array",
                        "description": "Select hours per week ranges to filter jobs. Leave empty to include all ranges.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "1",
                                "2",
                                "3",
                                "4",
                                "5",
                                "6"
                            ],
                            "enumTitles": [
                                "0 - 8 uur",
                                "9 - 16 uur",
                                "17 - 24 uur",
                                "25 - 32 uur",
                                "33 - 40 uur",
                                "Meer dan 40 uur (More than 40 hours)"
                            ]
                        },
                        "default": []
                    },
                    "workingHours": {
                        "title": "Working Hours (Optional)",
                        "type": "array",
                        "description": "Select working hours type to filter jobs. Leave empty to include all types.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "1",
                                "2"
                            ],
                            "enumTitles": [
                                "Kantoortijden (Office hours)",
                                "Anders (Otherwise)"
                            ]
                        },
                        "default": []
                    },
                    "drivingLicense": {
                        "title": "Driving License (Optional)",
                        "type": "array",
                        "description": "Select driving license type to filter jobs. Leave empty to include all types.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "a",
                                "b",
                                "c",
                                "ce",
                                "am"
                            ],
                            "enumTitles": [
                                "A (Motorcycle)",
                                "B (Car)",
                                "C (Truck)",
                                "CE (Truck with trailer)",
                                "AM (Moped)"
                            ]
                        },
                        "default": []
                    },
                    "language": {
                        "title": "Language (Optional)",
                        "type": "array",
                        "description": "Select required languages to filter jobs. Leave empty to include all languages.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "1",
                                "2",
                                "3",
                                "4",
                                "5",
                                "15",
                                "46",
                                "72",
                                "74"
                            ],
                            "enumTitles": [
                                "Nederlands (Dutch)",
                                "Duits (German)",
                                "Engels (English)",
                                "Frans (French)",
                                "Spaans (Spanish)",
                                "Turks (Turkish)",
                                "Japans (Japanese)",
                                "Fries (Frisian)",
                                "Nedersaksisch (Low Saxon)"
                            ]
                        },
                        "default": []
                    },
                    "contractType": {
                        "title": "Type of Contract (Optional)",
                        "type": "array",
                        "description": "Select contract types to filter jobs. Leave empty to include all types.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "1",
                                "2",
                                "3"
                            ],
                            "enumTitles": [
                                "Vast (Fixed)",
                                "Mogelijk vast (Possibly fixed)",
                                "Tijdelijk (Temporary)"
                            ]
                        },
                        "default": []
                    },
                    "country": {
                        "title": "Country (Optional)",
                        "type": "array",
                        "description": "Select countries to filter jobs. Leave empty to include all countries.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "NL",
                                "NO",
                                "BE",
                                "DE",
                                "GB",
                                "FR",
                                "ES",
                                "IT"
                            ],
                            "enumTitles": [
                                "Nederland (Netherlands)",
                                "Noorwegen (Norway)",
                                "België (Belgium)",
                                "Duitsland (Germany)",
                                "Verenigd Koninkrijk (United Kingdom)",
                                "Frankrijk (France)",
                                "Spanje (Spain)",
                                "Italië (Italy)"
                            ]
                        },
                        "default": []
                    },
                    "maxItems": {
                        "title": "Max number of listings/items per crawl/scrape",
                        "type": "integer",
                        "description": "Maximum number of listings/items that will be scraped.",
                        "default": 20000
                    },
                    "enrichEmails": {
                        "title": "Enrich with employer contact emails (experimental, billed per email)",
                        "type": "boolean",
                        "description": "If enabled, tries to find a contact email for each employer by discovering the company's website (Clearbit) and reading its contact/about pages. Adds contactEmail + contactWebsite columns plus a detailed emailEnrichment object. Best-effort, billed per contact email found; only charged when an email is returned, never for misses.",
                        "default": false
                    },
                    "maxConcurrency": {
                        "title": "Max Concurrency",
                        "type": "integer",
                        "description": "Maximum number of pages that can be processed at the same time.",
                        "default": 50
                    },
                    "minConcurrency": {
                        "title": "Min Concurrency",
                        "type": "integer",
                        "description": "Minimum number of pages that will be processed at the same time.",
                        "default": 1
                    },
                    "maxRequestRetries": {
                        "title": "Max Request Retries",
                        "type": "integer",
                        "description": "Number of times the crawler will retry a failed request before giving up.",
                        "default": 100
                    },
                    "proxy": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Specifies proxy servers that will be used by the scraper in order to hide its origin.<br><br>For details, see <a href='https://apify.com/apify/web-scraper#proxy-configuration' target='_blank' rel='noopener'>Proxy configuration</a> in README.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
