GET /carrier/{number}

Carrier lookup API

Pass a number. The network says who serves it.

(415) 555-0199mobile · Verizon
(305) 555-0142voip · Bandwidth.com
(312) 555-0186burner: true

type

mobile | landline | voip | toll_free | unknown

carrier

Carrier display name, else null

burner

true when the carrier is a known burner app. null if we do not know the carrier

ported

Number has moved carriers (NANP), null when unknown

ported_date

Date the number was ported, null when not ported

city

City where the number block was issued (not live location). Gazetteer name when known, readable expansion otherwise

state

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

state_name

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

1

Pass a number

Dashes, parentheses, or E.164. It comes back normalized and valid.

2

The network answers

Carrier name, real line type — voip is the one a parser cannot see — burner flag, ported.

3

Place included

The city and state where the number block was issued. Not live location, honestly labeled.

100 free a month.

One lookup per valid number. Carrier, type, burner.

Have a list?

Drop a CSV or Excel file. Same data. Half a cent a number, $5 minimum.

Drop a CSV, Excel, or Numbers file

.csv, .xlsx, .xls, .numbers, .tsv, or a text list

Bulk phone validation

5
line types
100
free lookups a month

Ask the network who serves a number. Pass +13129457420 and get back the carrier, the real line type including voip, a flag for known burner apps like TextNow, whether the number has been ported, and the city and state where it was issued.

Each valid number uses one lookup. The free plan includes 100 a month.

RESPONSE

$ curl "https://api.parseapi.com/carrier/+13129457420" \
  -H "X-API-Key: YOUR_API_KEY"

// 200 · ~16ms · USA
{
  "phone": "+13129457420",
  "valid": true,
  "country": "US",
  "type": "voip",
  "carrier": "Telnyx",
  "burner": false,
  "ported": true,
  "ported_date": "2017-10-20",
  "city": "Waukegan",
  "state": "IL",
  "state_name": "Illinois"
}

Response fields

phone
Normalized number (+ country code, no spaces), or null if invalid
valid
Number is valid
country
ISO 3166-1 alpha-2 country
type
mobile | landline | voip | toll_free | unknown
carrier
Carrier display name, else null
burner
true when the carrier is a known burner app. null if we do not know the carrier
ported
Number has moved carriers (NANP), null when unknown
ported_date
Date the number was ported, null when not ported
city
City where the number block was issued (not live location). Gazetteer name when known, readable expansion otherwise
state
State/province code from the area code (NANP), else null
state_name
State/province name from the area code (NANP), else null

QUESTIONS

Where does the data come from?
Live from the phone network. The same data used to route the call.
What can it see that a parser cannot?
voip. A voip number sits inside a regular-looking block, so offline parsing calls it landline or mobile. The network names the real service.
What is the burner flag?
true when the carrier itself names a known burner app, TextNow or Pinger class. A curated list, never a score. null when the carrier is unknown.
Is the city where the phone is now?
No. It is where the number block was issued. Honest history, never live location.
What does a lookup cost?
One carrier lookup from the monthly allowance per valid number. Free includes 100. Junk numbers answer valid: false free.
Can I run a list?
Drop a phone CSV on /bulk. Carrier is a toggle on the quote, priced per unique number.

SPEED

How long a lookup takes.

US

16ms

EU

18ms

APAC

69ms

LatAm

18ms

ME

126ms

See live status →