HelloWork France Job Listings & Salary Filter Scraper
Pricing
from $0.49 / 1,000 results
HelloWork France Job Listings & Salary Filter Scraper
Search HelloWork.com by keyword, region, city, sector or job function, and filter by contract type, remote-work frequency, experience level, company type and disclosed salary range.
Pricing
from $0.49 / 1,000 results
Rating
0.0
(0)
Developer
vexaloom-labs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
HelloWork France Jobs & Salary Details Scraper
Scrape HelloWork — one of France's largest job boards — with full job details, not just listing cards. Search by keyword, browse by region or city, browse by sector or job function, or paste search and job URLs. Every live HelloWork filter is exposed, and each record can include the full description, required skills, structured salary, exact posting and expiry dates, and a structured location. No login, cookies or API key required.
What this actor does
- Four modes:
search(one or more keywords),byLocation(region or city),bySector(sector or job function), andbyUrls(pasted search-result and job URLs, mixed) - Full detail enrichment: description HTML/text, skills, qualifications, education and experience requirements, industry, occupational category, company profile URL, exact posted/expiry dates, and structured salary/location
- Every live filter: contract type, remote-work frequency, full-time/part-time, experience level (including beginner-friendly
deb), company type, CSR label, posted-within window, minimum salary, salary disclosed only, super-recruiter only, search radius and exact-match only - Structured output: parsed salary min/max/period/currency, department, postal code, region and country, plus exact-vs-similar match flagging and multi-query provenance
- Optional extras: company profile enrichment and incremental runs that emit only new, updated or reappeared jobs
- Empty fields are omitted at every depth — no
null,"",[]or{}
Output per job
offerId— HelloWork offer IDtitle,company,companyLogoUrllocation— listing-card location text (e.g.Lyon - 69)department— French department code when derivable (69,2A, …)city,postalCode,region,country— structured detail-page locationcontractType,workTime,remoteWork,contractDuration,companyTypesalary— disclosed salary display textsalaryMin,salaryMax,salaryPeriod(yearly/monthly/hourly/daily/weekly),salaryCurrencypostedDate— exact UTC posting timestamp when the detail page exposes it; otherwise the approximate value derived from the listing textpostedDateRelative— HelloWork's original relative text (e.g.il y a 3 jours)validThrough— UTC expiry timestamp when publisheddescriptionHtml,descriptionText— full job descriptionskills[],qualifications,qualificationsHtmleducationLevel,experienceMonths,experienceLabelindustry[],occupationalCategory,employmentTypes[]companyUrl— employer profile pagecompanyProfile— optional nested object:name,headquarters,foundedYear,employeeRange,revenue,teleworkPolicy,averageAge,genderSplit,genderEqualityIndex,descriptiondirectApply— true when HelloWork marks direct application as availablehasApplicationTracking,isSuperRecruiterisExactMatch— false for HelloWork's similar-result cards; true for exact keyword matchessearchQuery,listPageUrl— provenance for search runschangeType,firstSeenAt,lastSeenAt— only in incremental mode (NEW,UPDATED,REAPPEARED)url,applyUrl— canonical job page and HelloWork application landing URLrecordType: "job",scrapedAt
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | string | search | search / byLocation / bySector / byUrls |
searchQueries | array | – | One or more keywords (mode=search); duplicates are removed across queries |
region | string | – | French region (mode=byLocation unless city is set; optional filter elsewhere) |
city | string | – | French city/commune (mode=byLocation unless region is set; optional filter elsewhere) |
sectors | array | – | Industry sectors (mode=bySector; optional filter elsewhere) |
jobFunctions | array | – | Job functions / métiers (mode=bySector; optional filter elsewhere) |
contractTypes | array | – | CDI, CDD, Intérim, Stage, Alternance and more |
remoteWork | array | – | Fully remote / hybrid / occasional / no remote work |
employmentType | array | – | Full-time / part-time / unspecified |
experienceLevels | array | – | Beginner-friendly (deb), 0-1y, 2-3y, 4-5y, 6-10y, 10+ years, unspecified |
companyTypes | array | – | Direct employer, recruitment agency, ESN, temp agency, training center |
csrLabels | array | – | CSR / sustainability certifications |
minSalary | int | 0 | Minimum disclosed annual salary in EUR (0–100,000) |
radiusKm | string | 20 | Radius around city in km (0/5/10/20/50); ignored without a city |
postedWithin | string | all | Any time / last 24h / last 3 days / last week / last month |
sortBy | string | relevance | Relevance or newest first |
salaryOnly | boolean | false | Only jobs that disclose a salary |
superRecruiterOnly | boolean | false | Only HelloWork-verified "super recruiter" employers |
exactMatchesOnly | boolean | false | Drop HelloWork's similar-result cards |
includeDetails | boolean | true | Fetch each job's full detail page |
includeCompanyProfile | boolean | false | Add employer profile facts when available (requires includeDetails) |
incrementalMode | boolean | false | Emit only new, updated or reappeared jobs |
stateKey | string | – | State key required for incremental mode; reuse it across runs |
startUrls | array | – | HelloWork search-result and/or job URLs as {"url": ...} objects (mode=byUrls) |
maxItems | int | 50 | Hard cap on emitted jobs (1–10,000) |
Example: multiple keyword searches with full details
{"mode": "search","searchQueries": ["developpeur python", "data engineer"],"city": "Lyon","contractTypes": ["CDI"],"exactMatchesOnly": true,"includeDetails": true,"maxItems": 100}
Example: recent jobs in a region
{"mode": "byLocation","region": "Bretagne","postedWithin": "w","salaryOnly": true,"sortBy": "date","maxItems": 100}
Example: sector + function browse with a salary floor
{"mode": "bySector","sectors": ["Inform_SSII"],"jobFunctions": ["Informatique_dev"],"minSalary": 45000,"includeDetails": true,"maxItems": 200}
Example: paste a job URL and a saved search URL
{"mode": "byUrls","startUrls": [{"url": "https://www.hellowork.com/fr-fr/emplois/83761250.html"},{"url": "https://www.hellowork.com/fr-fr/emploi/recherche.html?k=comptable&l=Bordeaux"}],"includeDetails": true,"maxItems": 50}
Example: incremental daily feed
{"mode": "search","searchQueries": ["infirmier"],"city": "Paris","incrementalMode": true,"stateKey": "paris-nurses-daily","includeDetails": true,"maxItems": 500}
Use cases
- Recruitment agencies — monitor new listings and full requirements in a target city or sector
- Labor-market research — track posting volume, salary disclosure, education and experience requirements
- Job aggregators / HR tech — enrich existing listings with descriptions, skills and structured salary
- Salary benchmarking — analyse disclosed ranges by sector, function, experience and region
- Remote-work and ESG sourcing — combine remote-work frequency and CSR certifications
- Incremental alerting — feed only new or changed jobs into a CRM, ATS or notification pipeline
FAQ
What is HelloWork? One of France's largest job boards, aggregating listings from employers and recruitment agencies. This is an independent third-party actor, not affiliated with HelloWork.
Do I need a login, cookies or a proxy? No. The actor reads public job pages and needs no account, cookie, API key or proxy setup. Enter your search and run it.
What is the difference between the four modes? search runs one or more keyword queries; byLocation browses a region or city without a keyword; bySector browses a sector or job function; byUrls accepts pasted HelloWork search-result and job URLs, mixed in one list.
Why are some fields missing on some jobs? HelloWork only publishes certain details on some listings: foreign or interim pages that have no structured job data may lack an expiry date, structured city/postal code or skills, and many employers do not disclose a salary. Missing fields are omitted rather than filled with placeholder values.
What does isExactMatch mean? For narrow queries HelloWork can append similar results after the exact matches. isExactMatch: false marks those similar cards; set exactMatchesOnly: true to remove them.
Why is a salary missing when HelloWork shows an estimate? Only employer-disclosed salaries are emitted. HelloWork's own "Estimation Hellowork" hint is not treated as a disclosed salary, so it is omitted and salaryOnly will not return that job.
How does incremental mode work? It stores a content hash per job under your stateKey and emits only NEW, UPDATED or REAPPEARED records. Reuse the same key across scheduled runs; the run stops after a run of pages with no new or changed jobs.
Does maxItems guarantee that many results? No — it is a cap. If fewer jobs match your filters, you get fewer records. The actor supports up to 10,000 records per run.
How fresh is the data? HelloWork updates its listings continuously; every run reads the current live search and detail pages.
Can I get an external ATS application URL? No. Anonymous pages only expose HelloWork's own application flow, so applyUrl points to the HelloWork landing page and directApply reflects whether HelloWork marks direct application as available.