Agent skill
apollo
Apollo.io API integration with managed OAuth. Search and enrich people and companies, manage contacts and accounts. Use this skill when users want to prospect, enrich leads, or manage sales data.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/apollo-api
Metadata
Additional technical details for this skill
- author
- maton
- version
- 1.0
SKILL.md
Apollo
Access the Apollo.io API with managed OAuth authentication. Search people and organizations, enrich contacts, and manage your sales pipeline.
Quick Start
# Search for people at a company
curl -s -X POST 'https://gateway.maton.ai/apollo/v1/mixed_people/api_search' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-d '{"q_organization_name": "Google", "per_page": 10}'
Base URL
https://gateway.maton.ai/apollo/{native-api-path}
Replace {native-api-path} with the actual Apollo API endpoint path. The gateway proxies requests to api.apollo.io and automatically injects your API key.
Authentication
All requests require the Maton API key in the Authorization header:
Authorization: Bearer YOUR_API_KEY
Environment Variable: Set your API key as MATON_API_KEY:
export MATON_API_KEY="YOUR_API_KEY"
Getting Your API Key
- Sign in or create an account at maton.ai
- Go to maton.ai/settings
- Copy your API key
Connection Management
Manage your Apollo connections at https://ctrl.maton.ai.
List Connections
curl -s -X GET 'https://ctrl.maton.ai/connections?app=apollo&status=ACTIVE' \
-H 'Authorization: Bearer YOUR_API_KEY'
Create Connection
curl -s -X POST 'https://ctrl.maton.ai/connections' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-d '{"app": "apollo"}'
Get Connection
curl -s -X GET 'https://ctrl.maton.ai/connections/{connection_id}' \
-H 'Authorization: Bearer YOUR_API_KEY'
Response:
{
"connection": {
"connection_id": "21fd90f9-5935-43cd-b6c8-bde9d915ca80",
"status": "ACTIVE",
"creation_time": "2025-12-08T07:20:53.488460Z",
"last_updated_time": "2026-01-31T20:03:32.593153Z",
"url": "https://connect.maton.ai/?session_token=...",
"app": "apollo",
"metadata": {}
}
}
Open the returned url in a browser to complete OAuth authorization.
Delete Connection
curl -s -X DELETE 'https://ctrl.maton.ai/connections/{connection_id}' \
-H 'Authorization: Bearer YOUR_API_KEY'
Specifying Connection
If you have multiple Apollo connections, specify which one to use with the Maton-Connection header:
curl -s -X POST 'https://gateway.maton.ai/apollo/v1/mixed_people/api_search' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Maton-Connection: 21fd90f9-5935-43cd-b6c8-bde9d915ca80' \
-d '{"q_organization_name": "Google", "per_page": 10}'
If omitted, the gateway uses the default (oldest) active connection.
API Reference
People
Search People
POST /apollo/v1/mixed_people/api_search
Content-Type: application/json
{
"q_organization_name": "Google",
"page": 1,
"per_page": 25
}
Enrich Person by Email
POST /apollo/v1/people/match
Content-Type: application/json
{
"email": "[email protected]"
}
Enrich Person by LinkedIn
POST /apollo/v1/people/match
Content-Type: application/json
{
"linkedin_url": "https://linkedin.com/in/johndoe"
}
Organizations
Search Organizations
POST /apollo/v1/organizations/search
Content-Type: application/json
{
"q_organization_name": "Google",
"page": 1,
"per_page": 25
}
Enrich Organization
POST /apollo/v1/organizations/enrich
Content-Type: application/json
{
"domain": "google.com"
}
Contacts
Search Contacts
POST /apollo/v1/contacts/search
Content-Type: application/json
{
"page": 1,
"per_page": 25
}
Create Contact
POST /apollo/v1/contacts
Content-Type: application/json
{
"first_name": "John",
"last_name": "Doe",
"email": "[email protected]",
"organization_name": "Acme Corp"
}
Update Contact
PUT /apollo/v1/contacts/{contactId}
Content-Type: application/json
{
"first_name": "Jane"
}
Accounts
Search Accounts
POST /apollo/v1/accounts/search
Content-Type: application/json
{
"page": 1,
"per_page": 25
}
Create Account
POST /apollo/v1/accounts
Content-Type: application/json
{
"name": "Acme Corp",
"domain": "acme.com"
}
Sequences
Search Sequences
POST /apollo/v1/emailer_campaigns/search
Content-Type: application/json
{
"page": 1,
"per_page": 25
}
Add Contact to Sequence
POST /apollo/v1/emailer_campaigns/{campaignId}/add_contact_ids
Content-Type: application/json
{
"contact_ids": ["contact_id_1", "contact_id_2"]
}
Labels
List Labels
GET /apollo/v1/labels
Search Filters
Common search parameters:
q_organization_name- Company nameq_person_title- Job titleperson_locations- Array of locationsorganization_num_employees_ranges- Employee count rangesq_keywords- General keyword search
Code Examples
JavaScript
const response = await fetch(
'https://gateway.maton.ai/apollo/v1/mixed_people/api_search',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${process.env.MATON_API_KEY}`
},
body: JSON.stringify({
q_organization_name: 'Google',
per_page: 10
})
}
);
Python
import os
import requests
response = requests.post(
'https://gateway.maton.ai/apollo/v1/mixed_people/api_search',
headers={'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'},
json={'q_organization_name': 'Google', 'per_page': 10}
)
Notes
- Pagination uses
pageandper_pagein POST body - Most list endpoints use POST with
/searchsuffix - Email enrichment consumes credits
people/searchandmixed_people/searchare deprecated - usemixed_people/api_search
Error Handling
| Status | Meaning |
|---|---|
| 400 | Missing Apollo connection |
| 401 | Invalid or missing Maton API key |
| 429 | Rate limited (10 req/sec per account) |
| 4xx/5xx | Passthrough error from Apollo API |
Resources
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?