
Global Sources Supplier Scraper
scrape.ly/store/cornerledger/globalsources-scraperLead generationE-commerce
2 monthly users

Scrape cadremploi.fr job listings for French executives and managers: title, company, location, contract, salary range, full description, candidate profile, job functions, industries, apply link or email and posting dates. Search by keyword and location, or paste Cadremploi URLs.
Scrape job offers from Cadremploi, France's job board for executives and managers (cadres). Search by job title or keyword and location, or paste Cadremploi links. Each job comes with its full description, candidate profile, salary range, contract type, exact location, job functions, industries and apply link or email. No login and no browser needed.
développeur, chef de projet, contrôleur de gestion), or paste Cadremploi URLs (search pages or job pages).Lyon, a postcode, a department such as 69 or Gironde, or a region such as Île-de-France) and filters.| Field | What it does |
|---|---|
searchQueries | Job titles or keywords, one search each. Empty with a location lists every job there. |
location | City, postcode, department or region in France. Empty means all of France. |
startUrls | Cadremploi search pages (paged through) or job pages (one job each). |
maxResults | Most jobs to save in the run (0 = no limit). |
maxResultsPerSearch | Optional cap for each search term or URL. |
contractTypes | cdi, cdd, interim, freelance, internship, apprenticeship. |
minSalary | Minimum yearly salary in euros. |
radiusKm | Distance around a city (Cadremploi's default is 20 km). |
postedWithinDays | Only jobs published in the last N days. |
sortBy | relevance or date (newest first). |
exactMatchesOnly | Skip the related jobs Cadremploi adds after the exact matches. |
includeDetails | Load the full job data (on by default). Off is faster but gives search-card data only. |
{
"searchQueries": ["contrôleur de gestion", "data engineer"],
"location": "Île-de-France",
"contractTypes": ["cdi"],
"minSalary": 50000,
"postedWithinDays": 7,
"maxResults": 200
}
One row per job. The main fields:
| Field | Description |
|---|---|
id, url | Cadremploi offer id and job page |
title, company, companyUrl, companyWebsite, companyEmployees | Job and company |
location, city, postalCode, department, region, latitude, longitude | Where the job is |
contractType, contractDuration | CDI, CDD, Intérim, Indépendant, Stage, Alternance |
salaryText, salaryMin, salaryMax, salaryCurrency, salaryPeriod | Yearly salary range when the recruiter shows it |
postedAt, postedAgo, expiresAt | Publication and expiry dates |
description, descriptionHtml, profile, experienceLevel | Full job text and the candidate profile |
jobFunctions, industries, occupation, occupationCategory | Cadremploi's classification |
applyType, applyUrl, applyEmail, reference | How to apply |
emails, phones | Contacts written in the job text, if any |
matchType | exact, nearby, similar (related occupation) or related (broader match) |
searchQuery, searchLocation, searchPage, position, searchUrl | Which search found the job |
Example (one job from a test run, description shortened):
{
"id": "156551975386967483",
"url": "https://www.cadremploi.fr/emploi/detail_offre?offreId=156551975386967483",
"title": "Commercial H/F",
"company": "NOVIAC",
"companyLogo": "https://imagedelivery.net/BN-U87wrUjbdYBHZwNH6NA/9c5e4b9c-bb6b-456a-df7e-2573065f7200/logo150",
"location": "Toute France",
"country": "France",
"contractType": "CDI",
"salaryText": null,
"postedAgo": "il y a 7 jours",
"postedAt": "2026-10-14T08:31:58.264Z",
"expiresAt": "2026-11-11T09:31:58.264Z",
"description": "Vos missions\nDéveloppement commercial : Négocier directement auprès d'une clientèle d'adhérents, de directeurs de magasins…",
"profile": "Le profil recherché\nExpérience probante en vente B2B auprès de la grande distribution ou du retail spécialisé…",
"experienceLevel": "INDIFFERENT",
"jobFunctions": ["Commercial - Vente"],
"jobFunctionGroups": ["Commercial - Ventes - Marketing - Communication"],
"industries": ["Conseil aux entreprises"],
"occupation": "commercial",
"occupationCategory": "Commerce",
"applyType": "email",
"applyEmail": "candidat@noviac.fr",
"reference": "ANM 291",
"badges": ["Populaire"],
"matchType": "exact",
"searchQuery": "commercial",
"searchLocation": "Lyon (69000)",
"searchPage": 1,
"position": 1,
"detailFetched": true,
"scrapedAt": "2026-10-21T17:19:51Z"
}
You pay $1.10 per 1,000 jobs saved ($0.0011 per job). Platform usage (compute and datacenter proxy traffic) is billed separately at the platform's normal rates and is small: a 20-job run used about $0.0005 of usage in our tests.
Jobs that could not be saved are never charged, and the run stops cleanly when your maximum charge for the run is reached.
Is it legal to scrape Cadremploi? The actor only reads job offers that Cadremploi shows publicly to every visitor. Check that your use complies with Cadremploi's terms and with data-protection law (GDPR) where personal data such as recruiter emails is involved.
Do I need an account, cookies or a proxy? No account and no cookies. The default datacenter proxy works; if the site starts refusing it, the run switches to French residential proxies on its own.
How many jobs can I get? As many as Cadremploi lists for your search; there is no cap in the actor. A search for every job in France returns tens of thousands of offers (10,000 jobs with full details took about 7 minutes in our tests).
Why are some fields empty?
Recruiters decide what they publish. Many hide the salary, only some companies have a Cadremploi company page, and nationwide offers ("Toute France") have no city or coordinates. Empty values are null or empty lists.
What are the "similar" and "related" jobs?
After the jobs that match your search, Cadremploi suggests jobs from related occupations or broader matches, just like on the website. matchType tells you which is which; turn on Exact matches only to skip them.
Can I schedule it or use it from code? Yes. Save your input as a task, schedule it, and read the results through the API or integrations.
emails and phones only contain contacts written in the job text; most offers use an apply link or form instead.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
searchQueriesarrayOptionalSearch terms
Job titles or keywords, one per line, searched like on cadremploi.fr (for example développeur, chef de projet, contrôleur de gestion). Each term is a separate search. Leave empty to list every job in the location.
locationstringOptionalLocation
French city, postcode, department (name or number) or region, for example Lyon, 75008, 69, Gironde or Île-de-France. Leave empty for all of France.
startUrlsarrayOptionalCadremploi URLs
Search result pages (www.cadremploi.fr/emploi/liste_offres?..., /emploi/liste-offres/...) or job pages (detail_offre?offreId=...) copied from your browser. Search pages are paged through; job pages give that one job.
maxResultsintegerOptionaldefault 20Max results
Most jobs to save in this run, across all searches and URLs. 0 means no limit: every job the searches return.
maxResultsPerSearchintegerOptionalMax results per search
Cap for each search term or search URL, so one broad search cannot use the whole run. 0 means no cap.
contractTypesarrayOptionalContract types
Only jobs with these contracts. Leave empty for every contract type.
minSalaryintegerOptionalMinimum yearly salary (EUR)
Only jobs paying at least this much a year in euros, for example 50000 (Cadremploi's own salary filter). Leave empty for any salary.
radiusKmintegerOptionalDistance from city (km)
Also include jobs within this many kilometres of the city (only when the location is a city). Cadremploi's default is 20 km; 0 means the city only.
postedWithinDaysintegerOptionalPosted within (days)
Only jobs published in the last N days (sorts by newest first). Leave empty or 0 for any date.
sortByenumOptionaldefault "relevance"Sort by
Relevance (Cadremploi's default order) or newest first.
exactMatchesOnlybooleanOptionaldefault falseExact matches only
Cadremploi lists jobs that match your search first, then related jobs (similar occupations or broader matches). Turn on to stop after the exact and nearby matches. Each job's matchType field says which kind it is.
includeDetailsbooleanOptionaldefault trueFull job details
Load each job's page data: full description, candidate profile, salary range, exact address and coordinates, job functions and industries, apply link or email, expiry date and company details. Turn off for faster runs with the search-card data only (title, company, city, contract, salary text, summary, posted age).
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies work for Cadremploi. The run switches to French residential proxies by itself if the site keeps refusing datacenter addresses.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| id | string | null | Cadremploi's offer id (offreId). |
| url | string | null | Job page on www.cadremploi.fr. |
| title | string | null | Job title. |
| company | string | null | Hiring company or recruitment agency. |
| companyId | string | null | Cadremploi's company id. |
| companyUrl | string | null | The company's page on Cadremploi, when it has one. |
| companyLogo | string | null | Logo image URL. |
| companyWebsite | string | null | Company website from its Cadremploi page. |
| companyEmployees | number | null | Headcount from the company's Cadremploi page. |
| companyDescription | string | null | How the company presents itself in the job. |
| companyBadges | array | null | Badges such as Recruteur actif. |
| location | string | null | Location as Cadremploi shows it. |
| city | string | null | City. |
| postalCode | string | null | Postcode. |
| department | string | null | French department. |
| region | string | null | French region. |
| country | string | null | Country. |
| latitude | number | null | Latitude of the job location. |
| longitude | number | null | Longitude of the job location. |
| contractType | string | null | CDI, CDD, Intérim, Indépendant, Stage, Apprentissage/Alternance... |
| contractDuration | string | null | Duration of a fixed-term contract, when given. |
| salaryText | string | null | Salary as shown, for example 40K€ - 60K€. |
| salaryMin | number | null | Lower bound of the yearly salary. |
| salaryMax | number | null | Upper bound of the yearly salary. |
| salaryCurrency | string | null | Salary currency (EUR). |
| salaryPeriod | string | null | YEAR when a salary is given. |
| postedAgo | string | null | Posting age as shown, for example il y a 2 jours. |
| postedAt | string | null | Publication date and time (ISO 8601). |
| expiresAt | string | null | When the offer expires (ISO 8601). |
| snippet | string | null | The summary shown on the search page. |
| description | string | null | Full job description as plain text. |
| descriptionHtml | string | null | Full job description as HTML. |
| profile | string | null | The 'profil recherché' section. |
| experienceLevel | string | null | Experience level the recruiter asks for. |
| graduatesWelcome | boolean | null | True when recent graduates may apply. |
| jobFunctions | array | null | Cadremploi job functions. |
| jobFunctionGroups | array | null | Parent groups of the job functions. |
| industries | array | null | Industries (secteurs). |
| occupation | string | null | Occupation the site classified the job as. |
| occupationCategory | string | null | Category of that occupation. |
| applyType | string | null | How to apply: redirect (company site), email or Cadremploi form. |
| applyUrl | string | null | Where to apply (the recruiter's site, or the Cadremploi job page). |
| applyEmail | string | null | Application email address, when the recruiter uses one. |
| reference | string | null | The recruiter's job reference. |
| emails | array | null | Email addresses written in the description or profile. |
| phones | array | null | Phone numbers written in the description or profile. |
| badges | array | null | Offer badges such as Nouveau. |
| sourceSite | string | null | Where Cadremploi got the offer (its feed name). |
| status | string | null | ONLINE while the offer is live. |
| matchType | string | null | exact, nearby, similar (related occupation) or related (broader match). |
| searchQuery | string | null | The search term that found the job. |
| searchLocation | string | null | The location of that search. |
| searchPage | number | null | Result page the job was on. |
| position | number | null | Position in the search results. |
| searchUrl | string | null | The search the job came from. |
| detailFetched | boolean | null | True when the job's full details were loaded. |
| scrapedAt | string | null | When the job was saved (UTC). |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Job | One saved job listing. | $0.0011 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('openrole/cadremploi-scraper').call({
"searchQueries": [
"développeur"
],
"maxResults": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run openrole/cadremploi-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=openrole/cadremploi-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Search term plus a city: commercial jobs in and around Lyon with full details.
Search term, region, contract type, minimum salary and newest first.
Paste Cadremploi search result pages; each is paged through.
All jobs in a department without keywords, search-card data only.
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.