Waterfall Lead Enrichment — Moved to Bulk People Enrichment
DeprecatedPricing
from $3.20 / 1,000 person resolved (profile)s
Waterfall Lead Enrichment — Moved to Bulk People Enrichment
DeprecatedMoved: people rows (emails, LinkedIn URLs, handles, names with a company site) go to b2bsearch/bulk-people-enrichment, company domains to b2bsearch/domain-to-company, an ICP in one input to b2bsearch/full-icp-search. Existing runs keep working; no longer developed.
Pricing
from $3.20 / 1,000 person resolved (profile)s
Rating
0.0
(0)
Developer
B2B Search Enriched
Maintained by CommunityActor stats
0
Bookmarked
6
Total users
5
Monthly active users
8 days ago
Last modified
Categories
Features
Share
This listing has moved. Rows that name a person (emails, LinkedIn URLs, social handles, names with a company website) go to Bulk People Enrichment, $3.20 per 1,000 resolved rows or $8 with emails and phones that work; company domains go to Domain to Company; an ideal-customer profile in one input is Full ICP Search. Runs and integrations that already use this Actor keep working, but it is no longer developed.
Waterfall Enrichment, a Clay alternative: enrich a CSV of emails, LinkedIn URLs, names or company domains with profiles, emails, phones and firmographics.
Enrich a list the way Clay does, without a seat or credits. Upload the CSV you already have: emails, LinkedIn URLs, names with a company website, or just company domains. Every row comes back enriched, and you pay only for the rows that were found.
What does Waterfall Lead Enrichment do?
It takes a spreadsheet with whatever columns you happen to have and fills in the rest. Each row is answered by the strongest key it carries, falling through to the next one when a cell is empty or malformed:
- email address
- LinkedIn profile URL
- social handle (GitHub, X/Twitter, Facebook)
- full name, plus the company website when the row has one
- company website alone: the row is a company, not a person
A person row comes back with the profile (current title, company,
location, career and education) and, with contacts on (the default here),
the email address and mobile number that reach them today.
A company row comes back with the company's LinkedIn page, headcount, industry, country, HQ, founding year and last funding round.
One file can mix both. A CRM export where some rows have a contact and some only an account domain works as it is.
Why "waterfall"
Table-enrichment tools chain several lookups and keep the first one that
answers. This Actor does the same over one database: email first, then the
profile URL, then the handle, then name + company website. You do not have
to clean the file or split it by column first. A cell that is not usable is
skipped and the next key is tried, and a row with nothing usable comes back
as a free invalid row that says why.
Input
{"csv": "email,full_name,company_website\nsatya.nadella@microsoft.com,,\n,Sundar Pichai,google.com\n,,stripe.com","contacts": true}
csv: upload a file, paste rows or link a CSV (up to 50,000 rows).
Recognized columns: email, profile_url / linkedin_url, github,
twitter, facebook, full_name (or first_name + last_name), and
domain / website / company_website. Other columns are ignored.
contacts: on by default. Adds the email address and phone that reach the
person today. Off, person rows ship as profiles at the lower price.
mustHave: deliver and pay only for people who have all of these
(email, personalEmail, workEmail, currentWorkEmail, phone,
github, twitter, facebook). A person who lacks one is a free
missing_required row that names nobody. Company rows are not affected.
compact: a short row for AI agents (about 2 KB per person instead of
10+ KB). Same price.
Output
One row per input row, tagged with its CSV record number in _input.row
(the header is record 1), so the result joins back onto your file. Values
below are made up.
A person row with contacts:
{"_status": "found","_input": { "row": 3, "full_name": "Jane Doe", "domain": "acme.example" },"_tier": "contacts","fullName": "Jane Doe","jobTitle": "VP Sales","companyName": "Acme","profileUrl": "https://www.linkedin.com/in/jane-doe-example","location": "Austin, Texas, United States","email": "jane.doe@acme.example","emailType": "work","phone": "+15550100123"}
A company row:
{"_status": "found","_input": { "row": 4, "domain": "acme.example" },"domain": "acme.example","companyName": "Acme","linkedinUrl": "https://www.linkedin.com/company/acme-example","employeeCount": 240,"employeeRange": "201-500","industry": "Software Development","country": "US","hqLocality": "Austin","founded": 2014,"hasFunding": true,"lastRoundType": "series_b","lastRoundDate": "2025-03-12"}
Every row that is not a result is free and says why in _note or _error:
not_found, ambiguous (a name several people share, or a website several
unrelated companies claim), invalid, profile_removed, duplicate (the
same person or website twice in your file, answered once) and
missing_required.
The Output tab has four views: Overview (people and companies in one table), Career & education, Contacts & signals and Company details.
Pricing
| Event | Price | When |
|---|---|---|
| Person resolved | $0.0032 | a row resolved to one person, profile delivered |
| Person resolved with an email or phone | $0.008 | contacts on and a contact that reaches the person today |
| Company resolved | $0.0055, $0.0044 on higher Apify plans | a company-only row resolved to one company |
Not found, ambiguous, invalid, duplicate, missing_required | $0 | always free, with a reason |
A person whose only addresses are at earlier employers ships at the profile price. A charge fires only after the row is in your dataset, and a long run that the platform moves to another server resumes where it stopped instead of billing a row twice.
How it compares with Clay
Clay is a workspace: tables, many data providers, credits per enrichment and a seat price. This Actor does one part of that job: it fills a list from a single database, on Apify, pay per found row, with no account to set up. When you need the rows in a workflow, run it from n8n, Make, Zapier or the API, or let an AI agent call it. This Actor is not affiliated with Clay.
Use it with AI agents and MCP
Add it to Claude, ChatGPT, Cursor or any MCP client through the Apify MCP server:
https://mcp.apify.com?tools=b2bsearch/waterfall-lead-enrichment
- The agent pays only for results. Every miss is a free row. Cap what
one call may spend with
maxTotalChargeUsd. - Rows explain themselves.
_statussays what happened, and_erroror_notesays why a row is not a result. - Compact rows for a context window.
"compact": truekeeps identity, current role, recent positions and contacts. Same price.
Which Actor in this family?
| Actor | Input → output |
|---|---|
| Waterfall Lead Enrichment (this one) | any CSV of people and companies → profiles, emails, phones, firmographics |
| Bulk People Enrichment | CSV of people only → profiles, at the same prices |
| Company Enrichment by Domain | list of domains → company records |
| LinkedIn to Phone | profile URLs, emails or names → mobile numbers |
| Decision Maker Email Finder | company domains → decision makers with emails |
| B2B Leads Finder | filters → new leads with emails |
Large volumes
Paid Apify plans lower the per-result price on their own. Pulling more than 100,000 rows a month, or missing a field or filter you need? Open an issue titled Volume with the monthly count and the fields you want (no names or emails needed) and we answer in the thread.
Free Apify plan
Free accounts get the same rows as paid ones, with three limits. A run delivers at most 100 results; an account gets 500 dataset rows per calendar month on this Actor, found rows and misses alike; and a row that finds nothing carries only its status. Previews and counts, where this Actor offers them, stay free and outside the monthly allowance. When a limit stops a run, the status line and the last dataset row say which limit it was, what is left and when it resets. Any paid Apify plan removes all of this: Starter is $19/month and includes $19 of usage.
Feedback and reviews
How did it go? A rating on this Actor's Reviews page tells the next buyer what to expect; we read every word, good or bad. Got a wrong or stale row? Open the Issues tab with the run ID. Issues are public, so leave out emails, phones and names; the run ID is enough for us to find the row. We check every report, fix what is ours to fix and answer in the thread.
Disclaimer
This Actor is an independent product. It is not affiliated with, endorsed by or sponsored by Clay, LinkedIn, GitHub, X/Twitter or Facebook. It does not access, crawl or scrape any of them at run time: answers come from our own database of publicly available professional data, and the network names only describe the kind of data it covers. To have a person's data removed, open an issue on this Actor with only the profile link — nothing else is needed, and it is removed from every listing.