Company Hiring Signals — Open Vacancies by Function & Board
Pricing
from $40.00 / 1,000 company hiring profiles
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
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
- 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) soSiemensalso matches postings listingSiemens AG. - 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.
- 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.
- 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.
- Run the actor. All selected boards (and the registry check) run in parallel, so a full run typically finishes in 30-90 seconds.
- 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.
- Check
RUN_SUMMARYin the key-value store for the same numbers in a quick-glance format.
Input
| Field | Type | Description |
|---|---|---|
companyName | string | Company to profile, as it appears on job postings. Defaults to "Siemens". |
countries | array | Restrict which job-board countries to search: DE, AT, NL, GB, FR, CH, PL, DK, ES, BE, IE, EU. Empty means all 13 boards. |
maxPerBoard | integer | Raw postings fetched per board before filtering to this company (5-200, default 30). |
enrichRegistry | boolean | Attach a registry identity match via our EU Dealer Counterparty Check actor. Default true. |
registryCountry | string | Country whose registry to check: auto (first covered country from countries, falling back to Germany), an explicit code, or none to skip registry enrichment. |
timeoutPerBoardSecs | integer | Max seconds to wait per board/registry source before treating it as failed (30-600, default 120). |
proxyConfiguration | object | Proxy 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
| Field | Type | Description |
|---|---|---|
company | string | Company name that was searched |
country | string | Primary country for this profile (registry country if resolved, else first requested board country) |
totalOpenVacancies | integer | Deduplicated open-vacancy count across all queried boards. 0 is valid — it means no match, not a failed run |
byFunction | object | Vacancy count per function bucket: engineering, sales, marketing, customer_support, operations, finance, hr, product, design, legal, healthcare, logistics, admin, other |
byBoard | object | Raw matched vacancy count per source board (a vacancy cross-posted on 2 boards counts on both) |
registryId | string | Official registration number, when a registry match was found |
registryStatus | string | active, dissolved, insolvent, unknown, not_found, not_covered, or error |
registryLegalName | string | Legal entity name from the matched registry entry |
registryConfidence | string | high/medium/low confidence of the registry match |
boardsQueried | array | Boards successfully queried this run |
boardsFailed | array | Boards that errored, timed out, or returned zero raw items |
rawMatchedBeforeDedup | integer | Matched postings before cross-board dedup |
topVacancies | array | Up to 10 sample matched vacancies for spot-checking |
sampledAt | string | ISO 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
otheror 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.
Related actors
- EU Vacancy Feed — the same 13-board roster, but keyword-driven and deduplicated across all companies, not filtered to one
- EU Dealer Counterparty Check — the registry identity check this actor uses for enrichment, also available standalone
- StepStone Germany
- Reed
- Pracuj.pl
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.