A tool built to capture detailed job listings from APEC.fr with structured, reliable, and analysis-ready output. It focuses on extracting rich job metadata while handling filtering, pagination, and complex listing structures. This scraper helps anyone who needs accurate and up-to-date insights from the French executive job market.
Created by Bitbash, built to showcase our approach to Scraping and Automation!
If you are looking for APEC Jobs Scraper 🎯 you've just found your team — Let’s Chat. 👆👆
This project collects structured job listing data from APEC.fr and turns it into clean, machine-friendly output. It solves the challenge of manually monitoring executive-level job opportunities and provides a scalable way to analyze employment trends. It’s ideal for researchers, recruiters, and developers building job-related tools.
- Covers executive and managerial job listings with high-quality metadata.
- Handles pagination and multiple search inputs automatically.
- Supports real-time data streaming for large-scale analysis.
- Delivers normalized JSON output for dashboards, pipelines, or storage.
- Reduces manual research time by automating repetitive data collection.
| Feature | Description |
|---|---|
| Multi-URL search | Accepts multiple APEC search URLs and processes them in parallel. |
| Detailed job extraction | Captures titles, salaries, descriptions, coordinates, and company information. |
| Metadata-rich output | Includes publication dates, contract details, scores, flags, and identifiers. |
| Pagination automation | Iterates through listing pages without manual intervention. |
| Proxy compatibility | Supports proxy usage for stable, uninterrupted sessions. |
| Structured export | Produces consistent JSON suitable for analytics, storage, or pipelines. |
| Field Name | Field Description |
|---|---|
| id | Internal numeric identifier for the job post. |
| numeroOffre | Unique external listing ID. |
| intitule | Job title. |
| nomCommercial | Company name or recruiting agency. |
| lieuTexte | Text-based job location. |
| salaireTexte | Salary description as provided in the listing. |
| texteOffre | Full or partial job description text. |
| datePublication | ISO timestamp of listing publication. |
| dateValidation | ISO timestamp indicating listing validation. |
| latitude | Latitude coordinate for the job location. |
| longitude | Longitude coordinate for the job location. |
| typeContrat | Contract type identifier. |
| contractDuration | Duration of employment if applicable. |
| localisable | Indicates whether coordinates are provided. |
| score | Relevance or ranking score. |
| clientReel | Indicates if the listing is posted by a real client. |
| idNomTeletravail | Remote work classification identifier. |
[
{
"searchUrl": "https://www.apec.fr/candidat/recherche-emploi.html/emploi?fonctions=599782&typesConvention=143684&typesConvention=143685&typesConvention=143686&typesConvention=143687&typesConvention=143706",
"id": 176149207,
"numeroOffre": "176149207W",
"intitule": "Responsable ADV F/H",
"nomCommercial": "Fed Supply",
"lieuTexte": "Beauvais - 60",
"salaireTexte": "37 - 45 k€ brut annuel",
"texteOffre": "Fed Supply recrute ! Consultante de Paris spécialisée ...",
"dateValidation": "2025-03-28T15:35:34.000+0000",
"datePublication": "2025-03-28T15:35:34.000+0000",
"latitude": "49.4361955",
"longitude": "2.0863356",
"localisable": true,
"score": 1.2,
"offreConfidentielle": false,
"secteurActivite": 101319,
"secteurActiviteParent": 101775,
"clientReel": true,
"contractDuration": 0,
"typeContrat": 101888,
"origineCode": 101866,
"idNomTeletravail": 20765,
"indicateurFaibleCandidature": false
}
]
APEC Jobs Scraper/
├── src/
│ ├── main.py
│ ├── extractors/
│ │ ├── job_parser.py
│ │ └── pagination_handler.py
│ ├── networking/
│ │ └── proxy_manager.py
│ ├── outputs/
│ │ └── writer.py
│ └── config/
│ └── settings.example.json
├── data/
│ ├── input.sample.json
│ └── sample_output.json
├── requirements.txt
└── README.md
- Researchers analyze executive job trends to understand hiring behavior and salary patterns.
- HR teams gather competitive intelligence to benchmark compensation and market demand.
- Recruiters track newly published roles to improve outreach timing and candidate placement.
- Data analysts integrate listings into dashboards for long-term labor market monitoring.
- Developers use the structured output to power job-matching, alerting, or automation tools.
Does it support multiple search URLs? Yes, you can pass any number of APEC search URLs. The scraper processes them sequentially or in parallel depending on configuration.
What format does the output use? All results are produced as structured JSON, suitable for ingestion into analytics tools or data pipelines.
Can it run continuously for monitoring? It can be scheduled or looped externally to perform periodic scans, making it useful for ongoing market observation.
Are coordinates always available? Most listings include coordinates, but when unavailable the field is simply omitted or marked as non-localisable.
Primary Metric: The scraper typically handles between 40–60 listings per minute depending on filters and network conditions.
Reliability Metric: Sustains a stability rate above 97 percent across long multi-page crawls.
Efficiency Metric: Processes full pagination chains with minimal overhead, maintaining consistent throughput under proxy rotation.
Quality Metric: Extracts complete metadata fields for more than 92 percent of validated listings, ensuring usable and analysis-ready datasets.
