Line type lookup API
Line type lookup API: mobile, landline or VoIP
The CheckThatPhone line type lookup API tells you whether a US or Canadian phone number is
mobile, landline or VoIP before you text or call it. Every lookup returns three line-type
fields for one credit: nanpType from the numbering plan, plus
dipCarrierType and dipCarrierSubType from a live carrier dip.
Across all lookups on our validation network, about 32% of numbers are non-mobile (landline or VoIP), so line type is worth checking before you pick a channel. The Free plan includes 500 lookups a month.
The three line-type fields
| Field | Values | What it tells you |
|---|---|---|
nanpType | "mobile", "landline", "not-mobile" | Line type per the North American Numbering Plan. The quickest mobile vs not-mobile split. |
dipCarrierType | "mobile", "landline", "invalid", "undefined" | Broad type of the carrier serving the number now, from the live carrier dip, so it follows the number after a port. |
dipCarrierSubType | WIRELESS, PCS, WRSL, ILEC, RBOC, CLEC, IPES and others | WIRELESS and PCS are mobile networks, WRSL is wireless resale (MVNO), ILEC, RBOC and CLEC are wireline carriers, and IPES (IP-Enabled Service) is VoIP. |
The docs list every sub-type code. Values are strings.
How mobile, landline and VoIP numbers look in a response
| Field | Mobile | Landline | VoIP |
|---|---|---|---|
nanpType | "mobile" | "landline" or "not-mobile" | "not-mobile" |
dipCarrierType | "mobile" | "landline" | "landline" |
dipCarrierSubType | "WIRELESS" or "PCS" | "ILEC", "RBOC" or "CLEC" | "IPES" |
action | "send" | "unsubscribe" | "unsubscribe" |
Two things to note. action is an SMS recommendation, so a landline reads
"unsubscribe" with the reason "Not a valid mobile number"; the
landline SMS lookup finds the landlines that can take texts.
And a VoIP carrier can report dipCarrierType: "landline", so when VoIP matters to
you, branch on dipCarrierSubType: "IPES".
Example request and response
curl --request POST \
--url 'https://api.checkthatphone.com/v1/lookup' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{"phone": "202-555-0118"}' An illustrative response for a wireline (RBOC) landline. The number is a fictional 555 number; field names and formats match the live API:
{
"success": true,
"credits_used": 1,
"data": {
"subscriber": "2025550118",
"optDate": "2026-10-03T15:11:47.902Z",
"action": "unsubscribe",
"deliverable": "false",
"reason": "Not a valid mobile number",
"nanpType": "not-mobile",
"blackList": "false",
"dip": "success",
"dipLrn": "2025550118",
"dipPorted": "false",
"dipOcn": "9211",
"dipCarrier": "Verizon",
"dipCarrierSubType": "RBOC",
"dipCarrierType": "landline",
"geoState": "DC",
"geoCity": "washington",
"geoCountry": "US",
"geoSource": "area-code",
"timezone": "America/New_York",
"tzOffset": 5,
"error": "false"
}
} What to do with line type
- Pick the channel. Mobile numbers can go text-first; landlines get a call, or a landline SMS check first. Sales lead validation walks through the routing.
- Clean SMS lists.
action: "unsubscribe"withreason: "Not a valid mobile number"marks numbers that aren't SMS-eligible. Contact list hygiene. - Score signups.
IPESstacked withdipPorted: "true"is a strong fraud signal at signup. KYC phone verification. - Whole lists at once. Upload a CSV and get the same fields per row: bulk phone validation.
How this compares with other line-type APIs
Some providers return finer categories. Twilio's Line Type Intelligence, for example, separates fixed and non-fixed VoIP and labels toll-free, premium and other number types, for numbers worldwide (Twilio docs, checked October 2026). We cover US and Canadian numbers only and don't split fixed from non-fixed VoIP. In exchange, the same credit includes the carrier, porting status, deliverability and location. See the full CheckThatPhone vs Twilio Lookup comparison.
Pricing
Line type is included in every lookup: one credit, no separate fee. The Free plan has 500 lookups a month, hard-capped. Paid plans are $5 for 1,000, $30 for 10,000, $100 for 100,000, $450 for 500,000 lookups a month, with overage from $0.005 down to $0.0009 per lookup. Failed lookups are free. See pricing.
Line type lookup: common questions
How do I check if a phone number is mobile or landline?
Send it to POST /v1/lookup and read nanpType ("mobile", "landline" or "not-mobile") and dipCarrierType ("mobile" or "landline" for valid numbers). Both come back on every lookup for one credit.
Can the API detect VoIP numbers?
Yes. VoIP carriers return dipCarrierSubType: "IPES" (IP-Enabled Service). Branch on the sub-type, because a VoIP carrier can report dipCarrierType as "landline". We do not split fixed and non-fixed VoIP.
Can a landline receive text messages?
Some can. About 7% of landlines we check are SMS-capable. Turn on the landline SMS lookup (+1 credit, charged only on landlines) to find them.
Is line type included in the price?
Yes. Line type comes with every lookup at one credit, alongside carrier, porting, deliverability and location. There is no separate line-type fee.
Related
- Field reference: NANP and carrier fields in the docs
- Carrier and porting detail: Carrier lookup API
- Text-enabled landlines: Landline SMS lookup
- Background: Understanding line types: mobile vs. VoIP vs. landline
- Background: 10DLC registration and why phone validation matters