France Travail Scraper $1💰 Jobs, Salaries & Apply Links
Pricing
from $1.00 / 1,000 results
France Travail Scraper $1💰 Jobs, Salaries & Apply Links
Scrape job offers from France Travail with titles, companies, locations, salaries, contracts, descriptions, skills, employer details, and apply links. Search by keyword, location, contract, sector, salary, sort options, or paste job/search URLs.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
France Travail Scraper
Scrape structured job-offer data from France Travail (francetravail.fr, formerly Pôle Emploi) — France's national employment platform with 700,000+ active listings.
Returns normalized job records: listing id + canonical URL, title, employer/recruiter, full location + postal code, contract type, salary range, full description, experience, skills & soft skills, additional information, employer page + apply/contact links, ROME codes, and listing labels.
Why use this actor
- Market researchers & analysts — track hiring volume, salary ranges, contract mix, and regional/role demand (logistics, IT, healthcare, hospitality).
- Recruiting intelligence — benchmark employer hiring patterns, contract mix, and compensation across regions and sectors.
- Data engineers — feed structured records into dashboards, warehouses, ETL pipelines, alerts, or search/matching engines.
- Lead generation — identify employers, recruiters, and role-level context for prospect research.
Input parameters
Provide keywords + filters (search mode) or paste France Travail search URLs (url mode).
| Parameter | Type | Description | Default |
|---|---|---|---|
mode | string | search (keywords + filters) or url (paste search links). | search |
queries | string[] | Search keywords (one per line), e.g. data analyst, cariste. Each runs a separate search. | — |
location | string | City, department code, region, or postal area. Free text is resolved to the site's lieu code via its own autocomplete (Paris -> 75D). Empty = all of France. | none |
radius | integer | Search radius in km around the location (0 = none). | 10 |
publishedDate | string | Last 24 hours | Last 3 Days | Last Week | Last 2 Weeks | Last Month. | — |
contractType | string[] | Contract types (CDI, CDD, Intérim, Apprentissage, …). | — |
contractDuration | string[] | Full-time | Part-time | Not specified. | — |
jobCategory | string[] | Professional domains (IT, Healthcare, Logistics, Hospitality, …). | — |
minSalary | integer | Minimum monthly gross salary in EUR. 0 = keep all. | 0 |
experience | string[] | Entry / Mid / Senior / Not specified (applied from job detail). | — |
seniority | string[] | Executive / Non-executive / Not specified. | — |
onlyFranceTravail | boolean | Keep only offers published directly on France Travail (exclude partners). | false |
inclusiveEmployer | boolean | Keep only disability-inclusive (Handi-engage) employers. | false |
adaptedCompany | boolean | Keep only adapted companies. | false |
sortBy | string | Most relevant | Newest. | Newest |
urls | string[] | France Travail search URLs (url mode). | — |
maxItems | integer | The run cap — global max listings returned. | 20 |
maxPages | integer | Per-search page limit (20 jobs/page). 0 = unlimited (stops at maxItems). | 0 |
fetchDetails | boolean | Open each job page for the full description, salary, skills, employer block, apply/contact links. Billed as a detail-enrichment surcharge. | true |
proxy | object | Apify proxy settings. Residential is recommended. | Residential |
mcpConnectors | string[] | Pipe results into your apps (Notion, Linear, Airtable, Apify) via MCP connectors. Leave empty to skip. | — |
notionParentPageUrl | string | Notion connector only: URL or id of the page under which item pages are created. Required for Notion export; the actor warns and skips if missing. | — |
maxNotifyListings | integer | Cap on items written to each connector per run. Does not affect the dataset. | 50 |
One cap rule
maxItems is the single cap. maxPages defaults to unlimited and stops at maxItems. Set maxPages only when you want a hard per-search page limit.
Send results into your apps (MCP connectors)
Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape, run once the dataset push has finished. The Apify dataset itself is never changed.
What gets written to the connector: a condensed, human-readable summary of each record, not the full JSON. The complete record always stays in the Apify dataset.
- Authorize a connector once under Apify → Settings → Integrations (Notion, Linear, Airtable, or Apify).
- Select it in the
mcpConnectorsinput field. (If the picker is empty, you haven't authorized a connector yet.) - For Notion, also set
notionParentPageUrlto the page under which item pages are created. This field is required only for the Notion connector; if it's missing, the actor logs a warning and skips the Notion export instead of failing the run. - Use
maxNotifyListingsto cap how many items are written to each connector per run; it never affects how many items land in the dataset.
Leave mcpConnectors (and, for Notion, notionParentPageUrl) empty to skip connector export entirely: nothing is sent anywhere and the run behaves exactly as if the feature didn't exist.
Output
Each record has the stable envelope type + id + url (dedupe key: type + ":" + id):
- Core:
type,id,url,title,seedId,seedType,seedValue,pageIndex - Location:
location,postalCode,addressLocality,addressRegion,addressCountry,mapUrl - Contract:
contractType,workTime,workHours,employmentType,publishedAt,validThrough - Description:
description - Salary:
salary,salaryCurrency,salaryMin,salaryMax,salaryUnit,salaryText - Requirements:
experienceRequirements[],skills[],softSkills[],additionalInformation[] - Employer:
company,companySize,recruiterName,recruiterDescription,employerPageUrl,employerLogoUrl,employerPhone,employerEmail,applyActionUrl,contactActionUrl,industry,qualification,romeCodes[],jobLabels[] - Badges:
inclusiveEmployer,adaptedCompany,scrapedAt
Example inputs
Query-driven run:
{"mode": "search","queries": ["data analyst", "business analyst"],"location": "Paris","publishedDate": "Last Week","contractType": ["Permanent contract (CDI) | CDI"],"sortBy": "Newest | Date","maxItems": 50}
Targeted category + salary:
{"mode": "search","queries": ["cariste"],"location": "Lille","jobCategory": ["Logistics | Transport, Logistique"],"contractDuration": ["Full-time | Temps plein"],"minSalary": 2000,"maxItems": 30}
Pricing
Pay-per-event: a Results event per dataset row, plus a small detail-enrichment event per detail page fetched (only when fetchDetails is on). An Apify Actor Start event covers compute.
Connection guidance
Apify Residential proxy (any country) gives the highest reliability. Some datacenter exit IPs may be geo-restricted; if a run returns no results on datacenter, switch the proxy to Residential or re-run for a fresh exit IP. If you are on the Apify Free plan, residential proxy access is not included — upgrade or paste your own residential proxy URLs in the proxy field.
Compliance & ethics
This actor collects publicly available job-posting information from francetravail.fr for legitimate business purposes (labor-market research, recruiting intelligence, monitoring). Users are responsible for ensuring their collection, storage, and use complies with applicable laws, regulations, and platform terms. This section is informational, not legal advice.
Verification
- 2026-09-01: re-audited against the live site. Fixed the
locationfilter: free text was sent verbatim and the server silently ignored it (returning the nationwide result set), so the actor now resolves the location through the site's own autocomplete endpoint to its lieu code (Paris -> 75D) before searching, and falls back to the raw text when nothing matches. Narrowing re-derived from the site's own reported totals: baseline 766,621 offers nationwide, keyword 5,597, keyword+Paris 839, contract CDI 630, published-within-31-days 538, IT domain 807, salary 3000+ 824, full-time 43, and a nonsense-keyword control returned zero.