Company Hiring Signal Scraper: Open Roles & Growth Intent avatar

Company Hiring Signal Scraper: Open Roles & Growth Intent

Pricing

from $12.75 / 1,000 results

Go to Apify Store
Company Hiring Signal Scraper: Open Roles & Growth Intent

Company Hiring Signal Scraper: Open Roles & Growth Intent

Detect a company's ATS and aggregate its open roles into a hiring-intent signal: open roles count, departments and locations hiring, remote/engineering/sales counts, newest role and a High/Medium/Low signal. Export to JSON, CSV or Excel.

Pricing

from $12.75 / 1,000 results

Rating

4.0

(1)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 days ago

Last modified

Share

Company Hiring Signal Scraper: Open Roles & Growth Intent

Company Hiring Signal Scraper: Open Roles & Growth Intent

Here is one real result, with every field the actor returns (long text fields and the roles array are trimmed with ...; a live run returns the full untrimmed values):

{
"inputName": "stripe",
"companyName": "stripe",
"atsDetected": "greenhouse",
"atsBoardToken": "stripe",
"openRolesCount": 555,
"hiringSignal": "High",
"departmentsHiring": "1130 Global Sales Development Mgrs, 1131 Vendor Mgmt and SD PM, 1132 AMER Sales Development Reps, ...",
"departmentsHiringCount": 189,
"locationsHiring": "Dublin, Chicago, Illinois, San Francisco, New York, Seattle, Atlanta, Remote in the US, Tokyo, Singapore, Sydney, ...",
"locationsHiringCount": 234,
"remoteRolesCount": 106,
"engineeringRolesCount": 136,
"salesRolesCount": 112,
"sampleRoleTitles": "Manager, Sales Development | Head of Startups and Velocity Sales Development | Head of Sales ...",
"newestRoleDate": "2026-08-10T13:19:03.000Z",
"oldestRoleDate": "2026-08-06T16:09:47.000Z",
"roles": [
{
"title": "Manager, Sales Development",
"department": "1130 Global Sales Development Mgrs",
"location": "Dublin",
"isRemote": false,
"isEngineering": false,
"isSales": true,
"postedAt": "2026-08-06T12:09:55-04:00",
"url": "https://stripe.com/jobs/search?gh_jid=7337544"
}
],
"careersUrl": "https://boards.greenhouse.io/stripe",
"source": "CompanyHiringSignal",
"observedAt": "2026-08-10T14:29:22.310Z"
}

The most complete company hiring-signal scraper available. It detects a company's applicant tracking system, aggregates every open role, and returns a full hiring-intent profile (role counts, departments and locations hiring, remote/engineering/sales breakdown, newest role date and a High/Medium/Low signal), with optional AI and contact-enrichment add-ons to target exactly the companies you need.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

For each company you pass (by name, ATS board slug, or careers URL), the actor detects the underlying applicant tracking system (Greenhouse, Lever, Ashby and others), pulls the company's open roles, and aggregates them into one hiring-signal record. It computes an open-role count, a High/Medium/Low hiring signal, the departments and locations hiring, remote/engineering/sales role counts, the newest and oldest role dates, and returns the full list of roles with per-role metadata.

Use it for sales and recruiting intent: a rising open-role count and a High signal indicate a company that is scaling. Optional AI add-ons (withAiCompanySummary, withAiIndustry, withAiHiringInsights) and a contact-enrichment add-on (enrichContacts) can enrich each record; they are opt-in, billed per enriched record, and disabled on free Apify plans.

Quickstart

Open the actor, paste this into the input, and press Run. It returns hiring signals for three companies.

{
"companies": ["stripe", "notion", "ramp"],
"maxCompanies": 10
}

Each entry in companies can be a company name, an ATS board slug, or a full careers URL. The actor auto-detects the ATS for each.

Input reference

FieldTypeRequiredDefaultDescription
companiesarrayyes(none)One or more company names, board slugs or careers URLs. One hiring-signal record is returned per company.
maxCompaniesintegerno(all)Maximum companies to analyze in a single run. Free Apify plans are capped at 10 per run.
withAiCompanySummarybooleannofalseAdd a plain-English summary of each company. Paid add-on, disabled on free plans.
withAiIndustrybooleannofalseInfer and classify the company's industry (NAICS-style). Paid add-on.
withAiHiringInsightsbooleannofalseAnalyze the open roles to surface growth/strategic hiring insights. Paid add-on.
enrichContactsbooleannofalseAttempt to find an email/contact for each result without one. Paid add-on.
enrichContactsMaxintegerno50Cap how many results the contact add-on tries to enrich, to control add-on cost.

Output reference

One dataset item per company. Types: string, integer, boolean, object[], array, or null when the source value is absent.

FieldTypeDescription
inputNamestringThe company identifier exactly as you passed it.
companyNamestringResolved company name or slug.
atsDetectedstringDetected ATS provider, for example greenhouse, lever, ashby.
atsBoardTokenstringATS board token/slug used to fetch the roles.
openRolesCountintegerTotal number of open roles found.
hiringSignalstringOverall hiring-intent signal: High, Medium, or Low.
departmentsHiringstringComma-separated list of departments with open roles.
departmentsHiringCountintegerNumber of distinct departments hiring.
locationsHiringstringComma-separated list of locations with open roles.
locationsHiringCountintegerNumber of distinct locations hiring.
remoteRolesCountintegerNumber of open roles flagged as remote.
engineeringRolesCountintegerNumber of open engineering roles.
salesRolesCountintegerNumber of open sales roles.
sampleRoleTitlesstringPipe-separated sample of role titles.
newestRoleDatestringISO 8601 date of the most recently posted role.
oldestRoleDatestringISO 8601 date of the oldest open role.
rolesobject[]Full list of open roles. Each item has title, department, location, isRemote, isEngineering, isSales, postedAt, url.
careersUrlstringPublic careers/board URL for the company.
sourcestringConstant source tag (CompanyHiringSignal).
observedAtstringISO 8601 timestamp of when the record was collected.
aiCompanySummarystringAI company summary. Populated only when withAiCompanySummary is enabled, else null.
aiIndustrystringAI-inferred industry. Populated only when withAiIndustry is enabled, else null.
aiIndustryCodestringAI-inferred NAICS-style code, else null.
aiHiringInsightsstringAI growth/strategic hiring insights. Populated only when withAiHiringInsights is enabled, else null.
aiGrowthAreasarrayAI-identified growth areas, else null.
enrichedEmailstringContact email found by the enrichment add-on. Present only when enrichContacts is enabled.
enrichedContactNamestringContact name found by the enrichment add-on, or null.
enrichedJobTitlestringContact job title found by the enrichment add-on, or null.
enrichedEmailStatusstringEmail status: verified, likely, guessed, not_found, or error.
enrichedSourcestringSource of the enriched contact, or null.
enrichedConfidencenumberConfidence score for the enriched contact, or null.

Example output record

Real record from a live run (input {"companies": ["stripe", "notion", "ramp"], "maxCompanies": 10}), with the long text fields and roles array trimmed for readability:

{
"inputName": "stripe",
"companyName": "stripe",
"atsDetected": "greenhouse",
"atsBoardToken": "stripe",
"openRolesCount": 555,
"hiringSignal": "High",
"departmentsHiringCount": 189,
"locationsHiringCount": 234,
"remoteRolesCount": 106,
"engineeringRolesCount": 136,
"salesRolesCount": 112,
"newestRoleDate": "2026-08-10T13:19:03.000Z",
"oldestRoleDate": "2026-08-06T16:09:47.000Z",
"roles": [
{
"title": "Manager, Sales Development",
"department": "1130 Global Sales Development Mgrs",
"location": "Dublin",
"isRemote": false,
"isEngineering": false,
"isSales": true,
"postedAt": "2026-08-06T12:09:55-04:00",
"url": "https://stripe.com/jobs/search?gh_jid=7337544"
}
],
"careersUrl": "https://boards.greenhouse.io/stripe",
"source": "CompanyHiringSignal",
"observedAt": "2026-08-10T14:29:22.310Z"
}

Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.

Run synchronously and get dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~company-hiring-signal-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"companies":["stripe","notion","ramp"],"maxCompanies":10}'

Start a run asynchronously:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~company-hiring-signal-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"companies":["https://boards.greenhouse.io/stripe"]}'

Apify CLI:

apify call scrapers_lat/company-hiring-signal-scraper \
--input '{"companies":["stripe"],"maxCompanies":10}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.

Billing and limits

  • Pay per result. You are charged per company hiring-signal record returned (result event). See the pricing tab for the current per-result price.
  • Add-ons billed separately. The AI add-ons and enrichContacts each charge their own event only when they produce output, and are disabled on free plans.
  • No charge on failure. If a company cannot be resolved to an ATS, the actor does not charge for it. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results.
  • Free Apify plans are capped at 10 records (companies) per run. Upgrade for higher maxCompanies.

FAQ and troubleshooting

A company returned no signal. Why? The actor could not detect a supported ATS for that company. Pass the exact ATS board slug or the full careers/board URL instead of the plain company name.

Which ATS providers are supported? Common providers including Greenhouse, Lever and Ashby. Passing a direct board URL improves detection.

How is the hiring signal computed? It combines the open-role count and role recency into a High, Medium, or Low label. The underlying counts are all returned so you can apply your own thresholds.

Do the AI and contact add-ons work on a free plan? No. All add-ons require a paid Apify plan and are disabled automatically for free users. The base hiring-signal fields are always returned.

Is this affiliated with the companies or ATS providers? No. This actor is independent and reads only publicly available careers pages and public ATS job boards.

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.


Independent tool, not affiliated with any company or applicant tracking system provider. Accesses only publicly available careers pages and job boards.