Company Intent Scorer: Hiring, Funding & News Signals
Grade a list of companies A-D on real buying-readiness signals - hiring activity, funding events, and news momentum - with a plain-English reason behind every score for sales prioritization.
Input schema
Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.
| Field | Type | Required | Description |
|---|---|---|---|
mode | string | optional | Score every company, or compare this run with the previous run for the same monitor key. |
companiesText | string | optional | Paste company names, one per line. Domains and careers URLs are accepted in the advanced list below. |
companies | array | optional | Advanced list. Each item can include companyName (or name), domain, careersUrl, ats, atsToken and disambiguator. Plain strings are also accepted. If provided, this overrides the text list. |
Show all input fields
| Field | Type | Required | Description |
|---|---|---|---|
mode | string | optional | Score every company, or compare this run with the previous run for the same monitor key. |
companiesText | string | optional | Paste company names, one per line. Domains and careers URLs are accepted in the advanced list below. |
companies | array | optional | Advanced list. Each item can include companyName (or name), domain, careersUrl, ats, atsToken and disambiguator. Plain strings are also accepted. If provided, this overrides the text list. |
signals | array | optional | Buying signals to check. Disabling a scored signal normalizes the remaining weights to 100. |
lookbackDays | integer | optional | Funding, news and executive-change window. News trend counts also cover 7, 30 and 90 days. |
minScore | integer | optional | Drop scored companies below this intent score. Error records are always kept. |
targetTechnology | string | optional | Optional technology to check on the company homepage, e.g. HubSpot or Marketo. The gap result does not change the intent score. |
includeRawSignals | boolean | optional | In full output, add sample job titles and the top news headlines for auditing. |
outputFormat | string | optional | compact returns ranking fields plus top signals. full adds the score breakdown and per-signal detail. |
maxCompanies | integer | optional | Hard cap on companies processed per run. |
maxConcurrency | integer | optional | How many companies to process in parallel. Lower values are gentler on public sources. |
monitorKey | string | optional | (mode=monitor) Name of the tracking history. Use the same key each run to compare against the previous snapshot. |
emitUnchanged | boolean | optional | (mode=monitor) Include companies with no new or resolved signals and no score change. |
Download the published input schema
View complete JSON
{
"description": "Choose score or monitor, paste companies, and select the buying signals to check.",
"properties": {
"companies": {
"description": "Advanced list. Each item can include companyName (or name), domain, careersUrl, ats, atsToken and disambiguator. Plain strings are also accepted. If provided, this overrides the text list.",
"editor": "json",
"items": {
"properties": {
"ats": {
"description": "Optional provider name when you already know it: greenhouse, ashby, lever, workable, smartrecruiters, recruitee, personio, breezy or workday.",
"title": "ATS provider",
"type": "string"
},
"atsToken": {
"description": "Optional board token for the provider, e.g. the token in jobs.ashbyhq.com/linear.",
"title": "ATS token",
"type": "string"
},
"careersUrl": {
"description": "Optional careers page or job-board URL, e.g. https://jobs.lever.co/acme.",
"title": "Careers URL",
"type": "string"
},
"companyName": {
"description": "The company's legal or brand name.",
"title": "Company Name",
"type": "string"
},
"disambiguator": {
"description": "Optional word that must appear in news headlines, e.g. software for a common-word company name.",
"title": "Disambiguator",
"type": "string"
},
"domain": {
"description": "Optional root domain, e.g. notion.so. Avoids domain lookup.",
"title": "Domain",
"type": "string"
},
"name": {
"description": "Alias for companyName.",
"title": "Name (alias)",
"type": "string"
}
},
"type": "object"
},
"title": "Companies (advanced)",
"type": "array"
},
"companiesText": {
"description": "Paste company names, one per line. Domains and careers URLs are accepted in the advanced list below.",
"editor": "textarea",
"prefill": "Figma\nNotion\nLinear",
"title": "Companies (one per line)",
"type": "string"
},
"emitUnchanged": {
"default": false,
"description": "(mode=monitor) Include companies with no new or resolved signals and no score change.",
"prefill": false,
"title": "Emit unchanged companies",
"type": "boolean"
},
"includeRawSignals": {
"default": false,
"description": "In full output, add sample job titles and the top news headlines for auditing.",
"prefill": false,
"title": "Include raw evidence",
"type": "boolean"
},
"lookbackDays": {
"default": 90,
"description": "Funding, news and executive-change window. News trend counts also cover 7, 30 and 90 days.",
"maximum": 365,
"minimum": 7,
"prefill": 90,
"title": "Lookback days",
"type": "integer"
},
"maxCompanies": {
"default": 100,
"description": "Hard cap on companies processed per run.",
"maximum": 1000,
"minimum": 1,
"prefill": 3,
"title": "Max companies",
"type": "integer"
},
"maxConcurrency": {
"default": 3,
"description": "How many companies to process in parallel. Lower values are gentler on public sources.",
"maximum": 10,
"minimum": 1,
"prefill": 3,
"title": "Max concurrency",
"type": "integer"
},
"minScore": {
"default": 0,
"description": "Drop scored companies below this intent score. Error records are always kept.",
"maximum": 100,
"minimum": 0,
"prefill": 0,
"title": "Minimum score",
"type": "integer"
},
"mode": {
"default": "score",
"description": "Score every company, or compare this run with the previous run for the same monitor key.",
"editor": "select",
"enum": [
"score",
"monitor"
],
"enumTitles": [
"Score companies",
"Monitor changes since previous run"
],
"prefill": "score",
"title": "Mode",
"type": "string"
},
"monitorKey": {
"description": "(mode=monitor) Name of the tracking history. Use the same key each run to compare against the previous snapshot.",
"editor": "textfield",
"title": "Monitor key",
"type": "string"
},
"outputFormat": {
"default": "compact",
"description": "compact returns ranking fields plus top signals. full adds the score breakdown and per-signal detail.",
"editor": "select",
"enum": [
"compact",
"full"
],
"enumTitles": [
"Compact (ranking)",
"Full (all signal detail)"
],
"prefill": "compact",
"title": "Output format",
"type": "string"
},
"signals": {
"default": [
"hiring",
"funding",
"news",
"execChanges",
"layoffs",
"techStack"
],
"description": "Buying signals to check. Disabling a scored signal normalizes the remaining weights to 100.",
"editor": "select",
"items": {
"enum": [
"hiring",
"funding",
"news",
"execChanges",
"layoffs",
"techStack"
],
"enumTitles": [
"Hiring (ATS boards)",
"Funding (SEC Form D + press)",
"News momentum",
"Executive changes",
"Layoffs / risk",
"Tech stack enrichment"
],
"type": "string"
},
"prefill": [
"hiring",
"funding",
"news",
"execChanges",
"layoffs",
"techStack"
],
"title": "Signals",
"type": "array",
"uniqueItems": true
},
"targetTechnology": {
"description": "Optional technology to check on the company homepage, e.g. HubSpot or Marketo. The gap result does not change the intent score.",
"editor": "textfield",
"title": "Target technology",
"type": "string"
}
},
"required": [],
"schemaVersion": 1,
"title": "B2B Sales Trigger Intelligence Input",
"type": "object"
}
Output schema
Published result links and storage locations. This schema is not an exhaustive contract for every field in a dataset record.
| Field | Type | Required | Description |
|---|---|---|---|
companies | string | optional | One record per company with score, grade, signals and evidence; company_error records when all enabled sources fail. |
Download the published output schema
View complete JSON
{
"actorOutputSchemaVersion": 1,
"description": "Graded company records with hiring, funding, news, executive-change, layoff and technology evidence, plus monitor diffs.",
"properties": {
"companies": {
"description": "One record per company with score, grade, signals and evidence; company_error records when all enabled sources fail.",
"template": "{{links.apiDefaultDatasetUrl}}/items",
"title": "Company intent records",
"type": "string"
}
},
"title": "Company Intent Scorer: Hiring, Funding & News Signals Output"
}
Dataset schema
Published dataset views and any declared field definitions. A view can select only a subset of the returned record fields.
Download the published dataset schema
View complete JSON
{
"actorSpecification": 1,
"description": "Graded company records with hiring, funding, news, executive-change, layoff and technology evidence, plus monitor diffs.",
"title": "Company Intent Scorer: Hiring, Funding & News Signals Output",
"views": {
"funding": {
"display": {
"component": "table",
"properties": {
"companyName": {
"format": "text",
"label": "Company"
},
"fundingSignal": {
"format": "object",
"label": "Funding"
}
}
},
"title": "Funding Signals",
"transformation": {
"fields": [
"companyName",
"fundingSignal"
]
}
},
"hiring": {
"display": {
"component": "table",
"properties": {
"ats": {
"format": "text",
"label": "ATS"
},
"careersUrl": {
"format": "text",
"label": "Careers"
},
"companyName": {
"format": "text",
"label": "Company"
},
"hiringSignal": {
"format": "object",
"label": "Hiring"
}
}
},
"title": "Hiring Signals",
"transformation": {
"fields": [
"companyName",
"ats",
"careersUrl",
"hiringSignal"
]
}
},
"monitor": {
"display": {
"component": "table",
"properties": {
"companyName": {
"format": "text",
"label": "Company"
},
"grade": {
"format": "text",
"label": "Grade"
},
"monitor": {
"format": "object",
"label": "Changes"
},
"score": {
"format": "number",
"label": "Score"
}
}
},
"title": "Monitor Changes",
"transformation": {
"fields": [
"companyName",
"grade",
"score",
"monitor"
]
}
},
"news": {
"display": {
"component": "table",
"properties": {
"companyName": {
"format": "text",
"label": "Company"
},
"newsSignal": {
"format": "object",
"label": "News"
}
}
},
"title": "News Signals",
"transformation": {
"fields": [
"companyName",
"newsSignal"
]
}
},
"overview": {
"display": {
"component": "table",
"properties": {
"companyName": {
"format": "text",
"label": "Company"
},
"domain": {
"format": "text",
"label": "Domain"
},
"grade": {
"format": "text",
"label": "Grade"
},
"priorityFlag": {
"format": "boolean",
"label": "Priority"
},
"rationale": {
"format": "text",
"label": "Rationale"
},
"score": {
"format": "number",
"label": "Score"
},
"topSignal": {
"format": "text",
"label": "Top Signal"
}
}
},
"title": "Overview",
"transformation": {
"fields": [
"companyName",
"domain",
"grade",
"score",
"priorityFlag",
"topSignal",
"rationale"
]
}
},
"risk": {
"display": {
"component": "table",
"properties": {
"companyName": {
"format": "text",
"label": "Company"
},
"execChangeSignal": {
"format": "object",
"label": "Executive changes"
},
"riskSignal": {
"format": "object",
"label": "Layoff risk"
}
}
},
"title": "Executive & Risk Signals",
"transformation": {
"fields": [
"companyName",
"execChangeSignal",
"riskSignal"
]
}
},
"technology": {
"display": {
"component": "table",
"properties": {
"companyName": {
"format": "text",
"label": "Company"
},
"targetTechnology": {
"format": "object",
"label": "Target technology"
},
"techStackSignal": {
"format": "object",
"label": "Tech stack"
}
}
},
"title": "Technology",
"transformation": {
"fields": [
"companyName",
"techStackSignal",
"targetTechnology"
]
}
}
}
}
Key-value schema
Published key-value store definitions, when provided by this build.
This definition is not present in the default published build. See the published README for available documentation.
Published README
Read the full published documentation
Company Intent Scorer: Hiring, Funding & News Signals
Turn a list of target accounts into a ranked buying-signal report. For every company this actor checks public job boards, SEC Form D filings and funding coverage, entity-filtered news, executive changes, layoff risk and the company homepage, then returns one graded record with the evidence behind the score. No cookies, logins, API keys or proxy setup are needed.
What this actor does
- Scores and ranks every company on a 0–100 intent score with an A–D grade,
priorityFlag,topSignal,topSignals[]and a plain-Englishrationale - Finds real hiring on nine public applicant-tracking systems, including Workday, with role counts, 7/30/90-day velocity, function/seniority mix, remote counts and locations
- Finds real funding from SEC Form D filings and entity-matched press, with amount, round, valuation, date and confidence
- Filters news to the company, then derives news momentum, executive changes and layoff risk from the same matched headlines
- Adds a technology stack as enrichment and can check for one target technology without changing the intent score
- Monitors changes between runs: new signals, resolved signals, score movement and whether a company changed at all
- Omits empty fields at every depth instead of returning nulls
Output per company
Every record includes:
companyName— company name as provideddomain— verified primary domain, when one can be confirmedcompanyUrl— homepage URL built from the verified domaincareersUrl— careers page or public job-board URL when foundats— job-board provider when a board was foundgrade— A, B, C or Dscore— intent score from 0 to 100priorityFlag— true for grade A, funding in the last 180 days, or an executive change in the last 30 daystopSignal— one-line summary of the strongest signaltopSignals[]— up to three strongest signals withtype,label,summary,score,maxScore,latestDate,sourceandurlrationale— why the company received its grade, using the real counts and datesrunTimestamp— ISO 8601 run timestamperrors[]— per-source notes when a signal could not be fetched or a board was not foundtargetTechnology— when requested:{ name, present, category?, confidence? }monitor— in monitor mode:previousRunAt,newSignals[],resolvedSignals[],scoreDeltaandchanged
With outputFormat: "full" the record adds:
scoreBreakdown— normalized point contributions forhiring,funding,newsandexecChanges, plusriskAdjustmenthiringSignal—openRoles,postedLast7Days,postedLast30Days,postedLast90Days,remoteRoles,functionMix,seniorityMix,departmentMix,locations,newestPostingDate, legacytotalOpenRoles,rolesLast30Days,hasExecutiveRoles,hasSalesRoles,roleMix, and sample titles/jobs when raw evidence is enabledfundingSignal—amountUsd,roundType,announcedDate,daysSinceRound,valuationUsd,source,sourceUrl,headline,confidence,secFilingUrl,investors[]newsSignal—mentionsLast7Days,articleCount30d,mentionsLast90Days, positive/negative/neutral counts,topicTags,topSourceDomains, and top headlines when raw evidence is enabledtechStackSignal—technologies[]with name, category, confidence and evidence, pluscategories,detectedCount,homepageUrland the target-technology resultexecChangeSignal—changes[]with title, person, level, date, source and URLriskSignal—events[]with confirmed/hedged layoff itemssignals[]— normalized evidence rows for every enabled signal
If every enabled source fails for a company, the record instead contains type: "company_error", companyName, errors[] and runTimestamp.
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode |
string | score |
score or monitor |
companiesText |
string | – | Company names, one per line |
companies |
array | – | Advanced list of objects (or plain strings); accepts companyName/name, domain, careersUrl, ats, atsToken, disambiguator |
signals |
array | ["hiring","funding","news","execChanges","layoffs","techStack"] |
hiring, funding, news, execChanges, layoffs, techStack |
lookbackDays |
integer | 90 |
Funding, news and executive-change window (7–365) |
minScore |
integer | 0 |
Drop scored companies below this score |
targetTechnology |
string | – | Optional technology gap check, e.g. HubSpot |
includeRawSignals |
boolean | false |
In full output, add sample job titles and top headlines |
outputFormat |
string | compact |
compact ranking or full evidence detail |
maxCompanies |
integer | 100 |
Hard cap per run (1–1000) |
maxConcurrency |
integer | 3 |
Companies processed in parallel (1–10) |
monitorKey |
string | – | Tracking history name for mode: "monitor" |
emitUnchanged |
boolean | false |
In monitor mode, also emit companies with no change |
Example: score a short target list
{
"mode": "score",
"companiesText": "Figma\nNotion\nLinear",
"outputFormat": "compact"
}
Example: weekly account monitoring
{
"mode": "monitor",
"companiesText": "Figma\nNotion\nLinear\nRamp\nDatabricks",
"monitorKey": "q4-enterprise-targets",
"minScore": 40,
"maxCompanies": 200
}
Example: full evidence with a technology gap check
{
"mode": "score",
"companiesText": "Databricks\nSupabase\nCloudflare",
"outputFormat": "full",
"includeRawSignals": true,
"targetTechnology": "Marketo",
"lookbackDays": 120
}
Example: known domains and job boards
{
"mode": "score",
"companies": [
{ "companyName": "Notion", "domain": "notion.so", "disambiguator": "workspace" },
{ "companyName": "Linear", "careersUrl": "https://jobs.ashbyhq.com/linear" },
{ "companyName": "Scale AI", "ats": "greenhouse", "atsToken": "scaleai" }
],
"outputFormat": "full"
}
Use cases
- SDR and AE prioritization — sort a territory by intent grade before a prospecting block
- Account-based marketing — trigger plays when a target starts hiring, raises a round or changes leadership
- RevOps hygiene — re-score dormant accounts and filter out anything below the score your team acts on
- Competitive and market research — compare hiring pace, funding events and technology choices across a market
- Customer expansion — watch existing accounts for new funding, new executives and hiring surges
- Weekly change monitoring — use
mode: "monitor"to see only the accounts that changed since the last run
FAQ
What sources does the score use? Public applicant-tracking boards for hiring, SEC Form D filings and press coverage for funding, Google News RSS for entity-matched news, and the company's public homepage for technology detection.
How is the score calculated? Hiring contributes up to 40 points, funding up to 35, news up to 15 and executive changes up to 10. If you disable a scored signal, the remaining weights are normalized to 100. A confirmed company-specific layoff in the last 90 days subtracts up to 10 points; risk can never raise the score. Grade A is 70+, B is 45–69, C is 20–44 and D is below 20.
Why is funding missing for some companies? The actor reports only funding it can verify from an SEC Form D or an entity-matched press headline with a real amount or round. Private companies without a recent filing or clear coverage are left without a funding signal rather than guessed at.
Why does a company have no hiring signal? Only public job boards are used. If the company's careers site does not expose one of the supported boards, the actor omits the hiring signal and adds a note instead of counting unrelated jobs.
Why is news missing or smaller than a web search?
Headlines must contain the company name as the subject, and tracker pages, listicles, homonyms and another-entity mentions are removed. Add a disambiguator in the advanced list when a company name is a common word.
Do I need an API key or a proxy? No. The actor uses public, cookieless sources. Just fill in the input and run it.
How does monitor mode remember the previous run?
It stores a compact snapshot under your monitorKey. Use the same key on every scheduled run; a new key starts a fresh baseline. emitUnchanged controls whether unchanged companies appear too.
What is the difference between compact and full output? Compact returns the ranking fields and top signals. Full adds the score breakdown and the detailed hiring, funding, news, technology, executive-change and risk objects.
Why are some Workday posting dates approximate? Workday normally shows relative dates such as "Posted 5 Days Ago" or "30+ Days Ago". The actor maps those to dates and marks the hiring signal as approximate when a board uses them.
Is this affiliated with the job boards, SEC or news publishers? No. This is an independent actor that reads public information; it is not affiliated with or endorsed by those services.
Python quickstart
Use a schema-derived input and the Python standard library to start a run. An Apify account and token are required for execution.
Source build snh2nvfgk9s62uO6W. Documentation is regenerated from the default published build; private drafts are not included.