// 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 namesFino a 25,000 righe
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 · richiesta
Bulk Company Enrichment è una sola richiesta HTTPS
Invia i parametri con la tua chiave e il tuo secret. Ogni SDK, la CLI e il server MCP fanno questa stessa chiamata.
- type
- company
- list | data | file
- Domains or company names
- launch
- true avvia subito il job
- webhook_url
- Riceve un evento firmato quando il job termina
- rows
- Fino a 25,000 per 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 · risposta
Cosa ricevi
JSON, uguale in ogni linguaggio. I campi che Tomba non conosce sono null, mai indovinati.
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
}
}Ogni riga, come la restituisce GET /companies/find
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 · costi e limiti
Quanto costa una chiamata
Una chiamata viene addebitata solo alla condizione indicata sotto. I limiti di frequenza dipendono dal tuo piano.
// costo
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.
Il tempo di elaborazione dipende dalla dimensione della lista e dalle ricerche necessarie. Interroga lo stato del job o imposta un webhook per sapere quando termina.
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.