APEC Jobs Scraper avatar

APEC Jobs Scraper

Pricing

Pay per event

Go to Apify Store
APEC Jobs Scraper

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

Stas Persiianenko

Maintained by Community

Actor 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, or product manager.
  • πŸ“ Filter by APEC location or department IDs such as 75 for 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

FieldDescription
offerNumberPublic APEC offer number
titleJob title
companyCompany or establishment name
locationPrimary location
locationsAll public APEC locations
salaryTextSalary text shown by APEC
publicationDateLatest publication date
firstPublicationDateFirst publication date when available
jobUrlAPEC detail URL
applicationUrlAPEC application URL
descriptionTextClean text job description
descriptionHtmlOriginal public HTML description
profileTextCandidate profile section
companyDescriptionTextCompany presentation text
skillsSkills exposed by APEC
recruiterNamePublic recruiter name when visible
sourceQuerySearch 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
}

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.

  • contractTypeIds
  • experienceLevelIds
  • sectorIds
  • teleworkTypeIds
  • minSalaryKeur
  • maxSalaryKeur
  • postedSince

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

  1. Open the actor on Apify.
  2. Paste an APEC search URL or enter keywords.
  3. Set maxItems.
  4. Keep fetchDetails enabled if you need full descriptions and skills.
  5. Run the actor.
  6. 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 maxItems small for testing.
  • βœ… Use incrementalSince for daily monitoring.
  • βœ… Turn off fetchDetails for faster listing-only scans.
  • βœ… Use offerNumber as 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 ApifyClient
client = 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.

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.

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"
}