Skip to main content
POST
https://api.crustdata.com
/
batch
/
company
/
enrich
Submit a batch company enrichment job
curl --request POST \
  --url https://api.crustdata.com/batch/company/enrich \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'x-api-version: <x-api-version>' \
  --data '
{
  "domains": [
    "stripe.com",
    "openai.com"
  ],
  "fields": [
    "basic_info.name",
    "basic_info.primary_domain",
    "headcount.total"
  ]
}
'
{ "batch_id": "53ab686b-c054-496b-8baf-baff5ecc85cf", "status": "pending", "entity": "company", "action": "enrich", "identifier_count": 2, "entities_requested": 2, "status_url": "/batch/53ab686b-c054-496b-8baf-baff5ecc85cf" }

Authorizations

Authorization
string
header
required

API key passed as a Bearer token in the Authorization header.

Headers

x-api-version
enum<string>
default:2025-11-01
required

API version to use. Batch job submission requires 2025-11-01; requests without this header are rejected with 400.

Available options:
2025-11-01
Example:

"2025-11-01"

Body

application/json

Exactly one company identifier type, plus optional field selection, webhook, and chunking options.

Request body for a batch company enrichment job. Provide exactly one identifier type — names, domains, professional_network_profile_urls, or crustdata_company_ids. Providing none, or more than one, returns 400. Each identifier list may also be sent as a single comma-separated string.

names

Company names to enrich. Maximum 10,000 identifiers per job — larger submissions are rejected with 400.

Example:
["Stripe", "OpenAI"]
domains

Company website domains to enrich. Maximum 10,000 identifiers per job — larger submissions are rejected with 400.

Example:
["stripe.com", "openai.com"]
professional_network_profile_urls

Company profile URLs to enrich. Maximum 10,000 identifiers per job — larger submissions are rejected with 400.

Example:
["https://www.linkedin.com/company/stripe"]
crustdata_company_ids

Crustdata company IDs to enrich. Maximum 10,000 identifiers per job — larger submissions are rejected with 400.

Example:
[631394, 631466]
fields

Optional list of dotted field paths to include in each company record (also accepted as a single comma-separated string). When omitted, the default basic_info field set is returned; requested fields are returned in addition to the defaults. An unsupported value returns 400 with the full list of selectable fields in metadata.available_fields. The selectable fields are the same as the non-batch /company/enrich endpoint.

Example:
[
  "basic_info.name",
  "basic_info.primary_domain",
  "headcount.total"
]
webhook_url
string<uri>

Optional URL that receives a POST notification when the job finishes, so you do not have to poll.

Example:

"https://example.com/webhooks/crustdata-batch"

chunk_size
integer
default:100

Optional internal processing chunk size (number of identifiers per processing unit). Values outside 10-1000 return 400.

Required range: 10 <= x <= 1000
Example:

100

Response

Batch job accepted for processing

Returned immediately when a batch job is accepted. No data is returned at submit time — poll status_url for progress and download links.

batch_id
string<uuid>
required

Unique ID of the batch job. Use it to poll GET /batch/{batch_id}.

Example:

"53ab686b-c054-496b-8baf-baff5ecc85cf"

status
enum<string>
required

Initial job status. Always pending at submit time.

Available options:
pending
Example:

"pending"

entity
enum<string>
required

Entity type the job operates on.

Available options:
company,
person
Example:

"company"

action
enum<string>
required

Internal action name for the job. Live endpoints report enrich_live / search_live.

Available options:
enrich,
enrich_live,
search,
search_live
Example:

"enrich"

identifier_count
integer
required

Number of identifiers submitted. Search jobs always report 1 (the query).

Example:

2

entities_requested
integer
required

Number of entities the job was asked to produce. For enrich jobs this equals identifier_count; for search jobs it is 1 until results are known.

Example:

2

status_url
string
required

Relative URL to poll for the job status (GET /batch/{batch_id}).

Example:

"/batch/53ab686b-c054-496b-8baf-baff5ecc85cf"