Skip to content

Latest commit

 

History

History
282 lines (239 loc) · 7.57 KB

File metadata and controls

282 lines (239 loc) · 7.57 KB

Apollo.io MCP Server Usage Examples

This document provides practical examples of how to use the Apollo.io MCP server tools.

Account Management

Search for Companies

# Search for technology companies in California
search_accounts({
    "q_organization_name": "Google",
    "organization_locations": ["California, US"],
    "organization_num_employees_ranges": ["1000,50000"],
    "page": 1,
    "per_page": 25
})

Create a New Account

# Add a new company to your Apollo database
create_account(
    name="Acme Corporation",
    domain="acme.com",
    phone_number="1-555-123-4567",
    raw_address="123 Business St, San Francisco, CA 94105"
)

Update Existing Account

# Update company information
update_account(
    account_id="your_account_id",
    name="Updated Company Name",
    phone_number="1-555-987-6543"
)

People Search & Enrichment

Find Decision Makers

# Search for executives at specific companies
search_people({
    "q_organization_domains": "apollo.io\ngoogle.com\nmicrosoft.com",
    "person_titles": ["CEO", "CTO", "VP Engineering", "Head of Sales"],
    "person_seniorities": ["c_suite", "vp", "director"],
    "organization_locations": ["California, US", "New York, US"],
    "page": 1,
    "per_page": 20
})

Enrich Contact Information

# Get detailed contact info for a specific person
enrich_person({
    "first_name": "Tim",
    "last_name": "Zheng",
    "organization_name": "Apollo",
    "domain": "apollo.io",
    "linkedin_url": "http://www.linkedin.com/in/tim-zheng-677ba010",
    "reveal_personal_emails": true,
    "reveal_phone_number": false  # Set to true if you need phone numbers
})

Find Contacts by Job Function

# Search for marketing professionals
search_people({
    "person_titles": [
        "Marketing Manager", 
        "VP Marketing", 
        "Chief Marketing Officer",
        "Growth Manager"
    ],
    "person_seniorities": ["manager", "senior", "vp"],
    "organization_num_employees_ranges": ["100,10000"],
    "page": 1,
    "per_page": 50
})

Organization Enrichment

Get Company Details

# Enrich a single company
enrich_organization({
    "domain": "apollo.io"
})

Bulk Company Enrichment

# Enrich multiple companies at once (max 10)
bulk_enrich_organizations([
    "apollo.io",
    "salesforce.com", 
    "hubspot.com",
    "outreach.io",
    "salesloft.com"
])

Prospecting Workflows

Find Similar Companies

# Step 1: Find a target company profile
target_company = enrich_organization({"domain": "target-company.com"})

# Step 2: Search for similar companies
similar_companies = search_accounts({
    "industry_tag_ids": [target_company["organization"]["industry_tag_id"]],
    "organization_num_employees_ranges": ["100,1000"],
    "organization_locations": ["California, US"],
    "per_page": 50
})

Build Contact Lists

# Step 1: Find target companies
companies = search_accounts({
    "q_organization_name": "SaaS",
    "organization_num_employees_ranges": ["50,500"],
    "organization_locations": ["California, US", "New York, US"]
})

# Step 2: Find decision makers at those companies
domains = [company["domain"] for company in companies["accounts"]]
domain_string = "\n".join(domains[:10])  # Max 10 domains

contacts = search_people({
    "q_organization_domains": domain_string,
    "person_titles": ["CEO", "CTO", "VP Sales", "VP Marketing"],
    "person_seniorities": ["c_suite", "vp"]
})

Lead Qualification

# Step 1: Enrich company
company_data = enrich_organization({"domain": "prospect-company.com"})

# Step 2: Check company fit
if (company_data["organization"]["estimated_num_employees"] >= 100 and 
    "saas" in company_data["organization"]["industry"].lower()):
    
    # Step 3: Find key contacts
    contacts = search_people({
        "q_organization_domains": "prospect-company.com",
        "person_titles": ["CEO", "VP Sales", "Head of Revenue"],
        "person_seniorities": ["c_suite", "vp"]
    })
    
    # Step 4: Enrich contact details
    for person in contacts["people"]:
        enriched = enrich_person({
            "first_name": person["first_name"],
            "last_name": person["last_name"],
            "domain": "prospect-company.com",
            "linkedin_url": person["linkedin_url"],
            "reveal_personal_emails": true
        })

Intent Data Integration

While Apollo.io doesn't directly provide Bombora intent data through their standard API, you can correlate Apollo contacts with intent signals:

# Hypothetical workflow for intent data correlation
def correlate_intent_data(apollo_contacts, bombora_intent_signals):
    """
    Correlate Apollo contact data with Bombora intent signals
    This would require a separate Bombora integration
    """
    enriched_contacts = []
    
    for contact in apollo_contacts:
        # Match by company domain or name
        domain = contact.get("organization", {}).get("primary_domain")
        if domain:
            intent_signals = bombora_intent_signals.get(domain, [])
            contact["intent_signals"] = intent_signals
            
        enriched_contacts.append(contact)
    
    return enriched_contacts

Monitoring & Health Checks

Verify API Connection

# Check if your API key is working
health_status = health_check()
print(health_status)  # Should return {"is_logged_in": true}

Check Email Account Setup

# Verify email accounts for sequences
email_accounts = get_email_accounts()
print(f"Connected email accounts: {len(email_accounts['email_accounts'])}")

Advanced Search Patterns

Multi-criteria Prospecting

# Complex search with multiple filters
advanced_search = search_people({
    "q_organization_domains": "technology-companies.com\nsaas-companies.com",
    "person_titles": [
        "VP Sales", "Sales Director", "Head of Sales",
        "VP Marketing", "Marketing Director", "CMO"
    ],
    "person_seniorities": ["vp", "director", "c_suite"],
    "organization_locations": [
        "San Francisco, CA, US",
        "New York, NY, US", 
        "Austin, TX, US",
        "Seattle, WA, US"
    ],
    "organization_num_employees_ranges": ["100,2000"],
    "per_page": 25
})

Geographic Expansion

# Find contacts in new markets
international_prospects = search_people({
    "person_titles": ["Country Manager", "Regional Director", "VP International"],
    "organization_locations": [
        "London, UK",
        "Berlin, Germany",
        "Paris, France",
        "Amsterdam, Netherlands"
    ],
    "organization_num_employees_ranges": ["500,10000"]
})

Error Handling Examples

# Always handle potential API errors
try:
    result = enrich_person({
        "email": "contact@company.com",
        "reveal_personal_emails": true
    })
    
    if "error" in result:
        print(f"API Error: {result['error']}")
    else:
        print(f"Found contact: {result['person']['name']}")
        
except Exception as e:
    print(f"Request failed: {e}")

Rate Limiting Best Practices

  • Single enrichment: Standard rate limits apply
  • Bulk enrichment: 1/10th of standard rate limits (use sparingly)
  • Search endpoints: Higher limits for pagination
  • Always respect rate limits: Add delays between requests if needed

Credit Management

  • Email Credits: 1 credit per verified email found
  • Export Credits: 1 credit per non-empty record (newer plans)
  • Phone Credits: Additional charges for phone number reveals

Monitor your credit usage through the Apollo.io dashboard to avoid unexpected charges.