Company Hiring Signals — Open Vacancies by Function & Board avatar

Company Hiring Signals — Open Vacancies by Function & Board

Pricing

from $40.00 / 1,000 company hiring profiles

Go to Apify Store
Company Hiring Signals — Open Vacancies by Function & Board

Company Hiring Signals — Open Vacancies by Function & Board

Give it a company name and get its hiring heat: total open vacancies across our European job boards, broken down by function (engineering, sales, marketing, etc.) and by source board, plus a registry identity match.

Pricing

from $40.00 / 1,000 company hiring profiles

Rating

0.0

(0)

Developer

Studio Amba

Studio Amba

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Company Hiring Signals

Give it a company name and get back its hiring heat: how many open vacancies it has right now across our European job boards, broken down by function (engineering, sales, marketing, and more) and by which board each posting came from — plus, optionally, a registry identity match so the profile is tied to a real legal entity.

This actor does not scrape a website itself. It runs our own StepStone (Germany, Austria, Netherlands), Reed, HelloWork, Jobs.ch, JobUp.ch, Pracuj.pl, Jobindex, InfoJobs, Jobat, IrishJobs and EURES scrapers in parallel (the same roster as our EU Vacancy Feed actor), filters every posting down to ones that actually belong to the input company, and rolls the result into one hiring-heat profile.

Why use this actor?

A company's live vacancy count is one of the cleanest, hardest-to-fake signals of growth, funding, restructuring, or trouble. Sales teams use it to time outreach — a company suddenly hiring 10 engineers is a different conversation than one with a hiring freeze. Recruiters use it to see if a target company is actively competing for the same talent pool. Investors and market analysts use hiring breadth across functions as a proxy for what a company is actually investing in this quarter.

Checking this by hand means visiting 13 different job boards, searching each one, and manually counting and classifying results — every board names its fields differently and none of them offer a "hiring by department" view out of the box. This actor does the fan-out, the company matching, and the function classification in one call, and returns exactly one row: the company's current hiring profile.

What it returns

One dataset row per run — a company profile, not a vacancy list. A company with zero matching postings right now is a valid result (totalOpenVacancies: 0), not a failure; it just means that company isn't hiring through these boards at the moment.

Real example from a live run:

{
"company": "Siemens",
"country": "DE",
"totalOpenVacancies": 14,
"byFunction": {
"engineering": 8,
"operations": 3,
"finance": 2,
"sales": 1
},
"byBoard": {
"StepStone Germany": 14
},
"registryId": "HRB 6684",
"registryStatus": "active",
"registryLegalName": "Siemens Aktiengesellschaft",
"registryConfidence": "high",
"boardsQueried": ["StepStone Germany"],
"boardsFailed": [],
"rawMatchedBeforeDedup": 14,
"topVacancies": [
{ "title": "Senior Software Engineer (m/w/d)", "location": "München", "boards": ["StepStone Germany"], "url": "https://www.stepstone.de/...", "postedAt": "2026-07-10" }
],
"sampledAt": "2026-07-20T09:12:03.000Z"
}

How to scrape company hiring signals in Europe

  1. Enter a Company name exactly as it would appear on a job posting (e.g. Siemens, ASML, Danone). Matching strips common legal-entity suffixes (GmbH, SA, Ltd, BV, and a dozen others) so Siemens also matches postings listing Siemens AG.
  2. Optionally set Countries to restrict which job boards to search. Leave empty to check all 13 boards. Narrowing to the country (or countries) where the company actually operates cuts down on false negatives from boards it doesn't post to and speeds up the run.
  3. Set Max postings scanned per board high enough that the board's own keyword search surfaces the company's postings — a generic search can return many unrelated results before filtering down to a real match.
  4. Leave Enrich with registry identity on to attach a legal-entity match (registration number, status, legal name) from our own company-registry scrapers. Turn it off for a faster, cheaper vacancy-only run.
  5. Run the actor. All selected boards (and the registry check) run in parallel, so a full run typically finishes in 30-90 seconds.
  6. Open the dataset. The single row is the company's hiring profile: total open vacancies, the function breakdown, the board breakdown, and (if enabled) the registry match.
  7. Check RUN_SUMMARY in the key-value store for the same numbers in a quick-glance format.

Input

FieldTypeDescription
companyNamestringCompany to profile, as it appears on job postings. Defaults to "Siemens".
countriesarrayRestrict which job-board countries to search: DE, AT, NL, GB, FR, CH, PL, DK, ES, BE, IE, EU. Empty means all 13 boards.
maxPerBoardintegerRaw postings fetched per board before filtering to this company (5-200, default 30).
enrichRegistrybooleanAttach a registry identity match via our EU Dealer Counterparty Check actor. Default true.
registryCountrystringCountry whose registry to check: auto (first covered country from countries, falling back to Germany), an explicit code, or none to skip registry enrichment.
timeoutPerBoardSecsintegerMax seconds to wait per board/registry source before treating it as failed (30-600, default 120).
proxyConfigurationobjectProxy settings passed to the underlying scrapers. Leave default — each source falls back to its own known-good country-pinned residential proxy.

Example input

{
"companyName": "ASML",
"countries": ["NL"],
"maxPerBoard": 30,
"enrichRegistry": true
}

Output

FieldTypeDescription
companystringCompany name that was searched
countrystringPrimary country for this profile (registry country if resolved, else first requested board country)
totalOpenVacanciesintegerDeduplicated open-vacancy count across all queried boards. 0 is valid — it means no match, not a failed run
byFunctionobjectVacancy count per function bucket: engineering, sales, marketing, customer_support, operations, finance, hr, product, design, legal, healthcare, logistics, admin, other
byBoardobjectRaw matched vacancy count per source board (a vacancy cross-posted on 2 boards counts on both)
registryIdstringOfficial registration number, when a registry match was found
registryStatusstringactive, dissolved, insolvent, unknown, not_found, not_covered, or error
registryLegalNamestringLegal entity name from the matched registry entry
registryConfidencestringhigh/medium/low confidence of the registry match
boardsQueriedarrayBoards successfully queried this run
boardsFailedarrayBoards that errored, timed out, or returned zero raw items
rawMatchedBeforeDedupintegerMatched postings before cross-board dedup
topVacanciesarrayUp to 10 sample matched vacancies for spot-checking
sampledAtstringISO timestamp of collection

How function classification works

Each matched vacancy's title is checked against a keyword list, ordered from most specific to most general — a Support Engineer title lands in customer_support, not engineering, because the more specific department pattern is checked first. Keywords cover English plus common German, French, Dutch, Spanish, Polish and Danish job-title vocabulary. This is a heuristic keyword match, not a machine-learning classifier — see Limitations.

How company matching works

A job posting's employer field is compared against the input companyName after both are lowercased, stripped of diacritics, and stripped of ~30 common EU legal-entity suffixes (GmbH, SA, SARL, BV, NV, Ltd, PLC, Srl, Sp z o.o., S.r.o., Oy, AB, Kft, and more). An exact match after normalization counts, and so does a substring match either way (so Siemens matches Siemens Energy AG and Siemens AG both) — guarded so short 1-2 character names can't match everything.

Registry enrichment

When enabled, the actor calls our own EU Dealer Counterparty Check actor, which covers 11 European registries: Germany, France, UK, Poland, Italy, Spain, Switzerland, Norway, Sweden, Czechia, Netherlands. If the resolved country isn't in that list (Austria, Denmark, Belgium, Ireland, or EU-wide EURES-only searches), registryStatus is not_covered rather than a guess.

FAQ

Does this actor scrape the job boards or registries itself? No. It calls our own StepStone, Reed, HelloWork, Jobs.ch, JobUp.ch, Pracuj, Jobindex, InfoJobs, Jobat, IrishJobs, EURES and EU Dealer Counterparty Check actors and merges their output. Each is also available separately on the Store.

Why is totalOpenVacancies 0 for a company I know is hiring? Either the company isn't posting on any of the 13 boards this actor queries, the posted employer name doesn't match closely enough (check for a very different trading name vs. legal entity), or maxPerBoard wasn't high enough for the board's own search to surface the company's postings before the cutoff. Try raising maxPerBoard or widening countries.

Why does byBoard sometimes sum to more than totalOpenVacancies? byBoard counts raw matched postings per board before cross-board dedup. If the same vacancy is cross-posted on 2 boards (e.g. EURES re-indexing a national board), it counts once on each board in byBoard but only once in totalOpenVacancies.

Can I profile a company with no presence in our registry fleet? Yes — set enrichRegistry to false, or leave it on and just read registryStatus: "not_covered". The vacancy breakdown works independently of registry coverage.

How accurate is the function breakdown? It's a keyword heuristic, not a taxonomy the company itself assigned. A title like "Growth Marketing Engineer" or an unusually worded internal title can land in the wrong bucket. Treat byFunction as a directional signal, not an exact org chart.

Limitations

  • Function classification is keyword-based and English/DE/FR/NL/ES/PL/DK-vocabulary aware, not a machine-learning classifier — unusual or highly localized job titles can be misclassified into other or the wrong bucket.
  • Company matching only catches postings where the employer field names the company (directly or via a common legal-suffix variant) — postings through a recruitment agency that doesn't list the hiring company by name won't match.
  • Coverage is limited to the 13 job boards in the roster (one per-market leader per country) — a company's postings on a board outside this set won't be counted.
  • Registry enrichment covers 11 countries; others return not_covered, not a guess.
  • Data is scraped from public job board and registry listings and may change without notice.

We also run this as a managed service: scheduled runs against a fixed company watchlist, delivered to your inbox, Google Sheets, or API, maintenance included. See studioamba.dev/services or email hello@studioamba.dev for a free data sample.