APEC.fr Scraper
Pricing
from $1.50 / 1,000 results
APEC.fr Scraper
Scrape apec.fr for structured French executive job data: titles, companies, salaries, full descriptions & apply URLs. 100k+ listings. No API key required.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
Unfenced Group
Maintained by CommunityActor stats
1
Bookmarked
10
Total users
3
Monthly active users
20 hours ago
Last modified
Categories
Share
APEC Scraper — France Executive Jobs

Extract structured job listings from apec.fr — France's national agency for executive employment. The go-to board for cadre and management roles across all sectors and regions. Filter by keyword, location, sector, contract type, experience level, and remote work. No API key required.
$1.00 per 1,000 results — you only pay for items pushed to the dataset.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQuery | string | développeur | Job title or keywords to search for |
location | string | (all France) | City or region, e.g. Paris, Lyon, Bordeaux |
contractType | select | (any) | CDI, CDD, Freelance/Mission, Stage/Alternance |
experienceLevel | select | (any) | Débutant, 1-5 ans, 5-10 ans, 10+ ans |
remoteWork | select | (any) | Partiel, Full, Aucun |
sector | string | (any) | Industry sector keyword, e.g. Informatique, Banque, Industrie |
daysOld | select | (any) | 1, 7, or 30 — only return jobs posted within N days |
maxResults | integer | 5 | Maximum number of listings to return |
fetchDetails | boolean | false | Fetch full job description, skills, and all detail fields |
skipReposts | boolean | false | Skip listings already seen in previous runs |
startUrls | array | (none) | Direct APEC job URLs. Overrides all search filters |
Output fields
Always present
| Field | Type | Description |
|---|---|---|
id | string | APEC internal offer ID |
numeroOffre | string | APEC offer reference, e.g. 178206207W |
url | string | Direct link to the listing on apec.fr |
title | string | Job title |
company | string | null | Hiring company name (null for confidential postings) |
isConfidential | boolean | True if the employer is anonymised |
locationText | string | null | Location as displayed by APEC, e.g. Paris 01 - 75 |
city | string | null | Parsed city name |
department | string | null | French département code, e.g. 75, 69 |
region | string | null | French region name (always null — not provided by APEC API) |
country | string | Country (always France) |
latitude | number | null | Geocoordinate latitude |
longitude | number | null | Geocoordinate longitude |
contractTypeId | integer | null | APEC internal contract type code |
contractType | string | null | Human-readable contract type: CDI, CDD, Freelance/Mission, Stage/Alternance |
remoteWorkId | integer | null | APEC internal remote work code |
remoteWork | string | null | Remote work label: Partiel, Full, Aucun |
sectorId | integer | null | APEC internal sector code |
sector | string | null | Human-readable sector name, e.g. Informatique / Télécoms |
salaryText | string | null | Salary as displayed, e.g. 45-55 k€ annuel |
salaryMin | number | null | Parsed minimum salary in EUR (null if not published) |
salaryMax | number | null | Parsed maximum salary in EUR (null if not published) |
salaryPeriod | string | null | YEAR, MONTH, or HOUR |
currency | string | Always EUR |
publishDate | string | null | Publication date, YYYY-MM-DD (Paris timezone) |
publishDateISO | string | null | Same as publishDate |
summary | string | One-line summary of title, location, and salary |
source | string | Always apec.fr |
scrapedAt | string | ISO 8601 timestamp of scrape |
isRepost | boolean | True if this listing was seen in a previous run |
changeStatus | string | NEW, UPDATED, UNCHANGED, or REAPPEARED across runs |
contentHash | string | MD5 hash of key fields — changes when content changes |
With fetchDetails: true
| Field | Type | Description |
|---|---|---|
description | string | null | Full job description as raw HTML |
descriptionText | string | null | Full description as plain text |
descriptionMarkdown | string | null | Full description converted to Markdown |
companyDescription | string | null | Company description section (plain text) |
experienceLevelId | integer | null | APEC internal experience level code |
experienceLevel | string | null | Human-readable level: Débutant, 1-5 ans, 5-10 ans, 10+ ans |
isPartTime | boolean | null | True if the position is part-time |
numberOfPositions | integer | null | Number of open positions for this listing |
jobReference | string | null | Client-side job reference code |
skills | array | Structured skills array — see below |
applyUrl | string | null | Direct application URL (null when employer uses APEC's internal application form) |
applicationMethod | string | null | Application method code from APEC |
firstPublishDateISO | string | null | Date the listing was first published (before reposts) |
Skills array structure (each element):
| Field | Type | Description |
|---|---|---|
label | string | Skill name in French, e.g. Python, Anglais, Docker |
type | string | null | Skill category: SAVOIR_FAIRE, LANGUE, etc. |
level | integer | null | APEC proficiency level code |
Example output record
{"id": "178853125","numeroOffre": "178853125W","url": "https://www.apec.fr/candidat/recherche-emploi.html/emploi/offre-emploi/detail-offre/178853125W","title": "Développeur Python/Django DevOps F/H","company": "AKKODIS FRANCE SAS","companyDescription": "Premier cabinet de conseil en ingénierie et IT...","isConfidential": false,"locationText": "Bordeaux - 33","city": "Bordeaux","department": "33","region": null,"country": "France","latitude": 44.8575,"longitude": -0.5734,"contractTypeId": 101888,"contractType": "CDI","remoteWorkId": 20765,"remoteWork": "Partiel","sectorId": 101572,"sector": "Informatique / Télécoms","salaryText": "45-55 k€ annuel","salaryMin": 45000,"salaryMax": 55000,"salaryPeriod": "YEAR","currency": "EUR","experienceLevelId": 20043,"experienceLevel": "1-5 ans","isPartTime": false,"numberOfPositions": 1,"jobReference": "JN-022026-7342088333","skills": [{ "label": "Python", "type": "SAVOIR_FAIRE", "level": 599734 },{ "label": "Django", "type": "SAVOIR_FAIRE", "level": 599734 },{ "label": "Docker", "type": "SAVOIR_FAIRE", "level": 599736 },{ "label": "Kubernetes", "type": "SAVOIR_FAIRE", "level": 599736 },{ "label": "Anglais", "type": "LANGUE", "level": 102458 }],"applyUrl": "https://www.apec.fr/...","applicationMethod": "URL","description": "<p>La ligne de service Consulting...</p>","descriptionText": "La ligne de service Consulting...","descriptionMarkdown": "La ligne de service Consulting...","publishDate": "2026-06-10","publishDateISO": "2026-06-10","firstPublishDateISO": "2026-06-10","summary": "Développeur Python/Django DevOps F/H — Bordeaux - 33 (45-55 k€ annuel)","source": "apec.fr","scrapedAt": "2026-06-10T15:30:00.000Z","isRepost": false,"originalPublishDate": null,"originalUrl": null,"changeStatus": "NEW","contentHash": "a3f9b2c1d4e5f678"}
Examples
Search for IT roles in Paris:
{"searchQuery": "développeur","location": "Paris","maxResults": 100}
CDI finance roles with full details:
{"searchQuery": "analyste financier","contractType": "CDI","sector": "Banque","fetchDetails": true,"maxResults": 50}
Full remote senior roles posted in the last 7 days:
{"searchQuery": "chef de projet","remoteWork": "Full","experienceLevel": "5-10 ans","daysOld": "7","maxResults": 200}
Scrape specific listings by URL:
{"startUrls": [{ "url": "https://www.apec.fr/candidat/recherche-emploi.html/emploi/offre-emploi/detail-offre/178206207W" }],"fetchDetails": true}
Daily incremental feed (schedule daily):
{"searchQuery": "data engineer","daysOld": "1","skipReposts": true,"fetchDetails": true,"maxResults": 500}
💰 Pricing
$1.00 per 1,000 results — charged only for items successfully pushed to the dataset.
| Results | Cost |
|---|---|
| 100 | ~$0.10 |
| 1,000 | ~$1.00 |
| 10,000 | ~$10.00 |
| 100,000 | ~$100.00 |
Flat-rate job data subscriptions typically charge $29–$49/month regardless of usage. Pay only for what you need.
Technical details
- Source: apec.fr — APEC public webservices API
- Memory: 512 MB
- Repost storage: KeyValueStore
apec-fr-scraper-job-dedup, 90-day TTL - Retry: Automatic retry on network errors, exponential backoff, 3 attempts per request
Need a custom scraper?
Unfenced Group builds Apify actors for any website — for free.
If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.
Get in touch: www.unfencedgroup.nl