Intent Signals — Public Activity Evidence avatar

Intent Signals — Public Activity Evidence

Pricing

from $3.40 / 1,000 company activity reports

Go to Apify Store
Intent Signals — Public Activity Evidence

Intent Signals — Public Activity Evidence

Turn company names and Greenhouse, Lever, or Ashby tokens into public role and dated-headline evidence with source receipts, confidence, gaps, and a manual next action. The score prioritizes research; it does not prove buying intent.

Pricing

from $3.40 / 1,000 company activity reports

Rating

0.0

(0)

Developer

Tim Zinin

Tim Zinin

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

Intent Signals — Public Company Activity Evidence

Turn company names and buyer-supplied Greenhouse, Lever, or Ashby board tokens into a review-ready public activity record. Each row combines only the sources you requested, attaches retrieval evidence and freshness, explains a transparent 0–100 activity-priority heuristic, states confidence and data gaps, and recommends a manual next step.

The compatibility fields intentScore and intentSignals remain so existing integrations do not break. They are aliases, not a stronger claim. A job listing or keyword-matched headline does not prove buying intent, budget, growth, demand, purchase timing, legal-entity identity, or permission to contact anyone.

Public Company Activity Evidence turns company names and ATS tokens into bounded source observations, confidence, gaps, and a manual research action

What you get

  • Three explicit research modes. A company name requests dated headline research; provider:token requests only the selected public ATS board; Company|provider:token requests both. The Actor no longer pulls a name search silently when you asked only for a job board.
  • Current public role observations. Open-role count, sales/marketing/engineering keyword classifications, a bounded role sample, provider, board URL, and ATS-attribution disclosures.
  • Fresh, dated headline observations. Google News RSS items are returned only when they carry a parseable publication time inside your requested window. Publisher name, publisher URL, RSS item link, and publication time stay attached.
  • A transparent research-priority score. Every point comes from documented current-role counts or headline keyword matches. scoringBreakdown shows the contribution of each component.
  • Evidence and failure truth. Source URL, retrieval time, HTTP status, response size, content type, record count, and outcome are included in evidence. A wrong HTTP-200 payload is a source failure, not a clean zero.
  • Decision context. Stable entity/observation/event IDs, freshness, source coverage, confidence with reasons, data gaps, a review action, change semantics, and safeToAutomate: false.
  • Run reconciliation. KVS OUTPUT records requested, unique, processed, confirmed-delivered, paid, free-failure, withheld, unprocessed, advisory, partial, fatal, and replay-safe state.
  • Apify-native delivery. Schedule runs, call the API or MCP server, export JSON/CSV/Excel, and route rows through webhooks, Make, Zapier, n8n, a CRM staging table, or your own code.

Who this is for

Founder-led sales and small agencies

Use it to decide which accounts deserve manual research first. A current role mix or a recent dated headline can give a researcher a useful question to investigate. It is not a reason to send automated outreach by itself.

Account-based marketing and RevOps teams

Add evidence receipts and observable public activity to a buyer-defined account list. Keep the score separate from CRM fit, relationship history, firmographics, consent, suppression lists, and sales-qualified status.

Recruiters and specialist service providers

Review the functions represented on a public ATS board and open the source role before deciding whether a staffing, recruiting, training, design, or implementation service is relevant.

Competitive and portfolio research

Collect a consistent point-in-time observation across a watchlist. The Actor records one observation per run; your own scheduled Dataset history can support comparisons, but this Actor does not invent a prior baseline or call one snapshot a trend.

Market researchers and data teams

Use the normalized row as an enrichment input, not a final classification. Stable IDs, evidence, gaps, and OUTPUT make it easier to audit what was actually observed and what was not.

What this Actor is — and is not

It is a narrow evidence aggregator over two public source classes selected by the buyer:

  1. current public postings on Greenhouse, Lever, or Ashby; and
  2. dated Google News RSS results for an exact-name query.

It is not a replacement for a commercial intent-data provider. It has no private publisher co-op data, website visitor identity, ad impressions, topic-consumption history, CRM engagement, email behavior, purchase data, or proprietary company-resolution graph. It does not estimate likelihood to buy.

The score answers a smaller question: “How much observable public activity should a human review in this row?” It does not answer: “Will this company buy?”

Choose the right input mode

Input formSources requestedIdentity meaningGood for
MicrosoftNews onlyExact-name search; entity match remains unverifiedReviewing recent dated coverage around a named account
greenhouse:stripeHiring onlyExact public provider/token selected by the buyer; ownership still not independently verifiedReviewing a known ATS board without adding a name search
`Rampashby:ramp`Hiring + newsBuyer asserts that the name and ATS token belong together; Actor does not independently prove that link
`Pulsepulse`Hiring + news; all ATS providers probedBare ATS token may match multiple unrelated boards

Prefer an explicit provider:token. A bare token is not a company identifier.

Why bare tokens require review

The same token can exist on more than one ATS. A previously live-verified example is pulse: Greenhouse exposed a high-volume board named “Pulse Healthcare,” while Ashby exposed another real board associated with runpulse.com. Choosing the board with the most roles would be a volume decision, not an identity decision.

The Actor preserves the earlier attribution repair:

  • every structurally valid candidate board remains visible;
  • the selected provider is disclosed as a role-count choice;
  • ATS-declared names and websites are returned when observable;
  • sameName compares only normalized declared names;
  • a matching name is never labeled common ownership;
  • partial provider reachability remains visible in sourceErrors and allProvidersChecked.

If identity matters, find the ATS link on the company’s own website and submit the explicit provider/token yourself.

Public Company Activity Evidence workflow from bounded Greenhouse Lever Ashby and Google News RSS observations through source validation freshness score evidence confidence gaps and manual actions

How the workflow works

  1. Validate before source work. The Actor requires 1–100 company strings. It rejects non-strings, empty values, unsupported ATS prefixes, malformed tokens, out-of-range integers, and invalid keyword arrays instead of coercing them silently.
  2. Deduplicate by source semantics. Google News names are case-folded. Greenhouse and Ashby tokens are case-folded because their observed endpoints are case-insensitive. Lever token case is preserved. Duplicate count is written to OUTPUT.
  3. Request only the selected sources. Hiring-only input does not make a news request. News-only input does not probe ATS providers. Combined input requests both concurrently.
  4. Bound every response. Requests time out after 20 seconds. The response body is capped at 3 MB, content type is checked, and JSON/RSS structure is validated before a source is considered usable.
  5. Normalize ATS observations. Title, department, location, source URL, and posting time are mapped to one role shape. Function counts are keyword classifications, not employer-authored facts in every case.
  6. Filter headline freshness. The Google News query includes the requested window, and the Actor independently filters returned items by their parseable publication time. Missing-date, out-of-window, and implausibly future items are excluded and counted.
  7. Calculate an explainable score. The score uses only the documented formula below. Multiple keywords in the same headline still count as one matched headline.
  8. Separate score from confidence. More observed activity can increase activityScore; identity ambiguity, partial coverage, or a name-only news query can reduce confidence. One cannot compensate for the other.
  9. Attach a decision layer. Stable IDs, evidence receipts, freshness, confidence reasons, gaps, a manual action, score semantics, and safeToAutomate: false are added to the same backward-compatible row.
  10. Deliver and reconcile. A successful report uses one linked Dataset/PPE call. The runtime requires the exact Apify SDK aggregate receipt. Ambiguous delivery stops the run, marks replaySafe: false, and is never retried as a second free row.

Score methodology

activityScore is clamped to 0–100. intentScore is the exact compatibility alias.

Observable componentPointsCap
Current public roles2 per role30
Roles classified as sales3 per role20
Roles classified as marketing3 per role15
Roles classified as engineering2 per role15
Dated headline containing at least one configured activity keyword10 per headline40

Role-function points intentionally overlap the general role-count component. Headline presence without a configured keyword match contributes zero points: a name query can return namesakes or common-word matches, so presence alone is not a reason to raise review priority. This makes the score useful as a deterministic review queue for teams interested in commercial and technical activity. It does not make the score a calibrated probability, a growth metric, or a commercial-intent measurement.

What the live local acceptance run exposed

On 2026-08-10T23:28Z, the upgraded runtime was executed once with Microsoft, greenhouse:stripe, and Ramp|ashby:ramp, a 30-day window, five returned headlines, and the custom phrases launch, partnership, acquisition. The three source checks completed and KVS OUTPUT reconciled requested=3, processed=3, confirmedDelivered=3, partial=false, and replaySafe=true. That run exposed one final score defect: unmatched headline presence still added five points. The final source makes that contribution zero. The source counts/headline below are the exact captured observations; the displayed scores apply the corrected deterministic formula that the platform canary must confirm.

[
{
"input": "Microsoft",
"inputMode": "news_only",
"activityScore": 0,
"sourceCoverage": { "hiring": "not_requested", "news": "ok" },
"confidence": { "score": 40, "level": "low" },
"safeToAutomate": false
},
{
"input": "greenhouse:stripe",
"inputMode": "hiring_only",
"hiring": { "provider": "greenhouse", "openRoles": 557 },
"activityScore": 80,
"sourceCoverage": { "hiring": "ok", "news": "not_requested" },
"confidence": { "score": 80, "level": "high" },
"safeToAutomate": false
},
{
"input": "Ramp|ashby:ramp",
"inputMode": "combined",
"hiring": { "provider": "ashby", "openRoles": 128 },
"recentNews": [
{
"title": "Intel Completes RAMP-C Program, Accelerating Momentum for Secure Enclave - Intel Newsroom",
"sourceName": "Intel Newsroom",
"pubDate": "2026-07-28T07:00:00.000Z"
}
],
"activityScore": 80,
"sourceCoverage": { "hiring": "ok", "news": "ok" },
"confidence": { "score": 65, "level": "medium" },
"safeToAutomate": false
}
]

The last row is exactly why score and confidence are separate: the Google News exact-name query for the common word “Ramp” returned an Intel RAMP-C headline unrelated to Ramp the company. It carried source evidence but no configured keyword-match points, and the row kept the name-query identity gap. A downstream system that treated every headline as company evidence would be wrong.

The default headline phrases are:

funding, raises, series a, series b, series c, seed round, investment, launch, launches, unveils, expands, expansion, partnership, partners with, acquires, acquisition, ipo, hires, appoints, new ceo, new cmo.

Supply activityKeywords to replace that list with terms relevant to your research. A text match means only that the phrase appeared in an RSS headline. It does not validate the story, sentiment, materiality, company identity, or commercial relevance.

Confidence is not the score

confidence.score explains how safely the row can be interpreted as an observation of the requested sources. It is not confidence that a company will buy.

Confidence can increase when:

  • the buyer supplied an explicit ATS provider/token;
  • every requested source returned a structurally valid response; and
  • source-level retrieval evidence is present.

Confidence can decrease when:

  • a name query is used and the legal entity was not resolved;
  • a bare ATS token has namesake candidates or no observable owner name;
  • one requested source is partial or unavailable; or
  • no usable source was observed.

Every reason is returned in confidence.reasons. The highest possible score is intentionally below 100 because public-source observations do not independently establish corporate ownership or business meaning.

Source coverage and failure semantics

Each requested source has one of four states:

StateMeaning
okThe requested source returned a supported content type and structurally valid payload
partialUsable evidence exists, but part of a multi-provider ATS probe failed
errorThe requested source could not produce a usable observation
not_requestedYour input mode did not request that source

sourceErrors preserves the reason. Clean no-board/not-found responses are not treated like timeouts, invalid JSON, wrong response shapes, or oversized bodies.

If every requested source fails, the row has found: false, activityScore: null, intentScore: null, zero confidence, and a retry action. If requested sources return cleanly but yield no qualifying board or dated headline, the row has found: false and score 0. Those are different outcomes.

If one source succeeds and the other fails, the Actor can deliver a partial row. Coverage, confidence, gaps, and summary all disclose the missing side.

Input

FieldRequiredContract
companiesyes1–100 strings. Company name, provider:token, or `Company name
activityKeywordsno1–50 non-empty strings, maximum 100 characters each. Replaces the default headline phrase list.
newsWindowDaysnoInteger 1–90. Default 30. Only items with parseable times inside the window are returned.
maxNewsItemsnoInteger 1–30. Default 15. Applied after freshness filtering.
maxConcurrencynoInteger 1–10. Default 4. Source work may be concurrent; paid delivery is serialized.

Example:

{
"companies": [
"Microsoft",
"greenhouse:stripe",
"Ramp|ashby:ramp"
],
"activityKeywords": [
"launch",
"partnership",
"acquisition"
],
"newsWindowDays": 30,
"maxNewsItems": 10,
"maxConcurrency": 3
}

Output example

The following illustrates the upgraded contract using fields derived from the Actor’s live source classes. Counts and headlines change over time; always use observedAt, evidence, and the cited URLs from your own run.

{
"input": "Ramp|ashby:ramp",
"inputMode": "combined",
"companyName": "Ramp",
"found": true,
"hiring": {
"provider": "ashby",
"token": "ramp",
"matchBasis": "explicit",
"boardUrl": "https://api.ashbyhq.com/posting-api/job-board/ramp",
"openRoles": 118,
"salesHiring": 46,
"marketingHiring": 16,
"engineeringHiring": 30,
"roleSample": [
{
"title": "Security Engineer, Cloud",
"department": "Engineering",
"location": "New York, NY (HQ)",
"url": "https://jobs.ashbyhq.com/ramp/example",
"postedAt": "2026-04-07T17:12:35.753Z"
}
],
"ownerName": null,
"ownerWebsite": null,
"candidates": [],
"sourceErrors": [],
"allProvidersChecked": true
},
"recentNews": [
{
"title": "Ramp launches new product capability - Example Publisher",
"link": "https://news.google.com/rss/articles/example",
"pubDate": "2026-08-10T12:00:00.000Z",
"sourceName": "Example Publisher",
"sourceUrl": "https://publisher.example",
"freshnessStatus": "within_window"
}
],
"newsMetadata": {
"query": "\"Ramp\" when:30d",
"requestedWindowDays": 30,
"feedItemCount": 100,
"qualifyingItemCount": 12,
"returnedItemCount": 10,
"excludedOutsideWindow": 88,
"excludedMissingDate": 0,
"entityMatchBasis": "exact_name_query_unverified"
},
"activitySignals": [
"observed 118 open roles (ashby)",
"observed sales-role listings (46)",
"headline match: \"Ramp launches new product capability - Example Publisher\" (launch)"
],
"activityScore": 90,
"scoringBreakdown": {
"openRoles": 30,
"salesRoles": 20,
"marketingRoles": 15,
"engineeringRoles": 15,
"matchedHeadlines": 10,
"unmatchedHeadlinePresence": 0
},
"intentSignals": [
"observed 118 open roles (ashby)",
"observed sales-role listings (46)",
"headline match: \"Ramp launches new product capability - Example Publisher\" (launch)"
],
"intentScore": 90,
"sourceCoverage": {
"hiring": "ok",
"news": "ok"
},
"sourceErrors": {
"hiring": null,
"news": null
},
"entityId": "company_query_…",
"observationId": "observation_…",
"eventId": "event_…",
"observedAt": "2026-08-11T12:00:00.000Z",
"freshness": {
"observedAt": "2026-08-11T12:00:00.000Z",
"ageSecondsAtDelivery": 0,
"newsWindowDays": 30,
"hiringBasis": "live_public_board_at_request_time",
"newsBasis": "dated_headlines_filtered_to_requested_window"
},
"change": {
"basis": "single_observation",
"previousObservationAvailable": false,
"delta": null
},
"evidence": [
{
"evidenceId": "evidence_…",
"source": "ats_ashby",
"evidenceType": "public_ats_response",
"url": "https://api.ashbyhq.com/posting-api/job-board/ramp",
"retrievedAt": "2026-08-11T11:59:59.000Z",
"httpStatus": 200,
"contentType": "application/json",
"responseBytes": 123456,
"outcome": "valid_response",
"recordCount": 118
},
{
"evidenceId": "evidence_…",
"source": "google_news_rss",
"evidenceType": "public_news_search_response",
"url": "https://news.google.com/rss/search?q=…",
"retrievedAt": "2026-08-11T11:59:59.000Z",
"httpStatus": 200,
"contentType": "application/xml",
"responseBytes": 98765,
"outcome": "valid_response",
"recordCount": 100,
"qualifyingRecordCount": 12
}
],
"evidenceCoverage": 100,
"confidence": {
"score": 65,
"level": "medium",
"reasons": [
"The buyer supplied an explicit ATS provider and token.",
"A Google News name query can include namesakes or unrelated mentions; entity identity was not independently resolved.",
"Every requested source returned a structurally valid response.",
"Source-level retrieval evidence is attached."
]
},
"dataGaps": [
"Google News results are selected by a name query; confirm entity identity and open the cited source before outreach.",
"The activity score is a transparent prioritization heuristic; it does not measure buying intent, budget, demand, or purchase probability.",
"This run is a single observation and does not calculate change versus a prior run."
],
"recommendedAction": "Review the cited board and headlines, confirm the company identity and business context, then decide whether this account deserves manual research.",
"safeToAutomate": false,
"scoreSemantics": {
"primaryField": "activityScore",
"compatibilityAlias": "intentScore",
"meaning": "Observation-priority heuristic from current public job-board counts and dated headline keyword matches.",
"doesNotProve": [
"buying intent",
"budget",
"purchase timing",
"growth",
"demand",
"entity identity"
]
},
"summary": "Ramp — 118 current public role(s) on ashby; 10 dated headline(s) inside 30 days; activity-priority score 90/100. Review evidence manually; this is not proof of buying intent.",
"checkedAt": "2026-08-11T12:00:00.000Z"
}

The values above are an explanatory contract example, not a promise that Ramp currently has those counts or headlines. The source evidence in your run is the authoritative observation.

Field guide

FieldMeaning
inputExact normalized submitted string
inputModenews_only, hiring_only, or combined
companyNameName used for the news query, or the ATS token label for hiring-only input
foundWhether at least one qualifying board observation or dated headline was delivered
hiringNormalized selected ATS board and bounded role evidence, or null
recentNewsDated RSS items inside the requested window, up to maxNewsItems
newsMetadataQuery, window, feed counts, exclusions, and entity-match basis
activityScorePrimary transparent review-priority heuristic, 0–100 or null on all-source failure
intentScoreExact backward-compatible alias of activityScore
activitySignalsHuman-readable observed inputs that contributed points
intentSignalsExact backward-compatible alias of activitySignals
scoringBreakdownPoint contribution by role and headline component
sourceCoveragePer-source ok, partial, error, or not_requested state
sourceErrorsFailure/partial reasons that must not be interpreted as zero activity
entityIdStable hash for the normalized query identity and input mode
observationIdStable hash for this entity plus observation time
eventIdStable hash for this observation and its event class
freshnessObservation time and source-specific freshness basis
changeExplicit single-observation state; no fabricated prior delta
evidenceSource-level retrieval receipts with stable evidence IDs
evidenceCoveragePercentage of requested source classes with usable evidence
confidenceInterpretation confidence plus human-readable reasons, not purchase probability
dataGapsMaterial boundaries a downstream user must retain
recommendedActionConservative manual research or retry step
safeToAutomateAlways false; sources are insufficient for autonomous outreach or CRM verdicts
scoreSemanticsMachine-readable meaning and non-claims for the legacy score alias
summaryPlain-English observation and limitation

KVS OUTPUT reconciliation

The Dataset tells you what rows exist. KVS OUTPUT tells you whether the run completed as intended.

Important counters include:

  • requestedCompanyCount and uniqueCompanyCount;
  • duplicateInputCount;
  • processedCompanyCount;
  • confirmedDeliveredCompanyCount;
  • paidCompanyCount and freeFailureCompanyCount;
  • withheldCompanyCount and unprocessedCompanyCount;
  • advisoryRowCount;
  • partial and budgetStopped;
  • replaySafe; and
  • fatalError.

Do not infer completeness from run status alone. Check OUTPUT.status, every counter, and replaySafe before replaying a failed or partial run.

Pricing and billing semantics

The active model is pay per event. Tier-specific prices observed on the Actor configuration are:

Apify tierRun startDelivered company activity report
Free$0.00500$0.00400
Bronze$0.00475$0.00380
Silver$0.00450$0.00360
Gold$0.00425$0.00340
Platinum$0.00410$0.00328
Diamond$0.00400$0.00320

result-found means one successfully linked Dataset/PPE delivery for one unique company input with at least one qualifying observation. It does not mean one charge per role, headline, keyword, or evidence object.

Clean zero-observation rows and source-failure rows do not use result-found. The automatic run-start event can still be charged even if input is invalid or sources fail. Equivalent duplicate inputs are processed once and reported in OUTPUT.

Before a paid delivery, the runtime checks whether the configured maximum charge can cover another combined row. Paid delivery is serialized across concurrent workers. On the current pinned Apify SDK, a linked Dataset/PPE operation produces an aggregate chargedCount of exactly 2; any other receipt is treated as ambiguous. A thrown or ambiguous linked delivery stops the run and sets replaySafe: false rather than retrying a row whose delivery state is unknown.

Pricing shown by Apify is authoritative if platform configuration changes after this README was published.

API use

Apify API with curl

curl -X POST \
"https://api.apify.com/v2/acts/zinin~intent-signal-aggregator/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"companies": ["Microsoft", "greenhouse:stripe", "Ramp|ashby:ramp"],
"newsWindowDays": 30,
"maxNewsItems": 10,
"maxConcurrency": 3
}'

Keep tokens in your secret manager or Apify integration settings. Do not hard-code them in a public repository.

JavaScript client

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('zinin/intent-signal-aggregator').call({
companies: ['Microsoft', 'greenhouse:stripe', 'Ramp|ashby:ramp'],
activityKeywords: ['launch', 'partnership', 'acquisition'],
newsWindowDays: 30,
maxNewsItems: 10,
maxConcurrency: 3,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const output = await client.keyValueStore(run.defaultKeyValueStoreId).getRecord('OUTPUT');
console.log(items);
console.log(output?.value);

Python client

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("zinin/intent-signal-aggregator").call(run_input={
"companies": ["Microsoft", "greenhouse:stripe", "Ramp|ashby:ramp"],
"newsWindowDays": 30,
"maxNewsItems": 10,
"maxConcurrency": 3,
})
items = list(client.dataset(run["defaultDatasetId"]).iterate_items())
output = client.key_value_store(run["defaultKeyValueStoreId"]).get_record("OUTPUT")
print(items)
print(output["value"] if output else None)

Practical workflows

Manual account-research queue

  1. Export a buyer-defined account list from your CRM.
  2. Add explicit ATS tokens where your researchers have identified them.
  3. Run this Actor with vocabulary relevant to the campaign.
  4. Sort by activityScore, then by confidence.score.
  5. Open evidence and the headline/role URLs.
  6. Confirm company identity, relevance, decision maker, suppression status, and lawful outreach basis.
  7. Write a human-qualified note back to a CRM staging field — never overwrite a sales stage from the score alone.

Agency vertical research

A web agency might watch phrases such as rebrand, website, ecommerce, or launch; a recruiting firm might use sales, engineering, or new office; a logistics consultant might use distribution, warehouse, or supply chain. These are text filters, not proofs of pain or demand. Use them to find source material worth reading.

Scheduled monitoring

Run a stable input list on an Apify schedule and retain Dataset history. Compare rows using entityId, observedAt, source evidence, role counts, and headline identities in your own warehouse. This Actor sets change.previousObservationAvailable: false because it does not own a baseline; your monitoring layer should calculate a delta only when two comparable successful observations exist.

CRM enrichment

Store source evidence and the manual review outcome in separate fields. Recommended minimum columns:

  • company/account ID from your system;
  • entityId and observationId from this Actor;
  • activityScore and confidence.score in separate columns;
  • source coverage and observation time;
  • reviewer decision and review time; and
  • the evidence URLs used for that decision.

Privacy, rights, and responsible use

  • The Actor requests public job-board APIs and public Google News RSS metadata. It does not log in, use cookies, scrape private profiles, or collect article bodies.
  • Role samples can contain job titles and public source URLs. Headlines can mention people, executives, or other entities. Treat all output as research data and minimize what you retain.
  • “Publicly accessible” does not automatically grant every reuse right. Review the terms, licenses, database rights, and applicable laws for your jurisdiction and use case.
  • Publisher ownership remains with the publisher. Open the cited source and follow its terms; an RSS headline is not a license to republish the article.
  • Do not use the Actor to make employment, credit, insurance, housing, legal, medical, or similarly high-impact decisions about individuals.
  • Do not infer sensitive attributes or build personal profiles from job or news data.
  • This Actor does not create consent or legitimate interest for outreach. Apply your own suppression, consent, privacy, and anti-spam controls.
  • Apify storage retention and access depend on your account and run settings. Delete or export datasets according to your own data-governance policy.

Reliability and security boundaries

  • Source hosts are fixed by the runtime: Greenhouse, Lever, Ashby, and Google News. Buyers do not submit arbitrary fetch URLs.
  • Requests have a 20-second timeout and 3 MB response cap.
  • JSON and XML content types are checked before parsing.
  • Provider-specific response shapes are validated. An empty valid array is distinct from a malformed payload.
  • Only headlines with parseable dates inside the selected window are returned.
  • Input values and integers are validated without silent string/number coercion.
  • Source coverage is independent from activity score.
  • Paid delivery is guarded by a mutex, budget preflight, exact linked receipt, and OUTPUT reconciliation.
  • No automatic retry occurs after an ambiguous Dataset/PPE delivery.

External sources can change, rate-limit, block, redirect, or alter schemas without notice. The Actor reports those failures; it cannot guarantee continuous third-party availability.

Limitations

  • Google News name matching can return namesakes, subsidiaries, similarly named products, quoted references, or unrelated organizations. The Actor does not resolve a legal entity.
  • RSS coverage is selected and ranked by Google. It is not an exhaustive news database.
  • The query locale is currently English/United States (hl=en-US, gl=US, ceid=US:en). Non-English or local coverage can be incomplete.
  • Publication time is the feed’s value, not an independently verified publication or event time.
  • Keyword matching is literal, case-insensitive substring matching. It does not understand negation, sarcasm, rumor, materiality, or article context.
  • The Actor does not fetch or fact-check article bodies.
  • ATS boards show currently exposed postings, not internal requisitions, hires, filled roles, workforce changes, budget, or company growth.
  • Function classification uses title/department keywords and can misclassify ambiguous roles.
  • Explicit provider/token input identifies an endpoint selected by the buyer; it does not independently prove ownership.
  • Bare-token provider selection remains a discovery aid. Role count is not identity.
  • The Actor produces one point-in-time observation. It does not calculate a historical trend without an external comparable baseline.
  • activityScore is not trained or calibrated against outcomes and must not be presented as predicted intent.

FAQ

Does this tell me which company is ready to buy?

No. It tells you which submitted rows contain more observable public role/headline activity under a documented heuristic. Confirm identity, relevance, actual needs, and lawful outreach basis yourself.

Why keep the name “Intent Signal Aggregator” and the intentScore field?

The Actor already has a public slug and integrations using those fields. Removing them would break compatibility. The Store title, README, activityScore, scoreSemantics, and row-level gaps now state the narrower supported meaning. intentScore is exactly the same number as activityScore, not a hidden model.

Is a high score better than high confidence?

They answer different questions. Score ranks the amount/type of observed activity. Confidence describes how safely the row can be interpreted as evidence for the requested sources. A high-score, low-confidence namesake result should be reviewed carefully, not promoted automatically.

Why did greenhouse:stripe stop returning news?

That syntax is documented as hiring-only. Earlier runtime behavior still issued a news query using the token text, creating an undocumented and potentially ambiguous extra source. Use Stripe|greenhouse:stripe when you intentionally want both.

Why is a valid board with zero roles a delivered report?

The report still contains a structurally valid source observation, evidence receipt, provider/token context, confidence, gaps, and next action. Pricing is per delivered company report, not per role.

Why is my news result empty even when the feed returned items?

Items without a parseable publication time, outside the requested window, or implausibly in the future are excluded. newsMetadata shows feed, qualifying, returned, missing-date, and outside-window counts.

Can one headline match several keywords?

Yes, all matching phrases are shown in the signal text, but the headline contributes only one 10-point match. This prevents multiple phrases in one title from being counted as multiple independent articles.

Can I use non-English keywords?

You can supply any bounded Unicode string as an activity keyword, but the Google News query locale is English/US and coverage may be poor for other languages. ATS tokens remain ASCII slugs.

Does it need source API keys or proxies?

No. The supported sources are public and keyless. You still need your Apify token to call the Actor through the API.

What happens when one source times out?

If the other requested source succeeds, the Actor can deliver a partial row with lower confidence, explicit coverage/error fields, and a gap. If all requested sources fail, the row is free, unscored, and recommends a retry.

Will it retry a failed paid delivery?

Not automatically when delivery state is ambiguous. Retrying could duplicate a row or charge. Read KVS OUTPUT, the Dataset, and charge events first; obey replaySafe.

Can an AI agent call it?

Yes, through Apify API or MCP. The row deliberately includes machine-readable non-claims and safeToAutomate: false. An agent can organize evidence, but should not turn the score into autonomous outreach or a commercial verdict.

No. Source access, storage, enrichment, marketing, privacy, copyright, and anti-spam obligations depend on your jurisdiction and use case. Obtain professional advice when needed.

ActorUse it when
Company Hiring RadarYou need deeper evidence from Greenhouse, Lever, or Ashby: full roles, locations, remote share, posting-time coverage, role matching, and ATS attribution without news aggregation.
Website Contact ExtractorAfter manual qualification, you need public first-party business contact channels with source pages and coverage limits.
Lead List QualifierYou need a broader transparent account-research score across submitted domains while keeping source identity and confidence separate.
Company Profile LookupYou need a company/domain profile for additional firmographic context.
Company Registry EnricherYou need official registry context to help resolve legal-entity identity.
Counterparty Risk RollupYou need a separate compliance-research workflow; it is not a substitute for legal review.

Support

When reporting a problem, include the run ID, normalized input, source coverage, evidence outcome, and KVS OUTPUT. Do not post Apify tokens or sensitive CRM data publicly.

Built by zinin. Questions: Telegram @timzinin.