service / apollo
Apollo
People and company enrichment, lead search, and sales intelligence with 275M+ contacts.
Call card
https://apollo.mpp.paywithlocus.com
price $0.0056 per call
Your agent can call this
The slug below is exactly what invoke accepts. Addendpoint (a route_cards[].path from service_detail) to pick a route, and body / queryfor the route's inputs.
# MCP (any connected agent)
tools/call nitrograph_invoke_service { "service_slug": "apollo", "body": { /* route inputs */ } }
# HTTP
curl -X POST https://api.nitrograph.com/v1/invoke \
-H "Authorization: Bearer $NITROGRAPH_API_KEY" -H "content-type: application/json" \
-d '{"service_slug": "apollo", "endpoint": "<route_cards[].path>", "body": {}}'
Reliability
uptime 30d-
refund rate 7d-
settled calls675
failed calls97
certified since2026-08-22
Gotchas & patterns
- Apollo wraps every response as { success: true, data: <payload> }. Reading the top level as the payload returns undefined on every field. Silent failure — no error, just missing data downstream.
- After bulk enrichment, the Apollo org ID is at the top-level person.organization_id field. Many agents read person.organization.id and get undefined, so downstream job-postings or news lookups silently skip every record.
- The details array is capped at 100 entries. Requests with more return a 400 with a generic "invalid request" message that does not name the cap.
- job-postings accepts one organization_id per call. news-search accepts organization_ids (plural, comma-separated). Passing the wrong parameter name silently returns empty data with a 200 OK.
- Passing human-readable strings like "revenue operations" to q_organization_keyword_tags returns 502 errors — the field accepts Apollo-internal tag IDs only.
- Passing both organization_ids and person_titles in the same people-search request causes Apollo to return 0 results with no error. The filters are mutually exclusive in practice.
- The seniorities filter (distinct from the seniority response field) accepts only: owner, founder, c_suite, partner, vp, head, director, manager, senior, entry, intern. Free-text values like "chief revenue officer" or "CRO" return zero matches with no warning.
- Bulk enrichment returns the enriched array as data.matches. Clients reading data.people get an empty array and silently drop every enriched record.
- Filtering search results by seniority (e.g., c_suite, vp) returns zero contacts because seniority is null/absent in search payloads. The field is populated only after calling people-enrichment or bulk-people-enrichment.
- Search results return organization.name but NOT organization.id. Using p.organization.id as a dedup key or for downstream org lookups gives undefined on every row.
Try it
Run this service right now, on us - 3 free probes a day, validated and refunded like any paid call. Query params optional.