skills/capabilities/apollo-lead-finder/SKILL.md
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.
npx skillsauth add gooseworks-ai/goose-skills apollo-lead-finderInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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.
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.
Ask the user these questions to build the Apollo filter 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, entryperson_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 searchorganization_locations — company HQ locationsApollo'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.
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.
| 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.
CRITICAL: Never export leads without explicit user approval.
The search phase is free. The enrich phase costs credits.
Required flow:
Use the Apollo Bulk People Match API to enrich selected leads from Phase 1.
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.
| 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.
Present results:
Common adjustments:
Trigger phrases:
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.POST https://api.apollo.io/api/v1/people/match — 1 credit, reveals email/phonePOST https://api.apollo.io/api/v1/people/bulk_match — up to 10 per request, 1 credit eachPOST https://api.apollo.io/api/v1/labels — create a named listPOST https://api.apollo.io/api/v1/contacts — add person to Apollo CRM + optional listx-api-key: {APOLLO_API_KEY} header on all requestspage param (1-indexed), per_page max 100development
End-to-end skill that turns a single reference image into a fully-installed, example-rendered style preset for the goose-graphics composite. Analyzes the image, writes the slim style spec, registers it in styles/index.json, generates all 7 format examples using the standard brief, renders PNGs via Playwright, and updates examples/manifest.json. Invoke with /goose-graphics-create-style.
development
Evaluate YC batch companies for investment — scrapes the YC directory, researches each company and its founders (work history, LinkedIn, website), assesses founder-company fit, and exports to Google Sheets with priority rankings. Use when asked to evaluate YC companies, research a YC batch, screen startups, or do due diligence on YC companies.
tools
Take screenshots of any website using Notte browser automation. Use when asked to screenshot, capture, or snap a webpage.
development
Search the web, platforms, and datasets. Use when asked to search, find, look up, research, or discover information from the web, YouTube, Amazon, eBay, news, academic sources, or any online platform.