B2B Sales Triggers - Hiring Surge, Funding, Press, Exec Changes avatar

B2B Sales Triggers - Hiring Surge, Funding, Press, Exec Changes

Pricing

from $10.00 / 1,000 company records

Go to Apify Store
B2B Sales Triggers - Hiring Surge, Funding, Press, Exec Changes

B2B Sales Triggers - Hiring Surge, Funding, Press, Exec Changes

B2B intent data aggregator. For a list of target companies, computes: hiring surge (LinkedIn delta), funding rounds, press mentions, executive changes, tech stack adoption, recent patent filings, customer mentions. Composite trigger score per company. For SDR teams.

Pricing

from $10.00 / 1,000 company records

Rating

0.0

(0)

Developer

Seibs.co

Seibs.co

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

4

Monthly active users

12 days ago

Last modified

Share

B2B Sales Triggers

TL;DR for SDR teams and RevOps building outbound on intent signals: Watches a list of target companies for buying triggers (funding rounds, exec hires, layoffs, M&A, product launches, expansion press) and returns each trigger pre-scored with date, source, summary, and outreach angle. Compared to Apollo or ZoomInfo intent feeds at $0.50-$1.00 per record, this returns the raw triggers underneath (news, LinkedIn, press releases) at $0.02-$0.05 per company per run with full evidence text. Free Apify plan handles small target lists on your $5 platform credit. PPE charges scale linearly with companies x signals. Upgrade to Apify Starter ($49/mo) for production cadence.

Run it in 30 seconds

# Via the Apify Python SDK
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("seibs.co/b2b-sales-triggers").call(run_input={
"companies": [
"Stripe",
"Anthropic",
"Notion"
],
"lookback_days": 30,
"min_trigger_score": 0.5
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

Or via curl:

curl -X POST "https://api.apify.com/v2/acts/seibs.co~b2b-sales-triggers/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"companies": ["Stripe", "Anthropic", "Notion"], "lookback_days": 30, "min_trigger_score": 0.5}'

Or click "Try for free" on this page if you prefer the no-code UI.

What you get

Each run produces:

  • A clean dataset, filterable in the Apify console and downloadable as CSV or JSON
  • An OUTPUT.html dashboard preview of your top records
  • A sample-output preview at ./.actor/sample-output.json

Per-archetype custom artifacts shipped with this actor:

  • top-triggers.csv (ranked by trigger_score, with outreach_angle column)
  • outreach-templates.html (per-trigger-type cold email with copy buttons)
  • trigger-timeline.csv (chronological view per company for sequencing)

What does B2B Sales Triggers do?

Feed it a list of target companies (mix of names and domains). For each company it runs eight independent intent detectors against public sources (LinkedIn jobs, TechCrunch RSS, Google News, SEC EDGAR 8-Ks, homepage HTML, crt.sh certificate transparency, PatentsView, Google web search) and returns a composite 0-1 trigger score with the raw evidence per signal. composite_trigger_score >= 0.6 flags a high-intent alert ready for SDR action.

Features

  • Eight independent intent signals (any failing signal never blocks the others).
  • Composite trigger score normalized by enabled-signal weight, so disabling a signal does not dilute the result.
  • top_triggers ranks the firing signals descending by score - the SDR sees the "why" at a glance.
  • Server-side min_trigger_score floor drops noise before emit.
  • Domain normalization to eTLD+1 + LinkedIn slug resolver with manual-override input for hard-to-resolve companies.
  • Concurrency-controlled (1-8 companies in parallel) with per-request timeouts.

Use cases

  • SDR / outbound teams prioritizing a daily call list out of a 10K-account TAM.
  • RevOps / sales engineering enriching MQLs with intent context before queue assignment.
  • Founders running founder-led sales who want a Monday-morning hit list.
  • Lifecycle / customer-marketing teams looking for expansion signals on existing accounts.
  • Competitive intel teams tracking funded competitors who are now hiring at scale.

FAQ

Q: Is this legal? A: Yes - every signal source is public-web data: LinkedIn jobs pages, TechCrunch RSS, Google News HTML, SEC EDGAR filings, company homepages, crt.sh certificate transparency logs, PatentsView's free public API, and Google web search. No paid databases, no scraped private endpoints.

Q: Why might a run fail? A: (1) LinkedIn slug resolution failure when the company's slug differs from its display name - fix with linkedin_company_url_overrides. (2) Datacenter proxy rate-limiting - keep RESIDENTIAL with US country code. (3) Concurrency too high on a small TAM - drop to 2-4 for cleaner Google News results.

Q: How fresh is the data? A: Live at crawl time. lookback_days controls how far back each signal looks (default 90), but the fetch itself is real-time. Funding news typically lands within hours of announcement; 8-K filings show within a day.

Q: Can I schedule this daily or weekly? A: Yes - daily for high-priority watchlists (named accounts you want fresh intent on), weekly for the broader TAM. Use Apify Schedules and feed the output into your SDR queue via webhook.

Q: How do I push results into a CRM? A: The output is account-level intent enrichment - drop it onto leads in HubSpot, Salesforce, Pipedrive, or Apollo via Zapier/Make/n8n. composite_trigger_score makes a clean custom field for queue prioritization. Webhook the high-intent alerts straight to a Slack channel.

Q: How accurate is the trigger score? A: It is a heuristic 0-1 composite of 8 independent public-web signals, normalized by the sum of enabled-signal weights. Treat >= 0.6 as a high-intent threshold (worth a manual look or auto-cadence trigger), >= 0.8 as drop-everything-and-call. It is not predictive ML - it is a transparent, explainable additive score where top_triggers always tells you why a company ranked where it did.

Q: Will this scrape Bombora / 6sense / ZoomInfo? A: No - public web only. We do not touch paid intent providers.

Q: How does PPE pricing actually work here? A: $0.01 per company processed (always), $0.02 per high-intent alert (composite >= 0.6), $0.005 per signal that scored >= 0.5. A typical 1000-account list is roughly $10 base plus alerts on the ~10-20% with meaningful intent.

  • ../sec-edgar-intel/ - deeper 8-K, 10-K, S-1, and insider-trading parsing when SEC filings are your highest-signal source.
  • ../reddit-topic-watcher/ - layer Reddit recommendation-request and alternative-seek leads on top of company-level intent.
  • Pair with any of the 15 lead-finder actors (e.g. home-services-lead-finder, houzz-contractor-leads, shopify-store-discovery, contract-heavy-smb-lead-finder) - those find the fit; this actor scores the intent. Run lead-finder first, feed the company list into this actor's companies input.

Integrations

  • Zapier - push to HubSpot/Salesforce/Pipedrive/Apollo/Klaviyo
  • Make.com - workflow automation
  • n8n - self-hosted automation
  • Apify webhooks - POST to your endpoint
  • API + dataset export (JSON/CSV/Excel/XML)
  • MCP / AI agents - call from Claude/GPT/LangChain

Signals

SignalWhat it meansSource
hiring_surgeOpen LinkedIn roles classified by departmentLinkedIn /company/
fundingRecent round, amount, lead investorsTechCrunch + Crunchbase News RSS
press_mentionsRecent news count + sentiment hintGoogle News HTML search
exec_changeC-suite arrivals + departuresSEC 8-K full-text + Google News fallback
tech_stack_changeMarketing / sales / analytics SaaS detected on homepageHomepage HTML + headers
domain_changesNew subdomains + DNS snapshotcrt.sh certificate transparency + DNS
patent_filingsFilings in last N days by assigneePatentsView free API
customer_mentionsSites declaring "powered by / built with / using Google web HTML search

Composite scoring

funding 0.22
hiring_surge 0.18
exec_change 0.15
press_mentions 0.10
patent_filings 0.10
tech_stack_change 0.10
customer_mentions 0.08
domain_changes 0.07

Score is normalized by the sum of weights of enabled signals, then clamped to [0, 1]. >= 0.6 = high-intent alert.

Input

See .actor/INPUT_SCHEMA.json. Sample:

{
"companies": ["Stripe", "openai.com", "Anthropic"],
"enabled_signals": ["hiring_surge", "funding", "press_mentions", "exec_change"],
"lookback_days": 90,
"min_trigger_score": "0.3",
"concurrency": 4,
"use_apify_proxy": true,
"apify_proxy_groups": ["RESIDENTIAL"],
"apify_proxy_country": "US"
}

Output

Sample output: ./.actor/sample-output.json â€" copy-paste-ready preview of real-looking records.

First record inline:

{
"company_name": "Gravity Forms, Inc.",
"normalized_domain": "gravityforms.example",
"linkedin_url": "https://www.linkedin.com/company/gravity-forms-example",
"scraped_at": "2026-05-13T23:01:14Z",
"available": true,
"reason": null,
"triggers": {
"hiring_surge": {
"open_role_count": 38,
"role_distribution": {
"engineering": 18,
"sales": 11,
"marketing": 4,
"ops": 2,
"hr": 2,
"other": 1
},
"surge_signal": true,
"score": 0.92
},
"funding": {
"latest_round_type": "Series C",
"latest_amount_usd": 65000000,
"latest_date": "2026-04-22",
"investors": [
"Insight Partners",
"Tiger Global",
"Bessemer Venture Partners"
],
"source_url": "https://example-news.com/gravity-forms-65m-series-c",
"score": 0.95
},
"press_mentions": {
"mentions_count": 14,
"top_articles": [
{
"title": "Gravity Forms raises $65M to expand enterprise SaaS",
"url": "https://example-news.com/gravity-forms-65m",
"date": "2026-04-22",
"sentiment_hint": "positive"
},
{
"title": "Forms platform Gravity adds 80 engineers, signals enterprise push",
"url": "https://example-tech.com/gravity-hiring-surge",
"date": "2026-05-02",
"sentiment_hint": "positive"
}
],
"keywords_matched": [
"raises",
"expand",
"hiring"
],
"score": 0.78
},
"exec_change": {
"departures": [],
"arrivals": [
"Maya Lindgren \u2014 Chief Revenue Officer (formerly Stripe)"
],
"source_filing_or_url": "https://www.linkedin.com/in/maya-lindgren-example",
"score": 0.71
},
"tech_stack_change": {
"added": [
"segment",
"snowflake",
"amplitude"
],
"removed_suspected": [],
"score": 0.42
},
"domain_changes": {
"new_subdomains": [
"enterprise.gravityforms.example",
"trust.gravityforms.example"
],
"record_changes": [
{
"type": "MX",
"value": "aspmx.l.google.com"
}
],
"score": 0.55
},
"patent_filings": {
"recent_filing_count": 0,
"cpc_clusters": [],
"sample_titles": [],
"score": 0.0
},
"customer_mentions": {
"mention_count": 4,
"mention_urls": [
"https://example-press.com/zendesk-now-on-gravity"
],
"score": 0.32
}
},
"composite_trigger_score": 0.81,
"top_triggers": [
"funding",
"hiring_surge",
"press_mentions",
"exec_change",
"domain_changes"
]
}

One record per company that passes the score floor:

{
"company_name": "Stripe",
"normalized_domain": "stripe.com",
"linkedin_url": "https://www.linkedin.com/company/stripe",
"scraped_at": "2026-05-14T12:00:00Z",
"available": true,
"triggers": {
"hiring_surge": {"open_role_count": 248, "score": 0.91},
"funding": {"latest_round_type": "Series I", "latest_amount_usd": 6500000000, "score": 0.85},
"press_mentions": {"mentions_count": 42, "score": 0.66}
},
"composite_trigger_score": 0.78,
"top_triggers": ["hiring_surge", "funding", "press_mentions"]
}

Pricing

Pay-per-event:

  • $0.010 per company processed (always charged).
  • $0.020 per high-intent alert (composite >= 0.6).
  • $0.005 per signal that scored >= 0.5.

A typical SDR-prioritized account costs roughly $0.02 - $0.06 to enrich. A list of 1000 accounts costs ~$10 base plus alerts and enrichments on the ~10-20% with meaningful intent.

FAQ

Q: Do I need a residential proxy? A: For LinkedIn jobs and Google News yes - datacenter IPs get challenged. RESIDENTIAL with US country code is the default.

Q: Why is tech_stack_change.removed_suspected always empty? A: Detecting removals requires a prior snapshot we do not store. The current-state stack is detected; you can run the actor weekly and diff stack arrays on your side.

Q: Will this scrape Bombora / 6sense / ZoomInfo? A: No - public web only. We do not scrape paid intent providers.

Q: A company I expect to score high came back with 0.0. Why? A: Most often: LinkedIn slug resolution failed because the company's slug differs from its name. Use linkedin_company_url_overrides to pin the slug. Also verify proxy session is not being rate-limited.

Save your input as an Apify Task

Apify Tasks let you save a configured input once and re-run it with a single click - no need to re-type search terms, locations, filters, or tier settings every time. Tasks are the foundation for everything that comes next: schedules, monitor mode, and webhook routing all attach to a saved Task, not to the raw actor.

Steps to save your current input as a Task:

  1. On this actor's Apify Store page, click Run with your input fully configured.
  2. Click the Save as task button at the top of the run page.
  3. Name the task something memorable (e.g. SaaS hiring triggers - daily).
  4. Reload the task page and click Start anytime to re-run with the same inputs.

Tasks unlock the next two features below: scheduling and monitor mode.

Run this weekly with Apify Schedules

Apify Schedules cron-run any saved Task automatically. Pair this with the saved Task above and you get hands-off recurring runs with no manual clicks, no missed weeks, and a steady stream of fresh data into your CRM or warehouse.

Steps to schedule a Task:

  1. Save your input as a Task (see above).
  2. Go to https://console.apify.com/schedules and click Create new schedule.
  3. Pick your Task and set the cron expression. Common patterns:
    • Daily at 9am UTC: 0 9 * * *
    • Weekly on Mondays at 9am: 0 9 * * 1
    • Monthly on the 1st: 0 9 1 * *
  4. Save. Apify will run your Task on that schedule automatically, push the dataset to whatever integrations you have wired up, and fire run-completion webhooks for downstream automation.

Run daily to catch hiring spikes, funding rounds, and exec changes the morning they go public.

Monitor mode (v2, beta)

Monitor mode is the v2 evolution of this actor and is currently in BETA. It turns a recurring schedule into a true change-feed instead of a firehose of duplicate records.

How it works:

  • When this actor runs under an Apify Schedule, monitor mode is enabled automatically.
  • Instead of emitting ALL records every run, it emits ONLY records that are NEW or CHANGED since the last scheduled run.
  • A digest record summarizes the delta (X new, Y changed, Z removed) at the top of every run.
  • Optional: provide a Slack or email webhook URL in the monitor_webhook_url input field and the digest fires there too, so your team gets the delta in their inbox or channel without polling the dataset.
  • Cost: a single scheduled_delta_run event ($0.05) per scheduled run, plus standard PPE on emitted delta records only. Predictable monthly cost, no surprise bills from re-charging for unchanged records.

Monitor mode is rolling out to the top 3 actors first (this one included if it's hotel-motel-lead-finder, google-maps-reviews-pro, or mcp-accounting-firm-leads). Full portfolio coverage by end of June.

Support

Open an issue on the actor's GitHub or contact via Apify Store. Include the run ID and input config.

Changelog

See ./CHANGELOG.md.

Found this useful?

If this actor saved you time or money, please consider leaving a quick review on the Apify Store. Reviews help other buyers find work that solves their problem and let me prioritize the features paying customers actually use. Leave a review: https://apify.com/seibs.co/b2b-sales-triggers#reviews