Apollo API
Export people or companies from an Apollo search URL (filters included). Every request starts an async task and returns process_id.
Async export
api_key in query (legacy)
Apollo
Versioning & Deprecation
- api_key in query is legacy. Prefer Authorization: Bearer in new integrations.
- When we deprecate an endpoint/field, it stays available for a grace period and we’ll mark it in docs + changelog.
How it works
Async
- Send POST → receive process_id
- Fetch results via GET /task/{process_id}/data (polling)
-
Or use Webhook to get notified when the task is done
Webhook flowAdd webhook_url in your POST body → we call it when the task completes.Example
{ "url": "https://app.apollo.io/#/people?page=1&sortAscending=false&sortByField=%5Bnone%5D&personTitles[]=engineer", "with_emails": true, "max": 25, "page": 1, "webhook_url": "https://yourapp.com/webhooks/scrupp" }Webhook payload (example){ "process_id": 6666, "status": "completed", "result_url": "/task/6666/data" }Tip: return 200 OK fast and process the result asynchronously on your side.
Navigation
POST
Apollo People Search
/apollo/search
Paste an Apollo People search URL (with filters) and export the matching leads.
Request
| Part | Field | Type | Notes |
|---|---|---|---|
| Query | api_key | string | Required (legacy) |
| Body | url | string | Apollo People search URL (with filters) |
| Body | with_emails | boolean | Try to include emails when available |
| Body | page | number | Start page (usually 1) |
| Body | max | number | Max exported rows |
| Body | webhook_url | string | Optional. Webhook callback URL |
Body example
{
"url": "https://app.apollo.io/#/people?page=1&sortAscending=false&sortByField=%5Bnone%5D&personTitles[]=engineer",
"with_emails": true,
"max": 25,
"page": 1
}
Tip: build your filters in Apollo UI → copy the URL → paste it here.
Response
Returns process_id immediately.
{
"process_id": 765
}
Fetch result
GET /task/765/data?api_key=YOUR_API_KEY
Result object/fields depend on what is available (emails, phones, company fields, etc.).
POST
Apollo Company Search
/apollo/search
Paste an Apollo Companies search URL (with filters) and export matching companies.
Request
| Part | Field | Type | Notes |
|---|---|---|---|
| Query | api_key | string | Required (legacy) |
| Body | url | string | Apollo Companies search URL (with filters) |
| Body | with_emails | boolean | If supported, enrich related contacts/emails |
| Body | page | number | Start page (usually 1) |
| Body | max | number | Max exported rows |
| Body | webhook_url | string | Optional. Webhook callback URL |
Body example
{
"url": "https://app.apollo.io/#/companies?sortAscending=false&sortByField=recommendations_score&organizationLocations[]=Germany&page=1",
"with_emails": true,
"max": 25,
"page": 1
}
Response
{
"process_id": 765
}
Fetch result
GET /task/765/data?api_key=YOUR_API_KEY
If the URL is invalid/expired, regenerate it in Apollo and try again.
Result & fields
Apollo exports return a list of rows. Fields can vary by export type (people vs companies) and availability.
Task data response (shape)
{
"total": 100,
"items": [
{
"...": "..."
}
]
}
Use total for simple progress/QA checks.
Common fields you may see
- People: name, position, linkedin_url, emails[], phone_number_*, location, company_name, company_domain
- Companies: company_name, company_domain, company_size, location, industry, technologies, linkedin_url
We keep adding optional fields — your parser should be tolerant to new keys.
Make (Integromat)
- Webhook / Scheduler triggers scenario
- HTTP module → POST /apollo/search
- Save process_id
- Either poll /task/{id}/data or use webhook_url
- Push rows to Google Sheets / HubSpot / CRM
Zapier
- Trigger: Schedule or Webhook Catch Hook
- Action: Webhooks by Zapier → POST export
- Action: Delay + GET result (poll) or receive Scrupp webhook
- Looping by Zapier → iterate rows
- Create leads in CRM / send to outreach
Clay
- Input column = Apollo search URL
- HTTP enrichment step → Scrupp POST
- Wait/poll or webhook callback
- Map returned fields into Clay columns
- Enrich further (emails/phones) → export to outreach
Quick curl
curl -X POST "https://api.scrupp.com/apollo/search?api_key=YOUR_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"url": "https://app.apollo.io/#/people?page=1&sortAscending=false&sortByField=%5Bnone%5D&personTitles[]=engineer",
"with_emails": true,
"max": 25,
"page": 1
}'
If you switch to Bearer auth, keep the body exactly the same.