Skip to main content
POST
https://api.gtmapis.com
/
v1
/
company
/
enrich
/
bulk
Bulk Company Enrichment
curl --request POST \
  --url https://api.gtmapis.com/v1/company/enrich/bulk \
  --header 'Content-Type: application/json' \
  --header 'X-API-Key: <api-key>' \
  --data '
{
  "companies": [
    {
      "domain": "<string>",
      "company_name": "<string>",
      "force_refresh": true
    }
  ],
  "max_concurrent": 123
}
'
{
  "id": "<string>",
  "results": [
    {}
  ],
  "summary": {
    "total": 123,
    "found": 123,
    "not_found": 123,
    "errors": 123,
    "cache_hits": 123,
    "credits_charged": 123,
    "total_latency_ms": 123
  }
}

Bulk Company Enrichment

Enrich multiple companies in a single API call. More efficient than making individual requests.

Endpoint

POST /v1/company/enrich/bulk

Request

companies
array
required
Array of companies to enrich (max 25 per request)
max_concurrent
integer
default:"5"
Maximum concurrent enrichments (1-10)

Example Request

curl -X POST https://api.gtmapis.com/v1/company/enrich/bulk \
  -H "Content-Type: application/json" \
  -H "X-API-Key: gtm_test_your_key_here" \
  -d '{
    "companies": [
      {"domain": "acme.com"},
      {"domain": "example.com"},
      {"domain": "startup.io", "company_name": "Startup Inc"}
    ],
    "max_concurrent": 5
  }'

Response

id
string
Unique batch identifier
results
array
Array of enrichment results. Each result matches the corresponding input company. See Company Enrichment for field details.
summary
object

Success Response

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "results": [
    {
      "domain": "acme.com",
      "company_name": "Acme Inc",
      "employee_count": 350,
      "employee_range": "201-500",
      "industry": "Software",
      "location": {
        "city": "San Francisco",
        "country": "United States"
      },
      "found": true,
      "cache_hit": true,
      "credits_charged": 1
    },
    {
      "domain": "example.com",
      "company_name": "Example Corp",
      "employee_count": 50,
      "employee_range": "11-50",
      "industry": "Technology",
      "found": true,
      "cache_hit": false,
      "credits_charged": 1
    },
    {
      "domain": "startup.io",
      "found": false,
      "cache_hit": false,
      "credits_charged": 0,
      "error": "Company not found"
    }
  ],
  "summary": {
    "total": 3,
    "found": 2,
    "not_found": 1,
    "errors": 0,
    "cache_hits": 1,
    "credits_charged": 2,
    "total_latency_ms": 2345
  }
}

Credit Pricing

ResultCredits Charged
Per company found1 credit
Company not found0 credits
Error / failure0 credits
Credits are only charged for successfully enriched companies. Not-found and error results are free.

Limits

LimitValue
Max companies per request25
Max concurrent requests10
Rate limit100 requests/minute

Error Responses

400 Bad Request

{
  "error": "Bad Request",
  "message": "companies array is required"
}
{
  "error": "Bad Request",
  "message": "maximum 25 companies per request"
}

401 Unauthorized

{
  "error": "Unauthorized",
  "message": "Invalid API key"
}

429 Too Many Requests

{
  "error": "Rate limit exceeded",
  "message": "You have exceeded the rate limit",
  "retry_after": 60
}

Use Cases

Enrich imported company lists from trade shows, events, or purchased data.
Batch enrich new accounts added to your CRM overnight.
Enrich and score batches of leads before routing to sales.
Build enriched lists of companies in target segments.

Best Practices

Split larger lists into chunks of 25 for optimal throughput.
Check each result’s found and error fields. Not all companies will match.
Higher max_concurrent values improve speed but may hit rate limits.
Remove duplicate domains before sending to avoid wasting credits.

Batch Processing Example

For lists larger than 25 companies, process in batches:
async function enrichLargeList(companies) {
  const BATCH_SIZE = 25;
  const allResults = [];
  
  for (let i = 0; i < companies.length; i += BATCH_SIZE) {
    const batch = companies.slice(i, i + BATCH_SIZE);
    
    const response = await fetch('https://api.gtmapis.com/v1/company/enrich/bulk', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'X-API-Key': process.env.GTMAPIS_API_KEY
      },
      body: JSON.stringify({ companies: batch })
    });
    
    const result = await response.json();
    allResults.push(...result.results);
    
    // Respect rate limits
    await new Promise(resolve => setTimeout(resolve, 1000));
  }
  
  return allResults;
}