Company Enrichment API
BetaSubmit a domain or company name and get back enriched company data — NAICS code, contact information, and an AI-generated description.
Authentication
All requests require an Authorization header with your API key as a bearer token.
Keys are available on your dashboard (domain admin access required).
Your organization must also have the Enrichment API enabled.
Base URL
How It Works
Enrichment is asynchronous. For domains already in the Grizz database, results return immediately. For unknown domains, Grizz scrapes the company website and uses AI to classify and describe the company. That process typically completes within 60 seconds.
-
1
Submit a request —
POST /enrichment/. Returns a request record with astatusofPENDINGorCOMPLETE. -
2
Poll for completion —
GET /enrichment/:id/. Poll untilstatusisCOMPLETEorFAILED. We recommend polling every 5 seconds. -
3
Fetch results —
GET /enrichment/:id/results/. Returns the enriched company data. Results are marked as retrieved and removed from the unretrieved queue.
You can also use GET /enrichment/ to list all completed, unretrieved requests in bulk — useful when processing large batches.
Rate Limits
Each organization has a monthly call limit set by Grizz. Submitting a request counts against the limit immediately on POST. Polling and fetching results do not count against the limit.
When the limit is reached, POST /enrichment/ returns 429 with the current usage in the response body.
Endpoints
/api/v1/enrichment/
Submit a company lookup request. Provide at least one of domain or grizz_id. You may also provide company name and location to help resolve fuzzy matches against the Grizz database.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
| domain | string | One of domain / grizz_id required | Company web domain (e.g. acme.com). Protocols and trailing slashes are stripped automatically. |
| grizz_id | string | One of domain / grizz_id required | Grizz company ID for direct database lookup. |
| company_name | string | No | Company name. Used alongside location fields to improve fuzzy matching. |
| hq_city | string | No | HQ city. |
| hq_state | string | No | HQ state or region. |
| hq_country | string | No | HQ country. |
| hq_phone | string | No | Company phone number. |
Example
Response 201 Created
/api/v1/enrichment/
List all completed requests that have not yet been retrieved. Useful for batch processing — poll this endpoint and drain the queue rather than tracking individual IDs. Returns up to 100 records by default, maximum 500 via the limit parameter.
Query parameters
| Parameter | Default | Description |
|---|---|---|
| limit | 100 | Max records to return. Capped at 500. |
Response 200 OK
/api/v1/enrichment/:id/
Poll the status of a single enrichment request. The status field will be one of PENDING, RUNNING, COMPLETE, or FAILED. We recommend polling every 5 seconds.
Example
Response 200 OK
/api/v1/enrichment/:id/results/
Fetch the enriched company data for a completed request. Returns 409 if the request is not yet complete.
Calling this endpoint stamps retrieved_at on the first call, removing it from the unretrieved queue.
The source field indicates where the result came from:
database— matched an existing company in the Grizz database.enrichment— domain was scraped and classified by AI.no_match— domain could not be resolved or scraped.companywill benull.
Example
Response — source: "enrichment"
Response — source: "database"
Enrichment response fields
| Field | Description |
|---|---|
| domain | The domain that was enriched. |
| company_name | Formatted company name as identified from the website. |
| naics_code | 6-digit NAICS code. |
| naics_description | NAICS category description. |
| valid_domain | true if the domain represents a real operating business (not parked, placeholder, or coming-soon). |
| rationale | Short AI explanation of the classification (≤200 characters). |
| company_description | AI-generated description (≤1000 characters) covering location, line of work, values, and differentiators as conveyed on the company's website. |
| street_address | Street address from the website, if found. |
| city | City from the website, if found. |
| state_province_region | State, province, or region from the website, if found. |
| country | Country from the website, if found. |
| zip_code | Postal code from the website, if found. |
| phone | Phone number from the website, if found. |
| Email address from the website, if found. |
Error Codes
| Status | Meaning |
|---|---|
| 400 | Bad request — no domain or grizz_id provided. |
| 401 | Missing or invalid API key. |
| 403 | Valid key but account lacks domain admin, org membership, or Enrichment API access. |
| 404 | Request not found or belongs to a different org. |
| 409 | Results requested but the request is not yet complete. |
| 429 | Monthly call limit reached. Response includes limit and used fields. |