Apollo.io / ZoomInfo API Lead Pull

Type: Execution Recipe Confidence: 0.89 Sources: 6 Verified: 2026-03-11

Purpose

This recipe produces an enriched lead database of 200-5,000 contacts pulled from Apollo.io or ZoomInfo APIs, with verified work emails, direct phone numbers, firmographic data (industry, employee count, revenue), and technographic signals. The output includes deduplication and cost tracking per lead, ready for scoring and outreach.

Prerequisites

Constraints

Tool Selection Decision

Which path?
├── Budget = free AND scale < 500
│   └── PATH A: Apollo Free Tier
├── Budget = $50-200/mo AND scale 500-2000
│   └── PATH B: Apollo Professional
├── Budget = enterprise AND scale 2000+
│   └── PATH C: ZoomInfo API
└── Maximum coverage
    └── PATH D: Waterfall (Apollo + ZoomInfo)
PathToolsCostSpeedOutput Quality
A: Apollo FreeApollo UI + export$030 min/200 leadsGood — limited credits
B: Apollo ProApollo API$79/mo/seat20 min/1000 leadsHigh — full enrichment
C: ZoomInfoZoomInfo API$15K+/yr15 min/2000 leadsHighest — intent + org charts
D: WaterfallApollo + ZoomInfo$79/mo + $15K/yr30 min/2000 leadsMaximum coverage

Execution Flow

Step 1: Construct API Search Query

Duration: 10 minutes | Tool: Apollo.io API

Translate ICP into API query parameters using Apollo's People Search endpoint with company size, title keywords, industry, location, and technology filters.

Verify: API returns 200 status and total_entries > 0.

Step 2: Paginate and Extract All Results

Duration: 10-30 minutes | Tool: Python script

Loop through pages at 100 results/page, respecting the 100 req/min rate limit. Extract name, title, company, email, phone, LinkedIn URL, company size, industry, and location. [src1]

Verify: Row count > 100. Email populated for > 50% of records.

Step 3: Enrich Missing Fields

Duration: 5-15 minutes | Tool: Apollo People Enrichment API

For leads missing email or phone, use the People Match endpoint with first name, last name, company, and LinkedIn URL. Rate limit: 50 req/min on enrichment. [src2]

Verify: Email coverage improves to > 70%.

Step 4: Deduplicate and Clean

Duration: 5-10 minutes | Tool: Python (pandas)

Deduplicate by email (primary) and name+company (secondary). Remove rows missing critical fields. Track credit usage per lead for cost analysis.

Verify: Zero duplicates on email column. Credit usage within budget.

Step 5: Export with Cost Tracking

Duration: 5 minutes

Add metadata columns (lead_source, date_pulled, credit_cost). Generate summary report with total leads, email/phone coverage rates, total credits used, and cost per lead.

Output Schema

CSV with columns: first_name, last_name, title, company, email, phone, linkedin_url, company_size, industry, city, state, lead_source, credit_cost. Expected 200-5,000 rows, deduplicated on email, sorted by company ascending.

Quality Benchmarks

Quality MetricMinimumGoodExcellent
Email coverage> 50%> 70%> 85%
Phone coverage> 15%> 30%> 50%
ICP match rate> 75%> 85%> 95%
Duplicate rate< 5%< 2%< 0.5%
Data freshness> 80%> 90%> 95%

Error Handling

ErrorCauseRecovery
429 Too Many RequestsRate limit exceededWait 60 seconds, reduce frequency
401 UnauthorizedInvalid API keyRegenerate at Apollo settings
Empty resultsQuery too narrowBroaden title/industry filters
Low email coverageFree tier credits exhaustedUpgrade or use enrichment pipeline
Stale dataContact left companyCross-reference with LinkedIn

Cost Breakdown

ComponentFree TierPaid TierAt Scale
Apollo.io search10K records/moUnlimited ($79/mo)Unlimited
Email credits120/moUnlimited (Pro)Unlimited
Mobile credits60/mo100/mo (Pro)200/mo ($199/mo)
ZoomInfo (alt)No free tier$15K-$25K/yr$25K-$40K+/yr
Cost per lead~$0.01~$0.05-0.15~$0.03-0.10

Anti-Patterns

Wrong: Pulling maximum leads without credit monitoring

Exhausting monthly credits mid-campaign leaves no capacity for enrichment or follow-up. [src3]

Correct: Track credits per lead and set budget alerts

Log credit_cost per record. Reserve 20% of monthly credits for enrichment and re-pulls.

Wrong: Using Apollo free tier for enterprise-scale prospecting

120 email credits/month cannot sustain 1,000+ lead outbound campaigns. [src1]

Correct: Match tier to volume needs

Free for validation (50-100 leads). Professional for sustained outbound. ZoomInfo for enterprise. [src3]

When This Matters

Use when the agent needs to pull leads from a sales intelligence API with structured filters. Ideal for teams with tool budget who want clean, enriched data without LinkedIn rate limit constraints.

Related Units