Skip to content

// post /v1/bulk/enrich

Bulk Email Enrichment API

Transform raw email lists into actionable contact intelligence using one high-throughput asynchronous API operation.

Email addressesUp to 20,000 rows
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"}'

// 01 · request

Bulk Email Enrichment is one HTTPS request

Send the parameters with your key and secret. Every SDK, the CLI and the MCP server make this same call.

type
enrich
list | data | file
Email addresses
launch
true starts the job at once
webhook_url
Receives a signed event when the job ends
rows
Up to 20,000 per job
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"}'

// 02 · response

What comes back

JSON, the same in every language. Fields Tomba doesn't know are null, never guessed.

GET/enrichField
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
  }
}
Each row, as GET /enrich returns it
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 · cost and limits

What a call costs

A call is charged only under the condition below. Rate limits depend on your plan.

// cost

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)

// faq

Frequently Asked Questions

Still have questions? Visit the help center

// quick start

Make your first call in a minute

Free account, real API key, the same endpoints Enterprise customers use.

  1. 1Create a free account25 searches a month. No card.
  2. 2Copy your key and secretFrom API keys in the dashboard.
  3. 3Call the APIPaste the request; the answer is JSON.
curl "https://api.tomba.io/v1/email-finder?domain=piedpiper.com&first_name=Richard&last_name=Hendricks" \
  -H "X-Tomba-Key: $TOMBA_API_KEY" \
  -H "X-Tomba-Secret: $TOMBA_SECRET_KEY"
Response
200 OK· 1 search credit
{
  "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
      }
    ],
    "phone_data": []
  }
}