Skip to content
ProofTell
Sign inSign up
Phone intelligence

Know the line behind the number.

Send any phone number and learn whether it can exist, what kind of line it is, which carrier issued it and where it belongs. 243 countries and territories, $1.00 per 1,000 numbers.

No SMS is sent and nothing reaches the phone.

Phone check
+1 415 555 2671
United States · San Francisco, CA
Valid
Line type
mobile
Carrier
T-Mobile USA, Inc.
E.164
+14155552671
Local format
(415) 555-2671
Time zone
America/Los_Angeles
What comes back

Everything a number can tell you.

One request, one JSON object. The check is Veriphone’s, in production since 2019.

Validity

The number is checked against the numbering plan of its country: length, prefix and range. A typo or an invention fails here.

phone_valid

Line type

Mobile, fixed line, VoIP, toll-free and more. The difference between a customer you can reach and a line made to be thrown away.

phone_type

Carrier

The carrier the number was issued to, named as the operator names itself.

carrier

Country and region

Where the number belongs, read from its prefix: the country, and the region or city where the plan defines one.

country_code · phone_region

Clean formats

One E.164 string to store, plus the international and local forms to display or dial.

e164 · international_number · local_number

Time zone

The time zones the number’s range covers, so a call or a message arrives at a decent hour.

timezone
For developers

One POST. One number.

Send the number in the request body, never in a URL, so it stays out of every log on the way. Apt_test_ key returns simulated results for documented numbers, free.

The values on the right are an illustration; the fields are the live ones.

Read the API reference
curl https://api.prooftell.com/v1/phone \
  -H "Authorization: Bearer $PROOFTELL_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "phone": "+14155552671"
  }'
const res = await fetch("https://api.prooftell.com/v1/phone", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.PROOFTELL_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    phone: "+14155552671",
  }),
})
const number = await res.json()
import os, requests

res = requests.post(
    "https://api.prooftell.com/v1/phone",
    headers={"Authorization": f"Bearer {os.environ['PROOFTELL_KEY']}"},
    json={
        "phone": "+14155552671",
    },
)
result = res.json()
print(result["phone_valid"], result["phone_type"])
Response
{
  "status": "success",
  "phone": "+14155552671",
  "phone_valid": true,
  "phone_type": "mobile",
  "phone_region": "San Francisco, CA",
  "country": "United States",
  "country_code": "US",
  "country_prefix": "1",
  "international_number": "+1 415-555-2671",
  "local_number": "(415) 555-2671",
  "e164": "+14155552671",
  "carrier": "T-Mobile USA, Inc.",
  "timezone": ["America/Los_Angeles"],
  "geographical": false,
  "cost": "0.0010",
  "currency": "USD",
  "signals": {
    "static": { "status": "ok", "cost": "0.0010" }
  }
}
What it costs

$1.00 per 1,000 numbers.

  • $0.0010 per number, taken from your dollar balance. No plan, no minimum volume.
  • Charged when the number is judged, valid or not: an invalid number is a definitive answer.
  • Input that cannot be read as a phone number is answered and free. So are sandbox calls.
See the rate card
In the risk score

The tells a number gives away.

Sent to /v1/assess with an email or an IP, the same check feeds the score. These are the reasons it can add:

  • phone_invalid
    The phone number is not a valid number.
  • phone_voip
    The number is a VoIP line, easy to obtain anonymously.
  • phone_non_personal
    The number is a toll-free, premium-rate, shared-cost or pager line, not a personal one.
  • phone_type_unknown
    The line type could not be determined.
  • geo_mismatch
    The phone number’s country differs from the IP address’s.
FAQ

About the phone check.

Does ProofTell send an SMS or call the number?
No. Nothing reaches the phone. ProofTell does not send one-time codes and does not sell phone numbers. It tells you what a number is, so you can decide before you spend a message on it.
Does it tell me whether the phone is switched on right now?
No. Validation says that the number can exist and what kind of line it is. It does not query the live network, so it cannot say whether the handset is on or in coverage.
Does the carrier follow a number that was ported?
Not today. The carrier returned is the one the number was issued to. A number moved to another network since then still shows its original carrier.
Which formats can I send?
E.164 is preferred (+447700900123). A number in national format works with a country hint, the two-letter ISO code of the country it should be read in.
Which countries are covered?
243 countries and territories, with validity, line type, country and formats in every one. Carrier names depend on what each national numbering plan publishes.
Can I check a whole list?
Yes. Upload a CSV or an Excel file from the dashboard, or through the API. See bulk verification.

Check your first number in a minute.

Create an account, take a sandbox key, make your first call in minutes.

staging