Skip to content

France Travail Scraper

Try for free

Export job offers from France Travail (formerly Pôle emploi), France's public job board with 700,000+ offers. Search by keyword, city, department or region with contract, experience, salary, working time and date filters, or paste search and offer links. Get salary ranges, contract, ROME code, skills, education, geo coordinates, apply links and the full description. No login needed.

🇫🇷 France Travail Scraper

Export job offers from France Travail (formerly Pôle emploi), France's public job board with 700,000+ live offers. Search by keyword and place with contract, experience, salary and date filters, and get clean rows with salary ranges, ROME codes, skills, education, geo coordinates, apply links and the full description. No login, no API key, no account.

✨ Why use France Travail Scraper?

  • ⚡ Fast — reads the site's own JSON for every offer, many offers in parallel; in our tests 1,000 fully detailed offers took about 30 seconds.
  • 🧾 Complete offers — full description, salary parsed into min/max/period plus a yearly figure, ROME code and job title, skills, soft skills, education, languages, driving licences, working hours and benefits.
  • 📍 Ready for maps — latitude and longitude of the work place, city and department on every offer that has them.
  • 🔗 Apply links — the recruiter's or partner board's apply link (HelloWork, APEC, Indeed, ...), the managing France Travail agency and any public recruiter email or phone.
  • 🎯 Every site filter — contract (CDI, CDD, intérim, apprenticeship, ...), experience, cadre status, working time, minimum salary, posted date, radius, contract length, job family.
  • 📈 Past the 1,150 cap — France Travail shows at most 1,150 offers per search; large searches are split behind the scenes so you can export far more.

🎯 Use cases

  • 🧲 Recruitment and staffing — find employers hiring for the roles you place, with apply links and agency contacts.
  • 📊 Labour-market research — track offers by ROME code, department, contract and salary over time.
  • 💶 Salary benchmarking — collect stated pay for a job family and region, already annualised.
  • 🤖 Job boards and ATS feeds — keep a French job feed fresh with scheduled runs sorted by newest first.
  • 🏢 Lead generation — list companies that are hiring in a city or sector.

🚀 How to use

  1. Enter one or more keywords (e.g. développeur, comptable, aide-soignant) and a location (Paris, Lyon, Gironde, Bretagne, 75015 or France). Or paste France Travail search or offer links.
  2. Set Maximum offers and any filters (contract, experience, salary, posted within, ...).
  3. Click Start. Offers appear in the dataset as they are scraped.
  4. Export to JSON, CSV, Excel or HTML, or read them through the API.

📥 Input

FieldWhat it does
keywordsJob titles, skills or companies, one search each
locationCity, department, region, postcode or France (site location codes like 75D work too)
startUrlsFrance Travail search links, landing pages, offer links or offer numbers
maxResultsOffers to save in total (0 = no limit)
contractType, experience, qualification, workingTimeContract, experience, cadre status and working-time filters
postedSince, minSalary + salaryPeriod, radiusKmDate, pay and distance filters
includeDetails, includeApplyInfoOpen each offer (full data) and fetch apply links (both on by default)
{
  "keywords": ["comptable"],
  "location": "Lyon",
  "maxResults": 50,
  "contractType": ["CDI"],
  "postedSince": "7",
  "sortBy": "date"
}

📤 Output

FieldExample
id, url215KSZS, offer link
title, companyJob title and employer
location, city, department, latitude, longitudeWork place
contract_type, contract_type_label, contract_duration, alternanceCDI, Intérim, 6 Mois, false
salary, salary_min, salary_max, salary_period, salary_parsedRaw text plus parsed numbers and a yearly figure
rome_code, appellation, sector, qualification_labelOccupation code, job title, sector, level
experience_required, experience_years, education_level, formationsRequirements; education_level falls back to the first diploma named in the description (Bac+2, BTS (Bac+2), CAP, Master (Bac+5), Diplôme d'État)
competences, skills_detected, qualites_professionnelles, langues, permisSkills, soft skills, languages, licences; skills_detected adds the tools, certifications, licences and languages named in the description (Excel, SAP, CACES, Permis B, Anglais...)
work_hours, work_hours_converted, benefits, travelSchedule, full or part time, benefits
apply_url, apply_partner, partner_source, managing_agency, recruiter_email, recruiter_phoneHow to apply
posted_date, updated_date, descriptionDates and the full text
{
  "id": "215KGNY",
  "title": "Développeur Risques de marchés (H/F)",
  "company": "QUANTEAM",
  "company_description": null,
  "company_url": "https://www.quanteam.fr",
  "company_size": "250 à 499 salariés",
  "company_address": null,
  "employer_page_url": null,
  "location": "NEUILLY SUR SEINE (92)",
  "city": "NEUILLY SUR SEINE",
  "department": "92",
  "postal_code": null,
  "geo": {
    "lat": 48.884789,
    "lon": 2.269688
  },
  "latitude": 48.884789,
  "longitude": 2.269688,
  "contract_type": "CDI",
  "contract_type_label": "CDI",
  "contract_duration": null,
  "contract_nature": "Contrat travail",
  "alternance": false,
  "work_hours": "38H30/semaine\nTravail en journée",
  "work_hours_converted": "Temps plein",
  "rome_code": "C1301",
  "appellation": "Négociateur / Négociatrice salle des marchés",
  "sector": "Conseil en systèmes et logiciels informatiques",
  "qualification_label": "Cadre",
  "salary": "Annuel de 40000.0 Euros à 42000.0 Euros",
  "salary_parsed": {
    "raw": "Annuel de 40000.0 Euros à 42000.0 Euros",
    "min": 40000,
    "max": 42000,
    "currency": "EUR",
    "period": "year",
    "months": null,
    "is_range": true,
    "annualized_min": 40000,
    "annualized_max": 42000
  },
  "salary_min": 40000,
  "salary_max": 42000,
  "salary_period": "year",
  "benefits": [
    "Intéressement / participation",
    "Titres restaurant / Prime de panier",
    "CSE"
  ],
  "experience_required": "Débutant accepté",
  "experience_years": 0,
  "experience_mandatory": false,
  "education_level": "Bac+5 et plus ou équivalents",
  "formations": [
    {
      "niveauLibelle": "Bac+5 et plus ou équivalents",
      "domaineLibelle": "Master 2 Ingénierie du Risque",
      "libelle": "Bac+5 et plus ou équivalents - Master 2 Ingénierie du Risque",
      "exigence": "E"
    }
  ],
  "competences": [
    {
      "libelle": "Analyser les marchés financiers",
      "exigence": "S"
    },
    {
      "libelle": "Emettre des ordres d'achat ou de vente",
      "exigence": "S"
    },
    {
      "libelle": "Proposer une stratégie d'investissement",
      "exigence": "S"
    }
  ],
  "skills_detected": [
    "Analyser les marchés financiers",
    "Emettre des ordres d'achat ou de vente",
    "Proposer une stratégie d'investissement"
  ],
  "qualites_professionnelles": [
    {
      "libelle": "Faire preuve de réactivité"
    },
    {
      "libelle": "Faire preuve de rigueur et de précision"
    },
    {
      "libelle": "Organiser son travail selon les priorités et les objectifs"
    }
  ],
  "langues": [
    {
      "libelle": "Anglais",
      "niveau": "Courant",
      "exigence": "E"
    }
  ],
  "permis": [],
  "travel": null,
  "accessible_th": false,
  "adapted_company": false,
  "few_applicants": false,
  "national_programs": [
    "Plan \"1 jeune, 1 solution\""
  ],
  "partner_source": null,
  "is_partner_offer": false,
  "apply_url": "https://candidat.francetravail.fr/offres/recherche/detail/215KGNY",
  "apply_partner": null,
  "recruiter_name": null,
  "recruiter_email": null,
  "recruiter_phone": null,
  "managing_agency": null,
  "posted_date": "2026-10-19",
  "posted_label": "Publié il y a 2 jours",
  "updated_date": "2026-10-19",
  "description": "Au sein d'une banque d'investissement vous interviendrez sur :\n- le développement et la mise en production d'outils dédiés au suivi et au calcul des risques de marchés,\n- recueil des besoins,\n- traitement des demandes …",
  "url": "https://candidat.francetravail.fr/offres/recherche/detail/215KGNY",
  "source": "France Travail",
  "search_keyword": "développeur",
  "search_location": "75056",
  "scraped_at": "2026-10-21T04:46:08Z"
}

💰 Pricing

You pay $1.25 per 1,000 saved offers ($0.00125 per offer), whether or not you open each offer. Searches that find nothing, offers that are no longer online and links that are not France Travail pages cost nothing.

Platform usage (compute and proxy traffic) is billed on top and is small: our test runs used about $0.021 for 1,000 offers and $0.12 for 10,000 offers (10,000 offers took about 4.5 minutes).

JobOffersApproximate total
One city, one keyword100≈ $0.13
Weekly market scan1,000≈ $1.25 + ~$0.02 usage
Large export10,000≈ $12.50 + ~$0.12 usage

Set Maximum offers or a maximum charge per run to stay in budget; the run stops cleanly when it is reached.

❓ FAQ

Is it legal to scrape France Travail? The scraper only reads public job offers that anyone can see without an account. You are responsible for how you use the data, including GDPR rules for any recruiter contact details.

Do I need a login, an API key or a proxy? No login and no France Travail API key. The default datacenter proxy works; residential proxies are pinned to France if you pick them.

How many offers can I get? As many as match. France Travail shows at most 1,150 offers per search, so large searches are split by status, working time and region automatically ("Go past 1,150 offers per search"). Several keywords or locations also add up.

Why is a field empty? Each offer only has what the employer filled in. Salary, skills, education or company details are often missing, especially on partner offers. Latitude and longitude come from the site's map and are missing for a few offers.

How exact is posted_date? The site shows "published N days ago"; the date is computed from that in French time. updated_date is the exact last-update date.

Can I schedule it or use the API? Yes. Schedule runs (for example daily with "Posted within: last 24 hours" and "Newest first") and fetch results through the API or integrations.

⚠️ Limits

  • Only public offers: anything that needs a France Travail account (applying, saved searches) is not covered.
  • No SIRET/SIREN, NAF code or number of positions: the public offer page does not show them.
  • France Travail caps one search at 1,150 offers; splitting can still miss offers in very large searches (hundreds of thousands of matches) and does not cover offers located abroad when no location is set.
  • posted_date is derived from "published N days ago" and is empty for offers older than the site's last label.
  • When France Travail runs its backup offer site (maintenance or outage), the actor reads offers from it automatically. That site has no search radius (town searches cover the town itself) and no company size or address; the experience, qualification, working-time, salary, contract-length and employer filters are then applied by the actor, and skipped offers are not charged.

Related actors

G2
4.7/5
Excellent
Trustpilot

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.

No credit card. No setup calls.