crustdata_person_id, and basic profile —
at bulk scale. Submit a job, then poll or receive a webhook when it finishes.
You pay only for the emails that resolve to a person.
Identify vs Enrich. Identify answers “who is this email?” — it returns
the matched person’s
crustdata_person_id and basic_profile (name,
headline, title). If you also need contact data, full employment history, or
company IDs per role, use Person Enrich
(which also supports reverse lookup by business email).How it works
Reverse identify is an asynchronous, two-call flow — you submit a job, then fetch the results once it finishes:Submit your emails
POST /batch/person/identify with your list of business_emails (or
professional_network_profile_urls). You get a batch_id back
immediately.Poll, or wait for a webhook
GET /batch/{batch_id} to check the job status — or pass a webhook_url
on submit and we call you when it finishes.Emails already known to Crustdata resolve in seconds. Emails that require
real-time retrieval take longer, which is why this endpoint is asynchronous.
Replace
YOUR_API_KEY in each example with your actual API key. All requests
require the x-api-version: 2025-11-01 header.Pricing: 1 credit per email that resolves to a person —
unmatched emails are free. See Pricing for details.
Limits: up to 300 identifiers per submission, and up to 5
active batch jobs per user at a time.
1. Submit your emails
Send your emails inbusiness_emails. The response returns a batch_id
immediately — the job runs asynchronously.
You can submit
professional_network_profile_urls instead of
business_emails to resolve profile URLs to their crustdata_person_id.
Submit exactly one identifier type per job. To be notified when the job
finishes instead of polling, include a webhook_url in the request body.2. Get the results
Poll thestatus_url (or GET /batch/{batch_id}). While the job runs, status
is pending or processing. When it is completed, the response includes a
download_url.
download_url points to gzipped JSONL (.jsonl.gz) with one record per
submitted identifier. The link is valid for 5 days.
Result format
Each line is one record for an input identifier:matches array (and is not billed):
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
business_emails | string[] | One identifier of | Business emails to reverse-lookup. Max 300 per submission. |
professional_network_profile_urls | string[] | One identifier of | Profile URLs to resolve to a crustdata_person_id. Max 300 per submission. |
webhook_url | string | No | URL to call when the job finishes, instead of polling. |
Submit exactly one identifier type per job — either
business_emails or
professional_network_profile_urls, not both.Response fields
| Field | Description |
|---|---|
matched_on | The input value this record resolved (the email or profile URL you submitted). |
match_type | business_email or professional_network_profile_url. |
matches | Array of matches. Empty when nothing resolved. |
matches[].confidence_score | Match confidence, 0–1. |
matches[].person_data | crustdata_person_id, basic_profile, and updated_at for the matched person. |
Job lifecycle
| Status | Meaning |
|---|---|
pending | Job accepted, not yet started. |
processing | Job is running. |
completed | Job finished — download_url is available. |
failed | Job failed. Nothing was billed. |
Errors
| Status | Meaning |
|---|---|
400 | Invalid request — missing identifier, both identifier types, or too many values. |
401 | Invalid or missing API key. |
403 | Permission denied or insufficient credits. |
429 | Too many active batch jobs (max 5 per user). |
500 | Internal server error. Retry with exponential backoff. |
API reference summary
| Detail | Value |
|---|---|
| Submit | POST /batch/person/identify |
| Poll | GET /batch/{batch_id} |
| Auth | Bearer token + x-api-version: 2025-11-01 |
| Request | One of business_emails or professional_network_profile_urls (max 300). Optional: webhook_url. |
| Response | Submit returns batch_id + status; poll returns status and a download_url when complete. |
| Output | Gzipped JSONL, one record per identifier, download link valid 5 days. |
| Billing | 1 credit per matched person; unmatched identifiers are free. |
| Errors | 400, 401, 403, 429, 500 |
What to do next
- Need contact data or full employment history? Use Person Enrich — it reverse-looks-up by business email and returns the full profile, including each role’s
crustdata_company_id. - Enrich contact info in bulk — Batch Contact Enrich returns emails and phone numbers for a list of profile URLs.
- Find people first — use Person Search to build the list to identify.

