France Travail Scraper — Jobs, Salary & ROME avatar

France Travail Scraper — Jobs, Salary & ROME

Pricing

from $1.50 / 1,000 job listings

Go to Apify Store
France Travail Scraper — Jobs, Salary & ROME

France Travail Scraper — Jobs, Salary & ROME

France Travail Scraper for public job offers in France. Search by keyword, city, or contract and export title, employer, salary, ROME code, and the job description as JSON.

Pricing

from $1.50 / 1,000 job listings

Rating

0.0

(0)

Developer

Andrej Kiva

Andrej Kiva

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Disclaimer: Unofficial tool — not affiliated with, sponsored by, or endorsed by France Travail or its affiliates. Data is read from publicly accessible job-search and offer pages only. No login. You are responsible for complying with applicable law (including GDPR where personal data appears) and the site’s terms. No warranty on accuracy or availability. Provided for informational and research use.

France Travail scraper for public job offers in France (the board formerly known as Pôle emploi). A practical France Travail API alternative: search by keyword, city or department, contract, or paste a search / offer URL. Export title, employer, city, contract, EUR salary, ROME code, experience, and the job description as JSON, CSV, or Excel. Fast HTTP, no headless browser, no login. Run it with Python, Node.js, cURL, or Apify MCP.

Use it for recruiting coverage, salary checks, and a daily watch of new offer ids.

ActorFocus
France Travail Scraper ◄── you are herePublic France Travail job offers
APEC Jobs ScraperFrance cadre jobs and salary
Arbeitsagentur Jobs ScraperGermany public employment board
InfoJobs Job ScraperSpain job listings
LinkedIn Jobs ScraperPublic LinkedIn job listings
Stepstone Jobs ScraperDACH commercial job board

When to use this Actor

  • You need a France Travail scraper / Pôle emploi scraper that returns structured offers
  • You want keyword + city + contract without a partner API key
  • You need ROME, salary text, and the description on the same row
  • You run a daily monitor and only want offer ids that were not seen last time

When not to use this Actor

  • Candidate profiles or CVs — public job offers only
  • Recruiter emails or phones — the apply form is not opened
  • Logged-in candidate space — no login
  • French executive roles only — use APEC Jobs Scraper

Key features

  • Public search HTML plus the public offer JSON (salary, ROME, description)
  • City and department names resolved to the location code used by the search
  • Contract filter: CDI, CDD, intérim, apprentissage, and related codes
  • Partner offers can be included or left out
  • Monitor mode stores seen offer ids and bills only new rows
  • 256 MB HTTP run, proxy off by default

Input

FieldWhat it does
keywordJob title, skill, or words to search
locationCity, department, or a location code such as 75D
radiusKm0–100 km around that place. Default 10
contractTypeCDI, CDD, MIS (intérim), SAI, E2, FS, or empty
includePartnerOffersKeep offers republished from partner boards
sortByrelevance or date. Monitor mode uses date
startUrlsSearch or offer URLs. They replace keyword and location
includeDetailsFetch salary, ROME, and the full description. Default on
maxItems / maxPagesCaps. The search returns 10 offers per page
monitorModePush only new offer ids on later runs
{
"keyword": "développeur",
"location": "Paris",
"radiusKm": 10,
"contractType": "CDI",
"maxItems": 50,
"includeDetails": true,
"proxyConfiguration": { "useApifyProxy": false }
}

Offer URL example inside a run input:

{
"startUrls": [
{ "url": "https://candidat.francetravail.fr/offres/recherche?motsCles=infirmier&lieux=69D&rayon=10" }
],
"maxItems": 20
}

Output

One dataset row is one job offer.

FieldMeaning
jobIdPublic offer id
title, company, city, departmentCodeCard identity
contractType, workTimeContract and hours label
salaryText, salaryMin, salaryMax, salaryPeriodDisclosed pay. Period is HOUR, MONTH, YEAR, or FEE
romeCode, romeTitleROME occupation
experience, qualification, sectorProfile and industry
descriptionOffer text
publishedLabel, updatedAt, originFreshness and source board
urlPublic offer page
{
"jobId": "215KBZB",
"title": "DEVELOPPEUR ANGULAR (h/f) (H/F)",
"company": "IZIWORK",
"city": "Hasparren",
"departmentCode": "64",
"contractType": "Intérim - 5 Mois - Contrat travail",
"salaryText": "Horaire de 16.0 Euros",
"salaryMin": 16,
"salaryMax": 16,
"salaryPeriod": "HOUR",
"romeCode": "M1855",
"romeTitle": "Développeur / Développeuse web",
"url": "https://candidat.francetravail.fr/offres/recherche/detail/215KBZB"
}

Use cases

  • Build a daily list of new developer, nurse, or logistics offers in one department
  • Compare disclosed hourly and monthly pay on the same occupation code
  • Feed a recruiting CRM with employer name, city, contract, and description
  • Watch one keyword and skip offer ids you already stored

Integration examples

Node.js

import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor("crawloop/france-travail-scraper").call({
keyword: "infirmier",
location: "Lyon",
contractType: "CDI",
maxItems: 30,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
client = ApifyClient()
run = client.actor("crawloop/france-travail-scraper").call(run_input={
"keyword": "développeur",
"location": "Paris",
"maxItems": 30,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(len(items), items[0].get("romeCode"))

cURL

curl "https://api.apify.com/v2/acts/crawloop~france-travail-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d "{\"keyword\":\"boulanger\",\"location\":\"Lille\",\"maxItems\":20}"

MCP and AI assistants

Use this Actor from AI tools via Apify MCP. Connect your Apify account, then call this Actor by its Store name crawloop/france-travail-scraper.

Example prompts:

  • "Run France Travail Scraper for développeur in Paris, CDI, max 20, and return title, salary, and ROME as JSON"
  • "Scrape new infirmier offers in Lyon and summarize contract type and city"
  • "Chain France Travail Scraper then APEC Jobs Scraper for cadre roles in the same city"

Suite next step

For French executive and cadre listings, run APEC Jobs Scraper after this Actor.

FAQ

Does this use the official partner API? No. It reads the public candidate search and the public offer description. No OAuth client and no login.

Why is a city required to be a name, not a free-text filter? The search filters on a location code. Paris is resolved to the department code. You can also pass a code such as 75D directly.

What does monitor mode bill? Only new offer rows. A later run that finds nothing new still starts, and it does not charge a job row for ids already stored.

Are partner-board offers included? Yes by default, matching the public search. Set includePartnerOffers to false to drop them.