Skip to content

// post /v1/bulk/phone-validator

Bulk Phone Validator API

Validate and normalize high-volume phone datasets in one asynchronous API operation built for scale.

Phone numbers, with an optional countryUp to 10,000 rows
curl -X POST "https://api.tomba.io/v1/bulk/phone-validator" \
  -H "X-Tomba-Key: $TOMBA_API_KEY" \
  -H "X-Tomba-Secret: $TOMBA_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Phone Validator job","list":"+16505550132","launch":true,"webhook_url":"https://hooks.example.com/tomba"}'

// 01 · request

Bulk Phone Validator 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
phone-validator
list | data | file
Phone numbers, with an optional country
launch
true starts the job at once
webhook_url
Receives a signed event when the job ends
rows
Up to 10,000 per job
curl -X POST "https://api.tomba.io/v1/bulk/phone-validator" \
  -H "X-Tomba-Key: $TOMBA_API_KEY" \
  -H "X-Tomba-Secret: $TOMBA_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Phone Validator job","list":"+16505550132","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/phone-validatorField
dataobject | array
The number's details; an empty array, with phone repeating your input, when it isn't valid
data.validboolean | null
Whether the number is a valid phone number
data.intl_format, data.e164_format, data.local_formatstring | null
The number in international, E.164 and national formats
data.country_codestring | null
Country of the number (ISO code)
data.line_typestring | null
MOBILE, FIXED_LINE, FIXED_LINE_OR_MOBILE, VOIP, TOLL_FREE…
data.carrierstring | null
The network operator
data.region, data.timezonesobject | null, array | null
Where the number is registered, and its time zones
POST /bulk/phone-validator
201 Created
{
  "data": {
    "id": 1042
  }
}
Each row, as GET /phone-validator returns it
200 OK
{
  "data": {
    "valid": true,
    "local_format": "(650) 555-0132",
    "intl_format": "+1 650-555-0132",
    "e164_format": "+16505550132",
    "rfc3966_format": "tel:+1-650-555-0132",
    "country_code": "US",
    "line_type": "MOBILE",
    "carrier": "AT&T",
    "region": {
      "name": "California",
      "code": "CA"
    },
    "timezones": [
      "America/Los_Angeles"
    ]
  }
}

// 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 valid number.

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": []
  }
}