GET /phone/{number}

Phone validation API

Pass a phone number. Get it back valid, formatted, plus the line type.

Try it

Example response/phone/+442071838750
{
  "phone": "+442071838750",
  "valid": true,
  "country": "GB",
  "type": "landline",
  "national": "020 7183 8750",
  "international": "+44 20 7183 8750",
  ?deep=true
}

1M requests · $20/mo. Get started

What comes back.

valid

Number is valid

type

mobile | landline | toll_free | unknown, what the numbering plan says. The network's word (voip) lives on /carrier

deep.state

State/province code from the area code (NANP), else null

deep.state_name

State/province name from the area code (NANP), else null

deep.timezone

IANA timezone id from the numbering plan, else null. Zone of the number, not the handset

country

ISO 3166-1 alpha-2 country

national

National formatting

international

International formatting

1

Pass a phone number

National or international. North American 10-digit is detected from the area code.

2

Get it back clean

Valid, national, and international, plus the numbering-plan line type. Add deep=true for area-code state and timezone on every plan.

3

A list when you have one

Drop a CSV or Excel file. Carrier, caller ID, and live status are toggles on the quote.

Make your first request.

One key works across the APIs. Copy a request in your language and get JSON back.

curl "https://api.parseapi.com/phone/+442071838750" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Parse-Version: 2.0.0"
// Example response · 200
{
  "phone": "+442071838750",
  "valid": true,
  "country": "GB",
  "type": "landline",
  "national": "020 7183 8750",
  "international": "+44 20 7183 8750"
}

API referenceSDKsKeys and authentication

Every response field

Response fields

phonestring or null
Normalized number (+ country code, no spaces), or null if invalid
validboolean
Number is valid
countrystring or null
ISO 3166-1 alpha-2 country
typestring or null
mobile | landline | toll_free | unknown, what the numbering plan says. The network's word (voip) lives on /carrier
nationalstring or null
National formatting
internationalstring or null
International formatting

Deep fields

deep.statestring or null
State/province code from the area code (NANP), else null
deep.state_namestring or null
State/province name from the area code (NANP), else null
deep.timezonestring or null
IANA timezone id from the numbering plan, else null. Zone of the number, not the handset

Build with Phone

All tutorials →

QUESTIONS

What if it is not a number?
valid: false as a 200. phone is null. Same as a typo in a form field.
Why does type never say voip?
Landline, mobile, or toll-free from the number itself. VoIP is a /carrier lookup.
What is timezone?
deep.timezone is the IANA zone assigned by the numbering plan, when unambiguous. Add deep=true on every plan for it and the area-code state. It does not locate the handset.
Who serves the number?
GET /carrier returns the carrier, real line type, and burner flag. Optional deep adds issuing city and state in the same lookup.
Can I get the caller ID?
GET /caller returns the name a phone screen shows. North American numbers.
Is the number live?
GET /hlr asks the mobile network. live means assigned, connected means reachable at the last check.
Can I run a list?
Drop a CSV or Excel file on this page. Cleanup columns are cheap; carrier, caller ID, and live status are toggles on the quote.

Phone APIs

Phone

Valid, formatted, plus the line type. Optional numbering-plan detail.

Carrier

Who serves it. Real line type, including voip. Burner flag.

Caller ID

The name a phone screen shows.

Live status

Assignment and reachability at the last network check.

Have a list?

Drop a CSV or Excel file. Your quote includes the carrier check. Caller ID and live status are toggles on the quote.

Bulk phone validation

Look up an area code, browse every area code, or format a list of numbers with the number validator.