APEC Jobs Scraper[💰$0.75] - French Executive Jobs, Salaries avatar

APEC Jobs Scraper[💰$0.75] - French Executive Jobs, Salaries

Pricing

from $0.75 / 1,000 results

Go to Apify Store
APEC Jobs Scraper[💰$0.75] - French Executive Jobs, Salaries

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

Corvuslab

Maintained by Community

Actor 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.

GroupFields
Offer & employertitle, company, companyBrand, companyLegalName, companyId, companyLogo, isConfidential, url, id, offerId, employerReference
Salary & contractsalaryText, salaryMin, salaryMax, salaryCurrency, salaryPeriod, salaryNegotiable, contractType, contractDurationMonths, partTime, remoteWork, startDate, numberOfPositions, travelZone
APEC classification: each a label plus its …Idsector, industry (NAF), experienceLevel, jobRole, jobFunction, contractType, remoteWork, positionType, travelZone, educationLevel, postingOrigin
Full advertjobDescription, candidateProfile, companyDescription, recruitmentProcess, the whole advert as description (plain text), descriptionHtml and descriptionMarkdown, skills, skillDetails (hard/soft/language, with level), snippet
Place, recruiter & applylocation, department, region, latitude, longitude, contactName, contactTitle, applyUrl, applyMethod, and the posting company's address (companyStreetAddress, companyPostalCode, companyCity)
Freshness & signalspostedAt, 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. firstPublishedAt and isRepublished show 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

  1. 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.
  2. Set Max results (0 = every matching offer) and keep Fetch the full advert on for the rich fields.
  3. Optionally, turn on incremental mode and a notification channel, then Schedule the run.
  4. 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.

FieldWhat it does
searchTermsKeywords as you'd type them on apec.fr. Each one runs as its own search.
locationsTowns, "Paris 15", departments ("75", "Rhône", "2A"), regions ("Bretagne") or countries ("Allemagne"). Empty = France and abroad.
radiusKmWiden each town to everything within 0–200 km.
startUrlsapec.fr search URLs (their filters are used as-is) or offer URLs. Offer URLs are read first.
maxResultsCap on offers delivered across all searches (default 25; 0 = no limit).
sortBydate (newest first, best for monitoring) or relevance.

🎚️ Filters

FieldWhat it does
contractTypespermanent (CDI), fixedTerm (CDD), workStudy (alternance), temporary (intérim), internship (stage).
contractDurationCDD / intérim length: 1to6, 7to12 or 13plus months.
experienceLevelsentry (débutant), 3to5, 6to9, 10plus years.
postedWithin24h, 7d or 30d.
remoteWorkoccasional, partial (hybrid) or full.
minSalaryK / maxSalaryKSalary band in k€ gross per year. Offers whose range overlaps it are kept.
employerTypescompany, recruitmentAgency, staffingAgency, itServices (ESN), partner.
excludePartnerListingsLeave out offers resold by partner job boards.
excludeKeywords / excludeCompaniesLeave out offers whose title or company contains any of these.
requireSalaryKeep only offers that publish a salary.
positionStatusprivateSector, publicSector, supervisorTechnician.
sectors / jobFunctions / jobRolesAPEC's 29 sectors, 56 job functions, and ~450 job roles by name (e.g. "Data scientist").

📄 Output, ♻️ monitoring, 🔔 notifications and ⚙️ advanced

FieldWhat it does
includeDetailsFetch the full advert (on by default). Turn it off for the fastest runs, with search-result fields only.
descriptionFormat / descriptionMaxLengthall, text, html or markdown, optionally cut to N characters.
compact / excludeEmptyFields16 core fields only, and/or drop empty fields.
incrementalMode, stateKeyEmit only what changed since the last run of the same search.
emitUnchanged / emitExpired / skipRepostsAlso emit unchanged or expired offers, or leave out reposts.
telegramToken + telegramChatId, slackWebhookUrl, discordWebhookUrl, webhookUrl + webhookHeadersAlert channels. Credentials are secret inputs: encrypted, masked and never logged.
notificationLimit / notifyOnlyChangesOffers listed per chat message, and alerts on new, updated or reappeared offers only.
proxyConfiguration, detailConcurrency, maxRequestRetries, ignoreUrlFailuresConnection 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 recordsYou save
5 %5095 %
15 %15085 %
30 %30070 %
  1. Set your keywords, places and filters, and keep Sort by on newest first.
  2. Turn on Incremental mode and run once to record the baseline.
  3. Add a Schedule (e.g. every morning), plus an alert channel with Alert only on changes on.
  4. 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

ChannelWhat to fill in
✈️ TelegramtelegramToken (from @BotFather) + telegramChatId
💬 SlackslackWebhookUrl
🎮 DiscorddiscordWebhookUrl
🪝 WebhookwebhookUrl: 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 ApifyClient
client = 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.


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