Sc Scrupp

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
Data
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 flow
    Add 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.
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.

Use cases

Typical ways teams automate Apollo exports with Scrupp.

Make (Integromat)
  1. Webhook / Scheduler triggers scenario
  2. HTTP module → POST /apollo/search
  3. Save process_id
  4. Either poll /task/{id}/data or use webhook_url
  5. Push rows to Google Sheets / HubSpot / CRM
Zapier
  1. Trigger: Schedule or Webhook Catch Hook
  2. Action: Webhooks by Zapier → POST export
  3. Action: Delay + GET result (poll) or receive Scrupp webhook
  4. Looping by Zapier → iterate rows
  5. Create leads in CRM / send to outreach
Clay
  1. Input column = Apollo search URL
  2. HTTP enrichment step → Scrupp POST
  3. Wait/poll or webhook callback
  4. Map returned fields into Clay columns
  5. 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.