APEC Jobs Scraper
Pricing
Pay per event
APEC Jobs Scraper
Scrape APEC.fr executive jobs by keyword, location, salary, contract type, and freshness with descriptions, skills, and apply URLs.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Extract executive and cadre job offers from APEC.fr with clean recruiter-ready fields.
APEC Jobs Scraper is an Apify Actor for collecting French APEC job listings by keyword, location, department, contract filters, salary filters, and posting freshness. It returns structured records with titles, companies, locations, salary text, publication dates, job URLs, application links, descriptions, profile requirements, company text, skills, and recruiter/contact names when APEC exposes them publicly.
What does APEC Jobs Scraper do?
APEC Jobs Scraper turns public APEC.fr search results into a structured dataset.
It can:
- π Search APEC jobs by keyword such as
data,directeur financier, orproduct manager. - π Filter by APEC location or department IDs such as
75for Paris. - π Fetch detail records for full job descriptions and profile requirements.
- π§βπΌ Extract public recruiter names when visible in the APEC detail response.
- π§ Extract skills listed by APEC for each job offer.
- π Support incremental monitoring with
incrementalSince. - π Preserve source URLs and source query metadata for audits.
Who is it for?
This actor is built for teams that monitor French executive hiring demand.
Typical users include:
- π§βπΌ Recruiters monitoring APEC executive openings.
- π’ Staffing agencies building lead lists for hiring companies.
- π Labor-market intelligence teams tracking demand by role and region.
- π° Job boards enriching their French cadre job inventory.
- π€ Automation teams feeding jobs into CRMs, spreadsheets, alerts, or databases.
Why use it?
APEC search pages are designed for humans, not repeatable pipelines. This actor wraps the public APEC job search API and normalizes the result into a dataset that can be exported as JSON, CSV, Excel, RSS, or sent to integrations.
Use it when you need repeatable extraction, deduplication keys, and stable field names instead of manual copy-paste from APEC.fr.
Data you can extract
| Field | Description |
|---|---|
offerNumber | Public APEC offer number |
title | Job title |
company | Company or establishment name |
location | Primary location |
locations | All public APEC locations |
salaryText | Salary text shown by APEC |
publicationDate | Latest publication date |
firstPublicationDate | First publication date when available |
jobUrl | APEC detail URL |
applicationUrl | APEC application URL |
descriptionText | Clean text job description |
descriptionHtml | Original public HTML description |
profileText | Candidate profile section |
companyDescriptionText | Company presentation text |
skills | Skills exposed by APEC |
recruiterName | Public recruiter name when visible |
sourceQuery | Search criteria used to find the job |
How much does it cost to scrape APEC jobs?
The actor uses pay-per-event pricing.
- Start event: a small one-time run fee.
- Item event: charged per saved APEC job offer.
The default package contains tiered PPE pricing. Final prices are validated from cloud run costs before QA handoff and kept synchronized with platform pricing.
Input options
You can run the actor with either APEC search URLs or explicit criteria.
APEC search URLs
Paste one or more URLs from APEC search, for example:
{"startUrls": [{ "url": "https://www.apec.fr/candidat/recherche-emploi.html/emploi?motsCles=data&lieux=75" }],"maxItems": 100,"fetchDetails": true}
Keyword search
Use keywords and location IDs directly:
{"keywords": ["data", "product manager"],"locations": ["75"],"maxItems": 100,"fetchDetails": true}
Advanced filters
The actor accepts raw APEC nomenclature IDs for advanced filters.
contractTypeIdsexperienceLevelIdssectorIdsteleworkTypeIdsminSalaryKeurmaxSalaryKeurpostedSince
The easiest way to discover exact APEC IDs is to set filters on APEC.fr and paste the resulting search URL into startUrls.
Incremental monitoring
Use incrementalSince to skip jobs older than a date.
Example:
{"keywords": ["data engineer"],"locations": ["75"],"incrementalSince": "2026-01-01T00:00:00Z","maxItems": 250}
This is useful for scheduled runs where you only want newly published offers.
Output example
{"offerNumber": "178952014W","title": "Expert·e Systèmes Linux - CDI F/H","company": "BLUE SOFT","location": "Paris 01 - 75","salaryText": "A négocier","publicationDate": "2026-06-26T21:05:05.000+0000","jobUrl": "https://www.apec.fr/candidat/recherche-emploi.html/emploi/detail-offre/178952014W","skills": ["Mesure de la performance"],"sourceQuery": { "keywords": "data", "locations": ["75"] }}
How to run
- Open the actor on Apify.
- Paste an APEC search URL or enter keywords.
- Set
maxItems. - Keep
fetchDetailsenabled if you need full descriptions and skills. - Run the actor.
- Export the dataset or connect it to an integration.
Tips for better results
- β Start with a real APEC search URL when you need exact filters.
- β
Keep
maxItemssmall for testing. - β
Use
incrementalSincefor daily monitoring. - β
Turn off
fetchDetailsfor faster listing-only scans. - β
Use
offerNumberas the deduplication key in downstream systems.
Integrations
APEC Jobs Scraper works with Apify integrations and webhooks.
Common workflows:
- Send new APEC jobs to Google Sheets.
- Push executive hiring leads into Airtable.
- Trigger Slack alerts for new jobs matching a keyword.
- Store daily snapshots in a data warehouse.
- Enrich CRM accounts with current hiring demand.
API usage with Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/apec-jobs-scraper').call({keywords: ['data'],locations: ['75'],maxItems: 100,fetchDetails: true,});console.log(run.defaultDatasetId);
API usage with Python
from apify_client import ApifyClientclient = ApifyClient('MY-APIFY-TOKEN')run = client.actor('automation-lab/apec-jobs-scraper').call(run_input={'keywords': ['data'],'locations': ['75'],'maxItems': 100,'fetchDetails': True,})print(run['defaultDatasetId'])
API usage with cURL
curl -X POST "https://api.apify.com/v2/acts/automation-lab~apec-jobs-scraper/runs?token=$APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"keywords":["data"],"locations":["75"],"maxItems":100,"fetchDetails":true}'
MCP usage
Use the Apify MCP server to call the actor from Claude Desktop or Claude Code.
Add the actor tool in Claude Code:
$claude mcp add apify-apec-jobs "https://mcp.apify.com/?tools=automation-lab/apec-jobs-scraper"
Claude Desktop JSON configuration:
{"mcpServers": {"apify-apec-jobs": {"url": "https://mcp.apify.com/?tools=automation-lab/apec-jobs-scraper"}}}
MCP URL:
https://mcp.apify.com/?tools=automation-lab/apec-jobs-scraper
Example prompts:
- "Find the newest APEC data jobs in Paris and return company names."
- "Monitor APEC product manager jobs since yesterday."
- "Extract full descriptions for the first 50 APEC finance executive roles."
Reliability notes
The actor uses APEC public JSON endpoints that are loaded by the APEC web application. It does not require private cookies or an APEC account for public job search and public offer detail data.
If APEC changes its public API, the actor may need an update. Use smaller runs first when testing a new filter combination.
Limitations
- It only extracts public information visible through APEC public endpoints.
- Advanced filters use APEC internal nomenclature IDs.
- It does not apply to jobs that are removed or unpublished by APEC.
- Contact details are returned only when publicly exposed by APEC.
Legality
This actor extracts publicly available APEC job information. You are responsible for using the data lawfully, respecting APEC terms, privacy rules, and applicable employment-data regulations. Avoid collecting or processing personal data unless you have a valid legal basis.
FAQ
Why did I get fewer jobs than expected?
APEC may have fewer matching offers than your maxItems, or incrementalSince may skip older jobs. Try removing freshness filters or broadening keywords.
How do I find location IDs?
Use APEC.fr manually, apply a location filter, then copy the search URL. The lieux URL parameter contains the APEC location ID.
Why are contract fields numeric?
APEC exposes many filters as nomenclature IDs. Numeric IDs are preserved so users can join them to their own mapping tables or reuse exact filters from APEC URLs.
Related scrapers
Other Automation Lab actors can complement this workflow:
- LinkedIn job and company scrapers for broader hiring intelligence.
- Company/contact enrichment actors for recruiter lead qualification.
- Website contact finders for turning hiring companies into outreach lists.
Changelog
Initial version extracts APEC search results and optional public detail records.
Support
If a run fails or a field disappears, open an issue with the run ID and input used. Include whether the issue occurs with fetchDetails enabled or disabled.
Field stability
The actor is designed to keep output field names stable. New fields may be added, but existing field names should remain compatible after publication.
Performance
HTTP extraction is lightweight and normally fits in 256 MB memory. Detail fetching adds one request per saved job, so listing-only runs are faster than detail-rich runs.
Recommended first run
Use this small input:
{"keywords": ["data"],"locations": ["75"],"maxItems": 25,"fetchDetails": true}
Production run example
For a recurring lead-monitoring workflow:
{"keywords": ["directeur data", "chief data officer", "data engineer"],"locations": ["75", "92"],"maxItems": 500,"fetchDetails": true,"incrementalSince": "2026-01-01T00:00:00Z"}