// post /v1/bulk/enrich
Bulk Email Enrichment API
Transform raw email lists into actionable contact intelligence using one high-throughput asynchronous API operation.
Email addressesДо 20,000 строк
curl -X POST "https://api.tomba.io/v1/bulk/enrich" \
-H "X-Tomba-Key: $TOMBA_API_KEY" \
-H "X-Tomba-Secret: $TOMBA_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Email Enrichment job","list":"richard@piedpiper.com","launch":true,"webhook_url":"https://hooks.example.com/tomba"}'const res = await fetch("https://api.tomba.io/v1/bulk/enrich", {
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": "Email Enrichment job",
"list": "richard@piedpiper.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/enrich",
headers={
"X-Tomba-Key": os.environ["TOMBA_API_KEY"],
"X-Tomba-Secret": os.environ["TOMBA_SECRET_KEY"],
},
json={
"name": "Email Enrichment job",
"list": "richard@piedpiper.com",
"launch": True,
"webhook_url": "https://hooks.example.com/tomba"
},
)
job_id = res.json()["data"]["id"]// 01 · запрос
«Массовый Email Enrichment» — это один HTTPS-запрос
Отправьте параметры с вашим ключом и секретом. Все SDK, CLI и MCP-сервер выполняют этот же вызов.
- type
- enrich
- list | data | file
- Email addresses
- launch
- true сразу запускает задачу
- webhook_url
- Получает подписанное событие, когда задача завершается
- rows
- До 20,000 на задачу
curl -X POST "https://api.tomba.io/v1/bulk/enrich" \
-H "X-Tomba-Key: $TOMBA_API_KEY" \
-H "X-Tomba-Secret: $TOMBA_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Email Enrichment job","list":"richard@piedpiper.com","launch":true,"webhook_url":"https://hooks.example.com/tomba"}'const res = await fetch("https://api.tomba.io/v1/bulk/enrich", {
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": "Email Enrichment job",
"list": "richard@piedpiper.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/enrich",
headers={
"X-Tomba-Key": os.environ["TOMBA_API_KEY"],
"X-Tomba-Secret": os.environ["TOMBA_SECRET_KEY"],
},
json={
"name": "Email Enrichment job",
"list": "richard@piedpiper.com",
"launch": True,
"webhook_url": "https://hooks.example.com/tomba"
},
)
job_id = res.json()["data"]["id"]// 02 · ответ
Что возвращается
JSON, одинаковый на любом языке. Поля, которые Tomba не знает, равны null — без догадок.
GET
/enrichПолеdata.emailstring | null- The address, or null when none is found
data.scoreinteger- Confidence from 0 to 100
data.verification.statusstring | null- valid, accept_all, invalid or unknown, with verification.date
data.full_name, data.position, data.departmentstring | null- Name, job title and team
data.typestring | null- personal or generic (a role address such as sales@)
data.linkedin, data.twitterstring | null- Public profiles
data.sources[]array | null- Up to 20 public pages where the address was found, with dates
data.company, data.website_urlstring | null- The company and its domain
data.disposable, data.webmailboolean- The address is on a disposable or webmail domain
data.accept_allboolean | null- The domain accepts mail for any address (catch-all)
data.phone_numberboolean- Tomba holds a phone number for the person
data.phone_data[]array- The numbers, when you send enrich_mobile (each as in Phone Finder)
POST /bulk/enrich
201 Created
{
"data": {
"id": 1042
}
}Каждая строка — в том виде, в каком её возвращает GET /enrich
200 OK
{
"data": {
"email": "richard@piedpiper.com",
"first_name": "Richard",
"last_name": "Hendricks",
"full_name": "Richard Hendricks",
"website_url": "piedpiper.com",
"company": "Pied Piper",
"pattern": "{first}",
"department": "executive",
"type": "personal",
"position": "CEO",
"country": "US",
"gender": "male",
"twitter": null,
"linkedin": "https://www.linkedin.com/in/richard-hendricks",
"score": 100,
"accept_all": false,
"phone_number": true,
"verification": {
"date": "2025-01-15T10:32:00+01:00",
"status": "valid"
},
"sources": [
{
"uri": "https://piedpiper.com/blog/engineering",
"website_url": "piedpiper.com",
"extracted_on": "2024-06-01T09:14:07+01:00",
"last_seen_on": "2025-01-10T17:02:44+01:00",
"still_on_page": true
}
],
"disposable": false,
"webmail": false,
"phone_data": []
}
}// 03 · стоимость и лимиты
Сколько стоит вызов
Вызов оплачивается только при условии, указанном ниже. Лимиты запросов зависят от вашего тарифа.
// стоимость
1 search credit per row with a result. Plus 5 per row 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 email addresses, then launch the operation. The API enriches each email with person and company data asynchronously.
You can enrich up to 10,000 email addresses per bulk operation. For larger datasets, create multiple bulk operations.
Each email is enriched with person data (name, title, location, social profiles) and company data (name, industry, size, technology stack, social profiles).
Время обработки зависит от размера списка и необходимых запросов. Опрашивайте задачу или настройте вебхук, чтобы узнать о её завершении.
Each email that returns enrichment data counts as 1 request. Emails with no data found are not counted against your quota.
Yes, the bulk enrichment returns both person-level data (name, role, social profiles) and company-level data (industry, size, tech stack) for each email.
Yes, configure a webhook URL to receive a notification when your bulk enrichment operation completes with results ready for download.
Data is continuously updated from public sources. Each record includes timestamps showing when the data was last verified.
For highest quality pipelines, verify your list first. Removing invalid emails before enrichment helps improve match rates and keeps downstream workflows clean.
Yes. Most teams use the bulk download endpoint, then sync enriched fields into CRM, marketing automation, or warehouse pipelines.