France Job Scraper — WTTJ, France Travail and Hellowork
Pricing
from $2.99 / 1,000 france job records
France Job Scraper — WTTJ, France Travail and Hellowork
Extract complete public French job records from France Travail and Hellowork with bounded native HTTPS and transparent KVS diagnostics for client-rendered or access-boundary sources.
Pricing
from $2.99 / 1,000 france job records
Rating
0.0
(0)
Developer
Jobs API
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
This local Actor collects complete, public job records from France Travail and Hellowork. It uses ordinary native HTTPS requests and Cheerio, verifies each candidate against its public detail page, normalizes public itemprop and JobPosting data, and keeps diagnostics in the key-value store instead of mixing them into the dataset.
Modes
search: search the selectedsource(allby default) withkeywordandlocation.searchMultiple: run the boundedsearchesarray; duplicate source IDs are suppressed.single: fetch onejobUrl.multiple: fetchjobUrls.startUrls: accept official public search or detail URLs and infer the source from each URL.allanddetailsremain compatibility aliases for the old input contract.
The default run is bounded to three records per selected source and one search page. maxItems and maxPages are the only public workload controls; request timeout, request budget, headers, retries, proxy, and fingerprint settings are fixed internally. Search records are buffered and emitted only after successful public detail fetches, completeness checks, and direct-source receipts are available.
Dataset
Every dataset row is a job record with a stable source-prefixed id, canonical public detail URL, title, employer, location, description and sanitized HTML description. Portable aliases (companyName, descriptionText, url, applyUrl, and scrapedAt) support cross-actor consumers without removing the richer source-native names. When exposed by the source it also contains sections, bullets, responsibilities, requirements, qualifications, benefits, skills, compensation, employment type, dates, company URL, application URL, and source metadata. Optional values are omitted rather than written as null, blank, placeholder, or empty-array values.
RUN_SUMMARY and its compatibility alias OUTPUT separate the Apify platform status (SUCCEEDED or FAILED) from dataset resultStatus (COMPLETE, LIMITED, SKIPPED, DEFERRED, or FAILED). RUN_DIAGNOSTICS stores structured request, parsing, identity, completeness, and source-boundary evidence; RUN_REQUEST_RECEIPTS stores HTTP request receipts; and RUN_HEALTH records aggregate run health. These artifacts remain in the key-value store, never as job dataset rows. A confirmed source barrier produces SUCCEEDED / SKIPPED and discards every buffered row. Generic transport failures and ambiguous empty parses are DEFERRED, not blocks or confirmed NO_DATA. If complete rows were stored before a later non-block error, they remain in the dataset and the outcome is SUCCEEDED / LIMITED; a fatal zero-row failure is FAILED / FAILED.
Source boundaries
France Travail and Hellowork currently expose public HTML and detail data in ordinary local requests. WTTJ currently returns a client-rendered public shell without server-rendered job records for the tested search; the Actor records NO_SERVER_RENDERED_DATA and does not call private application APIs, use login, use a proxy, fingerprint evasion, CAPTCHA solving, or bypass an access boundary. A WTTJ detail row is emitted only if the public page itself exposes a complete JobPosting record.
npm run validate reads the default local dataset and KVS artifacts without modifying them; it checks strict job fields, duplicate IDs/URLs, diagnostic rows, status/count reconciliation, and null/blank/empty values. Historical rows and summaries from before the KVS-only receipt/status contract are reported as legacy warnings and are not rewritten.
Use the sources only where their current robots.txt and terms permit the intended collection, respect rate limits, and stop when a site presents an access boundary.