HelloWork France Job Listings & Salary Filter Scraper avatar

HelloWork France Job Listings & Salary Filter Scraper

Pricing

from $0.49 / 1,000 results

Go to Apify Store
HelloWork France Job Listings & Salary Filter Scraper

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

vexaloom-labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

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), and byUrls (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 ID
  • title, company, companyLogoUrl
  • location — listing-card location text (e.g. Lyon - 69)
  • department — French department code when derivable (69, 2A, …)
  • city, postalCode, region, country — structured detail-page location
  • contractType, workTime, remoteWork, contractDuration, companyType
  • salary — disclosed salary display text
  • salaryMin, salaryMax, salaryPeriod (yearly/monthly/hourly/daily/weekly), salaryCurrency
  • postedDate — exact UTC posting timestamp when the detail page exposes it; otherwise the approximate value derived from the listing text
  • postedDateRelative — HelloWork's original relative text (e.g. il y a 3 jours)
  • validThrough — UTC expiry timestamp when published
  • descriptionHtml, descriptionText — full job description
  • skills[], qualifications, qualificationsHtml
  • educationLevel, experienceMonths, experienceLabel
  • industry[], occupationalCategory, employmentTypes[]
  • companyUrl — employer profile page
  • companyProfile — optional nested object: name, headquarters, foundedYear, employeeRange, revenue, teleworkPolicy, averageAge, genderSplit, genderEqualityIndex, description
  • directApply — true when HelloWork marks direct application as available
  • hasApplicationTracking, isSuperRecruiter
  • isExactMatch — false for HelloWork's similar-result cards; true for exact keyword matches
  • searchQuery, listPageUrl — provenance for search runs
  • changeType, firstSeenAt, lastSeenAt — only in incremental mode (NEW, UPDATED, REAPPEARED)
  • url, applyUrl — canonical job page and HelloWork application landing URL
  • recordType: "job", scrapedAt

Input

FieldTypeDefaultDescription
modestringsearchsearch / byLocation / bySector / byUrls
searchQueriesarray–One or more keywords (mode=search); duplicates are removed across queries
regionstring–French region (mode=byLocation unless city is set; optional filter elsewhere)
citystring–French city/commune (mode=byLocation unless region is set; optional filter elsewhere)
sectorsarray–Industry sectors (mode=bySector; optional filter elsewhere)
jobFunctionsarray–Job functions / métiers (mode=bySector; optional filter elsewhere)
contractTypesarray–CDI, CDD, Intérim, Stage, Alternance and more
remoteWorkarray–Fully remote / hybrid / occasional / no remote work
employmentTypearray–Full-time / part-time / unspecified
experienceLevelsarray–Beginner-friendly (deb), 0-1y, 2-3y, 4-5y, 6-10y, 10+ years, unspecified
companyTypesarray–Direct employer, recruitment agency, ESN, temp agency, training center
csrLabelsarray–CSR / sustainability certifications
minSalaryint0Minimum disclosed annual salary in EUR (0–100,000)
radiusKmstring20Radius around city in km (0/5/10/20/50); ignored without a city
postedWithinstringallAny time / last 24h / last 3 days / last week / last month
sortBystringrelevanceRelevance or newest first
salaryOnlybooleanfalseOnly jobs that disclose a salary
superRecruiterOnlybooleanfalseOnly HelloWork-verified "super recruiter" employers
exactMatchesOnlybooleanfalseDrop HelloWork's similar-result cards
includeDetailsbooleantrueFetch each job's full detail page
includeCompanyProfilebooleanfalseAdd employer profile facts when available (requires includeDetails)
incrementalModebooleanfalseEmit only new, updated or reappeared jobs
stateKeystring–State key required for incremental mode; reuse it across runs
startUrlsarray–HelloWork search-result and/or job URLs as {"url": ...} objects (mode=byUrls)
maxItemsint50Hard 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.