Lead Enrichment & Scoring - Email/Domain to ICP Fit avatar

Lead Enrichment & Scoring - Email/Domain to ICP Fit

Pricing

from $18.60 / 1,000 enriched & scored leads

Go to Apify Store
Lead Enrichment & Scoring - Email/Domain to ICP Fit

Lead Enrichment & Scoring - Email/Domain to ICP Fit

Give it an email, domain or name and get an enriched lead with a 0-100 ICP-fit score, Hot/Warm/Cold tier and the reasons behind it. Set target industries and minimum size to rank any list. $20/1k scored leads — a Clay/Apollo alternative with zero setup and no subscription.

Pricing

from $18.60 / 1,000 enriched & scored leads

Rating

0.0

(0)

Developer

Renzo Madueno

Renzo Madueno

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Lead Enrichment & Scoring — Score Any Lead 0–100 Against Your ICP

What it does: feed it raw leads in any shape — an email, a domain, or Name, company.com — and every lead comes back enriched (firmographics, tech stack, contact) and scored 0–100 with a Hot/Warm/Cold tier plus the exact reasons, judged against the ICP you define. Who it's for: sales teams drowning in unranked inbound or purchased lists, who want prioritization without building a Clay workspace or paying Apollo per seat. What it costs: $0.02 per enriched & scored lead ($20 per 1,000) + $0.01 per run. Leads below your confidence threshold are returned free.

How the lead scoring API works

The score is a transparent composite of three things:

  1. Data signals — known industry, company size, tech stack, a valid mail server.
  2. Reachability — a role email, a named decision-maker, a direct contact email, or a confirmed company email pattern.
  3. ICP fit — your own definition: targetIndustries (e.g. "SaaS", "Fintech") and minEmployeeBand. Matching leads get boosted; mismatches get penalized.

Tiers: Hot ≥ 70 · Warm 40–69 · Cold < 40. And because a score you can't explain is a score reps ignore, every row ships fitReasons — the literal list of why it scored what it scored.

All enrichment data is read live from each company's website at run time (there's no stored database going stale), plus a live DNS MX check on the domain.

Score a raw list in three steps

  1. Paste leads, one per line — formats can be mixed:
{
"leads": ["patrick@stripe.com", "hubspot.com", "Amir Salihefendic, doist.com"],
"targetIndustries": ["SaaS", "Fintech"],
"minEmployeeBand": "51-200"
}
  1. (Optional) Define your ICP with targetIndustries + minEmployeeBand (bands from 1-10 up to 5000+). Leave both empty to score purely on data completeness and reachability.
  2. Run — one scored row per lead, ready to sort in your CRM, CSV, or sequencer.

Example output row:

{
"input": "hubspot.com",
"companyName": "HubSpot",
"industry": "Software & SaaS",
"employeeBand": "5000+",
"revenueBand": "$500M+",
"contactName": "Yamini Rangan",
"contactTitle": "Chief Executive Officer",
"roleEmail": "sales@hubspot.com",
"techStack": "HubSpot, Cloudflare, Google Analytics",
"domainHasMx": true,
"leadScore": 78,
"leadTier": "Hot",
"fitReasons": ["industry known", "size known", "role email found", "matches target industry"],
"confidenceScore": 0.65
}

Clay alternative for lead enrichment (and Apollo, for scoring)

Clay is a brilliant spreadsheet-of-workflows; Apollo bundles scoring into its seat plans. The honest comparison for the specific job of enrich + score a list:

This ActorClayApollo
Setup before first scored leadPaste list, press runBuild a table + waterfall of providersConfigure scoring in a seat plan
Pricing$20 per 1,000 scored leadsMonthly credit plans (from ~$134/mo), enrichments consume credits per provider callPer-seat plans (from ~$49/user/mo)
Where data comes fromLive crawl of each company's siteOther vendors' databases, via creditsIts own static database
Score explainabilityfitReasons on every rowDepends on your formula columnsModel-based
ICP definitionTwo fields: industries + min sizeFully custom (you build it)Plan-dependent
Weak leads billedNo (minConfidence gate)Credits consumed regardlessPlan cost regardless
Account/API keys neededNoneClay + provider keysApollo account

(Competitor pricing is list pricing at the time of writing.)

Fair verdict: if you want infinitely customizable enrichment waterfalls, Clay earns its price. If you want a raw list ranked Hot/Warm/Cold today at $20/1k with zero setup, that's this Actor.

The exact points behind every score

The scoring is published rather than proprietary, because a rep who cannot see why a lead is Hot will ignore the number. Each signal below adds its points to a 0-100 total, and the label it pushes into fitReasons is the same string you see in the row:

Signal found on the leadPointsfitReasons entry
Contact email resolved for a named person+18contact email found
Industry classified+12industry known
Role email (sales@, info@, …) found+12role email found
A named decision maker found+12decision-maker found
Employee band resolved+10size known
Two or more technologies detected+10N technologies
Domain publishes MX records+8valid mail server
Email pattern confirmed (only when no contact email)+8email pattern known
Company LinkedIn page found+6LinkedIn present

Then your ICP is applied, and this is the part that can move a lead down:

ICP conditionPointsfitReasons entry
Industry matches one of targetIndustries+12matches target industry
Industry does not match−10outside target industry
At or above minEmployeeBand+8meets min size
Below minEmployeeBand−8below min size

The total is clamped to 0–100 and bucketed at the fixed thresholds: Hot ≥ 70, Warm 40–69, Cold < 40.

Two consequences worth designing around. First, with no ICP set, the maximum reachable score is 88 — a lead can be perfectly enriched and still never be Hot until you tell the Actor what you sell to. Set targetIndustries and you are scoring fit; leave it empty and you are only scoring how complete and reachable the record is. Second, the two ICP penalties are the only negative terms, so a data-rich company outside your market lands in Warm rather than Cold. If you want a hard exclusion, filter on the outside target industry reason rather than on the tier.

Which leads to call first, and why the reasons matter more than the number

Sorting by leadScore descending is the obvious use, but the reason strings are what make the list actionable, because two leads with the same 65 can need opposite treatment:

  • contact email found + decision-maker found → a named human with a working address. This is a send, today.
  • role email found + email pattern known, no contact name → the company is reachable but anonymous. Worth a call to find out who owns the problem, not a personalised email.
  • industry known + size known + N technologies, nothing about email → good fit, no way in. Route to whoever does manual prospecting, not to the sequencer.
  • valid mail server absent → the domain cannot receive mail at all. Nothing else on the row matters; drop it before it costs you sender reputation.

For a purchased list, the fastest triage is: filter out rows missing valid mail server, work everything tagged contact email found, and hand the outside target industry rows back to whoever bought the list.

Where it slots into your funnel

  • Inbound triage — score form-fills as they land; reps open the day with Hot on top.
  • Purchased-list rescue — a bought list is 80% noise; score it and work only the ICP-fit slice.
  • Routing rules — assign by leadTier + industry + employeeBand instead of round-robin.
  • Sequencer prep — enrich + score + MX-check before a lead ever enters your outreach tool.
  • CRM hygiene — append firmographics and a score to legacy leads sitting unranked in the pipeline.

Frequently asked questions

What input formats are accepted? Emails (jane@acme.com), bare domains (acme.com), and name + company (Jane Smith, acme.com) — mixed in one run. Emails and names add a person to the row; a domain alone still scores on firmographics + reachability.

Is the score a black box? No — that's the design principle. Every row carries fitReasons, the explicit list of signals that moved the score. A rep (or an auditor) can always see why a lead is Hot.

Can I change what "good" means? Yes: targetIndustries and minEmployeeBand are your ICP levers. Matching industries boost the score; being at/above your size band boosts, below penalizes. No ICP set = a pure data-completeness + reachability score.

What does scoring 2,000 inbound leads cost? $0.01 + $0.02 per lead that clears minConfidence. If 1,400 resolve substantively: ≈ $28.01 — no seats, no monthly minimum.

How fresh is the enrichment data? Read from each company's live website at the moment of the run, with a live MX lookup. There is no cached database to decay.

Do Hot/Warm/Cold thresholds change? No — they're fixed (≥70 / 40–69 / <40) so scores stay comparable across runs. Your ICP inputs are what tailor the distribution.

Do I need an API key? No. Runs on Apify; callable from code through the Apify API for automated pipelines (e.g. score every new CRM lead via webhook).

Is this compliant? It reads only publicly published business information from each company's own website. Lawful use in your jurisdiction is your responsibility.


Built by Renzo Madueño. Found a bug or want a signal added? Open an Issue — I read and respond to every one.