B2B data enrichment for 375M+ companies: legal entities, corporate hierarchies, and contacts.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Your DataMerge API key — get one free at https://app.datamerge.ai (20 credits on signup, no credit card required). Format: Bearer YOUR_API_KEY
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Configure DataMerge API authentication (required before using other tools if DATAMERGE_API_KEY is not set).
DataMerge API key. Get one at https://app.datamerge.ai (20 free credits).
Optional custom API base URL (default: https://api.datamerge.ai).
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Configure DataMerge API authentication (required before using other tools if DATAMERGE_API_KEY is not set).
| Argument | Type | Description |
|---|---|---|
| apiKey | string | DataMerge API key. Get one at https://app.datamerge.ai (20 free credits). |
| baseUrl | string | Optional custom API base URL (default: https://api.datamerge.ai). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"apiKey": {
"type": "string",
"description": "DataMerge API key. Get one at https://app.datamerge.ai (20 free credits)."
},
"baseUrl": {
"type": "string",
"description": "Optional custom API base URL (default: https://api.datamerge.ai)."
}
},
"additionalProperties": false
}POST /v1/contact/enrich. Enrich specific contacts by LinkedIn URL or name+domain. Returns a job_id (async, 202).
| Argument | Type | Description |
|---|---|---|
| contacts* | array | Array of contacts: either { linkedin_url } or { firstname, lastname, domain }. |
| enrich_fields* | array | Fields to enrich, e.g. ["contact.emails", "contact.phones"]. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"contacts",
"enrich_fields"
],
"properties": {
"contacts": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
},
"description": "Array of contacts: either { linkedin_url } or { firstname, lastname, domain }."
},
"enrich_fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Fields to enrich, e.g. [\"contact.emails\", \"contact.phones\"]."
}
},
"additionalProperties": false
}POST /v1/contact/search. Search for contacts at specified companies. Returns a job_id (async, 202). enrich_fields required (at least one of contact.emails or contact.phones). Use company_list (slug) instead of domains to search a saved list.
| Argument | Type | Description |
|---|---|---|
| domains | array | Company domains to search. |
| webhook | string | Optional webhook URL to notify when the job completes. |
| location | object | Location filters: include/exclude with type and value (country, region, city). |
| job_titles | object | Optional include/exclude job title filters. |
| company_list | string | List slug instead of domains. |
| enrich_fields* | array | At least one of "contact.emails" or "contact.phones". Each email costs 1 credit; phone 4 credits. |
| max_results_per_company | number | Max contacts per company. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"enrich_fields"
],
"properties": {
"domains": {
"type": "array",
"items": {
"type": "string"
},
"description": "Company domains to search."
},
"webhook": {
"type": "string",
"description": "Optional webhook URL to notify when the job completes."
},
"location": {
"type": "object",
"description": "Location filters: include/exclude with type and value (country, region, city).",
"additionalProperties": {}
},
"job_titles": {
"type": "object",
"properties": {
"exclude": {
"type": "array",
"items": {
"type": "string"
}
},
"include": {
"type": "object",
"description": "Priority-keyed: {\"1\": [\"CEO\"], \"2\": [\"VP Sales\"]} — priority \"1\" is highest.",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"description": "Optional include/exclude job title filters.",
"additionalProperties": false
},
"company_list": {
"type": "string",
"description": "List slug instead of domains."
},
"enrich_fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "At least one of \"contact.emails\" or \"contact.phones\". Each email costs 1 credit; phone 4 credits."
},
"max_results_per_company": {
"type": "number",
"description": "Max contacts per company."
}
},
"additionalProperties": false
}POST /v1/contact/search/unenriched. Find contacts without running email/phone enrichment. Returns a job_id; contacts are created in `unconfirmed` status with stable ids. BETA: requires the `contact_search_unenriched` flag on the account.
| Argument | Type | Description |
|---|---|---|
| domains | array | Company domains to search. |
| webhook | string | |
| location | object | |
| job_titles | object | Optional include/exclude job title filters (priority-keyed include). |
| company_list | string | Alternative to domains: list slug to search across. |
| max_results_per_company | integer |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"domains": {
"type": "array",
"items": {
"type": "string"
},
"description": "Company domains to search."
},
"webhook": {
"type": "string"
},
"location": {
"type": "object",
"additionalProperties": {}
},
"job_titles": {
"type": "object",
"properties": {
"exclude": {
"type": "array",
"items": {
"type": "string"
}
},
"include": {
"type": "object",
"description": "Priority-keyed: {\"1\": [\"CEO\"], \"2\": [\"VP\"]} — priority \"1\" is highest.",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"description": "Optional include/exclude job title filters (priority-keyed include).",
"additionalProperties": false
},
"company_list": {
"type": "string",
"description": "Alternative to domains: list slug to search across."
},
"max_results_per_company": {
"type": "integer"
}
},
"additionalProperties": false
}POST /v1/lists. Body: name, object_type (company or contact).
| Argument | Type | Description |
|---|---|---|
| name* | string | Display name for the new list. |
| object_type* | string | Whether the list holds company or contact records. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name",
"object_type"
],
"properties": {
"name": {
"type": "string",
"description": "Display name for the new list."
},
"object_type": {
"enum": [
"company",
"contact"
],
"type": "string",
"description": "Whether the list holds company or contact records."
}
},
"additionalProperties": false
}DELETE /v1/lists/{object_type}/{list_slug}. System lists cannot be deleted.
| Argument | Type | Description |
|---|---|---|
| list_slug* | string | List slug of the list to delete. System lists cannot be deleted. |
| object_type* | string | Type of list: company or contact. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"object_type",
"list_slug"
],
"properties": {
"list_slug": {
"type": "string",
"description": "List slug of the list to delete. System lists cannot be deleted."
},
"object_type": {
"enum": [
"company",
"contact"
],
"type": "string",
"description": "Type of list: company or contact."
}
},
"additionalProperties": false
}Get a single company record. GET /v1/company/get?datamerge_id={id} or ?record_id={uuid}. Provide either datamerge_id (charges 1 credit) or record_id (free). Not both. Optional: add_to_list — list slug to add the company to (only with datamerge_id).
| Argument | Type | Description |
|---|---|---|
| record_id | string | Your record UUID from a previous enrichment. Does not consume credits. |
| add_to_list | string | List slug to add the company to. Only valid when using datamerge_id. |
| datamerge_id | string | DataMerge company ID. Charges 1 credit. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"record_id": {
"type": "string",
"description": "Your record UUID from a previous enrichment. Does not consume credits."
},
"add_to_list": {
"type": "string",
"description": "List slug to add the company to. Only valid when using datamerge_id."
},
"datamerge_id": {
"type": "string",
"description": "DataMerge company ID. Charges 1 credit."
}
},
"additionalProperties": false
}GET /v1/company/enrich/{job_id}/status. Poll until status is "completed" or "failed". Response includes record_ids. Status values: queued · processing · completed · failed.
| Argument | Type | Description |
|---|---|---|
| job_id* | string | The enrichment job ID returned by start_company_enrichment. Poll until status is "completed" or "failed". |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "string",
"description": "The enrichment job ID returned by start_company_enrichment. Poll until status is \"completed\" or \"failed\"."
}
},
"additionalProperties": false
}Get all entities in the same global ultimate hierarchy. GET /v1/company/hierarchy?datamerge_id={id}. Parameters: include_names (bool, charges 1 credit), include_branches (bool), only_subsidiaries (bool), max_level (int), country_code (array), page (int).
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number for paginated results (1-based). |
| max_level | integer | Maximum hierarchy depth. |
| country_code | array | Filter entities by ISO 2-letter country code(s). |
| datamerge_id* | string | DataMerge company ID. Required. |
| include_names | boolean | Include entity names. Charges 1 credit. |
| include_branches | boolean | Include branch entities. |
| only_subsidiaries | boolean | Return only subsidiaries. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"datamerge_id"
],
"properties": {
"page": {
"type": "integer",
"description": "Page number for paginated results (1-based)."
},
"max_level": {
"type": "integer",
"description": "Maximum hierarchy depth."
},
"country_code": {
"type": "array",
"items": {
"type": "string"
},
"description": "Filter entities by ISO 2-letter country code(s)."
},
"datamerge_id": {
"type": "string",
"minLength": 1,
"description": "DataMerge company ID. Required."
},
"include_names": {
"type": "boolean",
"description": "Include entity names. Charges 1 credit."
},
"include_branches": {
"type": "boolean",
"description": "Include branch entities."
},
"only_subsidiaries": {
"type": "boolean",
"description": "Return only subsidiaries."
}
},
"additionalProperties": false
}GET /v1/contact/get?record_id={uuid}. Retrieve a specific contact by record UUID. Never charges credits.
| Argument | Type | Description |
|---|---|---|
| record_id* | string | Contact record UUID from a previous contact_search or contact_enrich job. Does not consume credits. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"record_id"
],
"properties": {
"record_id": {
"type": "string",
"description": "Contact record UUID from a previous contact_search or contact_enrich job. Does not consume credits."
}
},
"additionalProperties": false
}GET /v1/contact/enrich/{job_id}/status. Poll until status is "completed" or "failed". Response includes record_ids.
| Argument | Type | Description |
|---|---|---|
| job_id* | string | The contact enrich job ID returned by contact_enrich. Poll until status is "completed" or "failed". |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "string",
"description": "The contact enrich job ID returned by contact_enrich. Poll until status is \"completed\" or \"failed\"."
}
},
"additionalProperties": false
}GET /v1/contact/search/{job_id}/status. Poll until status is "completed" or "failed". Response includes record_ids.
| Argument | Type | Description |
|---|---|---|
| job_id* | string | The contact search job ID returned by contact_search. Poll until status is "completed" or "failed". |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "string",
"description": "The contact search job ID returned by contact_search. Poll until status is \"completed\" or \"failed\"."
}
},
"additionalProperties": false
}GET /v1/credits/balance. Returns credits_balance and balances (one_off, recurring, rollover, total).
| Argument | Type | Description |
|---|---|---|
| _ | string | This tool takes no required parameters. Call with no arguments. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"_": {
"type": "string",
"description": "This tool takes no required parameters. Call with no arguments."
}
},
"additionalProperties": false
}GET /v1/lists/{object_type}/{list_slug}. object_type: company or contact. list_slug: e.g. target-accounts. Parameters: page, page_size (max 100), sort_by, sort_order (asc/desc).
| Argument | Type | Description |
|---|---|---|
| page | number | Page number for pagination (1-based). |
| sort_by | string | Field name to sort by. |
| list_slug* | string | URL-safe list identifier (e.g. target-accounts). |
| page_size | number | Items per page (max 100). |
| sort_order | string | Sort direction: asc or desc. |
| object_type* | string | Type of list: company or contact. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"object_type",
"list_slug"
],
"properties": {
"page": {
"type": "number",
"description": "Page number for pagination (1-based)."
},
"sort_by": {
"type": "string",
"description": "Field name to sort by."
},
"list_slug": {
"type": "string",
"description": "URL-safe list identifier (e.g. target-accounts)."
},
"page_size": {
"type": "number",
"description": "Items per page (max 100)."
},
"sort_order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Sort direction: asc or desc."
},
"object_type": {
"enum": [
"company",
"contact"
],
"type": "string",
"description": "Type of list: company or contact."
}
},
"additionalProperties": false
}Check if the DataMerge API client is configured and can connect. Uses /auth/info.
| Argument | Type | Description |
|---|---|---|
| _ | string | This tool takes no required parameters. Call with no arguments. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"_": {
"type": "string",
"description": "This tool takes no required parameters. Call with no arguments."
}
},
"additionalProperties": false
}GET /v1/lists. Optional: object_type=company or object_type=contact.
| Argument | Type | Description |
|---|---|---|
| object_type | string | Filter lists by object type: company or contact. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"object_type": {
"enum": [
"company",
"contact"
],
"type": "string",
"description": "Filter lists by object type: company or contact."
}
},
"additionalProperties": false
}DELETE /v1/lists/{object_type}/{list_slug}/{item_id}.
| Argument | Type | Description |
|---|---|---|
| item_id* | string | Record UUID of the company or contact to remove from the list. |
| list_slug* | string | List slug containing the item. |
| object_type* | string | Type of list: company or contact. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"object_type",
"list_slug",
"item_id"
],
"properties": {
"item_id": {
"type": "string",
"description": "Record UUID of the company or contact to remove from the list."
},
"list_slug": {
"type": "string",
"description": "List slug containing the item."
},
"object_type": {
"enum": [
"company",
"contact"
],
"type": "string",
"description": "Type of list: company or contact."
}
},
"additionalProperties": false
}Agent-friendly company enrichment. On the first call provide enrichment params (domain, domains, company_name, country_code, etc.); the server starts the job and polls internally for up to ~25s. If the job is still running, the response will be {status:"pending", continuation_token, attempt, elapsed_seconds}. When you see status "pending" you MUST immediately call run_company_enrichment again with only continuation_token set — do not ask the user, do not call any other tool first. Typical jobs finish within 5 attempts (~125s). On completion the response contains record_ids and full company records.
| Argument | Type | Description |
|---|---|---|
| list | string | List slug to add enriched companies to. |
| domain | string | Company website domain. |
| domains | array | Batch: multiple domains in one job. |
| refresh | boolean | When true, bypass DataMerge dedup: always re-enrich and charge credits even if the domain is already on a list. Use for multi-tenant resellers (e.g. Faro). |
| webhook_url | string | |
| company_name | string | |
| country_code | string | |
| strict_match | boolean |
Agent-friendly contact enrichment. On the first call provide contacts and enrich_fields; the server starts the job and polls internally for up to ~25s. If still running, returns {status:"pending", continuation_token, attempt, elapsed_seconds} — you MUST immediately call run_contact_enrich again with only continuation_token set. Do not ask the user. Typical jobs finish within 5 attempts. On completion the response contains record_ids and full contact records.
| Argument | Type | Description |
|---|---|---|
| refresh | boolean | When true, bypass DataMerge dedup: always re-enrich every contact and charge credits, even if the same contact was enriched in the last 30 days. Use for multi-tenant resellers (e.g. Faro). |
| contacts | array | Array of contacts. Identify each with `linkedin_url` and/or (`firstname`+`lastname`). ALWAYS include `domain` (company website) when you know it — FullEnrich's email accuracy drops sharply without a domain hint. |
| enrich_fields | array | e.g. ["contact.emails","contact.phones"]. |
| max_wait_seconds | number | Server-side wait budget per call. Default 25, hard-capped to stay under 30s timeouts. |
| return_any_domain | boolean | Set to true to allow enrichment for contacts that have no `domain`. FullEnrich will pick whichever current employer it considers most probable, which may not match what you expect for people with multiple plausible affiliations. Default false: server returns `status: "domain_required"` if any contact lacks `domain`. |
| continuation_token |
Agent-friendly contact search. On the first call provide domains and enrich_fields; the server starts the job and polls internally for up to ~25s. If still running, returns {status:"pending", continuation_token, attempt, elapsed_seconds} — you MUST immediately call run_contact_search again with only continuation_token set. Do not ask the user. On completion the response contains record_ids, full contact records, and credits_consumed.
| Argument | Type | Description |
|---|---|---|
| list | string | Target contact list slug for results. |
| domains | array | Company domains to search for contacts at. |
| refresh | boolean | When true, downstream enrichment bypasses dedup and always charges credits for each contact. Use for multi-tenant resellers (e.g. Faro). |
| location | object | Optional include/exclude location filters. |
| job_titles | object | Optional include/exclude job title filters. |
| company_list | string | Alternative to `domains`: company list slug. |
| enrich_fields | array | At least one of "contact.work_emails", "contact.emails", "contact.phones". |
| max_wait_seconds | number | Server-side wait budget per call. Default 25, hard-capped to stay under 30s timeouts. |
POST /v1/contact/search/unenriched/sync. Synchronous unenriched contact search — returns contacts inline (no polling). Requires the `contact_search_unenriched` beta flag. Limits: 10 domains and max_results_per_company ≤ 10. Response includes credits_consumed computed as 0.5 × len(contacts).
| Argument | Type | Description |
|---|---|---|
| list | string | Target contact list slug. |
| domains* | array | Up to 10 company domains. |
| location | object | Optional include/exclude locations. |
| job_titles | object | Optional include/exclude job title filters. |
| max_results_per_company | integer | Max contacts per company (1–10). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"domains"
],
"properties": {
"list": {
"type": "string",
"description": "Target contact list slug."
},
"domains": {
"type": "array",
"items": {
"type": "string"
},
"description": "Up to 10 company domains."
},
"location": {
"type": "object",
"description": "Optional include/exclude locations.",
"additionalProperties": {}
},
"job_titles": {
"type": "object",
"properties": {
"exclude": {
"type": "array",
"items": {
"type": "string"
}
},
"include": {
"type": "object",
"description": "Priority-keyed: {\"1\": [\"CEO\"], \"2\": [\"VP\"]} — priority \"1\" is highest. The API flattens this to a single array for the sync endpoint.",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"description": "Optional include/exclude job title filters.",
"additionalProperties": false
},
"max_results_per_company": {
"type": "integer",
"description": "Max contacts per company (1–10)."
}
},
"additionalProperties": false
}POST /v1/company/enrich. Enrich one or more companies by domain. Returns a job_id (async). Single: domain. Batch: domains, country_code, global_ultimate, list, skip_if_exists.
| Argument | Type | Description |
|---|---|---|
| list | string | List slug to add enriched companies to. |
| domain | string | Company website domain (e.g. example.com). |
| domains | array | Batch: multiple domains to enrich. |
| webhook_url | string | Optional webhook URL to receive job completion notifications. |
| company_name | string | Company name (used when domain is not available). |
| country_code | string | Optional ISO 2-letter country code to improve matching. |
| strict_match | boolean | When true, require a strict match for enrichment. |
| skip_if_exists | boolean | When true, skip domains that are already in the list. |
| global_ultimate | boolean | When true, always return the global ultimate parent. |
POST /v1/company/enrich then poll GET /v1/company/enrich/{job_id}/status until status is "completed" or "failed" or timeout. Same params as start_company_enrichment plus poll_interval_seconds and timeout_seconds.
| Argument | Type | Description |
|---|---|---|
| list | string | List slug to add enriched companies to. |
| domain | string | Company website domain (e.g. example.com). |
| domains | array | Batch: multiple domains to enrich in one job. |
| webhook_url | string | Optional webhook URL to receive job completion notifications. |
| company_name | string | Company name (used when domain is not available). |
| country_code | string | Optional ISO 2-letter country code to improve matching. |
| strict_match | boolean | When true, require a strict match for enrichment. |
| skip_if_exists | boolean | When true, skip domains already in the list. |
| global_ultimate | boolean | When true, always return the global ultimate parent. |
| skip_if_exists | boolean |
| global_ultimate | boolean |
| max_wait_seconds | number | Server-side wait budget per call. Default 25, hard-capped to stay under 30s timeouts. |
| continuation_token | string | Opaque token from a prior pending response. When set, all other params are ignored. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"list": {
"type": "string",
"description": "List slug to add enriched companies to."
},
"domain": {
"type": "string",
"description": "Company website domain."
},
"domains": {
"type": "array",
"items": {
"type": "string"
},
"description": "Batch: multiple domains in one job."
},
"refresh": {
"type": "boolean",
"description": "When true, bypass DataMerge dedup: always re-enrich and charge credits even if the domain is already on a list. Use for multi-tenant resellers (e.g. Faro)."
},
"webhook_url": {
"type": "string"
},
"company_name": {
"type": "string"
},
"country_code": {
"type": "string"
},
"strict_match": {
"type": "boolean"
},
"skip_if_exists": {
"type": "boolean"
},
"global_ultimate": {
"type": "boolean"
},
"max_wait_seconds": {
"type": "number",
"description": "Server-side wait budget per call. Default 25, hard-capped to stay under 30s timeouts."
},
"continuation_token": {
"type": "string",
"description": "Opaque token from a prior pending response. When set, all other params are ignored."
}
},
"additionalProperties": false
}| string |
| Opaque token from a prior pending response. When set, all other params are ignored. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"refresh": {
"type": "boolean",
"description": "When true, bypass DataMerge dedup: always re-enrich every contact and charge credits, even if the same contact was enriched in the last 30 days. Use for multi-tenant resellers (e.g. Faro)."
},
"contacts": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
},
"description": "Array of contacts. Identify each with `linkedin_url` and/or (`firstname`+`lastname`). ALWAYS include `domain` (company website) when you know it — FullEnrich's email accuracy drops sharply without a domain hint."
},
"enrich_fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "e.g. [\"contact.emails\",\"contact.phones\"]."
},
"max_wait_seconds": {
"type": "number",
"description": "Server-side wait budget per call. Default 25, hard-capped to stay under 30s timeouts."
},
"return_any_domain": {
"type": "boolean",
"description": "Set to true to allow enrichment for contacts that have no `domain`. FullEnrich will pick whichever current employer it considers most probable, which may not match what you expect for people with multiple plausible affiliations. Default false: server returns `status: \"domain_required\"` if any contact lacks `domain`."
},
"continuation_token": {
"type": "string",
"description": "Opaque token from a prior pending response. When set, all other params are ignored."
}
},
"additionalProperties": false
}| continuation_token | string | Opaque token from a prior pending response. When set, all other params are ignored. |
| max_results_per_company | integer | Max contacts to return per company. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"list": {
"type": "string",
"description": "Target contact list slug for results."
},
"domains": {
"type": "array",
"items": {
"type": "string"
},
"description": "Company domains to search for contacts at."
},
"refresh": {
"type": "boolean",
"description": "When true, downstream enrichment bypasses dedup and always charges credits for each contact. Use for multi-tenant resellers (e.g. Faro)."
},
"location": {
"type": "object",
"properties": {
"exclude": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"value"
],
"properties": {
"type": {
"type": "string"
},
"value": {
"type": "string"
}
},
"additionalProperties": false
}
},
"include": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"value"
],
"properties": {
"type": {
"type": "string"
},
"value": {
"type": "string"
}
},
"additionalProperties": false
}
}
},
"description": "Optional include/exclude location filters.",
"additionalProperties": false
},
"job_titles": {
"type": "object",
"properties": {
"exclude": {
"type": "array",
"items": {
"type": "string"
}
},
"include": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"description": "Optional include/exclude job title filters.",
"additionalProperties": false
},
"company_list": {
"type": "string",
"description": "Alternative to `domains`: company list slug."
},
"enrich_fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "At least one of \"contact.work_emails\", \"contact.emails\", \"contact.phones\"."
},
"max_wait_seconds": {
"type": "number",
"description": "Server-side wait budget per call. Default 25, hard-capped to stay under 30s timeouts."
},
"continuation_token": {
"type": "string",
"description": "Opaque token from a prior pending response. When set, all other params are ignored."
},
"max_results_per_company": {
"type": "integer",
"description": "Max contacts to return per company."
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"list": {
"type": "string",
"description": "List slug to add enriched companies to."
},
"domain": {
"type": "string",
"description": "Company website domain (e.g. example.com)."
},
"domains": {
"type": "array",
"items": {
"type": "string"
},
"description": "Batch: multiple domains to enrich."
},
"webhook_url": {
"type": "string",
"description": "Optional webhook URL to receive job completion notifications."
},
"company_name": {
"type": "string",
"description": "Company name (used when domain is not available)."
},
"country_code": {
"type": "string",
"description": "Optional ISO 2-letter country code to improve matching."
},
"strict_match": {
"type": "boolean",
"description": "When true, require a strict match for enrichment."
},
"skip_if_exists": {
"type": "boolean",
"description": "When true, skip domains that are already in the list."
},
"global_ultimate": {
"type": "boolean",
"description": "When true, always return the global ultimate parent."
}
},
"additionalProperties": false
}| timeout_seconds | number | Maximum time to wait for completion (in seconds). Defaults to 60 seconds. |
| poll_interval_seconds | number | How often to poll the job status (in seconds). Defaults to 5 seconds. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"list": {
"type": "string",
"description": "List slug to add enriched companies to."
},
"domain": {
"type": "string",
"description": "Company website domain (e.g. example.com)."
},
"domains": {
"type": "array",
"items": {
"type": "string"
},
"description": "Batch: multiple domains to enrich in one job."
},
"webhook_url": {
"type": "string",
"description": "Optional webhook URL to receive job completion notifications."
},
"company_name": {
"type": "string",
"description": "Company name (used when domain is not available)."
},
"country_code": {
"type": "string",
"description": "Optional ISO 2-letter country code to improve matching."
},
"strict_match": {
"type": "boolean",
"description": "When true, require a strict match for enrichment."
},
"skip_if_exists": {
"type": "boolean",
"description": "When true, skip domains already in the list."
},
"global_ultimate": {
"type": "boolean",
"description": "When true, always return the global ultimate parent."
},
"timeout_seconds": {
"type": "number",
"description": "Maximum time to wait for completion (in seconds). Defaults to 60 seconds."
},
"poll_interval_seconds": {
"type": "number",
"description": "How often to poll the job status (in seconds). Defaults to 5 seconds."
}
},
"additionalProperties": false
}