France Travail Job Scraper - French Jobs
Pricing
from $3.00 / 1,000 search result scrapeds
France Travail Job Scraper - French Jobs
Scrapes job listings from France Travail (formerly Pole Emploi), France's public employment service with 500,000+ active listings. Extract title, company, location, contract type, salary, and full description. Supports multi-query search with deduplication. HTTP-only, 128MB.
Pricing
from $3.00 / 1,000 search result scrapeds
Rating
0.0
(0)
Developer
NanoScrape
Maintained by CommunityActor stats
1
Bookmarked
19
Total users
4
Monthly active users
6 days ago
Last modified
Categories
Share
France Travail Job Scraper
Scrape job listings from France Travail (formerly Pole Emploi), France's public employment service with 500,000+ active job listings. Extract title, company, location, contract type, salary, and full description.
HTTP-only scraper using Cheerio (no browser). Runs at 128MB memory.
Scraper d'offres d'emploi France Travail
Scrapez les offres d'emploi de France Travail (anciennement Pole Emploi), le service public de l'emploi en France avec plus de 500 000 offres actives. Extrayez le titre, l'entreprise, la localisation, le type de contrat, le salaire et la description complete.
Use with AI Agents (MCP)
Connect this actor to any MCP-compatible AI client -- Claude Desktop, Claude.ai, Cursor, VS Code, LangChain, LlamaIndex, or custom agents.
Apify MCP server URL:
https://mcp.apify.com?tools=santamaria-automations/france-travail-scraper
Example prompt once connected:
"Use
france-travail-scraperto scrape job listings from france travail. Return results as a table."
Clients that support dynamic tool discovery (Claude.ai, VS Code) will receive the full input schema automatically via add-actor.
Related Actors
Looking for more job data? Check out our other scrapers:
Global
DACH Region
Nordics
- Arbetsformedlingen.se Scraper -- Swedish jobs
- Jobindex.dk Scraper -- Danish jobs
UK
- Reed.co.uk Scraper -- UK jobs
Enrich your job data
Features
- 500,000+ active listings from France's largest public job board
- Multi-query support -- run multiple search keywords in one execution, deduplicated
- Title filter --
titleFilterdrops non-matching SERP rows before detail fetch (saves cost) - Sort by newest or relevance --
sortBy: "newest"(default) maps to France Travail'stri=1;"relevance"maps totri=0 - Date filter --
postedWithinDaysmaps to France Travail'semissionparam (1, 3, 7, 14, or 31 days) - Employment type filter --
employmentType: "FULL_TIME"maps todureeHebdo=1(temps plein);"PART_TIME"maps todureeHebdo=2(temps partiel) - SERP + Detail modes -- fast SERP-only or full detail extraction with salary and remote info
- French contract types -- CDI, CDD, interim, alternance, stage
- Remote detection -- detects teletravail (remote work) mentions
- Salary parsing -- structured min/max from French salary formats (annuel, mensuel, horaire)
- Location filtering -- filter by department code (75 = Paris, 69 = Lyon, etc.)
- Low cost -- 128MB memory, HTTP-only
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQueries | array | ["developpeur"] | One or more search keywords. Each keyword runs as a separate search. |
searchQuery | string | "" | Single keyword (legacy, backward compatible). Use searchQueries for new integrations. |
location | string | "" | Department code or region code (e.g. 75 for Paris, 69 for Lyon). Empty = all France. |
maxResultsPerQuery | integer | 100 | Per-keyword result cap (counts post-filter results when titleFilter is active). |
maxResults | integer | 100 | Total cap across all queries. Set to 0 for unlimited. |
titleFilter | string | "" | Comma-separated title terms (case-insensitive substring OR-match). Applied after SERP fetch, before detail fetch. Non-matching rows are dropped entirely (no billing). Empty = no filter. Example: Développeur, Chef de projet, Ingénieur. |
sortBy | enum | "newest" | newest = most recent first (tri=1); relevance = France Travail relevance ranking (tri=0). |
postedWithinDays | integer | unset | Only return jobs posted within N days. Rounds up to the nearest discrete France Travail emission value: 1, 3, 7, 14, or 31. Values above 31 disable the filter. |
employmentType | enum | unset | Filter by employment type. FULL_TIME = temps plein (dureeHebdo=1); PART_TIME = temps partiel (dureeHebdo=2). INTERNSHIP, TEMPORARY, CONTRACT, TRAINEE have no direct France Travail hours-type mapping and return all hours types. |
includeDetails | boolean | false | Fetch detail pages for full description, salary, and remote status. Slower but richer. |
postedWithinDays rounding table
France Travail's emission param only accepts discrete day values. Your input is rounded up to the nearest option:
| Input | emission param | Window |
|---|---|---|
| 1 | 1 | Last 24 hours |
| 2-3 | 3 | Last 3 days |
| 4-7 | 7 | Last week |
| 8-14 | 14 | Last 2 weeks |
| 15-31 | 31 | Last month |
| 32+ | (omitted) | All offers |
Output Fields
| Field | Type | Description |
|---|---|---|
id | string | France Travail offer ID |
title | string | Job title |
company | string/null | Hiring company name |
location | string | Job location (city, department) |
country | string | Always "FR" |
employment_type | string/null | full-time, part-time, temporary, internship, apprenticeship, or contract |
remote_option | string/null | remote, hybrid, or null |
salary_min | number/null | Minimum salary (EUR) |
salary_max | number/null | Maximum salary (EUR) |
salary_text | string/null | Salary as displayed |
description_snippet | string/null | Short description (max 500 chars) |
description_full | string/null | Full description (detail mode only) |
posted_at | string/null | Publication date (ISO 8601) |
source_url | string | France Travail listing URL |
source_platform | string | Always "francetravail.fr" |
search_query | string/null | The search keyword that found this job |
scraped_at | string | Scrape timestamp (ISO 8601) |
Input Examples
Basic search
{"searchQuery": "developpeur","maxResults": 50}
Multi-query with location
{"searchQueries": ["developpeur", "ingenieur", "data scientist"],"location": "75","maxResults": 200,"maxResultsPerQuery": 100}
With full details (salary + description)
{"searchQueries": ["developpeur python"],"includeDetails": true,"maxResults": 50}
Scheduled daily scrape (recommended)
{"searchQueries": ["Developpeur"],"sortBy": "newest","postedWithinDays": 1,"employmentType": "FULL_TIME","maxResults": 100}
Title filter -- only senior roles
{"searchQueries": ["software"],"titleFilter": "Développeur, Ingénieur, Engineer","maxResults": 50}
Sort by newest
{"searchQueries": ["ingenieur logiciel"],"sortBy": "newest","maxResults": 100}
Sort by relevance
{"searchQueries": ["data scientist"],"sortBy": "relevance","maxResults": 50}
Precision title filter
Returns only French tech jobs whose title contains "développeur" or "ingénieur" (case-insensitive substring match). Non-matching SERP rows are dropped before the detail-fetch step, so you don't pay for job-detail events on jobs you don't want.
{"searchQueries": ["informatique", "logiciel"],"titleFilter": "développeur, ingénieur","sortBy": "newest","maxResults": 50}
Example matched titles: "Développeur Full Stack React/Node.js", "Ingénieur Logiciel Embarqué".
Jobs posted in the last week, full-time only
{"searchQueries": ["chef de projet"],"sortBy": "newest","postedWithinDays": 7,"employmentType": "FULL_TIME","maxResults": 100}
Pricing
| Event | Price (USD) | Description |
|---|---|---|
job-start | $0.05 | Per actor run |
job-serp-result | $0.003 | Per job listing from search results (post-filter only) |
job-detail-result | $0.008 | Per job detail page fetched |