mcp-server-apollo
You can use this read-only MCP server to discover and enrich Apollo.io B2B company and people data, with no CRM/sequence/email/account writes.
Discover available Apollo tools and examples via
apollo_search_capabilities.Search companies by keyword tags, name, locations, employee ranges, revenue, domains, or technology stack; costs 1 credit per results page and distinguishes net-new organizations from saved accounts.
Search people by title, seniority, location, employer domain/id, or employer size; free but requires a master Apollo key and returns slim records with obfuscated last names and no emails/phones.
Enrich one person to get full profile/employment data; consumes credits and can optionally reveal personal emails or phone numbers (phone reveal is asynchronous via HTTPS webhook).
Bulk enrich up to 100 people, chunked into Apollo bulk_match calls of 10 with bounded concurrency, retry/backoff, per-item failure isolation, progress notifications, and credit usage reporting.
Enrich one organization with firmographics like industry, keywords, employee count, revenue, funding events, department headcounts, growth rates, and technology stack; costs 1 credit.
Poll asynchronous Apollo enrichment results by
request_idif a webhook callback is missed; free and results retained 30 days.Check per-endpoint Apollo API usage/rate limits and recent rate-limit headers; requires a master key and does not expose remaining credit balance.
Apply dot-path
fields[]projection to shrink responses; company search has a slim default projection (["*"]for full records).Run locally via stdio or streamable HTTP with env-based API key handling, read-only policy allowlist, origin/body/token protections, audit logging, and rate-limit handling.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-server-apollo find contacts at Microsoft"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-server-apollo
MCP (Model Context Protocol) server for the Apollo.io B2B discovery and enrichment API: company search, people search, contact enrichment (emails/phones), organization firmographics, and API usage stats.
The server wraps Apollo's REST API with one account-level API key kept server-side. It is read-only by design: no sequences, no emailer, no CRM writes, no account management.
Tools
Tool | Risk | Apollo endpoint |
| read | — (local discovery) |
| read + 1 credit/page |
|
| read (free, master key) |
|
| read + credits |
|
| read + credits |
|
| read + 1 credit |
|
| read (free) |
|
| read (free, master key) |
|
Notes that save you a support ticket:
People search returns no contact data. Apollo's current
mixed_people/api_searchendpoint deliberately obfuscates last names and omits emails/phones. Feed the returned personidintoapollo_person_enrichto get contact data (that is what costs credits).Phone reveals are asynchronous.
reveal_phone_number=truerequires a public HTTPSwebhookUrl; Apollo POSTs the numbers there minutes later. The synchronous response carries arequest_id— pollapollo_webhook_resultwith it if the callback is missed (results kept 30 days). Non-https://webhook URLs are rejected by both the MCP tools and the gateway export.Master API key.
apollo_people_searchandapollo_credit_usagerequire a master Apollo API key (Apollo returns 403API_INACCESSIBLEotherwise).No credit-balance API. Apollo only exposes per-endpoint rate-limit usage; the remaining credit balance lives in the Apollo UI (Settings → Billing).
Field projection. Every data tool accepts
fields[]dot-paths to shrink responses; company search applies a slim default projection (pass["*"]for full records).
Related MCP server: Apollo.io MCP Server
Usage
npm install
npm run build
# stdio transport (Claude Desktop, local MCP clients)
APOLLO_API_KEY=... node dist/transports/stdio.js
# streamable HTTP transport on :3000/mcp
APOLLO_API_KEY=... MCP_HTTP_TOKEN=... node dist/transports/http.jsConfiguration (see .env.example): APOLLO_API_KEY (required),
APOLLO_TIMEOUT_MS, APOLLO_AUDIT_LOG (JSONL audit trail; hashed targets,
never raw arguments or secrets), and for HTTP: MCP_HTTP_HOST, PORT,
MCP_HTTP_TOKEN (static bearer, compared in constant time), MCP_ALLOWED_ORIGINS, MCP_MAX_BODY_BYTES.
There is also an embeddable gateway export (mcp-server-apollo/gateway) that
exposes the same tools as plain functions with JSON-schema definitions.
Security
The API key is read only from the server environment, sent only in the
x-api-keyheader over HTTPS, and redacted from error messages and logs.Tool calls pass a policy allowlist; anything unlisted is denied.
All tools are annotated read-only/non-destructive; credit-consuming tools state their cost in the description so agents confirm spend with the user.
HTTP transport binds to loopback by default, validates
Origin, caps body size, and supports a static bearer token for upstream auth proxies.Rate limits: HTTP 429 is retried with jittered backoff honouring
retry-after; bulk enrichment runs at low bounded concurrency because Apollo limitsbulk_matchhard (documented 20/min).
Development
npm run typecheck
npm test
npm run smoke:live # needs a real APOLLO_API_KEY; uses ~1 creditLicense
Apache-2.0
Available Tools
8 toolsapollo_companies_searchSearch Companies (Apollo)ARead-onlyIdempotent
Discover companies via Apollo by keyword tags, name, location (include/exclude), employee-count ranges, revenue range, domains, or technology stack. The response preserves Apollo's split between organizations (net-new) and accounts (already saved to your Apollo team, incl. CRM linkage) — use it to dedupe against your CRM — and passes pagination (page/per_page/total_entries/total_pages) through unchanged. COSTS 1 CREDIT per request (page) that returns results — confirm total credit cost with the user before running multi-page batches. Search records are slim; use apollo_org_enrich for revenue/industry/technology details.
Inputs: page, fields, perPage, revenueRange, +8 more.
apollo_credit_usageGet API Usage / Rate Limits (Apollo)ARead-onlyIdempotent
Report per-endpoint Apollo API usage against the minute/hour/day rate limits, plus the most recent rate-limit headers observed. Use before large batches to check headroom, and to answer "how much have we used?". Requires a master API key; consumes no credits. Note: Apollo exposes no API for the remaining credit balance — that is only visible in the Apollo UI (Settings > Billing and credits).
Inputs: no named parameters.
apollo_org_enrichEnrich Organization (Apollo)ARead-onlyIdempotent
Fetch full firmographics for one company via Apollo: industry, keywords, employee count, revenue, funding events, technology stack (current_technologies / technology_names), department headcounts, and headcount growth rates. Provide at least one of domain, name, website, or linkedinUrl. Consumes 1 credit when a record is enriched. For Danish companies prefer the Lassox MCP (authoritative CVR registry data); use this for non-DK companies or Apollo-specific fields like technology stack.
Inputs: name, domain, fields, website, +1 more.
apollo_people_bulk_enrichBulk Enrich People (Apollo)ARead-onlyIdempotent
Enrich up to 100 people via Apollo in one call. Chunks into bulk_match calls of 10, fans out with bounded concurrency, retries HTTP 429, and isolates per-item failures. Returns { total, succeeded, failed, creditsConsumed, requestIds, results[] } with results in input order. CONSUMES CREDITS per enriched record and reveal flags apply to EVERY person — confirm total credit cost with the user first. Apollo rate-limits bulk_match hard (documented 20/min). revealPhoneNumber requires webhookUrl. Emits MCP progress notifications when the client sends a progressToken.
Inputs: details (required), fields, webhookUrl, concurrency, +2 more.
apollo_people_searchSearch People (Apollo)ARead-onlyIdempotent
Find people via Apollo by title, seniority, location, employer domain/id, or employer size. FREE (no credits) but requires a MASTER Apollo API key. Results are intentionally slim: last names are obfuscated ("Hu***n") and NO email addresses or phone numbers are included — do not loop searching for contact data; pass the returned person id to apollo_person_enrich instead.
Inputs: page, fields, perPage, qKeywords, +10 more.
apollo_person_enrichEnrich Person (Apollo)ARead-onlyIdempotent
Match one person via Apollo and return their full profile (employment history, employer, departments, seniority). CONSUMES CREDITS when a record is enriched; setting revealPersonalEmails or revealPhoneNumber costs extra per your Apollo plan (typically ~1 credit per email, ~8 per mobile) — confirm with the user first. Phone numbers are NOT in the synchronous response: Apollo delivers them asynchronously to webhookUrl (required for phone reveals); poll apollo_webhook_result with the returned request_id if the callback is missed. Personal emails are not revealed for people in GDPR regions; you are the data controller for retrieved personal data.
Inputs: id, name, email, domain, +9 more.
apollo_search_capabilitiesSearch Apollo CapabilitiesARead-onlyIdempotent
Search the Apollo MCP server capabilities and examples. Use this first when deciding which Apollo tool to call.
Inputs: limit, query.
apollo_webhook_resultPoll Webhook Result (Apollo)ARead-onlyIdempotent
Fetch the result of an asynchronous Apollo enrichment (phone-number reveal or waterfall) by request_id, in case the webhook callback was missed. Free (no credits); results are kept for 30 days. A 404 with retry_after_seconds means the result is not ready yet — wait before retrying.
Inputs: requestId (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 8 tools
Each tool targets a distinct domain action (company search/Enrich, people search/enrich, credit usage, webhook results) with no overlapping purposes. Clear separation between sync and async operations, and between company and people workflows.
All tool names follow the consistent pattern 'apollo_<action>_<target>', using snake_case throughout. Examples: apollo_companies_search, apollo_org_enrich, apollo_people_search.
8 tools is an ideal scope for an Apollo API wrapper, covering search, enrichment, usage monitoring, and async handling without being overwhelming or sparse.
The set covers core CRUD-like operations (search, enrich, bulk enrich, usage check, async retrieval) but lacks direct update/delete endpoints, which are likely not exposed by Apollo's API. A minor gap but functional for typical use cases.
Related MCP Connectors
Apollo.io MCP — company and people data via api.apollo.io, the caller's OWN Apollo account (fleet…
Official ZoomInfo MCP server. Search and enrich companies, contacts, and buyer intent signals.
Your agent needs B2B contacts and the pipeline objects around them — find the company, find the person, get the email, then write it back where your team works. **What you can ask for** • "Find heads of engineering at Series-B SaaS companies in the Nordics, with emails." • "Enrich these companies with headcount, industry and funding." • "What roles is this company hiring for right now?" • "Create an account and a contact, then log this opportunity." • "Search our sequences for messages sent to this domain." **How to use it** Point any MCP client at https://mcp.aisa.one/apollo/mcp and sign in with OAuth — there is no key to create or paste. 54 tools: people and organisation search and enrichment, job postings, accounts, contacts, opportunities and their stages, custom fields, labels, notes, users, email accounts, sequence messages and phone-call search — reads and writes. **Why this rather than the source** The full object model, not just a search endpoint, so an agent can finish the job rather than hand you a CSV. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Find the person here, then ask the same agent what their company's traffic looks like or what they rank for — without adding a second server. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** https://mcp.aisa.one/sales/mcp adds Similarweb and creator discovery around it.
Remote MCP server to enrich company profiles with structured B2B data and confidence scores.
Related MCP Servers
- AlicenseBqualityBmaintenanceMCP server for Apollo.io B2B database enabling people and company search, enrichment, and insights through conversational interfaces.97,221 npm19MIT
- AlicenseBqualityDmaintenanceA Model Context Protocol (MCP) server for the Apollo.io API, giving AI coding assistants direct access to Apollo.io's sales intelligence platform for prospecting, enrichment, CRM operations, and outreach.506MIT
- AlicenseAqualityDmaintenanceMCP server for Apollo.io B2B sales intelligence API. Enables searching and enriching people and organizations via natural language.722 npm4MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for the Apollo.io API that lets LLMs search and enrich people and company data.78 npmMIT