APEC Jobs Scraper[💰$0.75] - French Executive Jobs, Salaries
Pricing
from $0.75 / 1,000 results
APEC Jobs Scraper[💰$0.75] - French Executive Jobs, Salaries
Scrape apec.fr, France's job board for cadres, executives and engineers, with every site filter: places + radius, salary range, full advert, skills with level, recruiter contact, first-publication date and every APEC code as a readable label next to its id. Incremental monitoring + alerts.
Pricing
from $0.75 / 1,000 results
Rating
0.0
(0)
Developer
Corvuslab
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
What does APEC Jobs Scraper do?
APEC Jobs Scraper extracts job offers from apec.fr, France's job board for cadres (executives, managers and engineers), which carries around 110,000 live offers. It supports every filter apec.fr's own search has and returns the full advert in 77 structured fields: salary range, contract, remote-work level, skills with their required level, the named recruiter contact, the real first-publication date, and APEC's sector, NAF industry, job role and job function. Every APEC code arrives as a readable French label next to its raw APEC id. You can filter on the labels in a spreadsheet and still join on stable ids.
Enter keywords, places and filters, or paste apec.fr search and offer URLs, and get every matching offer as a clean record in JSON, CSV, Excel, through the API or as compact output for AI agents. No APEC account or login is needed.
New to Apify? Sign up free and use the included monthly platform credit to try this Actor. No credit card needed.
What data can you extract from apec.fr?
A standard record has 77 fields. Incremental mode adds 8 change-tracking fields.
| Group | Fields |
|---|---|
| Offer & employer | title, company, companyBrand, companyLegalName, companyId, companyLogo, isConfidential, url, id, offerId, employerReference |
| Salary & contract | salaryText, salaryMin, salaryMax, salaryCurrency, salaryPeriod, salaryNegotiable, contractType, contractDurationMonths, partTime, remoteWork, startDate, numberOfPositions, travelZone |
APEC classification: each a label plus its …Id | sector, industry (NAF), experienceLevel, jobRole, jobFunction, contractType, remoteWork, positionType, travelZone, educationLevel, postingOrigin |
| Full advert | jobDescription, candidateProfile, companyDescription, recruitmentProcess, the whole advert as description (plain text), descriptionHtml and descriptionMarkdown, skills, skillDetails (hard/soft/language, with level), snippet |
| Place, recruiter & apply | location, department, region, latitude, longitude, contactName, contactTitle, applyUrl, applyMethod, and the posting company's address (companyStreetAddress, companyPostalCode, companyCity) |
| Freshness & signals | postedAt, firstPublishedAt, isRepublished, updatedAt, isPartnerListing, lowApplicantCount, qualityChecked, scrapedAt |
| Monitoring (incremental mode) | changeType (NEW / UPDATED / REAPPEARED / UNCHANGED / EXPIRED), isRepost, repostOfId, repostDetectedAt, firstSeenAt, lastSeenAt, previousSeenAt, expiredAt |
Key features
- 🎚️ Every apec.fr filter, applied on apec.fr. Contract type and length, experience, posting age, remote work, salary band in k€, employer type, position status, 29 sectors, 56 job functions and ~450 job roles. You are never charged for offers your filters leave out.
- 🙅 Extra filters apec.fr doesn't have. Exclude title words ("stage", "junior"), exclude companies or agencies, and keep only offers that show a salary. Offers left out are never charged.
- 🏷️ Every APEC code decoded. 11 classifications come as a readable label and the raw APEC id, so you get readable tables and stable join keys from the same record.
- 📍 Places the way you'd type them. "Lyon", "Paris 15", "Rhône", "75", "2A", "Bretagne", "Allemagne". Add a radius of up to 200 km around any town.
- 🚫 Partner-board resales left out at the source. About two in five apec.fr offers are imported from other job boards, often under the board's name. One switch leaves them out before they are read, and they are never charged.
- 🕰️ The real age of an offer.
firstPublishedAtandisRepublishedshow which offers were quietly republished to look fresh. Repost detection catches offers deleted and posted again under a new number. - 👤 Named recruiter contact. The contact's name, and their job title when the advert gives one.
- ♻️ Incremental monitoring and alerts. Only new and changed offers are emitted and charged. Alerts go to Telegram, Slack, Discord or any webhook.
- 🤖 Compact mode for AI agents. 16 core fields per offer, with optional dropping of empty fields.
🚀 How to scrape apec.fr
- Enter one or more keywords (e.g.
data engineer) and places (e.g.Lyon), then pick filters. Or paste apec.fr URLs into Start URLs. - Set Max results (0 = every matching offer) and keep Fetch the full advert on for the rich fields.
- Optionally, turn on incremental mode and a notification channel, then Schedule the run.
- Click Start, then download the results as JSON, CSV or Excel or pull them from the API.
Quick-start example input
{"searchTerms": ["data engineer"],"locations": ["Lyon"],"radiusKm": 30,"contractTypes": ["permanent"],"excludePartnerListings": true,"maxResults": 100}
This returns up to 100 permanent (CDI) data-engineering offers within 30 km of Lyon, newest first, without partner-board resales. Each one has its full advert, salary range, skills and recruiter contact.
Input
There are 44 inputs, grouped as in the editor. All of them are optional: an empty run returns the 25 newest offers.
🔎 Search
| Field | What it does |
|---|---|
searchTerms | Keywords as you'd type them on apec.fr. Each one runs as its own search. |
locations | Towns, "Paris 15", departments ("75", "Rhône", "2A"), regions ("Bretagne") or countries ("Allemagne"). Empty = France and abroad. |
radiusKm | Widen each town to everything within 0–200 km. |
startUrls | apec.fr search URLs (their filters are used as-is) or offer URLs. Offer URLs are read first. |
maxResults | Cap on offers delivered across all searches (default 25; 0 = no limit). |
sortBy | date (newest first, best for monitoring) or relevance. |
🎚️ Filters
| Field | What it does |
|---|---|
contractTypes | permanent (CDI), fixedTerm (CDD), workStudy (alternance), temporary (intérim), internship (stage). |
contractDuration | CDD / intérim length: 1to6, 7to12 or 13plus months. |
experienceLevels | entry (débutant), 3to5, 6to9, 10plus years. |
postedWithin | 24h, 7d or 30d. |
remoteWork | occasional, partial (hybrid) or full. |
minSalaryK / maxSalaryK | Salary band in k€ gross per year. Offers whose range overlaps it are kept. |
employerTypes | company, recruitmentAgency, staffingAgency, itServices (ESN), partner. |
excludePartnerListings | Leave out offers resold by partner job boards. |
excludeKeywords / excludeCompanies | Leave out offers whose title or company contains any of these. |
requireSalary | Keep only offers that publish a salary. |
positionStatus | privateSector, publicSector, supervisorTechnician. |
sectors / jobFunctions / jobRoles | APEC's 29 sectors, 56 job functions, and ~450 job roles by name (e.g. "Data scientist"). |
📄 Output, ♻️ monitoring, 🔔 notifications and ⚙️ advanced
| Field | What it does |
|---|---|
includeDetails | Fetch the full advert (on by default). Turn it off for the fastest runs, with search-result fields only. |
descriptionFormat / descriptionMaxLength | all, text, html or markdown, optionally cut to N characters. |
compact / excludeEmptyFields | 16 core fields only, and/or drop empty fields. |
incrementalMode, stateKey | Emit only what changed since the last run of the same search. |
emitUnchanged / emitExpired / skipReposts | Also emit unchanged or expired offers, or leave out reposts. |
telegramToken + telegramChatId, slackWebhookUrl, discordWebhookUrl, webhookUrl + webhookHeaders | Alert channels. Credentials are secret inputs: encrypted, masked and never logged. |
notificationLimit / notifyOnlyChanges | Offers listed per chat message, and alerts on new, updated or reappeared offers only. |
proxyConfiguration, detailConcurrency, maxRequestRetries, ignoreUrlFailures | Connection settings. Keep the defaults. |
More example inputs
Senior finance roles in Paris and the Hauts-de-Seine, salary shown, no interim missions:
{"searchTerms": ["contrôleur de gestion", "directeur financier"],"locations": ["75", "92"],"experienceLevels": ["6to9", "10plus"],"minSalaryK": 60,"requireSalary": true,"excludeKeywords": ["intérim"],"maxResults": 0}
A daily watch on IT offers in Brittany, with Slack alerts on changes only:
{"locations": ["Bretagne"],"jobFunctions": ["101833"],"incrementalMode": true,"notifyOnlyChanges": true,"slackWebhookUrl": "https://hooks.slack.com/services/...","maxResults": 0}
Output
Each dataset item is one apec.fr offer. Here is a real record, trimmed for length:
{"id": "179395587W","title": "Architecte Data F/H","company": "IPPON Technologies","url": "https://www.apec.fr/candidat/recherche-emploi.html/emploi/detail-offre/179395587W","location": "Marseille 01 - 13","department": "13","region": "PACA","latitude": 43.2999856,"longitude": 5.3827158,"salaryText": "65 - 70 k€ brut annuel","salaryMin": 65000,"salaryMax": 70000,"salaryPeriod": "year","contractType": "CDI","contractTypeId": 101888,"remoteWork": "Télétravail partiel possible","remoteWorkId": 20765,"sector": "Activités informatiques","sectorId": 101753,"industry": "CONSEIL EN SYSTÈMES ET LOGICIELS INFORMATIQUES","industryId": 101569,"experienceLevel": "Minimum 10 ans","jobRole": "Architecte Big Data","jobRoleId": 600072,"jobFunction": "Système, réseaux, données","positionType": "Cadre du secteur privé","positionTypeId": 101900,"isPartnerListing": false,"qualityChecked": true,"postedAt": "2026-10-14T03:38:09+00:00","firstPublishedAt": "2026-09-09T17:03:20+00:00","isRepublished": true,"skills": ["Snowflake", "Apache Kafka", "Spark", "Python", "Scala", "SQL"],"skillDetails": [{ "name": "Snowflake", "kind": "hardSkill", "level": "Confirmé" },{ "name": "Curiosité", "kind": "softSkill", "level": null }],"candidateProfile": "Vous êtes de tempérament curieux, force de proposition…","companyLegalName": "IPPON TECHNOLOGIES","companyCity": "PARIS 16","contactName": "Alexis Cohen","applyUrl": "https://www.jobposting.pro/emploi-2694530-113#postuler","applyMethod": "URL_ONLY","scrapedAt": "2026-10-23T11:20:56.445070+00:00"}
The offer shows as published on 14 October, but firstPublishedAt shows it has been on apec.fr since 9 September. Missing values are null in standard mode. Compact mode keeps 16 core fields. The Output tab includes an Overview table with title, company, place, contract, salary, remote work, experience, date and a link to the offer.
♻️ How to monitor apec.fr with incremental mode
Schedule the Actor with incremental mode on. Each run compares against the previous run of the same search and emits only NEW, UPDATED and REAPPEARED offers, plus EXPIRED ones if you ask. Unchanged offers are recognised from the search results before their advert is read, so they cost nothing.
| Daily churn (of 1,000 tracked offers) | Billable records | You save |
|---|---|---|
| 5 % | 50 | 95 % |
| 15 % | 150 | 85 % |
| 30 % | 300 | 70 % |
- Set your keywords, places and filters, and keep Sort by on newest first.
- Turn on Incremental mode and run once to record the baseline.
- Add a Schedule (e.g. every morning), plus an alert channel with Alert only on changes on.
- To catch offers that close, turn on Include expired offers and set Max results to 0 so each run reads the whole search.
🔔 How to set up apec.fr alerts
| Channel | What to fill in |
|---|---|
| ✈️ Telegram | telegramToken (from @BotFather) + telegramChatId |
| 💬 Slack | slackWebhookUrl |
| 🎮 Discord | discordWebhookUrl |
| 🪝 Webhook | webhookUrl: structured JSON with every matched offer, for n8n, Make or Zapier |
Each channel works independently, so one broken channel never stops the scrape or the others.
💡 What can you do with apec.fr data?
Executive recruitment and headhunting
See which companies are hiring cadres, for which roles, where and at what salary. The named recruiter contact gives you the hiring side.
B2B lead generation
A company posting five data roles has a budget and a need. Build prospect lists from company, legal name, NAF industry and address, with direct employers only.
Salary benchmarking for French managers
About 60 % of offers publish a salary range, parsed into numeric min and max. Slice it by job role, experience, region and contract type.
Labour-market and skills research
Track skill demand, remote-work adoption and contract mix across sectors and regions. Stable APEC ids keep a time series clean even when label wording changes.
Job-search automation and AI pipelines
Watch a precise search and get a Telegram message when a fresh offer lands, or feed compact JSON into an LLM, MCP tool or vector store.
💰 How much does it cost to scrape apec.fr?
This Actor uses pay-per-event pricing: a small fee per run plus a fee per offer in your dataset. The Pricing tab shows the current rates. Offers you never receive are never charged. That covers offers left out by your filters, partner resales you excluded and unchanged offers in incremental mode. If you only need titles, companies, places, salaries and dates, turn off the full advert for the fastest runs.
🔌 Integrations & export
Export to JSON, CSV, Excel or HTML, or use the REST API and the JavaScript and Python clients. Schedule runs, connect Google Sheets, Slack, Make, Zapier or n8n, or call the Actor as an MCP tool from an AI agent.
For the broader French job market, see HelloWork Jobs Scraper (corvuslab/hellowork-scraper).
🔗 Using the API
from apify_client import ApifyClientclient = ApifyClient("<YOUR_API_TOKEN>")run = client.actor("corvuslab/apec-jobs-scraper").call(run_input={"searchTerms": ["chef de projet informatique"],"locations": ["Ile-de-France"],"contractTypes": ["permanent"],"maxResults": 50,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["title"], item["company"], item["salaryText"], item["url"])
❓ FAQ
How many offers can I get? The whole board if you want it: set maxResults to 0. Search depth isn't capped, so a broad search reads every matching offer. Duplicates across keywords and places are removed.
Why is salaryMin empty on some offers? About 60 % of offers publish a salary range. The rest say "A négocier" (salaryNegotiable: true) or "Non renseignée". apec.fr's salary filter keeps the negotiable ones. Add requireSalary to drop them.
What is a partner offer? An offer apec.fr imports from another job board. Its company is often the board's name rather than the real employer. isPartnerListing flags these offers, and excludePartnerListings leaves them out at the source.
Is the address where the job is? No. location, department, region and the coordinates give the job's place. companyStreetAddress, companyPostalCode and companyCity are the address of the account that posted the offer, such as a head office or a recruitment agency, and it is often in another town.
Why do some offers have no apply link? About half send candidates to an external page (applyUrl). The rest are applied to on apec.fr, and applyMethod says which. APEC adverts carry no recruiter e-mail or phone number, so none are returned.
What's the difference between postedAt and firstPublishedAt? postedAt is the date apec.fr shows, which employers can refresh to move an offer back to the top. firstPublishedAt is when the offer first appeared, and isRepublished flags the refreshed ones.
Which fields are often empty? Remote work is on about half of offers. Contract length is set only on non-CDI contracts. Education level appears mainly on internships and work-study offers. Start date and recruitment process appear on a small minority.
Can I search outside France? Yes. Type a country (e.g. "Allemagne") in Places, or leave Places empty for France and abroad together.
⚖️ Is it legal to scrape apec.fr?
This Actor collects only publicly available job offers. You're responsible for how you use the data, in particular personal information such as recruiter names, and for complying with apec.fr's terms and applicable law, including the GDPR. This Actor is not affiliated with, endorsed by or sponsored by APEC (Association pour l'emploi des cadres).
Keywords: apec scraper · apec.fr scraper · apec jobs scraper · apec api · scrape apec.fr · French executive jobs · cadre jobs France · emploi cadre · France job scraper · salary benchmarking France · recruiter contact · job monitoring · lead generation · export to CSV · export to Excel · no-code scraper · MCP tool for AI agents