// post /v1/bulk/company
Bulk Company Enrichment API
Convert domain lists into structured company intelligence with one async bulk job built for modern GTM teams.
Domains or company namesAté 25,000 linhas
curl -X POST "https://api.tomba.io/v1/bulk/company" \
-H "X-Tomba-Key: $TOMBA_API_KEY" \
-H "X-Tomba-Secret: $TOMBA_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Company Enrichment job","list":"piedpiper.com\nshopify.com","launch":true,"webhook_url":"https://hooks.example.com/tomba"}'const res = await fetch("https://api.tomba.io/v1/bulk/company", {
method: "POST",
headers: {
"X-Tomba-Key": process.env.TOMBA_API_KEY,
"X-Tomba-Secret": process.env.TOMBA_SECRET_KEY,
"Content-Type": "application/json"
},
body: JSON.stringify({
"name": "Company Enrichment job",
"list": "piedpiper.com\nshopify.com",
"launch": true,
"webhook_url": "https://hooks.example.com/tomba"
})
});
const { data } = await res.json(); // { id }import os, requests
res = requests.post(
"https://api.tomba.io/v1/bulk/company",
headers={
"X-Tomba-Key": os.environ["TOMBA_API_KEY"],
"X-Tomba-Secret": os.environ["TOMBA_SECRET_KEY"],
},
json={
"name": "Company Enrichment job",
"list": "piedpiper.com\nshopify.com",
"launch": True,
"webhook_url": "https://hooks.example.com/tomba"
},
)
job_id = res.json()["data"]["id"]// 01 · requisição
Massa Company Enrichment é uma requisição HTTPS
Envie os parâmetros com sua chave e seu secret. Todos os SDKs, a CLI e o servidor MCP fazem esta mesma chamada.
- type
- company
- list | data | file
- Domains or company names
- launch
- true inicia o job imediatamente
- webhook_url
- Recebe um evento assinado quando o job termina
- rows
- Até 25,000 por job
curl -X POST "https://api.tomba.io/v1/bulk/company" \
-H "X-Tomba-Key: $TOMBA_API_KEY" \
-H "X-Tomba-Secret: $TOMBA_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Company Enrichment job","list":"piedpiper.com\nshopify.com","launch":true,"webhook_url":"https://hooks.example.com/tomba"}'const res = await fetch("https://api.tomba.io/v1/bulk/company", {
method: "POST",
headers: {
"X-Tomba-Key": process.env.TOMBA_API_KEY,
"X-Tomba-Secret": process.env.TOMBA_SECRET_KEY,
"Content-Type": "application/json"
},
body: JSON.stringify({
"name": "Company Enrichment job",
"list": "piedpiper.com\nshopify.com",
"launch": true,
"webhook_url": "https://hooks.example.com/tomba"
})
});
const { data } = await res.json(); // { id }import os, requests
res = requests.post(
"https://api.tomba.io/v1/bulk/company",
headers={
"X-Tomba-Key": os.environ["TOMBA_API_KEY"],
"X-Tomba-Secret": os.environ["TOMBA_SECRET_KEY"],
},
json={
"name": "Company Enrichment job",
"list": "piedpiper.com\nshopify.com",
"launch": True,
"webhook_url": "https://hooks.example.com/tomba"
},
)
job_id = res.json()["data"]["id"]// 02 · resposta
O que volta
JSON, igual em todas as linguagens. Campos que a Tomba não conhece vêm como null, nunca adivinhados.
GET
/companies/findCampodata.name, data.legalName, data.domainstring | null- Who the company is
data.description, data.foundedYear, data.typestring | null- What it does, when it was founded, its ownership
data.categoryobject- Sector, industry, SIC and NAICS codes
data.geoobject- Street address, city, state, country, coordinates
data.metricsobject- Employees, traffic rank, revenue, funding
data.linkedin, data.twitter, data.facebookobject- Social handles
data.tech[], data.techCategories[]array | null- Technologies the website runs
meta.domainstring | null- The domain you sent
errorsobject- When nothing is found the response is still 200, with errors {type, message, code} instead of data
POST /bulk/company
201 Created
{
"data": {
"id": 1042
}
}Cada linha, como GET /companies/find a retorna
200 OK
{
"data": {
"name": "Pied Piper",
"legalName": "Pied Piper, Inc.",
"domain": "piedpiper.com",
"domainAliases": [],
"site": {
"phoneNumbers": [],
"emailAddresses": [
"hello@piedpiper.com"
]
},
"category": {
"sector": "Information Technology",
"industryGroup": "Software & Services",
"industry": "Internet Software & Services",
"subIndustry": "Internet Software & Services",
"sicCode": "73",
"sic4Codes": [
"7372"
],
"naicsCode": "51",
"naics6Codes": [
"511210"
],
"naics6Codes2022": [
"513210"
]
},
"tags": [
"Compression",
"Decentralized internet"
],
"description": "Pied Piper builds middle-out compression for files, video and a decentralized internet.",
"foundedYear": "2014",
"location": "5230 Newell Road, Palo Alto, CA 94303, United States",
"timeZone": "America/Los_Angeles",
"utcOffset": -8,
"geo": {
"streetNumber": "5230",
"streetName": "Newell Road",
"subPremise": null,
"streetAddress": "5230 Newell Road",
"city": "Palo Alto",
"postalCode": "94303",
"state": "California",
"stateCode": "CA",
"country": "United States",
"countryCode": "US",
"lat": 37.4419,
"lng": -122.143
},
"logo": "https://logo.tomba.io/piedpiper.com",
"facebook": {
"handle": null,
"likes": null
},
"linkedin": {
"handle": "company/pied-piper"
},
"twitter": {
"handle": null,
"id": null,
"bio": null,
"followers": null,
"following": null,
"location": null,
"site": null,
"avatar": null
},
"whois": {
"registrar_name": null,
"created_date": null,
"referral_url": null
},
"emailProvider": "Google",
"type": "private",
"ticker": null,
"identifiers": {
"usEIN": null
},
"metrics": {
"alexaUsRank": null,
"alexaGlobalRank": null,
"trafficRank": null,
"employees": "11-50",
"marketCap": null,
"raised": null,
"annualRevenue": null,
"estimatedAnnualRevenue": null,
"fiscalYearEnd": null
},
"indexedAt": "2025-01-15T10:32:00+01:00",
"tech": [
"google_apps",
"intercom"
],
"techCategories": [
"email_hosting_service",
"live_chat"
],
"parent": {
"domain": null
},
"ultimateParent": {
"domain": null
}
},
"meta": {
"domain": "piedpiper.com"
}
}// 03 · custo e limites
Quanto custa uma chamada
Uma chamada só é cobrada na condição abaixo. Os limites de requisições dependem do seu plano.
// custo
1 search credit per company found. Plus 1 per company with phone data.
Charged once, at the first download; later downloads are free
- Jobs created: 15 per day for each type
- Running jobs: 2 per type
- Downloads: 25 per day for each job
- Request size: 4 MB (CSV, list or rows)
Create a bulk operation by uploading company domains, then launch the operation. The API enriches each domain with comprehensive company data asynchronously.
You can enrich up to 25,000 company domains per bulk operation. For larger datasets, create multiple bulk operations.
Each domain is enriched with company name, description, industry classification (SIC/NAICS codes), location, employee count, revenue estimates, technology stack, and social profiles.
O tempo de processamento depende do tamanho da lista e das consultas necessárias. Consulte o status da tarefa ou configure um webhook para saber quando ela terminar.
Each domain that returns enrichment data counts as 1 request. Domains with no data found are not counted against your quota.
The API detects 6000+ technologies including web frameworks, CMS platforms, analytics tools, cloud providers, and development tools used by each company.
Yes, configure a webhook URL to receive a notification when your bulk company enrichment operation completes with results ready for download.
Once processing completes, use the download endpoint to get all enriched company data as CSV or JSON format.
Yes. Many teams enrich domains first to qualify target accounts, then run Domain Search and Email Finder only on high-fit companies.
Use root company domains, remove URL paths/subdomains where possible, and deduplicate records before upload for best enrichment coverage.