New: Earn 20% as an AgentAlley affiliate. Share your link and earn on every sale you refer. Join now New: Earn 20% as an affiliate. Join now

Free People Search to discover ICP-matching leads

Apollo lead finder

by gooseworks-ai · MIT license · ★ 1,220 on GitHub · updated Sep 21

Apollo lead finder cover

Two-phase Apollo.io prospecting: free People Search to discover ICP-matching leads, then selective enrichment to reveal emails/phones (credits per contact). Creates Apollo lists.

---
name: apollo-lead-finder
description: >
  Two-phase Apollo.io prospecting: free People Search to discover ICP-matching
  leads, then selective enrichment to reveal emails/phones (credits per contact).
  Creates Apollo lists. Deduplicates against existing contacts by LinkedIn URL.
tags: [lead-generation]
---

# Apollo Lead Finder

Two-phase Apollo.io prospecting: **free** People Search for lead discovery, then selective **paid** enrichment to reveal emails and phone numbers. Creates Apollo lists and contacts.

**Key advantage:** Apollo People Search is free (no credits consumed). Credits are only spent when enriching contacts to reveal email/phone. This lets you search tens of thousands of leads at zero cost, review results, then selectively enrich only the best matches.

## Prerequisites

### Apollo API Key

Overview

Two-phase Apollo.io prospecting: free People Search for lead discovery, then selective paid enrichment to reveal emails and phone numbers. Creates Apollo lists and contacts.

Manual install (npx, ZIP)
Claude Codenpx skills add gooseworks-ai/goose-skills --skill apollo-lead-finder -g -a claude-code
Claude Code (manual)mkdir -p ~/.claude/skills && curl -sL https://codeload.github.com/gooseworks-ai/goose-skills/tar.gz/615c685f34f8 \ | tar -xz -C ~/.claude/skills --strip-components=4 goose-skills-615c685f34f8/skills/lead-generation/capabilities/apollo-lead-finder
Windows (PowerShell)New-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/3ab1752186190693a46d/apollo-lead-finder.zip" -OutFile "$env:TEMP\apollo-lead-finder.zip"; Expand-Archive "$env:TEMP\apollo-lead-finder.zip" -DestinationPath "$HOME\.claude\skills" -Force
Claude.ai / desktopDownload the ZIP and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md7.8 KB
  • skill.meta.json266 B
  • scripts/1 file · 12.7 KB
Read the files here
gooseworks-ai/615c6853 files
SKILL.md
Show the full text182 lines

Apollo Lead Finder

Two-phase Apollo.io prospecting: free People Search for lead discovery, then selective paid enrichment to reveal emails and phone numbers. Creates Apollo lists and contacts.

Key advantage: Apollo People Search is free (no credits consumed). Credits are only spent when enriching contacts to reveal email/phone. This lets you search tens of thousands of leads at zero cost, review results, then selectively enrich only the best matches.

Prerequisites

Apollo API Key

Get your API key from Apollo.io Settings > Integrations > API. Add to .env:

APOLLO_API_KEY=your-api-key-here

That's it — one env var.

Phase 0: Intake

Ask the user these questions to build the Apollo filter config:

ICP Criteria
  1. What job titles are you targeting? (e.g., "VP of Sales", "Head of Growth")
  2. What seniority levels? Options: owner, founder, c_suite, partner, vp, director, manager, senior, entry
  3. Company size (employee range)? Format: "51,200" "201,500" "501,1000" "1001,5000"
  4. Geographic regions? (e.g., "United States", "San Francisco, California")
  5. Industry/keyword tags? (e.g., "SaaS", "Software", "FinTech")
  6. Any titles to exclude? (e.g., "intern", "assistant")
  7. Should we create an Apollo list with these contacts? (default: yes)
  8. How many results do you want? (test: 100, standard: 5,000, full: 50,000)
Map Answers to Config

Build the config JSON with Apollo's filter format:

{
  "client_name": "example-client",
  "search_config_name": "vp-sales-us-midmarket",
  "icp_segment": "sales-leaders",
  "apollo_filters": {
    "person_titles": ["VP of Sales", "Head of Sales", "Director of Sales"],
    "person_seniority": ["vp", "director"],
    "person_locations": ["United States"],
    "organization_num_employees_ranges": ["51,200", "201,500", "501,1000"],
    "q_organization_keyword_tags": ["SaaS", "Software"]
  },
  "enrichment_filters": {
    "exclude_titles_containing": ["intern", "assistant"]
  },
  "apollo_list_name_prefix": "example-sales-leaders",
  "create_apollo_list": true,
  "mode": "standard",
  "max_pages": 50
}

Available Apollo search filters:

  • person_titles — job title keywords (array of strings)
  • person_seniority — seniority levels: owner, founder, c_suite, partner, vp, director, manager, senior, entry
  • person_locations — geographic locations (array of strings)
  • organization_num_employees_ranges — employee count ranges, format "min,max" (e.g., "51,200")
  • q_organization_keyword_tags — company keyword tags (e.g., "SaaS", "Software")
  • person_not_titles — titles to exclude (array of strings)
  • q_organization_name — organization name search
  • organization_locations — company HQ locations

Phase 1: Search (FREE)

What the free search returns

Apollo's api_search endpoint returns limited preview data: Apollo person ID, first name, obfuscated last name, title, company name, and boolean flags (has_email, has_phone). No LinkedIn URLs, emails, or full names — those require enrichment.

Pipeline Steps

Step 1: Build Apollo search payload — Map config filters to Apollo People Search format.

Step 2: Search page 1 — Get first 100 results + total_entries for total count.

Step 3: Paginate — Fetch remaining pages (100 per page, up to mode cap). Apply title filters.

Step 4: Collect Apollo person IDs — Store the Apollo person IDs from search results for the enrich phase.

Step 5: Present preview — Show the user a sample of search results (first name, title, company) and total count. Ask for approval before enriching.

Mode Caps
Parameter Test Standard Full
Max pages 1 50 500
Max results 100 5,000 50,000
Search credits 0 0 0

Cost: FREE. People Search does not consume Apollo credits.

Database Write Policy

CRITICAL: Never export leads without explicit user approval.

The search phase is free. The enrich phase costs credits.

Required flow:

  1. Run search first (free) — review the results
  2. Present search results to the user: total matches, sample leads, title distribution
  3. Get explicit user approval before running enrich phase
  4. After enrichment, present the enriched results to the user before exporting
  5. Only export after the user confirms the results look good

Phase 2: Enrich (COSTS CREDITS)

Use the Apollo Bulk People Match API to enrich selected leads from Phase 1.

Pipeline Steps

Step 1: Load search manifest — Read the manifest JSON saved by the search phase. Contains Apollo person IDs.

Step 2: Load existing contacts for dedup — If the user has a CSV of existing contacts or a previous export, load LinkedIn URLs for dedup. If no existing data, skip dedup.

Step 3: Confirm credits — Display lead count and credit cost estimate. Wait for confirmation.

Step 4: Bulk enrich — Call /people/bulk_match with Apollo person IDs in batches of 10. Each match costs 1 credit. Returns full data: email, phone, LinkedIn URL, full name, location, company details.

Step 5: Dedup against existing contacts — Filter out leads whose LinkedIn URLs already exist in the user's contact list.

Step 6: Present results to user — Show enriched sample leads (names, titles, companies, email coverage) and ask for explicit approval before writing to the database.

Step 7: Export results — Only after user approval. Save enriched leads as CSV to the current working directory, or wherever the user prefers.

Mode Caps
Parameter Test Standard Full
Max enrichments 10 500 2,500
Credits used 10 500 2,500

Cost: 1 credit per contact enriched. Always run search first, review results, then selectively enrich.

Phase 3: Review & Refine

Present results:

  • Total matching — how many profiles match the filters in Apollo
  • New leads found — net-new profiles (after dedup)
  • Apollo list — name and link to the list in Apollo
  • Enriched — how many have emails revealed
  • Email coverage — percentage of enriched leads with valid emails
  • Top 10 leads — name, title, company preview

Common adjustments:

  • Too broad — add more filters (seniority, employee range, keyword tags)
  • Too narrow — broaden title list, remove location filters
  • Low email coverage — some contacts genuinely have no known email; try enriching more leads
  • Wrong ICP — adjust title include/exclude lists

Example Usage

Trigger phrases:

  • "Search Apollo for [titles] at [industries]"
  • "Find leads in Apollo matching my ICP"
  • "Find VP of Sales at SaaS companies in the US"
  • "Enrich the Apollo leads from last search"

Apollo API Reference

  • People Search: POST https://api.apollo.io/api/v1/mixed_people/api_search — FREE, returns Apollo IDs + preview data (first name, title, org name, boolean flags). No LinkedIn URLs or emails.
  • People Match (enrich): POST https://api.apollo.io/api/v1/people/match — 1 credit, reveals email/phone
  • Bulk People Match: POST https://api.apollo.io/api/v1/people/bulk_match — up to 10 per request, 1 credit each
  • Create List: POST https://api.apollo.io/api/v1/labels — create a named list
  • Create Contact: POST https://api.apollo.io/api/v1/contacts — add person to Apollo CRM + optional list
  • Auth: x-api-key: {APOLLO_API_KEY} header on all requests
  • Rate limit: Varies by plan. Handle 429 with Retry-After header.
  • Search Pagination: page param (1-indexed), per_page max 100
1---
2name: apollo-lead-finder
3description: >
4 Two-phase Apollo.io prospecting: free People Search to discover ICP-matching
5 leads, then selective enrichment to reveal emails/phones (credits per contact).
6 Creates Apollo lists. Deduplicates against existing contacts by LinkedIn URL.
7tags: [lead-generation]
8---
9 
10# Apollo Lead Finder
11 
12Two-phase Apollo.io prospecting: **free** People Search for lead discovery, then selective **paid** enrichment to reveal emails and phone numbers. Creates Apollo lists and contacts.
13 
14**Key advantage:** Apollo People Search is free (no credits consumed). Credits are only spent when enriching contacts to reveal email/phone. This lets you search tens of thousands of leads at zero cost, review results, then selectively enrich only the best matches.
15 
16## Prerequisites
17 
18### Apollo API Key
19 
20Get your API key from Apollo.io Settings > Integrations > API. Add to `.env`:
21```
22APOLLO_API_KEY=your-api-key-here
23```
24 
25That's it — one env var.
26 
27## Phase 0: Intake
28 
29Ask the user these questions to build the Apollo filter config:
30 
31### ICP Criteria
32 
331. What **job titles** are you targeting? (e.g., "VP of Sales", "Head of Growth")
342. What **seniority levels**? Options: owner, founder, c_suite, partner, vp, director, manager, senior, entry
353. **Company size** (employee range)? Format: "51,200" "201,500" "501,1000" "1001,5000"
364. **Geographic regions**? (e.g., "United States", "San Francisco, California")
375. **Industry/keyword tags**? (e.g., "SaaS", "Software", "FinTech")
386. Any titles to **exclude**? (e.g., "intern", "assistant")
397. Should we **create an Apollo list** with these contacts? (default: yes)
408. How many results do you want? (test: 100, standard: 5,000, full: 50,000)
41 
42### Map Answers to Config
43 
44Build the config JSON with Apollo's filter format:
45 
46```json
47{
48 "client_name": "example-client",
49 "search_config_name": "vp-sales-us-midmarket",
50 "icp_segment": "sales-leaders",
51 "apollo_filters": {
52 "person_titles": ["VP of Sales", "Head of Sales", "Director of Sales"],
53 "person_seniority": ["vp", "director"],
54 "person_locations": ["United States"],
55 "organization_num_employees_ranges": ["51,200", "201,500", "501,1000"],
56 "q_organization_keyword_tags": ["SaaS", "Software"]
57 },
58 "enrichment_filters": {
59 "exclude_titles_containing": ["intern", "assistant"]
60 },
61 "apollo_list_name_prefix": "example-sales-leaders",
62 "create_apollo_list": true,
63 "mode": "standard",
64 "max_pages": 50
65}
66```
67 
68Available Apollo search filters:
69- `person_titles` — job title keywords (array of strings)
70- `person_seniority` — seniority levels: owner, founder, c_suite, partner, vp, director, manager, senior, entry
71- `person_locations` — geographic locations (array of strings)
72- `organization_num_employees_ranges` — employee count ranges, format "min,max" (e.g., "51,200")
73- `q_organization_keyword_tags` — company keyword tags (e.g., "SaaS", "Software")
74- `person_not_titles` — titles to exclude (array of strings)
75- `q_organization_name` — organization name search
76- `organization_locations` — company HQ locations
77 
78## Phase 1: Search (FREE)
79 
80### What the free search returns
81 
82Apollo's `api_search` endpoint returns **limited preview data**: Apollo person ID, first name, obfuscated last name, title, company name, and boolean flags (has_email, has_phone). **No LinkedIn URLs, emails, or full names** — those require enrichment.
83 
84### Pipeline Steps
85 
86**Step 1: Build Apollo search payload** — Map config filters to Apollo People Search format.
87 
88**Step 2: Search page 1** — Get first 100 results + `total_entries` for total count.
89 
90**Step 3: Paginate** — Fetch remaining pages (100 per page, up to mode cap). Apply title filters.
91 
92**Step 4: Collect Apollo person IDs** — Store the Apollo person IDs from search results for the enrich phase.
93 
94**Step 5: Present preview** — Show the user a sample of search results (first name, title, company) and total count. Ask for approval before enriching.
95 
96### Mode Caps
97 
98| Parameter | Test | Standard | Full |
99|-----------|------|----------|------|
100| Max pages | 1 | 50 | 500 |
101| Max results | 100 | 5,000 | 50,000 |
102| Search credits | 0 | 0 | 0 |
103 
104**Cost: FREE.** People Search does not consume Apollo credits.
105 
106## Database Write Policy
107 
108**CRITICAL: Never export leads without explicit user approval.**
109 
110The search phase is free. The enrich phase costs credits.
111 
112**Required flow:**
1131. Run search first (free) — review the results
1142. Present search results to the user: total matches, sample leads, title distribution
1153. **Get explicit user approval** before running enrich phase
1164. After enrichment, present the enriched results to the user **before exporting**
1175. Only export after the user confirms the results look good
118 
119## Phase 2: Enrich (COSTS CREDITS)
120 
121Use the Apollo Bulk People Match API to enrich selected leads from Phase 1.
122 
123### Pipeline Steps
124 
125**Step 1: Load search manifest** — Read the manifest JSON saved by the search phase. Contains Apollo person IDs.
126 
127**Step 2: Load existing contacts for dedup** — If the user has a CSV of existing contacts or a previous export, load LinkedIn URLs for dedup. If no existing data, skip dedup.
128 
129**Step 3: Confirm credits** — Display lead count and credit cost estimate. Wait for confirmation.
130 
131**Step 4: Bulk enrich** — Call `/people/bulk_match` with Apollo person IDs in batches of 10. Each match costs 1 credit. Returns full data: email, phone, LinkedIn URL, full name, location, company details.
132 
133**Step 5: Dedup against existing contacts** — Filter out leads whose LinkedIn URLs already exist in the user's contact list.
134 
135**Step 6: Present results to user** — Show enriched sample leads (names, titles, companies, email coverage) and ask for explicit approval before writing to the database.
136 
137**Step 7: Export results** — **Only after user approval.** Save enriched leads as CSV to the current working directory, or wherever the user prefers.
138 
139### Mode Caps
140 
141| Parameter | Test | Standard | Full |
142|-----------|------|----------|------|
143| Max enrichments | 10 | 500 | 2,500 |
144| Credits used | 10 | 500 | 2,500 |
145 
146**Cost: 1 credit per contact enriched.** Always run search first, review results, then selectively enrich.
147 
148## Phase 3: Review & Refine
149 
150Present results:
151- **Total matching** — how many profiles match the filters in Apollo
152- **New leads found** — net-new profiles (after dedup)
153- **Apollo list** — name and link to the list in Apollo
154- **Enriched** — how many have emails revealed
155- **Email coverage** — percentage of enriched leads with valid emails
156- **Top 10 leads** — name, title, company preview
157 
158Common adjustments:
159- **Too broad** — add more filters (seniority, employee range, keyword tags)
160- **Too narrow** — broaden title list, remove location filters
161- **Low email coverage** — some contacts genuinely have no known email; try enriching more leads
162- **Wrong ICP** — adjust title include/exclude lists
163 
164## Example Usage
165 
166**Trigger phrases:**
167- "Search Apollo for [titles] at [industries]"
168- "Find leads in Apollo matching my ICP"
169- "Find VP of Sales at SaaS companies in the US"
170- "Enrich the Apollo leads from last search"
171 
172## Apollo API Reference
173 
174- **People Search:** `POST https://api.apollo.io/api/v1/mixed_people/api_search` — FREE, returns Apollo IDs + preview data (first name, title, org name, boolean flags). No LinkedIn URLs or emails.
175- **People Match (enrich):** `POST https://api.apollo.io/api/v1/people/match` — 1 credit, reveals email/phone
176- **Bulk People Match:** `POST https://api.apollo.io/api/v1/people/bulk_match` — up to 10 per request, 1 credit each
177- **Create List:** `POST https://api.apollo.io/api/v1/labels` — create a named list
178- **Create Contact:** `POST https://api.apollo.io/api/v1/contacts` — add person to Apollo CRM + optional list
179- **Auth:** `x-api-key: {APOLLO_API_KEY}` header on all requests
180- **Rate limit:** Varies by plan. Handle 429 with Retry-After header.
181- **Search Pagination:** `page` param (1-indexed), `per_page` max 100
182 
View all files on GitHub →

Details

Updated
Sep 21, 2026
License
MIT
Stars on the repo
★ 1,220
Checked
Source
gooseworks-ai/goose-skills ↗
Creator
gooseworks-ai · 206 listings
View creator

Made with apollo-lead-finder

Apollo lead finder — CleanShot 2026-07-13 at 20 16 54@2x (from the gooseworks-ai/goose-skills README)
Apollo lead finder — CleanShot 2026-07-13 at 20 16 54@2x (from the gooseworks-ai/goose-skills README)

by gooseworks-ai

Similar skills

See all →
SkillAct as the company research engine for /sales research <urlCompany Research & Firmographic Analysiszubair-trabzada/ai-sales-team-claude · by zubair-trabzadaYou are the company research engine for /sales research <url>. You produce deep, structured intelligence on a prospect company covering 8…★ 1.4k GitHub starsSkillEthical people-finding and identity verificationPrivateinvestigatordanielmiessler/LifeOS · by danielmiesslerEthical people-finding and identity verification via parallel research agents across people-search sites, social media, public records, and reverse phone/email/image/username lookups, with confidence-scored results requiring 3+ matching identifiers. USE WHEN find person, locate person, reconnect, lost contact, old friend, reverse phone lookup, who owns this email, reverse image search, find by username, verify identity, people search, public-data background check, who is this caller. NOT FOR structured due-diligence or company/entity intelligence investigations, or general web research synthesis (use Research).★ 19.3k GitHub starsSkillFind decision-makers at a specific company using ApolloCompany contact findergooseworks-ai/goose-skills · by gooseworks-aiFind decision-makers at a specific company using Apollo, Crustdata, Fiber, and PDL people search via Gooseworks MCP. Given a company name and target titles, returns a list of contacts with name, title, LinkedIn URL, and location.★ 1.2k GitHub starsSkillFind company funding history, investorsCompany funding searchgooseworks-ai/goose-skills · by gooseworks-aiFind company funding history, investors, and investment details★ 1.2k GitHub starsSkillFull company intelligence reportCompany Intelligence - Comprehensive Company Reportsgooseworks-ai/goose-skills · by gooseworks-aiFull company intelligence report - overview, team, funding, products, news★ 1.2k GitHub starsSkillExtract speaker names, titles, companiesConference speaker scrapergooseworks-ai/goose-skills · by gooseworks-aiExtract speaker names, titles, companies, and bios from conference websites. Supports direct HTML scraping and Apify web scraper fallback for JS-heavy sites. Use for pre-event research and outreach targeting.★ 1.2k GitHub stars

More from gooseworks-ai

SkillMine the highest-converting ad angles from customer reviewsAd angle minergooseworks-ai/goose-skills · by gooseworks-aiMine the highest-converting ad angles from customer reviews, Reddit complaints, support tickets, and competitor ads. Extracts actual pain language, competitor weaknesses, and outcome phrases that real buyers use. Outputs a ranked angle bank with proof quotes and recommended ad formats per angle.★ 1.2k GitHub starsSkillAnalyze ad campaign performance data to identify what'sAd campaign analyzergooseworks-ai/goose-skills · by gooseworks-aiAnalyze ad campaign performance data (Google, Meta, LinkedIn) to identify what's working, what's wasting budget, and specific cut/scale/test recommendations. Runs statistical analysis, funnel diagnostics, and multi-channel budget reallocation with specific dollar-amount shift recommendations and scenario modeling.★ 1.2k GitHub starsSkillFor paid lead-gen and participant-recruitment adsAd lead quality analyzergooseworks-ai/goose-skills · by gooseworks-aiFor paid lead-gen and participant-recruitment ads, replaces vanity CPA with true CAC per qualified lead by joining ad-platform data with downstream funnel events, surfaces tracking gaps, and classifies every creative into Scale / Keep / Investigate / Cut.★ 1.2k GitHub starsSkillAnalyze the message match between your ads and landing pagesAd to landing page auditorgooseworks-ai/goose-skills · by gooseworks-aiAnalyze the message match between your ads and landing pages. Checks if the promise in the ad copy carries through to the landing page headline, body, and CTA. Flags disconnects that kill conversion rates. Works with Google, Meta, and LinkedIn ads.★ 1.2k GitHub starsSkillCheck and improve your brand's visibility across AI searchAeogooseworks-ai/goose-skills · by gooseworks-aiCheck and improve your brand's visibility across AI search engines (ChatGPT, Perplexity, Gemini, Grok, Claude, DeepSeek). Set up tracking, run visibility analyses, audit your website for AI readability, and get actionable recommendations. Uses the npx goose-aeo@latest CLI.★ 1.2k GitHub starsSkillSearch Amazon products - find items, compare pricesAmazon Product Searchgooseworks-ai/goose-skills · by gooseworks-aiSearch Amazon products - find items, compare prices, read reviews★ 1.2k GitHub stars