# Werk.nl Scraper (`lexis-solutions/werk-nl-scraper`) Actor

Scrape job postings from Werk.nl, a leading job search site in the Netherlands 🇳🇱

- **URL**: https://apify.com/lexis-solutions/werk-nl-scraper.md
- **Developed by:** [Lexis Solutions](https://apify.com/lexis-solutions) (community)
- **Categories:** Jobs, Lead generation
- **Stats:** 39 total users, 0 monthly users, 0.0% runs succeeded, 16 bookmarks
- **User rating**: 5.00 out of 5 stars

## 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/actors/running/actors-in-store.md#pay-per-usage

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Werk.nl Jobs Scraper

![banner](https://lexis-solutions-apify.fra1.cdn.digitaloceanspaces.com/banners/werk-nl.png)

👋 Welcome to the Werk.nl Scraper, an actor designed to help you gather job listings from Werk.nl! With this actor, you can easily search for job listings based on job query and location.

### Introduction

The Werk.nl Scraper is a web scraping tool designed to extract job listings from Werk.nl. It was created to make it easier for job seekers and recruiters to find relevant job postings and make data-driven decisions based on the extracted information.

### Use Cases

Here are some typical scenarios in which the Werk.nl Scraper can be useful:

- **Job seekers** can use the scraper to find job listings that match their skills and experience.
- **Recruiters** can use the scraper to monitor the job market and stay up-to-date on the latest job openings.
- **Researchers** can use the scraper to gather data on job trends and analyze the job market.

### Input 📥

To use this actor, you need to provide the following input:

- Field: **startUrls**
  - Type: array
  - Required: No
  - Description: List of job URLs to scrape
- Field: **query**
  - Type: string
  - Required: No
  - Description: The keyword(s) for the job you're looking for
- Field: **location**
  - Type: string
  - Required: No
  - Description: The location of the job you're looking for
- Fiels: **maxItems**
  - Type: number
  - Required: No
  - Description: The maximum number of job listings to scrape

Note: Either `query` or `startUrls` must be provided. If both fields are falsey, the actor will throw an error.

### Output 📤

An example output looks like this:

```json
{
  "id": 53463283,
  "companyName": "WerkgeversServicepunt Regio Zwolle",
  "companyLink": "https:/werkgeversservicepuntregiozwolle.nl",
  "title": "Ervaren frontend developer",
  "descriptionText": "Je zorgt voor de frontend ontwikkeling van websites Je zet webdesign en UX-design om naar een frontend met een frontend framework (Next.js)...",
  "url": "https://www.werk.nl/werkzoekenden/vacatures/53463283",
  "datePosted": "2023-12-15T00:00:00",
  "validThrough": "2024-08-23T00:00:00",
  "dateModified": "2024-07-11T00:00:00",
  "employmentType": 2,
  "jobLocationType": 1,
  "jobLocation": "HATTEM",
  "source": "PGI",
  "companyIndustry": "52",
  "applyUrl": "https://www.joof.nl/vacature-125395169?converse=1",
  "contactPersonName": "<name>",
  "contactPersonEmail": "<email>",
  "contactPersonPhone": "<phone number>"
}
```

### How many job listings can the Werk.nl Scraper extract?

The Werk.nl Scraper uses pagination to extract all job listings from Werk.nl. You can control the number of job listings to scrape by setting the `maxItems` input parameter. If you don't set the `maxItems` parameter, the scraper will extract all job listings available on the website.

### Why use the Werk.nl Scraper?

- ⚡️ **Fast** - The scraper is fast and efficient, allowing you to scrape job posts in a programmatic way.

- 🤙 **Easy to use** - The scraper is easy to use and requires no coding knowledge. All you need to do is input the query you want to scrape and the scraper will do the rest.

- ☑️ **Well-Maintained** - The scraper is maintained by the Lexis Solutions team, ensuring that it is always up-to-date and working properly.

### FAQ 💬

- **What is Werk.nl?**

  Werk.nl is job site popular in France that allows job seekers to search for job listings and apply for positions online. It also provides tools for employers to post job openings and manage applications.

- **How can I find jobs on Werk.nl?**

  You can find jobs on Werk.nl by visiting the website and using the search function to look for job listings that match your criteria. The Werk.nl scraper automates this process by extracting job listings based on the criteria you specify in the input.

- **Can I use the Werk.nl scraper to apply for jobs?**

  No, the Werk.nl scraper is intended for data extraction and analysis purposes only. It should not be used to apply for jobs or otherwise interact with Werk.nl's website.

- **What types of jobs can the Werk.nl scraper find?**

  The Werk.nl scraper can find any job posted on Werk.nl that matches the criteria you specify in the input.

- **What if the website changes?**

  It is possible that changes to the website's structure or code may break the scraper. In this case, the scraper will need to be updated to reflect the changes in order to continue working properly. It is important to regularly monitor the website for any changes that may impact the scraper's functionality and update it as needed.

### Need to scrape other job boards in Europe?

- UK 🇬🇧

  - [Reed.co.uk Scraper](https://apify.com/lexis-solutions/reed-co-uk-scraper)
  - [TotalJobs Scraper](https://apify.com/lexis-solutions/totaljobs-scraper)

- Germany 🇩🇪

  - [Arbeitsagentur Scraper](https://apify.com/lexis-solutions/bundesagentur-fur-arbeit-arbeitsagentur-scraper)

- France 🇫🇷

  - [HelloWork Scraper](https://apify.com/lexis-solutions/hellowork-scraper)

- Sweden 🇸🇪

  - [Arbetsformedlingen Scraper](https://apify.com/lexis-solutions/arbetsformedlingen-se-scraper)

***

👀 p.s.

Got feedback or need an extension?

Lexis Solutions is a [certified Apify Partner](https://apify.com/partners). We can help you with custom solutions or data extraction projects.

Contact us over [Email](mailto:info@lexis.solutions) or [LinkedIn](https://www.linkedin.com/company/lexis-solutions)

Image Credit: https://www.werk.nl

# Actor input Schema

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

Search query

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

Location

## `startUrls` (type: `array`):

List of job URLs to scrape. Required if query and location are not provided.

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

Maximum number of items to scrape

## Actor input object example

```json
{
  "query": "react",
  "location": "amsterdam",
  "maxItems": 10
}
```

# 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": "react",
    "location": "amsterdam"
};

// Run the Actor and wait for it to finish
const run = await client.actor("lexis-solutions/werk-nl-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": "react",
    "location": "amsterdam",
}

# Run the Actor and wait for it to finish
run = client.actor("lexis-solutions/werk-nl-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).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": "react",
  "location": "amsterdam"
}' |
apify call lexis-solutions/werk-nl-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,lexis-solutions/werk-nl-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/MbDt278VaBu9dgddF/builds/dF30bR70jPeOTPGLV/openapi.json
