# EURES Job Scraper (`easyapi/eures-job-scraper`) Actor

Unlock the European job market with our EURES Job Scraper! Extract detailed listings from the official EU job portal, covering multiple countries and languages. Perfect for researchers, job seekers, and recruiters looking to tap into cross-border opportunities.

- **URL**: https://apify.com/easyapi/eures-job-scraper.md
- **Developed by:** [EasyApi](https://apify.com/easyapi) (community)
- **Categories:** Jobs
- **Stats:** 77 total users, 9 monthly users, 100.0% runs succeeded, 3 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.99 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## EURES Job Scraper 🇪🇺💼

### 🚀 Effortlessly scrape job listings from the European Job Mobility Portal (EURES)!

This powerful Actor allows you to extract detailed job information from EURES, the official European Union job board. Whether you're a job seeker, recruiter, or researcher, this tool provides valuable insights into the European job market.

### 🌟 Key Features

- 📊 Scrape up to 10,000 job listings in one run
- 🔍 Extract comprehensive job details including title, company, location, and more
- 🌍 Support for multiple European countries and languages
- 🔄 Automatic pagination handling
- 🛡️ Built-in stealth measures to avoid detection
- ⚡ High-performance scraping with Puppeteer

### 📋 Output Data

For each job listing, the Actor extracts:

- Job ID
- Title
- Company name
- Location (country and cities)
- Posting date and last modified date
- Number of posts
- Job description
- Job categories
- Position schedule
- Employer website and sector
- Available languages
- EURES flag

### 💡 Use Cases

- European labor market research
- Cross-border job opportunity analysis
- Skill demand tracking across EU countries
- Multilingual job search optimization
- EU employment policy impact assessment

### 🚦 Getting Started

1. Enter the EURES search URL for your desired job category and location
2. Set the maximum number of results you want to scrape
3. Optionally configure proxy settings for enhanced performance

Let this Actor do the heavy lifting while you focus on analyzing valuable European job market data! 🎉👨‍💼👩‍💼🇪🇺


#### Input Example
  
A full explanation of an input example in JSON.  
````

{
"searchUrl": "https://europa.eu/eures/portal/jv-se/search?page=1\&resultsPerPage=10\&orderBy=BEST\_MATCH\&keywordsEverywhere=ai\&lang=en",
"maxItems": 100
}

```
  
#### Output sample
  
The results will be wrapped into a dataset which you can always find in the **Storage** tab. Here's an excerpt from the data you'd get if you apply the input parameters above:  
  
And here is the same data but in JSON. You can choose in which format to download your data: JSON, JSONL, Excel spreadsheet, HTML table, CSV, or XML.  
  
```

\[
{
"jobId": "MTA2NzAwMDAgNDQx",
"title": "AI Architect",
"company": "Mutalité Saint-Michel",
"location": "BE: ",
"postDate": 1710241244799,
"lastModifiedDate": 1710241244799,
"numberOfPosts": 1,
"description": "\n        <p>Vous rejoindrez l’équipe pluridisciplinaire DACE (Data Analytics Centre of Excellence), composée d’une quarantaine de personnes qui réalisent notamment des missions de business intelligence et de data science. Cette équipe est en pleine expansion. Elle travaille à la fois en mode run (tâches opérationnelles) et en mode projet (partager de nouvelles données).</p>\n<p> </p>\n<p><strong>Devenez l’architecte IA de La Mutualité chrétienne !</strong></p>\n<p> </p>\n<p>Vous êtes à la recherche d’un job stimulant dans lequel vous pourrez concevoir, mettre en œuvre et superviser l’architecture IA & ICT au sein de l’organisation ? Vous êtes un véritable leader avec de vastes connaissances en data science, en gestion d’équipe et en gestion de projets ? Alors ce poste d’architecte AI au sein des Mutualités chrétiennes est fait pour vous !</p>\n<p> </p>\n<p>En tant qu’architecte IA, vous serez chargé de :</p>\n<p> </p>\n<ul>\n<li>Créer et mettre en œuvre des architectures IA et ICT qui s’alignent sur la stratégie de l’organisation et peuvent être améliorées en permanence</li>\n<li>Coacher les équipes projet dans la mise en œuvre de ces architectures et suivre les progrès accomplis.</li>\n<li>Identifier les besoins des différents domaines business et harmoniser l’architecture processus et ICT en conséquence.</li>\n<li>Conseiller et inspirer le chef de l’équipe IA et le directeur DACE sur les principes de l’intelligence des données.</li>\n<li>Rendre compte et consulter le directeur du Data Intelligence Competence Center of Excellence et d’autres stakeholders sur l’état des projets, des avis, etc.</li>\n</ul>\n      ",
"jobCategories": \[
"http://data.europa.eu/esco/occupation/866c7813-2c03-47d7-9bdc-192cfbace57c",
"http://data.europa.eu/esco/occupation/04ba4d6c-957d-417f-bf63-5b9e015a9f86",
"http://data.europa.eu/esco/occupation/a6a0b60f-08da-4faa-bf54-942987efb471",
"http://data.europa.eu/esco/occupation/f2b15a0e-e65a-438a-affb-29b9d50b77d1"
],
"positionSchedule": \[],
"employerWebsite": null,
"employerSector": \[],
"availableLanguages": \[
"fr"
],
"euresFlag": false
},
{
"jobId": "ZDY5Zjk2YjMtY2E1OC00NTc0LWE2NmYtMTNhMjExZTYyYmZjIDI2MQ",
"title": "Prosper AI søker AI-Ingeniør",
"company": "PROSPER AI AS",
"location": "NO: ",
"postDate": 1727414504189,
"lastModifiedDate": 1727414504189,
"numberOfPosts": 1,
"description": "For fullstendig annonsetekst, se annonsen hos finn.no: \<a href="https://www.finn.no/372266522" rel="nofollow">https://www.finn.no/372266522</a>.",
"jobCategories": \[
"http://data.europa.eu/esco/isco/C2511",
"http://data.europa.eu/esco/occupation/35553663-deab-4d9a-bf22-15c1625d28e8"
],
"positionSchedule": \[
"fulltime"
],
"employerWebsite": null,
"employerSector": \[],
"availableLanguages": \[
"no"
],
"euresFlag": false
},
...
]

````

# Actor input Schema

## `searchUrl` (type: `string`):

The EURES search URL to scrape (e.g., 'https://europa.eu/eures/portal/jv-se/search?page=1&resultsPerPage=10&orderBy=BEST_MATCH&keywordsEverywhere=ai&lang=en')
## `maxResults` (type: `integer`):

The maximum number of job listings to scrape. The actor will stop when this limit is reached.
## `proxyConfiguration` (type: `object`):

Optionally, use Apify Proxy or custom HTTP proxy to avoid IP address-based blocking.

## Actor input object example

```json
{
  "searchUrl": "https://europa.eu/eures/portal/jv-se/search?page=1&resultsPerPage=10&orderBy=BEST_MATCH&keywordsEverywhere=ai&lang=en",
  "maxResults": 100,
  "proxyConfiguration": {}
}
````

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("easyapi/eures-job-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("easyapi/eures-job-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 '{}' |
apify call easyapi/eures-job-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "EURES Job Scraper",
        "description": "Unlock the European job market with our EURES Job Scraper! Extract detailed listings from the official EU job portal, covering multiple countries and languages. Perfect for researchers, job seekers, and recruiters looking to tap into cross-border opportunities.",
        "version": "0.0",
        "x-build-id": "rRq5cn1R7O33PN27l"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/easyapi~eures-job-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-easyapi-eures-job-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/easyapi~eures-job-scraper/runs": {
            "post": {
                "operationId": "runs-sync-easyapi-eures-job-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/easyapi~eures-job-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-easyapi-eures-job-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",
                "required": [
                    "searchUrl"
                ],
                "properties": {
                    "searchUrl": {
                        "title": "Search URL",
                        "type": "string",
                        "description": "The EURES search URL to scrape (e.g., 'https://europa.eu/eures/portal/jv-se/search?page=1&resultsPerPage=10&orderBy=BEST_MATCH&keywordsEverywhere=ai&lang=en')",
                        "default": "https://europa.eu/eures/portal/jv-se/search?page=1&resultsPerPage=10&orderBy=BEST_MATCH&keywordsEverywhere=ai&lang=en"
                    },
                    "maxResults": {
                        "title": "Maximum Number of Results",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "The maximum number of job listings to scrape. The actor will stop when this limit is reached.",
                        "default": 100
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Optionally, use Apify Proxy or custom HTTP proxy to avoid IP address-based blocking.",
                        "default": {}
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
