Hiring Signal Company Enricher avatar

Hiring Signal Company Enricher

Pricing

from $2.40 / 1,000 company-signal-results

Go to Apify Store
Hiring Signal Company Enricher

Hiring Signal Company Enricher

Enrich company domains, websites, or names with public hiring signals - open role counts, hiring departments, locations, remote/hybrid indicators, sample jobs, and a transparent growth signal score. No login or cookies.

Pricing

from $2.40 / 1,000 company-signal-results

Rating

0.0

(0)

Developer

Delowar Munna

Delowar Munna

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Hiring Signal Company Enricher

Enrich a list of companies — by domain, website URL, career-page URL, or plain name — with public hiring signals. For each company you get one flat, CSV-ready row: open-role count, hiring departments, locations, remote/hybrid indicators, sample jobs, and a transparent growth-signal score (0–100).

Built for B2B sales, lead generation, recruiters, agencies, and market researchers who want company-level hiring intelligence without scraping raw job boards or merging several actors.

  • No login, no cookies, no API keys. Public data only.
  • One row per company, not a raw job dump.
  • Transparent, non-AI scoring you can audit field-by-field.
  • ✅ Reliable extraction via public ATS JSON APIs (Greenhouse, Lever, Ashby, SmartRecruiters, Recruitee, Workable), with careers-page HTML as a fallback.

What it does

For every company input the actor:

  1. Normalizes the input and detects its type (domain, URL, career URL, or company name).
  2. Discovers the best public source — a careers page or a public ATS job board — honouring your sourceMode.
  3. Extracts visible open roles (public ATS JSON first, careers-page HTML fallback), up to maxJobsPerCompany.
  4. Derives company-level signals: role count, top departments, top locations, remote/hybrid counts, target-keyword matches, sample jobs.
  5. Scores a transparent growth_signal_score and emits one flat row.

It does not do login/session scraping, contact or email enrichment, deep crawling, AI summaries, or historical tracking.


Input

FieldTypeDefaultDescription
companiesarray of strings[]Company names, domains, website URLs, or career-page URLs. At least one required. Max 1,000.
inputTypestringautoauto, domain_or_url, company_name, or career_url.
maxCompaniesinteger100Max unique companies to process (1–1000).
maxJobsPerCompanyinteger50Cap on job evidence collected per company (1–200).
sourceModestringpublic_website_firstpublic_website_first, search_first, or career_url_only.
targetKeywordsarray of strings[]Title/department terms to score and filter on (max 50).
requireKeywordMatchbooleanfalseSave only companies with a matching visible job.
minOpenRolesinteger0Skip companies with fewer visible open roles (0–200).
includeSampleJobsbooleantruePopulate up to 5 sample job titles/URLs.
deduplicatebooleantrueOne row per normalized company.
proxyConfigurationobject{ "useApifyProxy": true }Datacenter, no proxy, or custom proxy URLs. Apify Residential rejected at startup.

Example inputs

1. Enrich a mixed list (websites, names, ATS boards) and score them

{
"companies": ["https://www.atlassian.com", "https://www.canva.com", "HubSpot"],
"inputType": "auto",
"maxCompanies": 100,
"maxJobsPerCompany": 50,
"sourceMode": "public_website_first",
"targetKeywords": ["data", "sales", "engineer"],
"requireKeywordMatch": false,
"minOpenRoles": 1,
"includeSampleJobs": true,
"deduplicate": true,
"proxyConfiguration": { "useApifyProxy": true }
}

2. Build a sales-trigger list — only companies actively hiring for your keywords

{
"companies": [
"https://boards.greenhouse.io/databricks",
"https://jobs.lever.co/palantir",
"https://jobs.ashbyhq.com/ramp",
"dropbox.com"
],
"targetKeywords": ["data engineer", "account executive"],
"requireKeywordMatch": true,
"minOpenRoles": 5,
"maxJobsPerCompany": 50,
"proxyConfiguration": { "useApifyProxy": true }
}

3. Minimal run — just give it companies

{ "companies": ["stripe.com", "https://jobs.lever.co/figma", "Notion"] }

Output

One flat row per enriched company. Key fields:

  • Identity: input_value, input_type_detected, company_name, company_domain, company_website_url, careers_url, source_url, source_type
  • Hiring signals: hiring_status, open_roles_count, open_roles_count_capped, top_departments, top_locations, remote_roles_count, hybrid_roles_count
  • Keyword matching: target_keyword_matches, matched_keywords
  • Sample jobs: sample_job_title_1..5, sample_job_url_1..5
  • Scoring: growth_signal_score (0–100), growth_signal_label (high/medium/low/none/unknown), reason_tags
  • Status: extraction_status, error_message, scraped_at

Company hiring signals (table view)

Company hiring signals output table

Sample record

One flat row per company. Example record (real output for https://boards.greenhouse.io/dropbox):

{
"input_value": "https://boards.greenhouse.io/dropbox",
"input_type_detected": "career_url",
"company_name": "Dropbox",
"company_domain": "dropbox.com",
"company_website_url": "https://dropbox.com",
"careers_url": "https://boards.greenhouse.io/dropbox",
"source_url": "https://boards.greenhouse.io/dropbox",
"source_type": "ats_public_page",
"hiring_status": "active",
"open_roles_count": 30,
"open_roles_count_capped": true,
"top_departments": "Engineering, Sales, Operations, Marketing, Customer Support",
"top_locations": "Remote -Mexico, Remote -Canada: Select locations, Remote -US: Select locations, Remote -US: All locations, Remote -Poland",
"remote_roles_count": 30,
"hybrid_roles_count": 0,
"target_keyword_matches": 19,
"matched_keywords": "data, engineer",
"sample_job_title_1": "Data Engineer",
"sample_job_url_1": "https://jobs.dropbox.com/listing/7739553?gh_jid=7739553",
"sample_job_title_2": "Data Engineer, Analytics Data Engineering",
"sample_job_url_2": "https://jobs.dropbox.com/listing/7739574?gh_jid=7739574",
"sample_job_title_3": "Data Engineer, Analytics Data Engineering",
"sample_job_url_3": "https://jobs.dropbox.com/listing/7739571?gh_jid=7739571",
"sample_job_title_4": "Data Scientist",
"sample_job_url_4": "https://jobs.dropbox.com/listing/7762004?gh_jid=7762004",
"sample_job_title_5": "Data Scientist",
"sample_job_url_5": "https://jobs.dropbox.com/listing/7762009?gh_jid=7762009",
"growth_signal_score": 95,
"growth_signal_label": "high",
"reason_tags": "active_hiring,high_role_volume,multi_department_hiring,multi_location_hiring,remote_or_hybrid_roles,target_keyword_match,careers_page_found",
"extraction_status": "success",
"error_message": "",
"scraped_at": "2026-06-09T02:50:55.014Z"
}

A run summary is stored in the default key-value store under RUN_SUMMARY with counters such as inputs_total, results_saved, duplicates_removed, filtered_out, charged_events, and companies_with_active_hiring.


Growth-signal score

A transparent 0–100 weighted sum (see PRD §7), based only on visible public fields:

  • Open-role volume bands (+40 / +30 / +20 / +10)
  • +15 for ≥3 hiring departments
  • +10 for ≥2 hiring locations
  • +10 for any remote/hybrid role
  • +15 / +8 for target-keyword matches
  • +5 for a dedicated careers URL

Labels: 80–100 high, 50–79 medium, 20–49 low, 1–19 none, 0 (uncertain) unknown.


Pricing

Pay Per Event. One event, company-signal-result, is charged only after a valid, unique company row is successfully pushed to the dataset. Duplicate companies, filtered-out companies, failed inputs, and raw job evidence are never charged. The actor honours your per-run spending limit and stops cleanly when it is reached.


🚦 Proxy policy

Use Apify Datacenter proxy or no proxy for normal runs — both work reliably for company websites and public ATS APIs at this actor's conservative concurrency.

Apify Residential proxy is not supported. The actor fails at startup if apifyProxyGroups includes RESIDENTIAL. Reason: in pay-per-event actors, residential bandwidth (~$8/GB) is billed to the developer, not the run user, so a single bandwidth-heavy run could exceed the per-result event revenue.

If you genuinely need residential routing, supply your own residential provider via the proxy editor's Custom proxy URLs field — that traffic goes through your provider, not Apify, and is unaffected:

http://user:pass@proxy.iproyal.com:12321
http://user:pass@proxy.brightdata.com:22225
http://user:pass@proxy.oxylabs.io:7777

How sources are found

For each company the actor tries, in order of reliability:

  1. Public ATS JSON APIs when the careers page is hosted on / links to one (Greenhouse, Lever, Ashby, SmartRecruiters, Recruitee, Workable).
  2. Schema.org JobPosting JSON-LD embedded in the careers page (server-rendered, standardized).
  3. Known-site adapters for notable companies that publish a custom public listings endpoint (e.g. Atlassian).
  4. ATS-token guessing — many companies host on a public board whose token derives from their name (e.g. canva → SmartRecruiters Canva, hubspot → Greenhouse hubspotjobs). The actor probes a small set of likely boards and keeps the one with the most roles.
  5. Generic careers-page HTML — job-detail links as a last resort.

Notes & limitations

  • Coverage is strongest for companies that publish jobs on a public ATS — which, thanks to token guessing and JSON-LD, includes many companies whose own careers site is a custom/JS app.
  • Company-name inputs are resolved best-effort via free public search; supplying a domain or careers URL is more reliable.
  • A custom JavaScript-only careers page with no public ATS board, JSON-LD, or adapter is reported as no_jobs_found/partial (this actor is HTTP-only by design — no headless browser).