Skip to main content
ClaudeWave
Skill470 estrellas del repoactualizado 3d ago

Apollo Automation

Apollo Automation enables sales teams to programmatically search organizations on Apollo.io, discover contacts by job title and seniority, and enrich prospect data with verified emails and phone numbers using natural language commands through the Composio integration. Use this skill to build targeted outreach lists, filter leads by company size and industry, and streamline lead generation workflows without manual Apollo.io platform navigation.

Instalar en Claude Code
Copiar
git clone --depth 1 https://github.com/openteams-lab/openteams /tmp/apollo-automation && cp -r /tmp/apollo-automation/assets/skills/apollo-automation ~/.claude/skills/apollo-automation
Después abre una sesión nueva de Claude Code; el skill carga automáticamente.

SKILL.md

# Apollo Automation

Supercharge your sales prospecting with Apollo.io -- search companies, discover decision-makers, enrich contact data with emails and phone numbers, and manage your sales pipeline stages -- all through natural language commands.

**Toolkit docs:** [composio.dev/toolkits/apollo](https://composio.dev/toolkits/apollo)

---

## Setup

1. Add the Composio MCP server to your client configuration:
   ```
   https://rube.app/mcp
   ```
2. Connect your Apollo.io account when prompted (API key authentication).
3. Start issuing natural language commands to prospect and enrich leads.

---

## Core Workflows

### 1. Search Organizations
Find target companies using filters like name, location, employee count, and industry keywords.

**Tool:** `APOLLO_ORGANIZATION_SEARCH`

**Example prompt:**
> "Find SaaS companies in Texas with 50-500 employees on Apollo"

**Key parameters:**
- `q_organization_name` -- Partial name match (e.g., "Apollo" matches "Apollo Inc.")
- `organization_locations` -- HQ locations to include (e.g., "texas", "tokyo")
- `organization_not_locations` -- HQ locations to exclude
- `organization_num_employees_ranges` -- Employee ranges in "min,max" format (e.g., "50,500")
- `q_organization_keyword_tags` -- Industry keywords (e.g., "software", "healthcare")
- `page` / `per_page` -- Pagination (max 100 per page, max 500 pages)

---

### 2. Discover People at Companies
Search Apollo's contact database for people matching title, seniority, location, and company criteria.

**Tool:** `APOLLO_PEOPLE_SEARCH`

**Example prompt:**
> "Find VPs of Sales at microsoft.com and apollo.io"

**Key parameters:**
- `person_titles` -- Job titles (e.g., "VP of Sales", "CTO")
- `person_seniorities` -- Seniority levels (e.g., "director", "vp", "senior")
- `person_locations` -- Geographic locations of people
- `q_organization_domains` -- Company domains (e.g., "apollo.io" -- exclude "www.")
- `organization_ids` -- Apollo company IDs from Organization Search
- `contact_email_status` -- Filter by email status: "verified", "unverified", "likely to engage"
- `page` / `per_page` -- Pagination (max 100 per page)

---

### 3. Enrich Individual Contacts
Get comprehensive data (email, phone, LinkedIn, company info) for a single person using their email, LinkedIn URL, or name + company.

**Tool:** `APOLLO_PEOPLE_ENRICHMENT`

**Example prompt:**
> "Enrich Tim Zheng at Apollo.io on Apollo"

**Key parameters (at least one identifier required):**
- `email` -- Person's email address
- `linkedin_url` -- Full LinkedIn profile URL
- `first_name` + `last_name` + (`organization_name` or `domain`) -- Name-based matching
- `domain` -- Bare hostname without protocol (e.g., "apollo.io", not "https://apollo.io")
- `reveal_personal_emails` -- Set true to get personal emails (may use extra credits)
- `reveal_phone_number` -- Set true for phone numbers (requires `webhook_url`)

---

### 4. Bulk Enrich Prospects
Enrich up to 10 people simultaneously for efficient batch processing.

**Tool:** `APOLLO_BULK_PEOPLE_ENRICHMENT`

**Example prompt:**
> "Bulk enrich these 5 leads with their Apollo data: [list of names/emails]"

**Key parameters:**
- `details` (required) -- Array of 1-10 person objects, each with identifiers like `email`, `linkedin_url`, `first_name`, `last_name`, `domain`, `company_name`
- `reveal_personal_emails` -- Include personal emails (extra credits)
- `reveal_phone_number` -- Include phone numbers (requires `webhook_url`)

---

### 5. Manage Contact Pipeline Stages
List available stages and update contacts through your sales funnel.

**Tools:** `APOLLO_LIST_CONTACT_STAGES`, `APOLLO_UPDATE_CONTACT_STAGE`

**Example prompt:**
> "Move contacts X and Y to the 'Qualified' stage in Apollo"

**Key parameters for listing stages:** None required.

**Key parameters for updating stage:**
- `contact_ids` (required) -- Array of contact IDs to update
- `contact_stage_id` (required) -- Target stage ID (from List Contact Stages)

---

### 6. Create and Search Saved Contacts
Create new contact records and search your existing Apollo contact database.

**Tools:** `APOLLO_CREATE_CONTACT`, `APOLLO_SEARCH_CONTACTS`

**Example prompt:**
> "Search my Apollo contacts for anyone at Stripe"

**Key parameters for search:**
- Keyword search, stage ID filtering, sorting options
- `page` / `per_page` -- Pagination

**Key parameters for create:**
- `first_name`, `last_name`, `email`, `organization_name`
- `account_id` -- Link to an organization
- `contact_stage_id` -- Initial sales stage

---

## Known Pitfalls

- **Organization domains can be empty**: Some organizations from `APOLLO_ORGANIZATION_SEARCH` return missing or empty domain fields. Use `APOLLO_ORGANIZATION_ENRICHMENT` to validate domains before relying on them.
- **HTTP 403 means config issues**: A 403 response indicates API key or plan access problems -- do not retry. Fix your credentials or plan first.
- **People search returns obfuscated data**: `APOLLO_PEOPLE_SEARCH` may show `has_email`/`has_direct_phone` flags or obfuscated fields instead of full contact details. Use `APOLLO_PEOPLE_ENRICHMENT` to get complete information.
- **Pagination limits are strict**: People search supports `per_page` up to 100 and max 500 pages. Stopping early can miss large portions of the result set.
- **Bulk enrichment has small batch limits**: `APOLLO_BULK_PEOPLE_ENRICHMENT` accepts only 10 items per call. It can return `status='success'` with `missing_records > 0` when identifiers are insufficient -- retry individual records with `APOLLO_PEOPLE_ENRICHMENT`.
- **No automatic deduplication**: `APOLLO_CREATE_CONTACT` does not deduplicate. Check for existing contacts first with `APOLLO_SEARCH_CONTACTS`.
- **Domain format matters**: Always use bare hostnames (e.g., "apollo.io") without protocol prefixes ("https://") or "www." prefix.

---

## Quick Reference

| Action | Tool Slug | Required Params |
|---|---|---|
| Search organizations | `APOLLO_ORGANIZATION_SEARCH` | None (optional filters) |