Lead Enrichment Pipeline avatar

Lead Enrichment Pipeline

Pricing

Pay per usage

Go to Apify Store
Lead Enrichment Pipeline

Lead Enrichment Pipeline

Pricing

Pay per usage

Rating

0.0

(0)

Developer

ryan clinton

ryan clinton

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Categories

Share

Lead enrichment pipeline that replaces your Clay.com subscription at a fraction of the cost. Feed in a CSV or JSON list of partial leads — names, companies, domains, or emails — and get back fully enriched, verified, scored records ready for outreach. One actor, six pipeline steps, $0.12 per lead.

The pipeline orchestrates 7 specialized sub-actors in sequence: contact discovery via 10-step waterfall enrichment, phone number finding, MX + SMTP email verification, deep company research from 7+ sources, multi-signal lead scoring with A-F grades, and optional CRM push to HubSpot or Salesforce. Each step runs only when the lead needs it — no wasted credits on data you already have.

What data can you extract?

Data PointSourceExample
📧 Email addressWaterfall: website scraping, pattern detection, PDLsarah.chen@acmecorp.com
📧 Email verifiedMX + SMTP deliverability checktrue
📧 Email confidenceVerification engine score95
📞 Phone numberWebsite scraping, directories, PDL+1-415-555-0142
👤 Full nameInput normalization, name parsingSarah Chen
🏢 Company nameInput or company researchAcme Corp
🌐 DomainExtracted from website, email, or company nameacmecorp.com
🏭 IndustryCompany deep researchTechnology
👥 Employee countCompany deep research51-200
🔧 Tech stackCompany deep researchReact, Node.js, AWS
🔗 Social profilesCompany research (LinkedIn, Twitter)linkedin.com/company/acmecorp
Lead scoreMulti-signal scoring engine (0-100)82
🏅 Lead gradeScore-derived letter gradeA
📊 Score breakdownPer-category scoring: digital, engagement, company, contact, authority{"digital": 18, "company": 20, ...}

Why use Lead Enrichment Pipeline?

Enriching leads manually means toggling between Hunter.io for emails, ZoomInfo for company data, NeverBounce for verification, and a spreadsheet to keep score. For 100 leads, that workflow takes 6-8 hours and costs $200-500 in tool subscriptions. Clay automates the workflow but charges $149-699/month — and bills per-credit even when lookups return nothing.

This lead enrichment pipeline automates the entire process in a single run. Upload your CSV, click Start, and download enriched leads with verified emails, phone numbers, company intelligence, and quality scores. No monthly subscription. No wasted credits on empty lookups.

  • Scheduling — run daily, weekly, or custom intervals to enrich new leads automatically
  • API access — trigger enrichment runs from Python, JavaScript, or any HTTP client
  • Proxy rotation — sub-actors use Apify's built-in proxy infrastructure for reliable scraping
  • Monitoring — get Slack or email alerts when enrichment runs fail or produce unexpected results
  • Integrations — connect to Zapier, Make, Google Sheets, HubSpot, Salesforce, or webhooks

Features

  • 6-step enrichment pipeline — Normalize, Contact Discovery, Email Verify, Company Enrich, Lead Score, and CRM Push run in sequence on every lead
  • Smart step skipping — leads with existing emails skip contact discovery; leads without domains skip company research; disabled steps are bypassed entirely
  • 10-step waterfall email discovery — website scraping, email pattern detection, People Data Labs enrichment, SMTP probing, and social profile matching in a single cascade
  • MX + SMTP email verification — every discovered email is verified for deliverability with confidence scores before output
  • Deep company research — pulls from 7+ sources (website, Wikipedia, GitHub, SEC filings, academic databases, DNS, social profiles) to build company intelligence
  • Multi-signal lead scoring — scores leads 0-100 across 5 categories: digital presence, engagement signals, company fit, contact completeness, and authority level
  • CSV and JSON input — upload a CSV URL or paste a JSON array; CSV headers are auto-mapped from 40+ common column name variations
  • CSV output — downloadable CSV file generated in the Key-Value Store alongside the standard JSON dataset
  • Batch processing — all leads needing a step are sent in one sub-actor call, not one call per lead; processing 200 leads costs the same compute as processing 1
  • Direct CRM push — enriched leads push straight to HubSpot or Salesforce with no middleware required
  • Source tracking — every discovered field includes a *Source tag (e.g., emailSource: "pattern-detection") so you know where data came from
  • Spending limit — set a maximum budget per run; the pipeline stops when your limit is reached
  • Pass-through fields — extra CSV columns not in the standard schema are preserved on output

Use cases for lead enrichment

Sales prospecting

SDRs and BDRs export prospect lists from LinkedIn Sales Navigator or Apollo with names and companies but no verified emails. This pipeline fills in the gaps: discovering work emails via waterfall enrichment, verifying deliverability, and scoring each lead so reps focus on the highest-value targets first.

Marketing agency lead generation

Agencies build prospect databases for clients across industries. Instead of paying for Clay at $349/month per client, agencies run this pipeline at $0.12/lead to enrich downloaded attendee lists, webinar signups, or trade show scans with emails, phone numbers, and company data.

Recruiting and talent sourcing

Recruiters have candidate names and companies from job boards but need direct contact information. The pipeline discovers work emails and phone numbers, then scores candidates by company fit and seniority signals to prioritize outreach.

CRM data enrichment

Sales ops teams maintain CRM databases where 30-60% of contact records are incomplete or stale. Upload the CRM export as CSV, enrich missing fields, verify existing emails, and push updated records back to HubSpot or Salesforce — all in one run.

Competitive intelligence

Market research teams tracking competitor employees need enriched profiles with verified contact data, company intelligence, and tech stack information. The pipeline enriches partial competitor employee lists into actionable intelligence reports.

Event lead processing

After conferences and trade shows, teams have badge scan exports with names and companies but no email addresses. This pipeline converts raw event leads into outreach-ready contacts with verified emails, company context, and priority scores within minutes of the event ending.

How to enrich leads with this pipeline

  1. Upload your leads — Paste a JSON array of lead objects in the input field, or provide a public URL to a CSV file. Each lead needs at minimum a name + company, a name + domain, or an email address.
  2. Choose enrichment steps — Enable or disable email discovery, phone finding, email verification, company research, and lead scoring based on what you need. Defaults cover the most common workflow (email + verify + score).
  3. Run the pipeline — Click "Start" and wait. A batch of 50 leads with default settings typically completes in 3-5 minutes. Status messages update at each pipeline step.
  4. Download results — Get enriched leads as JSON from the Dataset tab, or download the CSV file from the Key-Value Store link in the summary record. Push directly to HubSpot or Salesforce by enabling CRM push.

Input parameters

ParameterTypeRequiredDefaultDescription
leadsarrayNoJSON array of lead objects. Each can have: firstName, lastName, fullName, email, phone, companyName, domain, website, title, linkedinUrl.
csvUrlstringNoPublic URL to a CSV file with lead data. Headers are auto-mapped. Takes precedence over JSON leads.
enrichEmailbooleanNotrueRun waterfall email discovery for leads missing email addresses.
enrichPhonebooleanNofalseRun phone number discovery for leads missing phone numbers.
verifyEmailsbooleanNotrueRun MX + SMTP verification on all emails (discovered and provided).
enrichCompanybooleanNofalseRun deep company research for leads with a domain. Adds industry, employee count, tech stack, social profiles.
scoreLeadsbooleanNotrueScore all leads 0-100 and assign A-F grades.
crmPushstringNo"none"Push enriched leads to a CRM. Options: none, hubspot, salesforce.
hubspotApiKeystringNoHubSpot private app access token. Required when crmPush is hubspot.
salesforceCredentialsobjectNoSalesforce credentials object with instanceUrl and accessToken. Required when crmPush is salesforce.
outputCsvbooleanNotrueGenerate a downloadable CSV file in the Key-Value Store.
maxLeadsintegerNo0Maximum leads to process. Set to 0 for unlimited.

Input examples

Enrich a list of prospects with email and scoring (most common):

{
"leads": [
{"firstName": "Sarah", "lastName": "Chen", "companyName": "Acme Corp", "website": "acmecorp.com", "title": "CTO"},
{"firstName": "James", "lastName": "Park", "companyName": "Beta Industries", "title": "VP Sales"},
{"fullName": "Maria Rodriguez", "domain": "pinnacle.io"}
],
"enrichEmail": true,
"verifyEmails": true,
"scoreLeads": true
}

Full enrichment with company research and HubSpot push:

{
"csvUrl": "https://docs.google.com/spreadsheets/d/abc123/export?format=csv",
"enrichEmail": true,
"enrichPhone": true,
"verifyEmails": true,
"enrichCompany": true,
"scoreLeads": true,
"crmPush": "hubspot",
"hubspotApiKey": "pat-na1-abc123...",
"maxLeads": 100
}

Quick email-only enrichment (fastest, cheapest):

{
"leads": [
{"email": "james@betaindustries.com"},
{"email": "m.rodriguez@pinnacle.io"},
{"email": "chen.sarah@acmecorp.com"}
],
"enrichEmail": false,
"verifyEmails": true,
"enrichCompany": false,
"scoreLeads": false
}

Input tips

  • Start with defaults — the default settings (email discovery + verification + scoring) cover the most common enrichment workflow at the lowest cost per lead
  • Enable company enrichment selectively — company research adds industry, employee count, and tech stack but increases processing time; enable it when company intelligence matters for your use case
  • Use CSV for large batches — upload your spreadsheet to Google Sheets, publish as CSV, and paste the URL; the auto-mapper handles 40+ common header variations including "First Name", "first_name", "fname", and more
  • Set maxLeads for testing — use maxLeads: 5 on your first run to verify the output format before processing your full list
  • Batch in one run — processing 200 leads in one run is faster and cheaper than running 200 single-lead runs because sub-actors are called in batch

Output example

{
"firstName": "Sarah",
"lastName": "Chen",
"fullName": "Sarah Chen",
"email": "sarah.chen@acmecorp.com",
"emailVerified": true,
"emailStatus": "valid",
"emailConfidence": 95,
"emailSource": "pattern-detection",
"phone": "+1-415-555-0142",
"phoneSource": "website-scraping",
"companyName": "Acme Corp",
"domain": "acmecorp.com",
"website": "https://acmecorp.com",
"title": "CTO",
"linkedinUrl": "https://linkedin.com/in/sarahchen",
"industry": "Technology",
"employeeCount": "51-200",
"companyDescription": "Enterprise SaaS platform for supply chain optimization, serving mid-market manufacturers across North America.",
"techStack": ["React", "Node.js", "AWS", "PostgreSQL"],
"socialProfiles": {
"linkedin": "https://linkedin.com/company/acmecorp",
"twitter": "https://twitter.com/acmecorp"
},
"score": 82,
"grade": "A",
"scoreBreakdown": {
"digital": 18,
"engagement": 15,
"company": 20,
"contact": 14,
"authority": 15
},
"enrichmentSteps": ["contact-discovery", "email-verification", "company-research", "lead-scoring"],
"crmPushed": false,
"processedAt": "2026-03-24T14:30:00.000Z"
}

The final record in each run is a pipeline summary with aggregate statistics:

{
"type": "summary",
"totalInputLeads": 50,
"totalEnrichedLeads": 50,
"emailsFound": 38,
"emailsVerified": 47,
"companiesResearched": 45,
"leadsScored": 50,
"leadsPushedToCrm": 0,
"pipelineSteps": ["normalize", "contact-discovery", "email-verification", "company-research", "lead-scoring"],
"averageScore": 64,
"csvDownloadUrl": "https://api.apify.com/v2/key-value-stores/abc123/records/enriched-leads.csv",
"durationSeconds": 187,
"completedAt": "2026-03-24T14:33:07.000Z"
}

Output fields

FieldTypeDescription
firstNamestringFirst name, parsed from fullName if not provided
lastNamestringLast name, parsed from fullName if not provided
fullNamestringFull name, built from first + last if not provided
emailstringDiscovered or input email address
emailVerifiedbooleanWhether email passed MX + SMTP verification
emailStatusstringVerification status: valid, invalid, catch-all, unknown
emailConfidencenumberConfidence score 0-100 for the email address
emailSourcestringHow the email was found: input, pattern-detection, website-scraping, pdl, waterfall
phonestringDiscovered or input phone number
phoneSourcestringHow the phone was found: input, website-scraping, phone-finder
companyNamestringCompany name from input or research
domainstringCompany domain, extracted from website/email or derived from company name
websitestringCompany website URL
titlestringJob title from input
linkedinUrlstringLinkedIn profile URL
industrystringCompany industry from deep research
employeeCountstringEmployee count range (e.g., "51-200")
companyDescriptionstringCompany description from deep research
techStackstring[]Technologies detected on the company website
socialProfilesobjectCompany social profile URLs (linkedin, twitter)
scorenumberLead quality score 0-100
gradestringLetter grade A-F derived from score
scoreBreakdownobjectPer-category scores: digital, engagement, company, contact, authority
enrichmentStepsstring[]Which pipeline steps processed this lead
crmPushedbooleanWhether the lead was pushed to a CRM
processedAtstringISO timestamp of when the lead was processed

How much does it cost to enrich leads?

Lead Enrichment Pipeline uses pay-per-event pricing — you pay $0.12 per lead enriched. Platform compute costs are included. All 6 pipeline steps (email discovery, phone finding, verification, company research, scoring, CRM push) are covered in that single price.

ScenarioLeadsCost per leadTotal cost
Quick test1$0.12$0.12
Small batch10$0.12$1.20
Medium batch50$0.12$6.00
Large batch200$0.12$24.00
Enterprise1,000$0.12$120.00

You can set a maximum spending limit per run to control costs. The actor stops enriching when your budget is reached and outputs all leads processed up to that point.

Compare this to Clay at $149-699/month (plus per-credit charges of $0.40-5.63 per enrichment), Apollo at $49-119/month, or ZoomInfo at $14,995/year. With Lead Enrichment Pipeline, most teams spend $12-60/month with no subscription commitment. A 1,000-lead enrichment that costs $400-5,630 on Clay costs $120 here — 3-47x cheaper.

Enrich leads using the API

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("ryanclinton/lead-enrichment-pipeline").call(run_input={
"leads": [
{"firstName": "Sarah", "lastName": "Chen", "companyName": "Acme Corp", "title": "CTO"},
{"firstName": "James", "lastName": "Park", "companyName": "Beta Industries", "title": "VP Sales"},
{"fullName": "Maria Rodriguez", "domain": "pinnacle.io"},
],
"enrichEmail": True,
"verifyEmails": True,
"scoreLeads": True,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
if item.get("type") == "summary":
print(f"Pipeline complete: {item['totalEnrichedLeads']} leads, avg score {item['averageScore']}")
else:
print(f"{item['fullName']} | {item['email']} ({item['emailStatus']}) | Score: {item['score']}/{item['grade']}")

JavaScript

import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "YOUR_API_TOKEN" });
const run = await client.actor("ryanclinton/lead-enrichment-pipeline").call({
leads: [
{ firstName: "Sarah", lastName: "Chen", companyName: "Acme Corp", title: "CTO" },
{ firstName: "James", lastName: "Park", companyName: "Beta Industries", title: "VP Sales" },
{ fullName: "Maria Rodriguez", domain: "pinnacle.io" },
],
enrichEmail: true,
verifyEmails: true,
scoreLeads: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const item of items) {
if (item.type === "summary") {
console.log(`Pipeline complete: ${item.totalEnrichedLeads} leads, avg score ${item.averageScore}`);
} else {
console.log(`${item.fullName} | ${item.email} (${item.emailStatus}) | Score: ${item.score}/${item.grade}`);
}
}

cURL

# Start the enrichment run
curl -X POST "https://api.apify.com/v2/acts/ryanclinton~lead-enrichment-pipeline/runs?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"leads": [
{"firstName": "Sarah", "lastName": "Chen", "companyName": "Acme Corp", "title": "CTO"},
{"fullName": "Maria Rodriguez", "domain": "pinnacle.io"}
],
"enrichEmail": true,
"verifyEmails": true,
"scoreLeads": true
}'
# Fetch results (replace DATASET_ID from the run response)
curl "https://api.apify.com/v2/datasets/DATASET_ID/items?token=YOUR_API_TOKEN&format=json"

How Lead Enrichment Pipeline works

Step 1: Input normalization

The pipeline accepts leads as a JSON array or CSV file. CSV headers are auto-mapped from 40+ common variations — "First Name", "first_name", "fname", and "givenname" all map to firstName. For each lead, the normalizer extracts domains from website URLs (stripping www. and paths), derives domains from company names by removing legal suffixes (LLC, Inc, Corp, etc.) and appending .com, and parses full names into first/last components. Domain extraction handles edge cases like https://www.acmecorp.com/about correctly resolving to acmecorp.com.

Step 2: Contact discovery via waterfall enrichment

Leads missing email addresses are sent in a single batch call to the waterfall-contact-enrichment sub-actor. This cascades through up to 10 enrichment sources: website contact page scraping, email pattern detection (e.g., first.last@domain.com), People Data Labs person lookup, SMTP probing, and social profile matching. Each source is tried in order until an email is found. Leads still missing phone numbers after the waterfall get a second batch call to the phone-number-finder sub-actor. Every discovered field is tagged with its source (emailSource: "pattern-detection", phoneSource: "website-scraping") for transparency.

Step 3: Email verification

All leads with email addresses — both discovered and provided in the input — are batch-verified via the bulk-email-verifier sub-actor. Verification runs MX record lookups to confirm the domain accepts mail, then SMTP conversation checks to validate the specific mailbox. Each email gets a valid/invalid/catch-all/unknown status and a confidence score from 0-100. This step runs with a 900-second timeout to handle large batches.

Step 4: Company research and lead scoring

Leads with domains are batch-enriched through the company-deep-research sub-actor, which pulls from 7+ sources (company website, Wikipedia, GitHub, SEC filings, academic databases, DNS records, social profiles) to populate industry, employee count, tech stack, company description, and social profile URLs. Then the lead-scoring-engine sub-actor scores all leads with sufficient data on a 0-100 scale across 5 categories: digital presence, engagement signals, company fit, contact data completeness, and authority level. Scores are converted to A-F letter grades.

Step 5: Output and optional CRM push

Enriched leads are pushed to the dataset one at a time, with PPE charging ($0.12) applied after each push. If a spending limit is reached mid-batch, the pipeline stops and outputs only the leads processed so far. When CRM push is enabled, all enriched leads are sent in a single batch to the HubSpot or Salesforce lead pusher sub-actor before output. A summary record is appended at the end with aggregate statistics including emails found, verification counts, average score, and a download URL for the CSV file stored in the Key-Value Store.

Tips for best results

  1. Provide the most data you have. Leads with name + company + domain enrich faster and more accurately than leads with only a name. The more input fields you provide, the fewer enrichment steps the pipeline needs to run.

  2. Use CSV for batches over 20 leads. Upload your spreadsheet to Google Sheets, File > Share > Publish to web > CSV format, and paste the URL. The auto-mapper handles messy headers without manual column mapping.

  3. Start with a 5-lead test run. Set maxLeads: 5 on your first run to verify the output matches your expectations before processing hundreds of leads at $0.12 each.

  4. Disable steps you do not need. If you already have verified emails and only need company data, disable enrichEmail and verifyEmails to reduce processing time. You still pay $0.12/lead, but runs complete faster.

  5. Enable company enrichment for B2B sales. The enrichCompany flag adds industry, employee count, and tech stack data that feeds into more accurate lead scores. Worth the extra processing time for account-based selling.

  6. Combine with Google Maps for local leads. Run Google Maps Email Extractor first to build a local business list, then pipe those leads through this pipeline for verification, company research, and scoring.

  7. Schedule weekly enrichment runs. Use Apify's scheduling to re-enrich your lead database weekly. New runs will re-verify emails (catching addresses that have gone stale) and update company data.

  8. Download the CSV for CRM import. Even without the direct HubSpot/Salesforce push, the auto-generated CSV is formatted for direct import into any CRM that accepts CSV uploads.

Combine with other Apify actors

ActorHow to combine
Google Maps Email ExtractorExtract local business leads from Google Maps, then enrich with verification, company data, and scoring
Website Contact ScraperScrape contact pages from a list of websites, then run discovered contacts through the enrichment pipeline
Email Pattern FinderDetect company email patterns first, then use this pipeline to verify and score the generated addresses
Bulk Email VerifierAlready built into step 3 of this pipeline; use standalone for email-only verification without enrichment
Company Deep ResearchAlready built into step 4 of this pipeline; use standalone for company research without the full lead workflow
HubSpot Lead PusherBuilt into step 6; use standalone to push pre-enriched leads from other sources into HubSpot
B2B Lead Gen SuiteUse Lead Gen Suite for URL-based lead extraction, then pipe results through this pipeline for deeper enrichment

Limitations

  • No LinkedIn scraping — the pipeline does not scrape LinkedIn profiles directly. LinkedIn URLs provided in input are used for enrichment matching but not crawled. This keeps the actor compliant with LinkedIn's terms of service.
  • Email discovery depends on public data — waterfall enrichment works best for leads at companies with public websites. Stealth-mode startups with no web presence may return null emails.
  • Company research requires a valid domain — if no domain can be extracted from the website, email, or company name, the company enrichment step is skipped for that lead.
  • Phone discovery is US-focused — phone number finding works best for US-based businesses and professionals. International phone discovery has lower success rates.
  • CSV parser handles standard CSV only — the built-in CSV parser supports quoted fields and common delimiters but does not handle Excel files (.xlsx). Export to CSV first.
  • Processing time scales with enabled steps — a full enrichment run (all 6 steps) on 200 leads may take 10-15 minutes. Disable unneeded steps to reduce time.
  • Sub-actor failures are non-blocking — if a sub-actor times out or fails, that step is skipped and the pipeline continues. This means some leads may have partial enrichment.
  • CRM push requires API credentials — HubSpot push needs a private app access token; Salesforce push needs instance URL and access token. The actor does not store credentials between runs.

Integrations

  • Zapier — trigger enrichment runs when new leads arrive in Google Sheets, Airtable, or CRM
  • Make — build multi-step workflows that feed webform submissions into the enrichment pipeline
  • Google Sheets — export enriched leads directly to a Google Sheet for team collaboration
  • Apify API — trigger enrichment from any backend system via REST API with Python, JavaScript, or cURL
  • Webhooks — get notified when enrichment completes and automatically fetch results
  • LangChain / LlamaIndex — feed enriched lead data into AI agents for automated outreach drafting or lead research

Troubleshooting

  • Empty email results for most leads — email discovery works best when leads include a company domain or website. Leads with only a name and no company information have limited enrichment options. Add company names or domains to improve discovery rates.

  • Run taking longer than 10 minutes — full enrichment with all 6 steps enabled processes leads sequentially through each sub-actor. Disable enrichCompany for faster runs, or reduce the batch size with maxLeads. Each sub-actor has its own timeout (up to 900 seconds for waterfall enrichment).

  • CSV file not loading — the csvUrl must be a publicly accessible URL that returns raw CSV text. Google Sheets share links do not work — use the "Publish to web" CSV export URL instead. The URL must respond within 30 seconds.

  • Some leads missing scores — the scoring engine requires at least an email or domain to generate a score. Leads where contact discovery failed and no domain was derivable will have score: null and grade: null.

  • CRM push showing 0 leads pushed — verify your API credentials. HubSpot requires a private app access token (not a legacy API key). Salesforce requires both instanceUrl and accessToken in the credentials object.

Responsible use

  • This actor only accesses publicly available contact and company information.
  • Respect website terms of service and robots.txt directives.
  • Comply with GDPR, CAN-SPAM, and other applicable data protection laws when using enriched lead data for outreach.
  • Do not use extracted data for spam, harassment, or unauthorized purposes.
  • For guidance on web scraping legality, see Apify's guide.

FAQ

How many leads can I enrich in one run? There is no hard limit on leads per run. The actor processes leads in batch and charges $0.12 per lead. For runs over 1,000 leads, increase the memory allocation to 512 MB. Use maxLeads to cap processing if you want to control costs.

How is Lead Enrichment Pipeline different from Clay? Clay charges $149-699/month plus per-credit costs of $0.40-5.63 per enrichment action. This pipeline charges a flat $0.12 per lead with no monthly subscription, covering all enrichment steps in one price. For 500 leads/month, Clay costs $200-2,815 while this pipeline costs $60. The code is also open for inspection on Apify.

Does lead enrichment work without an email address? Yes. The pipeline is designed for partial leads. Provide a name + company, name + domain, or even just a domain, and the waterfall enrichment will discover email addresses. Leads with more input data produce better results.

What types of emails are filtered out during verification? The email verifier checks MX records and SMTP mailbox existence. Emails at domains with no MX records are marked invalid. Catch-all domains (which accept mail to any address) are marked catch-all with lower confidence scores. Role-based addresses like info@ and support@ are flagged.

Is it legal to enrich lead data from public sources? This pipeline only accesses publicly available information. However, how you use enriched data is subject to GDPR, CAN-SPAM, CCPA, and other regulations depending on your jurisdiction and use case. Consult legal counsel for your specific compliance requirements. See Apify's guide on web scraping legality.

Can I schedule lead enrichment to run automatically? Yes. Use Apify's built-in scheduling to run the pipeline daily, weekly, or on a custom cron schedule. Point csvUrl at a regularly updated Google Sheet export to enrich new leads automatically.

How accurate is the email discovery? Email discovery accuracy depends on the input quality and the target company's web presence. For leads with a valid company domain, the 10-step waterfall finds emails for 60-80% of leads. Combined with verification, the pipeline typically delivers 50-70% verified email addresses from a cold list of names and companies.

How long does a typical enrichment run take? Processing time depends on batch size and enabled steps. A 50-lead run with email discovery + verification + scoring takes 3-5 minutes. Enabling company enrichment adds 2-3 minutes. A full 200-lead run with all steps takes 10-15 minutes.

Can I use this with HubSpot or Salesforce? Yes. Set crmPush to hubspot or salesforce and provide your API credentials. Enriched leads are pushed directly to your CRM after processing. For other CRMs, download the CSV output and import manually.

What happens if a sub-actor fails during the pipeline? The pipeline is fault-tolerant. If any sub-actor (email finder, verifier, company researcher, scorer, or CRM pusher) fails or times out, that step is skipped and the pipeline continues with the remaining steps. Affected leads will have null values for the skipped step's fields.

Can I enrich leads from a Google Sheet? Yes. In Google Sheets, go to File > Share > Publish to web, select the sheet, choose CSV format, and copy the URL. Paste it into the csvUrl field. The auto-mapper handles most column naming conventions.

What is the minimum data needed per lead? Each lead needs at least one of: (a) first name + company name, (b) first name + domain, (c) email address, or (d) full name + company name. Leads with more fields produce richer enrichment results.

Help us improve

If you encounter issues, you can help us debug faster by enabling run sharing in your Apify account:

  1. Go to Account Settings > Privacy
  2. Enable Share runs with public Actor creators

This lets us see your run details when something goes wrong, so we can fix issues faster. Your data is only visible to the actor developer, not publicly.

Support

Found a bug or have a feature request? Open an issue in the Issues tab on this actor's page. For custom solutions or enterprise integrations, reach out through the Apify platform.