// bulk operations
Bulk Email Enrichment
Upload a CSV of email addresses and enrich them all with contact and company data at once.
- 01pending
POST /v1/bulk/enrich201 · { "data": { "id": 1042 } } - 02running
launch: trueprogress polled with GET /v1/bulk/enrich/1042/progress - 03completed
bulk.completedsigned webhook delivered to your webhook_url
GET /v1/bulk/enrich/1042/download?file=fullCharged at the first download · the job expires after 180 days// 01 · input
The input of a bulk Email Enrichment job
Upload a CSV of up to 4 MB in the app, or send a list, rows or a file to POST /v1/bulk/enrich. Columns are found from the header row; set a field index to choose one yourself.
/bulk/enrichColumnsemail_field_index- Email address
/bulk/enrichOptionsfind_phones- true adds phone numbers, at an extra cost
include_sources- true adds the web pages where each address was found
// 02 · api
One request starts the job
Create and launch it in one call, then follow its progress or receive a signed bulk.completed event. Each result row is what GET /enrich returns.
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"]{
"data": {
"id": 1042
}
}{
"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 · cost and limits
What a job costs
Nothing is charged to create or launch a job. Its cost is charged once, at the first download of its results.
// billing per row
1 search credit per row with a result. Plus 5 per row with phone data.
Bulk billing in the docs- Rows: up to 20,000 per job
- 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)
// 04 · use it anywhere
Run Email Enrichment jobs from the app or your code
The same job, the same credits: upload a file in the app, call the API, or work from a spreadsheet or a no-code tool.
- REST APIJSON over HTTPS, 13 SDKs, signed webhooks.
GET /v1/email-finder - Bulk CSVUpload a list in the app or POST it to /bulk; download when it's done.
POST /v1/bulk/{type} - Google Sheets and ExcelFormulas and a sidebar that call the same endpoints.
=TOMBA_VERIFY(A2) - Zapier, Make, n8nNo-code actions for the finder, verifier and enrichment.
Zapier · Make · n8n · Pipedream
The full request reference: /api/bulk/email-enrichment
// customers
Teams that run Email Enrichment jobs
I've been using Tomba.io for nearly three years. I've run multiple side-by-side tests against other tools and Hunter. Tomba.io delivered better results every time.
Aristotle MalichettyBusiness Intelligence AnalystTomba.io is very fast with lots of features. I run leads from Apollo into Tomba and grab prospect info in record time. I'm saving at least 5 hours a week. No joke.
Julian M.Account Executive, Insight