Skip to content
cccskills
FreePublished on GitHub

apollo-lead-finder

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.

The English summary is being prepared. Showing the original description.

Works withLinkedIn

Run score Not tested

See how to install

Files included (3)

  • SKILL.md7.8 KB
  • scripts/apollo_client.py12.7 KB
  • skill.meta.json266 B

SKILL.md (original)

Review the instructions the agent will receive before you install.

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

ParameterTestStandardFull
Max pages150500
Max results1005,00050,000
Search credits000

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

ParameterTestStandardFull
Max enrichments105002,500
Credits used105002,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

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Research supported advertising promises from a specific buyer's context, current product facts, customer language and observed ads. Turn them into static, video or copy ideas; match video ideas to actual recipes and save a product-scoped angle bank for write-video-ad-script. Product-led discovery can use verified facts without reviews. Reference persistence and reach are observations, not proof of performance.

The English summary is being prepared. Showing the original description.

gooseworks-ai/goose-skills1.3KUpdated Oct 24, 2026

Analyze 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.

The English summary is being prepared. Showing the original description.

gooseworks-ai/goose-skills1.3KUpdated Oct 24, 2026

For 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.

The English summary is being prepared. Showing the original description.

gooseworks-ai/goose-skills1.3KUpdated Oct 24, 2026

The intake stage of a Meta ad harness. Researches the brand first, states what it assumes, and asks only what it cannot infer and what would change money, claims or legal exposure if guessed wrong — at most four questions a turn, in plain business language. Writes the brand's stable facts (ads/brand.md), the campaign brief, and a log of what was asked vs assumed. Use it when someone wants to run Meta ads and the brand's ad facts are not yet recorded.

The English summary is being prepared. Showing the original description.

gooseworks-ai/goose-skills1.3KUpdated Oct 24, 2026

Checks paid ads against the ad platform's rules (Meta, TikTok, Google, LinkedIn and others) and the brand's category rules: the copy, on-image or on-screen text, pictures and people. Rewrites what can be fixed honestly, adds the disclosures that are needed, and flags anything that needs a human or legal review, with one pass, fixed or flag line per ad and platform. Use alone when you already have the ad text or images and know where they will run; otherwise run the playbook for the job (e.g. make-static-ads, make-content, email-lifecycle).

The English summary is being prepared. Showing the original description.

gooseworks-ai/goose-skills1.3KUpdated Oct 24, 2026

Analyze 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.

The English summary is being prepared. Showing the original description.

gooseworks-ai/goose-skills1.3KUpdated Oct 24, 2026

See all skills by gooseworks-ai

Report a problem with this skill