French Jobs Scraper: France Job Offers API (Open Data) avatar

French Jobs Scraper: France Job Offers API (Open Data)

Pricing

from $0.54 / 1,000 job offers

Go to Apify Store
French Jobs Scraper: France Job Offers API (Open Data)

French Jobs Scraper: France Job Offers API (Open Data)

French jobs scraper and France job offers API from open-licence sources only (Choisir le service public, employer open data, Jobicy): one normalised, deduplicated feed with contract type (CDI/CDD), remote level and salary annualised in EUR. For HR analytics, job boards and AI agents.

Pricing

from $0.54 / 1,000 job offers

Rating

0.0

(0)

Developer

jules imbert

jules imbert

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

20 hours ago

Last modified

Share

French Jobs Scraper & API — France job offers from open-licence sources (Emploi France)

One normalised, deduplicated feed of French job offers, built for AI agents (Apify MCP server) and HR analytics — using only sources whose licence or terms allow reuse.

🇫🇷 Version française plus bas.

What it does

Give it keywords, a location, a remote preference and contract types. It queries several legally reusable sources in parallel and returns one clean dataset:

SourceWhat it coversLicence / terms
Choisir le service public (choisirleservicepublic.gouv.fr)The official job board of the French civil service (State, territorial and hospital civil service): ~50,000 live offersLicence Ouverte / Etalab 2.0
Employer & territorial open dataGroupe BPCE (Banque Populaire, Caisse d'Epargne, Natixis…), Région Île-de-France, Ville de Tours / Tours Métropole, France Travail 7-day feeds for Hautes-Pyrénées and Pyrénées-AtlantiquesLicence Ouverte / Etalab 2.0
Jobicy remote jobs API100 % remote jobs open to candidates based in FranceJobicy public API, attribution required

Every record has the same schema, whatever the source:

  • title, company, location, city, departmentCode, department, region
  • remoteLevel: full_remote · hybrid · on_site · unknown
  • contractType: CDI · CDD · INTERIM · FREELANCE · STAGE · ALTERNANCE · FONCTION_PUBLIQUE · AUTRE, plus contractRaw
  • Salary: salaryMin, salaryMax, salaryCurrency, salaryPeriod, plus salaryAnnualMinEur / salaryAnnualMaxEur, annualised (×12 for monthly pay, ×1,607 for hourly, ×218 for daily) when the currency is EUR. salaryText keeps the raw string.
  • publishedAt, applicationDeadline, category, descriptionSnippet (400 characters), url
  • source, sourceName, sourceLicense, attribution (keep them when you republish)
  • alsoFoundOn: the same offer found on another source

Why use it

  • Clean legal footing. No scraping of private job boards whose terms forbid it. No personal data: recruiter names, e-mails and phone numbers are never requested, and e-mails or phone numbers inside descriptions are masked.
  • Agent-ready. It is a flat, typed schema with enums, so an LLM agent calling it through the Apify MCP server gets consistent fields across sources.
  • Cheap. It uses plain HTTP with no browser and no proxy.

Input example

{
"keywords": "développeur",
"location": "Paris",
"remote": "any",
"contractTypes": [],
"maxResults": 100,
"sources": ["choisirleservicepublic", "opendata", "jobicy"],
"keywordMatch": "title",
"fetchDetails": true
}
  • location accepts a city ("Lyon"), a département name or number ("Gironde", "69") or a région ("Île-de-France"). Cities are resolved with the official geo.api.gouv.fr. Leave it empty for all of France.
  • remote:
    • full_remote returns full-remote offers wherever the employer is.
    • hybrid returns offers marked "télétravail possible".
  • includeRemoteOutsideLocation also adds full-remote offers when a location is set.
  • keywordMatch:
    • title (default) is precise: the keywords must appear in the job title. "développeur" does not match "développement".
    • title_or_description is broader.
  • French keywords also match common English equivalents for remote listings (développeur → developer / software engineer, comptable → accountant…).

Output example

{
"id": "choisirleservicepublic:O075260724001374",
"title": "Développeur Windev - Crédit Municipal de Paris",
"company": "Etablissements publics locaux",
"location": "Paris (75)", "city": "Paris", "departmentCode": "75", "department": "Paris", "region": "Île-de-France",
"remoteLevel": "hybrid",
"contractType": "FONCTION_PUBLIQUE", "contractRaw": "Emploi ouvert aux titulaires et aux contractuels",
"salaryMin": 45000, "salaryMax": 50000, "salaryCurrency": "EUR", "salaryPeriod": "year",
"salaryAnnualMinEur": 45000, "salaryAnnualMaxEur": 50000, "salaryText": "45/50 K€ € brut/an",
"publishedAt": "2026-10-05", "applicationDeadline": "2026-12-04",
"category": "Numérique",
"url": "https://choisirleservicepublic.gouv.fr/offre-emploi/developpeur-windev---credit-municipal-de-paris-reference-O075260724001374/",
"source": "choisirleservicepublic", "sourceLicense": "Licence Ouverte / Etalab 2.0",
"attribution": "Source : choisirleservicepublic.gouv.fr (DGAFP) — Licence Ouverte / Etalab 2.0",
"alsoFoundOn": []
}

Deduplication policy

  1. Offers with the same URL are dropped.

  2. Offers from the same source are never merged: each one has its own vacancy reference, and identical titles are often distinct posts (for example one per lycée).

  3. Offers from different sources are merged only when they match on all of the following:

    • the same département;
    • the same canonical title (gender variants, H/F markers and employer suffixes are removed);
    • a compatible employer;
    • an unambiguous match: exactly one candidate on each side.

    The kept record lists the other one in alsoFoundOn.

Pricing (pay per event)

Pay per event, with discounts on paid Apify plans:

Apify planPer job offerPer 1,000
Free$0.0009$0.90
Starter (Bronze)$0.00081$0.81
Scale (Silver)$0.000675$0.68
Business (Gold) and above$0.00054$0.54

Plus $0.0003 per run start. No extra platform-usage fee: compute and storage are included.

You only pay for unique offers that pass your filters. maxResults caps the cost.

Limits (honest)

  • Coverage. Most volume comes from the public sector and a few large employers. This is not a copy of Indeed, Welcome to the Jungle or APEC, whose terms forbid automated reuse.
  • Full remote. Full-remote offers come only from Jobicy and are mostly international tech, sales and support roles. French full-remote jobs in trades such as accounting are rare in these sources.
  • Salary. Public-sector offers often say "non renseignée", so salary coverage is partial.
  • Remote level. hybrid for public-sector offers means the offer says "télétravail possible". It does not tell you how many days.
  • Employer name. For some public-sector offers, company is the employer category ("Etablissements publics locaux"); the actual employer is then in the title.
  • Jobicy cache. Jobicy data is cached for 60 minutes, per Jobicy's fair-use rules.

Use cases

  • HR & labour-market analytics: track hiring volume, contract types (CDI, CDD, internships) and salary ranges by city or keyword in France.
  • Job boards & newsletters: feed a niche French job board or a weekly jobs newsletter with deduplicated offers and their source URLs.
  • Public-sector recruiting watch: follow civil-service openings (State, territorial and hospital) for a region or a job family.
  • AI agents: let an assistant search French jobs through the Apify MCP server and get structured JSON back.

How to scrape French job offers

  1. Enter keywords (e.g. développeur, comptable, infirmier) and a location (city, département or France).
  2. Optionally pick a remote level, contract types and a maximum number of results.
  3. Click Start. Download the dataset as JSON, CSV or Excel, or call the Actor through the Apify API.

FAQ

Does it scrape Indeed, LinkedIn, Welcome to the Jungle or France Travail's website? No. Their terms forbid automated reuse. This Actor only uses sources whose licence or terms allow reuse (see the table above).

Is there a French job search API I can call from code? Yes: run this Actor through the Apify API (HTTP, Python or JavaScript client) and read the dataset. Each run returns a deduplicated list of offers.

How fresh are the offers? Sources are queried live at each run; use publishedWithinDays to keep only recent offers.

Can I schedule it? Yes. Use an Apify schedule (e.g. daily) and an integration (Google Sheets, Slack, webhook, Make, Zapier).

Integrations and API

  • API: run the Actor and read results over HTTP or with the Apify Python and JavaScript clients (see the API tab for ready-made code).
  • Schedules: run it daily or weekly from Apify schedules.
  • Integrations: send results to Google Sheets, Slack, e-mail, Airtable or a webhook, or connect it to Make, Zapier or n8n.
  • AI agents: available as a tool through the Apify MCP server.

Attribution

When you display or republish results, keep attribution and url:

  • Etalab 2.0 requires mentioning the source and the date of last update.
  • Jobicy requires a credit and a link to the original listing.

Other Actors by the same developer


🇫🇷 Emploi France — offres d'emploi unifiées, sources ouvertes

Un flux unique, normalisé et dédoublonné d'offres d'emploi en France. Il est conçu pour les agents IA (serveur MCP d'Apify) et l'analyse RH, et n'utilise que des sources dont la licence ou les conditions autorisent la réutilisation.

Sources

  • Choisir le service public : site officiel de l'emploi public, environ 50 000 offres, sous Licence Ouverte / Etalab 2.0.
  • Open data employeurs et territoires, sous Licence Ouverte / Etalab 2.0 :
    • Groupe BPCE ;
    • Région Île-de-France ;
    • Ville de Tours et Tours Métropole ;
    • flux France Travail à 7 jours des Hautes-Pyrénées et des Pyrénées-Atlantiques.
  • API publique Jobicy : offres 100 % télétravail ouvertes aux candidats en France, avec mention de la source obligatoire.

Ce que vous obtenez

  • Un schéma unique pour toutes les sources : intitulé, employeur, lieu, département, région, remoteLevel (full_remote / hybrid / on_site / unknown), type de contrat normalisé, date de publication, date limite, extrait et lien.
  • Un salaire ramené à l'année en euros (×12 pour un salaire mensuel, ×1 607 pour un taux horaire, ×218 pour un taux journalier).
  • Aucune donnée personnelle : les noms, e-mails et téléphones des recruteurs ne sont jamais collectés, et ceux présents dans les textes sont masqués.
  • Un dédoublonnage prudent entre sources, selon les règles décrites plus haut.

Entrée

  • Mots-clés, en français ou en anglais.
  • Lieu : ville, département (nom ou numéro) ou région.
  • Télétravail : tous, 100 % télétravail, hybride ou sur site.
  • Types de contrat.
  • Nombre maximum de résultats.
  • Sources.

Tarif

  • 0,0009 $ par offre renvoyée (de 0,00081 $ à 0,00054 $ sur les offres payantes Apify) ;
  • 0,0003 $ par lancement ;
  • aucun frais de plateforme en plus.

Limites

  • Couverture : surtout le secteur public et quelques grands employeurs. Ce n'est pas une copie d'Indeed, de Welcome to the Jungle ou de l'APEC, dont les CGU interdisent la réutilisation automatisée.
  • Salaire : souvent non renseigné dans les offres publiques.
  • « hybride » signifie « télétravail possible », sans nombre de jours.