Alternative Data Signal Aggregator avatar

Alternative Data Signal Aggregator

Pricing

Pay per event

Go to Apify Store
Alternative Data Signal Aggregator

Alternative Data Signal Aggregator

Turn public news, hiring, and SEC filing data into one auditable company research indicator with evidence and cross-run hiring deltas.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Categories

Share

Turn public news, hiring, and SEC filing data into one auditable research indicator per US-listed company.

The actor joins three anonymous HTTP sources:

  • πŸ“° Google News RSS for headline sentiment and velocity
  • πŸ§‘β€πŸ’» Public Greenhouse boards for opening counts and cross-run changes
  • πŸ›οΈ SEC Company Facts for filing-backed revenue and gross-margin changes

Instead of exporting thousands of unrelated raw records, it saves one normalized company row with a -100..100 score, confidence, rationale, timestamps, and evidence URLs.

The score is a transparent research indicator. It is not investment advice, a price forecast, or a buy/sell instruction.

What does Alternative Data Signal Aggregator do?

For every supplied ticker and Greenhouse board mapping, the actor:

  1. resolves the ticker to an SEC CIK;
  2. searches recent Google News RSS headlines;
  3. scores headline words with a deterministic local lexicon;
  4. loads the company's current public Greenhouse openings;
  5. compares job IDs with the prior named-store snapshot;
  6. extracts comparable annual SEC revenue and gross profit facts;
  7. calculates three component scores;
  8. combines them using your normalized weights;
  9. saves one evidence-linked dataset row.

The first run is clearly marked as a baseline. Later runs with the same snapshot settings can report new, removed, and net job openings.

Who is it for?

Quant researchers

Schedule a small ticker watchlist and receive consistent rows that can enter a feature store or review queue.

Equity analysts

Use evidence URLs and plain-language rationale to identify companies that need deeper primary research.

Small funds and family offices

Monitor workforce, narrative, and filing changes without maintaining three collectors and a join pipeline.

Fintech and data-product builders

Call one Actor API and deliver normalized JSON to a dashboard, alerting system, notebook, or warehouse.

Corporate strategy teams

Compare hiring direction and public narrative across peers that use Greenhouse.

Why use this actor?

  • βœ… Joined output: one company row, not separate feeds
  • βœ… Auditable: source links, filing accession, and collection time are retained
  • βœ… Repeatable: named KVS snapshots support scheduled hiring deltas
  • βœ… Transparent: component scores, weights, confidence, and rationale are exposed
  • βœ… Deterministic: no paid AI key or opaque LLM is required
  • βœ… HTTP-only: no browser, login, proxy, or user credential is required
  • βœ… Bounded: watchlist and embedded evidence limits keep runs predictable
  • βœ… Resilient: one source failure is reported without hiding other components

Supported companies and important limitation

V1 supports US-listed companies that:

  • appear in the SEC public ticker mapping;
  • have filing facts in SEC Company Facts; and
  • expose a public Greenhouse job board.

You must provide the Greenhouse board token explicitly.

For example, the token for https://boards.greenhouse.io/cloudflare is cloudflare.

The actor does not guess the board from the company name. This avoids silently attaching the wrong employer's hiring data.

What data can I extract?

GroupFields
Identityticker, companyName, cik, asOf, windowDays
Baselinebaseline, hiring deltaAvailable
Newsarticle count, publishers, articles/day, count change, sentiment, component score
Hiringtotal, new, removed, net change, department mix, location mix, sample job URLs
Fundamentalsfiscal year, filing date, accession, revenue, revenue YoY, gross margin, margin delta
Compositescore, label, confidence, normalized weights, component scores, rationale
EvidenceGoogle News RSS, Greenhouse board, SEC Company Facts, timestamps
DiagnosticssourceErrors and component-level errors

Nested component objects remain together so each dataset item is a complete research record.

How is the signal calculated?

News component

Headline titles use a deterministic positive/negative finance-oriented word list.

Average sentiment contributes most of the news score. When a previous snapshot exists, article-count velocity also contributes.

No article body is fetched and no claim of human-level sentiment understanding is made.

Hiring component

Current Greenhouse job IDs are compared with the previous snapshot:

  • new IDs become newOpenings;
  • missing old IDs become removedOpenings;
  • new minus removed becomes netChange.

On the first run, the hiring component is a baseline with score zero.

Fundamentals component

The actor selects annual 10-K / FY facts for common US-GAAP revenue concepts and GrossProfit.

It calculates revenue year-over-year change and gross-margin percentage-point change when comparable facts exist.

Composite

Component scores are clamped to -100..100 and combined with normalized weights.

Confidence falls when headline coverage is thin, hiring has no prior snapshot, or filing metrics are unavailable.

Input

A minimal input is:

{
"companies": [
{
"ticker": "NET",
"companyName": "Cloudflare",
"greenhouseBoardToken": "cloudflare"
}
],
"lookbackDays": 7,
"maxNewsArticles": 25,
"maxEvidenceItems": 5,
"snapshotNamespace": "my-watchlist"
}

Available settings:

InputDefaultPurpose
companiesrequired1–25 explicit company mappings
lookbackDays7recent Google News window, 1–30 days
maxNewsArticles50headlines scored per company, maximum 100
maxEvidenceItems8embedded headline/job evidence per source
weights.news0.4relative news weight
weights.hiring0.35relative hiring weight
weights.fundamentals0.25relative filing-fundamentals weight
snapshotStoreNamealternative-data-signal-snapshotsnamed KVS for comparisons
snapshotNamespacedefaultstable watchlist/client separation key
secUserAgentactor contactdescriptive SEC request identity

Weights can use any non-negative scale. They are normalized automatically.

Output example

{
"ticker": "NET",
"companyName": "Cloudflare",
"cik": "0001477333",
"asOf": "2026-07-14T15:00:00.000Z",
"windowDays": 7,
"baseline": true,
"news": {
"articleCount": 25,
"uniquePublishers": 18,
"articlesPerDay": 3.57,
"articleCountChange": null,
"sentimentScore": 4.2,
"sentimentLabel": "neutral",
"componentScore": 2.94,
"evidence": []
},
"hiring": {
"totalOpenings": 259,
"newOpenings": null,
"removedOpenings": null,
"netChange": null,
"deltaAvailable": false,
"departmentMix": {},
"locationMix": {},
"componentScore": 0,
"sampleJobUrls": []
},
"fundamentals": {
"latestFilingDate": "2026-02-20",
"latestAccessionNumber": "...",
"latestFiscalYear": 2025,
"revenue": 2168000000,
"revenueYoYPct": 27.8,
"grossMarginPct": 75.1,
"grossMarginDeltaPp": -1.2,
"componentScore": 24.8
},
"composite": {
"score": 7.38,
"label": "neutral",
"confidence": 0.83,
"weights": { "news": 0.4, "hiring": 0.35, "fundamentals": 0.25 },
"componentScores": { "news": 2.94, "hiring": 0, "fundamentals": 24.8 },
"rationale": []
},
"sourceErrors": []
}

Values above illustrate the shape; live source data changes.

First run and scheduled monitoring

A first run stores:

  • current headline count;
  • current Greenhouse job IDs; and
  • collection time.

It returns baseline: true and hiring.deltaAvailable: false.

For comparisons:

  1. keep snapshotStoreName unchanged;
  2. keep snapshotNamespace unchanged;
  3. keep ticker and Greenhouse token unchanged;
  4. schedule the same Actor input daily or weekly.

Use a unique namespace per watchlist or client. Named stores belong to the Actor account, so careless namespace reuse can merge histories for identical mappings.

How much does it cost to monitor alternative data signals?

The actor uses pay-per-event pricing:

  • a small one-time run-start charge;
  • one company-signal event for each dataset row produced.

The formula-derived BRONZE price is $0.0024617 per company signal, with automatic lower prices on higher Apify tiers.

You are not charged per raw headline or job. The buyer output is the normalized company signal.

Before a production watchlist, run one company to verify mapping and source coverage.

How to run the actor

  1. Open the Actor input page.
  2. Add one to 25 company mappings.
  3. Choose a stable snapshot namespace.
  4. Keep the default seven-day news window or adjust it.
  5. Run the Actor.
  6. Review sourceErrors, confidence, and evidence.
  7. Export JSON, CSV, Excel, or connect an integration.
  8. Schedule later runs if hiring deltas are required.

Practical analysis tips

  • Start with one company and confirm its Greenhouse token.
  • Compare confidence before ranking companies by score.
  • Treat small headline samples as weak evidence.
  • Inspect rationale and source URLs before acting on an outlier.
  • Use the same lookback window across peers.
  • Avoid interpreting a first-run hiring score as direction.
  • Store raw exported rows if you need your own long history.
  • Keep component weights stable when comparing time periods.

Integrations and workflow patterns

Google Sheets

Send each scheduled dataset to a sheet for an analyst review queue.

Slack or email alerts

Trigger an alert only when confidence is above your threshold and score moves materially.

Webhooks

Use the run-finished webhook to pass the dataset URL to an internal pipeline.

Snowflake, BigQuery, or PostgreSQL

Load one row per ticker/run into a research feature table.

Python notebooks

Pull the dataset through the Apify API and compare component scores against your own models.

Zapier and Make

Build no-code workflows around new rows, score bands, or source errors.

API usage with Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/alternative-data-signal-aggregator').call({
companies: [
{ ticker: 'NET', companyName: 'Cloudflare', greenhouseBoardToken: 'cloudflare' }
],
snapshotNamespace: 'node-watchlist'
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0].composite);

API usage with Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/alternative-data-signal-aggregator').call(run_input={
'companies': [
{'ticker': 'NET', 'companyName': 'Cloudflare', 'greenhouseBoardToken': 'cloudflare'}
],
'snapshotNamespace': 'python-watchlist',
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items[0]['composite'])

API usage with cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~alternative-data-signal-aggregator/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"companies":[{"ticker":"NET","companyName":"Cloudflare","greenhouseBoardToken":"cloudflare"}],
"snapshotNamespace":"curl-watchlist"
}'

Fetch results from the run's defaultDatasetId after it succeeds.

Use with Apify MCP

Connect the Actor to AI clients through Apify MCP.

Claude Code

claude mcp add --transport http apify \
"https://mcp.apify.com/?tools=automation-lab/alternative-data-signal-aggregator"

Example prompt:

Run the Alternative Data Signal Aggregator for Cloudflare using its cloudflare Greenhouse token. Explain each component and cite the evidence URLs. Do not give investment advice.

Claude Desktop

Add this mcpServers JSON to Claude Desktop's configuration:

{
"mcpServers": {
"apify": {
"type": "http",
"url": "https://mcp.apify.com/?tools=automation-lab/alternative-data-signal-aggregator"
}
}
}

Cursor

Open Settings β†’ Tools & Integrations β†’ MCP, add a remote HTTP server, and use the same mcpServers JSON and URL shown above.

VS Code

Open the MCP server configuration in VS Code, choose an HTTP server, and set its URL to:

https://mcp.apify.com/?tools=automation-lab/alternative-data-signal-aggregator

Example prompt:

Compare the news, hiring, and SEC components from my latest cybersecurity watchlist dataset. Flag low-confidence rows.

Error handling

The actor retries transient 429 and 5xx responses up to three times.

If one company source fails:

  • the failure appears in sourceErrors;
  • the relevant component contains an error message;
  • other available components still contribute a row;
  • confidence is reduced.

Input errors, such as a missing required mapping or duplicate ticker, stop the run early with a clear message.

Data quality and interpretation

Public data has limitations:

  • a headline lexicon cannot understand every irony or context;
  • Google News coverage varies by company and day;
  • Greenhouse shows only roles published on that board;
  • a company may use several applicant-tracking systems;
  • SEC taxonomies and fiscal calendars vary;
  • amended filings can restate facts;
  • short windows can exaggerate change.

Use confidence, component values, and evidenceβ€”not the composite alone.

Legality and responsible use

The actor accesses public Google News RSS, public Greenhouse board APIs, and official SEC data.

Users are responsible for:

  • complying with applicable laws and source terms;
  • respecting SEC fair-access guidance;
  • using a descriptive SEC User-Agent;
  • avoiding misleading financial claims;
  • protecting exported datasets and client-specific watchlist names;
  • obtaining professional advice where required.

This Actor does not execute trades and does not provide financial advice.

FAQ

Does it predict stock prices?

No. It creates a transparent research indicator from three public data components.

Does it use ChatGPT or another paid model?

No. Headline scoring is deterministic and local.

Can it monitor companies that do not use Greenhouse?

Not in v1. A public Greenhouse token is required to preserve a consistent three-source product.

Why is hiring delta unavailable?

The first run is a baseline. Rerun with the same store name, namespace, ticker, and board token.

Why did my company return a Greenhouse 404?

Check the exact token after boards.greenhouse.io/. Do not use a company website slug unless it matches the board URL.

Why are revenue or margin fields null?

The company's SEC taxonomy may not expose comparable annual USD facts under the supported concepts. Inspect the SEC evidence URL.

Can I change the score weights?

Yes. Provide any non-negative values; the actor normalizes them.

Can I backtest years of signals?

No. Historical backtesting is intentionally outside v1. Export scheduled rows to build your own history.

How many companies should I run first?

One. Confirm mappings and evidence, then expand up to 25 companies.

Troubleshooting checklist

If output looks wrong:

  1. verify the ticker is US-listed and present in SEC mappings;
  2. open the Greenhouse board URL from evidence;
  3. inspect sourceErrors;
  4. compare headline evidence with the selected lookback;
  5. confirm snapshot namespace consistency;
  6. check whether this is the baseline run;
  7. review confidence before interpreting the score.

Use raw component actors when you need source records instead of one normalized company signal:

Changelog

See the Actor changelog for user-facing releases and behavior changes.

Support

When reporting a problem, include:

  • the run URL;
  • a redacted input;
  • affected ticker;
  • Greenhouse board token;
  • expected versus actual component;
  • any sourceErrors value.

That evidence makes source-specific diagnosis much faster.