B2B Intent Data on a Budget: 8 Public Signals That Beat ZoomInfo
B2B intent data on a budget - 8 public-web signals (hiring, funding, exec change, tech stack, patents) that replace ZoomInfo Intent at 1% of the cost.
B2B intent data on a budget - 8 public-web signals (hiring, funding, exec change, tech stack, patents) that replace ZoomInfo Intent at 1% of the cost.
If you've ever sat through a ZoomInfo or 6sense pricing call, you know the script: $60K-$200K starting ARR, a 12-month commitment, seat-based pricing that punishes you for growing the SDR team, and a "platform fee" on top of everything. For a series-A startup or a bootstrapped consultancy, that math doesn't work. You need B2B intent data on a budget - or more precisely, you need the 80% of intent signal that's sitting on the public web for free if you know where to look and how to assemble it.
I've built and rebuilt intent-scoring pipelines for three SDR teams (one self-funded, two series-A) and packaged the reusable parts as an Apify actor. This post walks through what intent data actually is, why the paid stack is overkill for most buyers, and how to put together a working alternative for under $50/mo plus a couple of hours of setup.
Let's name names so this is actually useful.
ZoomInfo Intent (Bombora-powered) - $20K-$80K/yr. Bombora reads anonymous web traffic across a co-op of B2B publishers and reports "surge" when an IP block at a target company reads above-baseline content on a topic. The data is real and useful if your TAM is enterprise and your ACVs justify the spend. For sub-$50K ACV motions, the cost-per-signal is brutal.
6sense / Demandbase ABM Platforms - $80K-$300K/yr. Account-level intent + chat + advertising + analytics. Real product, real value, almost always over-bought. Most teams use 30% of the features and pay for 100%.
G2 / Capterra Buyer Intent - $24K-$60K/yr. "Companies viewed your G2 profile" data. Powerful if you're in the consideration set; useless if you're not yet on G2 or if your category isn't well-covered.
Apollo Intent - included with Apollo seats. Cheap, mediocre. Mostly LinkedIn job postings repackaged + some web traffic signal. Better than nothing if you already pay for Apollo.
ZoomInfo Scoops / Crunchbase News. Hand-curated funding/exec-change feeds. Lagged by 1-7 days. Useful but expensive given the lag.
The build-it-yourself reality. Most of what intent platforms sell is reconstructed from public-web signals that are free if you assemble them. LinkedIn hiring page HTML, SEC 8-K filings, TechCrunch RSS, Google News, certificate transparency logs, PatentsView API, homepage tech-stack detection - all free, all real, all usable. The work is wiring them together, normalizing the score, and not getting blocked.
Intent has two real definitions in B2B and one fake one.
| Type | Definition | Source | Signal quality |
|---|---|---|---|
| Account-level intent | Company is doing something that implies a buying need | Public web events (hiring, funding, M&A) | Strong when multiple signals stack |
| First-party intent | Person from target account is on your site | Your own analytics + IP reverse-lookup | Strong but only for accounts already aware of you |
| Surge intent (Bombora) | IP block reads above-baseline on a topic | Publisher co-op | Mixed - high noise, real on enterprise |
| Your vendor labeled it that way | Marketing | Not real intent |
The cheap-but-effective stack focuses on account-level intent built from 6-10 independent public-web signals, normalized to a composite 0-1 score with the raw evidence per signal.
+----------------------------------------------------------+
| COMPANY INTENT SCORE |
| (composite 0.0 - 1.0) |
+------+------+------+------+------+------+------+----------+
|hire- |fund- |press |exec |tech |domain|patent|customer |
|surge |ing |bump |chg |stack |chg |files |mentions |
+------+------+------+------+------+------+------+----------+
v v v v v v v v
LinkedIn TC/CB News SEC HTML crt.sh USPTO Google
/jobs RSS HTML 8-Ks scan CT log free search
all free, all public, all wireable in Python
Walk through each:
1. Hiring surge. LinkedIn's /company/<slug>/jobs/ page is HTML-scrapable (no API key, no login on public pages). Count open roles, classify by department (Engineering, Sales, Marketing, Ops, RevOps). A spike in Engineering and Sales together is a "scaling up" signal; Engineering-only is "building"; Sales-only is "monetizing."
2. Funding rounds. TechCrunch RSS + Crunchbase News RSS + StrictlyVC RSS, parsed for round, amount, lead investors. Free, ~1-24 hour latency on real announcements.
3. Press mentions. Google News HTML search for the company name, count results in the last N days, lightweight sentiment via title analysis. Noisy but useful as a baseline activity signal.
4. Executive changes. SEC 8-K full-text search (Item 5.02 = "Departure of Directors or Certain Officers") for public companies, Google News fallback for private. A C-suite arrival is one of the highest-signal triggers for new-vendor evaluation - new CTOs reshuffle tech stacks, new CROs reshuffle sales tools.
5. Tech stack change. Fetch the company homepage, parse <script> tags and <link> headers, match against a regex library of known SaaS footprints (Segment, Mixpanel, Marketo, HubSpot, Klaviyo, Salesforce, Drift, Intercom, etc). Diff between runs to surface installs and removals.
6. Domain / infrastructure changes. crt.sh certificate transparency log shows every TLS certificate issued for the company's domain. New subdomains = new product, new region, new acquisition. Free and real-time.
7. Patent filings. PatentsView free API (patentsview.org/apis) - 45 req/min per free key. New patents filed in the last 90 days by an assignee surface R&D investment areas before press releases.
8. Customer mentions. Google web search for "powered by <company>" or "built with <company>" or "using <company>". Customer logos in the wild, surfaced as a count + sample URLs.
Stack them, weight them, normalize against enabled-signal weight (so disabling one signal doesn't dilute the score), and you have an explainable composite that rivals paid intent for SMB/mid-market motions.
Realistic scope:
feedparser works).crt.sh JSON endpoint parser.Recurring maintenance: 4-8 hours/month chasing layout changes and broken regexes. Real but manageable.
I packaged this exact stack as seibs.co/b2b-sales-triggers. Pricing is $0.01 per company processed plus $0.02 per high-intent alert plus $0.005 per signal that fires. A 1,000-account run is typically $10-$25 depending on how many companies have real intent firing.
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("seibs.co/b2b-sales-triggers").call(run_input={
"companies": [
{"name": "Acme Robotics", "domain": "acmerobotics.com"},
{"name": "FintechCo", "domain": "fintechco.io"},
{"name": "Logistics Inc", "domain": "logisticsinc.com"},
# ... up to 10K in a single run
],
"enabled_signals": [
"hiring_surge", "funding", "press_mentions", "exec_change",
"tech_stack_change", "domain_changes", "patent_filings",
"customer_mentions",
],
"lookback_days": 90,
"min_trigger_score": 0.6, # only emit high-intent
"concurrency": 4,
"use_apify_proxy": True,
"apify_proxy_groups": ["RESIDENTIAL"],
"apify_proxy_country": "US",
})
for company in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{company['name']:30s} | score: {company['composite_trigger_score']:.2f}")
for trigger in company.get("top_triggers", [])[:3]:
print(f" {trigger['signal']:20s} {trigger['score']:.2f} {trigger.get('summary','')[:60]}")
Sample output:
Acme Robotics | score: 0.78
funding 0.95 Series B $42M led by Sequoia, May 2026
hiring_surge 0.82 17 open roles, 11 Engineering, 4 Sales
exec_change 0.65 New CTO announced 2026-04-22
There are a few other intent / signal actors on the Apify Store - shop around. The differentiation here is the composite score with per-signal evidence and top_triggers ranking, so your SDR sees the "why" at a glance.
| Use case | Pattern |
|---|---|
| Daily SDR call list | Run nightly across watchlist, filter composite_trigger_score >= 0.6, push top 50 to Slack |
| MQL enrichment | Webhook on inbound lead, score the company, route based on intent tier |
| Founder-led sales hit list | Weekly run across 500-account TAM, sort desc, top 20 = Monday hit list |
| Account expansion | Run against current customer base, flag funding / hiring as upsell triggers |
| Competitive conquest | Run against accounts that bought a competitor 18-24 months ago, look for renewal-window signals |
| Investor / VC tracking | Funding signal alone, watchlist of competitors, daily cron |
| Outbound segmentation | Bucket accounts by which signal fired - tailor opening line per signal |
| ABM tier assignment | Tier 1 = composite >= 0.8, Tier 2 = 0.6-0.8, Tier 3 = below 0.6 |
The output drops cleanly onto HubSpot / Salesforce / Pipedrive / Apollo lead records as a custom field. Webhook the high-intent alerts to a Slack channel and your SDRs work off a fresh queue every morning.
The non-glamorous truth about budget intent.
You don't get Bombora surge data. Bombora is a publisher co-op with real proprietary data on who's reading what. No public-web stack reproduces it. If your category is well-covered by Bombora and your ACVs justify it, ZoomInfo Intent is still the best option for that specific signal.
LinkedIn slug resolution is the weakest link. ~10-15% of companies have a LinkedIn slug that doesn't match their display name (acquisition rebrands, foreign parent companies, common-word names). The actor accepts a linkedin_company_url_overrides input to manually fix these for important accounts.
Google News and Google web search have anti-bot defenses. Residential proxies with US country code are mandatory. Even then, Google occasionally serves captchas and the affected signals come back empty for that company. Re-run failed companies 6-12 hours later.
Patent filings only matter for technical product companies. R&D-heavy hardware, biotech, deeptech - high signal. Sales-led SaaS - low signal.
The composite score is a heuristic, not ML. It's a transparent additive model with weights you can tune in input. >= 0.6 = high intent (worth a manual look), >= 0.8 = drop-everything-and-call. It's not a black-box predictor - the top_triggers field always tells you why a company ranked where it did. That's a feature, not a bug.
No paid intent providers are touched. Public web only. No Bombora, no 6sense, no G2.
SEC 8-K coverage is public companies only. Exec-change signal for private companies falls back to Google News, which is lower-quality than 8-K Item 5.02. For private-company exec tracking, layer in a LinkedIn watcher.
This won't replace SDR research entirely. Intent scoring narrows the queue from 10K to 50. Your SDR still needs to read the trigger evidence and write a relevant opener. Removing the human research is a different (harder) product.
Q: What's the cheapest alternative to ZoomInfo Intent in 2026? A: Stack public-web signals (LinkedIn jobs HTML, TechCrunch + Crunchbase News RSS, SEC EDGAR 8-Ks, Google News, homepage tech detection, crt.sh, PatentsView, Google search) into a composite score. Free if you build it (40-80 hours), under $50/mo if you use an Apify actor.
Q: Is scraping LinkedIn jobs legal?
A: Public job postings on /company/<slug>/jobs/ are publicly accessible. The 9th Circuit's hiQ Labs v. LinkedIn ruling (2022) established that scraping public LinkedIn data is not a CFAA violation. Don't scrape behind logins, don't bypass LinkedIn's authentication, don't violate their ToS in ways that risk legal action.
Q: How accurate is a composite intent score vs Bombora surge data? A: For SMB/mid-market and product-led growth motions, the composite score outperforms surge on cost-per-qualified-lead in my experience. For enterprise ($100K+ ACV), Bombora's publisher data still adds unique signal you can't reproduce from the public web - pair them if budget allows.
Q: How do I score buyer intent without paying for ZoomInfo or 6sense? A: Start with the three highest-signal free sources: (1) LinkedIn hiring (department-classified), (2) funding announcements (TechCrunch + Crunchbase RSS), (3) SEC 8-K exec changes for public targets. These three alone catch ~60% of the "drop everything" alerts that paid platforms surface.
Q: What lookback window should I use for intent signals? A: 90 days is the sweet spot for most B2B motions. Shorter (30 days) misses funding rounds that closed but haven't been press-announced yet. Longer (180+ days) dilutes the signal with stale activity. Use shorter windows (14-30 days) for hot-lead alerting and longer (180 days) for account-tier assignment.
Q: Can I use this for ABM tier assignment? A: Yes - this is the highest-value use case. Run the actor across your full named-account list quarterly, sort by composite score, and re-tier. Tier 1 (>= 0.8) gets full ABM treatment; Tier 2 (0.6-0.8) gets nurture; Tier 3 gets self-serve.
Q: Will this scale to a 50K-account TAM? A: Yes, but you need to think about cadence. A full 50K run is ~$500-$1000 and 4-12 hours of runtime. Better pattern: tier your TAM, run Tier 1 daily, Tier 2 weekly, Tier 3 monthly. Total monthly cost stays under $300 for that volume.
Q: How do I push intent scores into HubSpot or Salesforce?
A: Webhook the actor run-complete to your CRM via Zapier / Make / n8n, mapping composite_trigger_score to a custom field and top_triggers to a notes field. Trigger a workflow in CRM on score change to re-route the account.
Q: How fresh is the data? A: Live at crawl time. Funding signal: hours after press release. Hiring: minutes after LinkedIn page update. 8-K exec changes: under 60 seconds after SEC publication.
Q: What signals matter most for outbound SDR work? A: In my experience: funding (highest), exec change at C-level (very high), tech stack change implying competitor churn (high), hiring surge in the function you sell to (high), press bump alone (low - too noisy). Tune the weights in input to match your motion.
Run b2b-sales-triggers on Apify - free plan covers ~500 companies per month. Pair with:
sec-edgar-intel - deeper SEC filing parsing when EDGAR is your highest-signal source.reddit-topic-watcher - layer recommendation-request and alternative-seek Reddit threads as conquest signals.shopify-store-discovery - if you sell into Shopify, find the fit first, then score the intent.I'm a solo MSP operator who builds B2B web-scraping actors at apify.com/seibs.co when I'm not running incident calls. The portfolio has 30+ live actors covering lead generation, intent data, SEC/USPTO/court records, and AI agent wrappers - all pay-per-event so you only pay for what's emitted. Find me at seibs.co.
Answer 3 questions and we surface the 2-3 best matches in the portfolio. No email gate, no signup.