Contact API
Find decision makers for a list of companies (LinkedIn URL / name / domain). Each request runs asynchronously and returns a process_id.
Async
api_key (legacy)
Contact
v1
Stable
api_key in query is supported for legacy integrations. For new integrations, prefer Authorization: Bearer <token> when available on your account.
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 completes
Webhook flow
Include webhook_url in the POST body. We’ll call it once the task finishes.
Example
{
"items": ["ibm","microsoft"],
"max": 100,
"webhook_url": "https://yourapp.com/webhooks/scrupp"
}
Webhook payload (example)
{
"process_id": 6666,
"status": "completed",
"result_url": "/task/6666/data"
}
Tip: respond with 200 OK fast and process the result asynchronously.
Navigation
POST
Get Decision Makers by Company LinkedIn
/contact/decision-maker/linkedin
Find decision makers using a list of LinkedIn Company URLs.
Request
| Part | Field | Type | Notes |
|---|---|---|---|
| Query | api_key | string | Required (legacy) |
| Body | items | string[] | LinkedIn company URLs |
| Body | max | number | Max results per request |
Body example
{
"items": [
"https://www.linkedin.com/company/google",
"https://www.linkedin.com/company/microsoft"
],
"max": 100
}
Response
Returns process_id immediately.
{
"process_id": 6666
}
Fetch result
GET /task/6666/data?api_key=YOUR_API_KEY
Data example (short)
{
"total": 100,
"items": [
{ "...": "..." }
]
}
Fields may vary by source and availability (email/phone/etc.).
POST
Get Decision Makers by Company Name
/contact/decision-maker/name
Find decision makers using company names (strings).
Request
| Part | Field | Type | Notes |
|---|---|---|---|
| Query | api_key | string | Required (legacy) |
| Body | items | string[] | Company names |
| Body | max | number | Max results per request |
Body example
{
"items": ["ibm", "microsoft"],
"max": 100
}
Response
{
"process_id": 6666
}
Fetch result
GET /task/6666/data?api_key=YOUR_API_KEY
Data example (short)
{
"total": 100,
"items": [
{ "...": "..." }
]
}
POST
Get Decision Makers by Company Domain
/contact/decision-maker/domain
Find decision makers using company domains or website URLs.
Request
| Part | Field | Type | Notes |
|---|---|---|---|
| Query | api_key | string | Required (legacy) |
| Body | items | string[] | Domains / URLs |
| Body | max | number | Max results per request |
Body example
{
"items": ["https://ibm.com", "https://microsoft.com"],
"max": 100
}
Response
{
"process_id": 6666
}
Fetch result
GET /task/6666/data?api_key=YOUR_API_KEY
Data example (short)
{
"total": 100,
"items": [
{ "...": "..." }
]
}
Use cases
Practical automation recipes for Contact API. Use polling or webhooks depending on your workflow.
Make (Integromat)
Trigger a scenario → call Scrupp → wait for completion → store results in Airtable/Sheets/CRM.
Recommended flow
- 1) HTTP — Make a request (POST)
- 2) Save process_id
- 3) Sleep 3–10s
- 4) HTTP — Make a request (GET task data)
- 5) Router: if not ready → repeat (max attempts)
Use the built-in HTTP module. If you prefer webhooks, set webhook_url and let Scrupp notify you.
Zapier
Enrich on a trigger (new lead / form submission) and push results to HubSpot, Sheets or your outbound stack.
Recommended flow
- 1) Webhooks by Zapier (POST)
- 2) Store process_id
- 3) Delay 3–10s
- 4) Webhooks by Zapier (GET task data)
- 5) Filter: status ready → continue
Clay
Enrich company/contact rows in Clay, then route to sequences or export clean CSV for outreach.
Recommended flow
- 1) Add an HTTP / API enrichment step
- 2) POST to Scrupp → capture process_id
- 3) Poll task data (GET) or use webhook
- 4) Map returned fields into Clay columns
Shortcuts
Field mapping tip: store raw response JSON in your automation first, then map only the columns you need
(company name, domain, location, decision maker title, email/phone availability, etc.).