FranceTravail.fr France Travail Scraper avatar

FranceTravail.fr France Travail Scraper

Pricing

from $1.50 / 1,000 results

Go to Apify Store
FranceTravail.fr France Travail Scraper

FranceTravail.fr France Travail Scraper

Scrape francetravail.fr — France's official government job board with 450,000+ listings. Structured output: title, company, salary, GPS coordinates, ROME occupational codes & full descriptions in HTML, text and Markdown. Contract type & location filters. No API key required.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

Unfenced Group

Unfenced Group

Maintained by Community

Actor stats

1

Bookmarked

4

Total users

3

Monthly active users

2 days ago

Last modified

Share

France Travail Scraper

Extract structured job listings from francetravail.fr (formerly Pôle Emploi) — France's national employment platform with over 900,000 active listings across all sectors and regions. No API key required. Search by city name (e.g. "Paris", "Lyon") with an optional radius, or filter by department, region, contract type, and experience.

France Travail Scraper


Why use this scraper?

FeatureDetails
Scale900,000+ active listings across all French departments and regions
Rich dataTitle, company, salary range, location with GPS coordinates, full job description in HTML, plain text and Markdown
Precise filteringCity name + radius, keywords, departments, regions, contract type (CDI/CDD/Intérim), experience level, full-time/part-time, telework, alternance
DeduplicationCross-run repost detection with a 90-day fingerprint window — incremental pipelines only receive new listings
Three description formatsHTML, plain text and Markdown — ready for any downstream processing or storage
Labour market intelligenceROME occupation codes, sector codes, GPS coordinates, salary data and experience requirements for every listing

Input parameters

ParameterTypeDefaultDescription
keywordsString""Job title, skill, or sector keywords
cityString""City name to search in (e.g. "Paris", "Lyon", "Bordeaux"). Automatically resolved to the correct department. Combine with radius to expand to nearby areas.
radiusInteger0When city is set, expand to departments within this radius in km. 0 = city's own department only. Example: city="Lyon", radius=50 covers Rhône, Ain, Isère and Loire.
departmentsArray[]French department codes (e.g. ["75", "69", "13"])
regionsArray[]French region codes (e.g. ["11"] for Île-de-France)
contractTypesArray[]CDI, CDD, Interim / Temporary, Freelance / Liberal, Seasonal, Franchise, Commercial contract
experienceArray[]No experience required, 1-3 years, 3-5 years, 5+ years
fullTimeOnlyBooleanfalseFull-time positions only
partTimeOnlyBooleanfalsePart-time positions only
teleworkOnlyBooleanfalseTelework / remote positions only
handicapFriendlyBooleanfalseDisability-inclusive employers only
alternanceOnlyBooleanfalseApprenticeship / work-study contracts only
sortByStringpertinencepertinence (relevance) or date (most recent first)
maxResultsInteger100Maximum number of listings to save
daysOldInteger0Maximum listing age in days (0 = no limit)
skipRepostsBooleanfalseSkip listings already seen in a previous run
startUrlsArray[]Specific France Travail offer URLs to scrape directly

Department and region codes

Common departments: 75 Paris · 69 Rhône · 13 Bouches-du-Rhône · 31 Haute-Garonne · 33 Gironde · 59 Nord · 67 Bas-Rhin · 92 Hauts-de-Seine · 93 Seine-Saint-Denis · 94 Val-de-Marne

Common regions: 11 Île-de-France · 84 Auvergne-Rhône-Alpes · 75 Nouvelle-Aquitaine · 76 Occitanie · 32 Hauts-de-France · 44 Grand Est · 52 Pays de la Loire · 53 Bretagne · 93 Provence-Alpes-Côte d'Azur

Note: Department and region codes follow the official French administrative system (INSEE). Both can be combined in the same run.


Output schema

Each result is a JSON object with the following fields:

FieldTypeDescription
idStringUnique France Travail offer ID (e.g. 206CYPD)
titleStringJob title
urlStringDirect URL to the listing on candidat.francetravail.fr
companyNameStringEmployer name
companyDescriptionString | nullEmployer description text
companyUrlString | nullEmployer website
companyLogoString | nullEmployer logo URL
descriptionStringFull job description (HTML)
descriptionTextStringFull job description (plain text)
descriptionMarkdownStringFull job description (Markdown)
contractTypeStringContract type label (e.g. Contrat à durée indéterminée)
contractCodeStringContract type code (e.g. CDI, CDD, MIS)
workScheduleString | nullWorking hours label (e.g. 35H Travail en journée)
isFullTimeBoolean | nulltrue = full-time, false = part-time
isAlternanceBooleanWhether this is an alternance / work-study contract
isHandicapFriendlyBooleanWhether the employer is RQTH/disability-inclusive
locationString | nullLocation label (e.g. 75 - Paris)
cityString | nullCity name
departmentString | nullDepartment name
departmentCodeString | nullDepartment code (e.g. 75)
regionString | nullRegion name
regionCodeString | nullRegion code (e.g. 11)
postalCodeString | nullPostal code
latitudeNumber | nullGPS latitude
longitudeNumber | nullGPS longitude
salaryMinNumber | nullMinimum salary (currency per salaryPeriod)
salaryMaxNumber | nullMaximum salary
salaryPeriodString | nullPay frequency (Mensuel, Annuel, Horaire)
salaryCurrencyString | nullCurrency code (EUR)
salaryTextString | nullFull salary description as posted
salaryBenefitsArrayAdditional compensation items (e.g. meal vouchers, mutual insurance)
salaryMonthsNumber | nullNumber of salary months per year (e.g. 13)
publishDateISOStringListing creation date (ISO 8601)
updatedDateISOString | nullLast update date (ISO 8601)
experienceRequiredString | nullExperience requirement label
experienceCodeString | nullExperience code (D, 1, 2, 3)
sectorString | nullSector label
sectorCodeString | nullSector code
romeCodeString | nullROME occupation classification code
romeLabelString | nullROME occupation label
qualificationString | nullQualification level
skillsArrayRequired skills and competencies
formationsArrayRequired training or education
languagesArrayRequired languages
drivingLicensesArrayRequired driving licenses
nbPositionsNumber | nullNumber of open positions
applyUrlString | nullDirect application URL (when available)
sourceStringAlways francetravail.fr
scrapedAtStringScrape timestamp (ISO 8601)
contentHashStringMD5 fingerprint for deduplication
isRepostBooleantrue if this listing was seen in a previous run
originalPublishDateString | nullFirst time this listing was seen (repost detection)

Example output

{
"id": "206CYPD",
"title": "Développeur Full Stack Node.js / React H/F",
"url": "https://candidat.francetravail.fr/offres/recherche/detail/206CYPD",
"companyName": "Digital Solutions SAS",
"description": "<div class=\"job-description\"><p>Nous recherchons un développeur...</p></div>",
"descriptionText": "Nous recherchons un développeur...",
"contractType": "Contrat à durée indéterminée",
"contractCode": "CDI",
"isFullTime": true,
"isAlternance": false,
"city": "Paris",
"department": "Paris",
"departmentCode": "75",
"region": "Île-de-France",
"regionCode": "11",
"latitude": 48.8566,
"longitude": 2.3522,
"salaryMin": 40000,
"salaryMax": 55000,
"salaryPeriod": "Annuel",
"salaryCurrency": "EUR",
"salaryText": "Annuel de 40000 Euros à 55000 Euros sur 12 mois",
"salaryBenefits": ["Tickets restaurant", "Mutuelle"],
"publishDateISO": "2026-03-28T08:00:00Z",
"romeCode": "M1805",
"romeLabel": "Études et développement informatique",
"skills": ["Node.js", "React", "TypeScript", "PostgreSQL"],
"source": "francetravail.fr",
"scrapedAt": "2026-03-30T09:15:00Z",
"contentHash": "a3f8c1d2e4b7...",
"isRepost": false,
"originalPublishDate": null
}

Pricing

This actor uses Pay-Per-Result pricing — you only pay for the job listings actually saved to your dataset.

VolumeCost
1,000 results$1.50
10,000 results$15.00
100,000 results$150.00

Compared to manual data collection: At $1.50 per 1,000 results, extracting 10,000 France Travail listings costs the same as roughly 15 minutes of a data analyst's time — without the setup, maintenance, or compliance overhead.

Pricing is charged per saved result. Filtering, retries, and skipped reposts do not count toward your bill.


Performance

ScenarioThroughputApproximate cost
1,000 results, no filter~2 minutes$1.50
10,000 results, keyword + department~15 minutes$15.00
Full catalogue snapshot (900k+)~4-6 hours~$1,350

Memory usage is consistently low — the actor runs in 256 MB and does not require a browser.


Typical use cases

  • Recruitment platforms — aggregate France Travail listings alongside private-sector boards for a comprehensive French job market view
  • Labour market research — track vacancy trends by ROME code, region, sector, or contract type over time
  • HR technology — feed job data into matching engines, skills taxonomies, or salary benchmarking tools
  • Competitive intelligence — monitor hiring activity within specific companies, departments, or sectors

Known limitations

  • Location filtering reduces throughput. City, department and region filters are applied after fetching results — the scraper scans the full catalogue and keeps only matching listings. For narrow geographic filters (e.g. a single city), expect to scrape more results than maxResults to fill the quota. Combine with keywords to improve yield. A wider radius increases both coverage and throughput.
  • Salary data is absent for ~60% of listings. Many employers post without salary information. The salaryText field contains the raw salary label when present.
  • applyUrl is null for some listings. Application links are only available when employers include an external redirect. In all other cases the application is managed through the France Travail platform.
  • Maximum 10,000 results per search query. France Travail's search engine returns up to 10,000 results per filter combination. To collect more, use multiple targeted runs with different keyword combinations.
  • isHandicapFriendly reflects listing metadata. When filtering with handicapFriendly=true, the API applies its own internal handicap accessibility index. The output field isHandicapFriendly reflects the listing's explicit metadata fields (topAccesTH, employeurHandiEngage) which may differ from the API's internal filter criterion.

Technical details

PropertyValue
Actor typeStateless scraper
Default memory256 MB
Default timeout60 minutes
Deduplication TTL90 days
Output formatsJSON (default), CSV, XML, XLSX via Apify

Additional services

Need a custom scraper, extended field mapping, or a dedicated data pipeline for France Travail or other European job boards? Contact us at info@unfencedgroup.nl — we build and maintain bespoke data infrastructure for HR tech teams and recruitment platforms.


Built and maintained by unfenced-group · Specialists in European job board data infrastructure