Phone Number Validation Endpoint

On this page, we’ll dive into the phone number validation endpoint you can use to validate any given phone number and retrieve its carrier and location information.


GET/v1/validate/{number}

Validate Phone Number

This endpoint validates a phone number and returns its formatting, country, location, carrier and line type.

Required attributes

  • Name
    number
    Type
    string, path parameter
    Description

    The phone number you want to query (Either: including the country prefix, or without and you specify the country_code).

Optional attributes

  • Name
    country_code
    Type
    string
    Description

    An ISO Alpha 2 Country Code for the phone number (e.g. US). If you specify this parameter you do not need to prepend the country prefix. A number that starts with + or 00 is already international and is looked up as sent.

Possible line_type values

  • landline
  • mobile
  • satellite
  • paging
  • special_services
  • premium_rate
  • toll_free
  • N/A

Formats, number type and time zones

Every response also carries fields from the international numbering metadata (Google’s libphonenumber), which is updated with every numbering-plan change worldwide:

  • Name
    e164_format
    Type
    string | null
    Description

    The number in E.164 format (+14158586273), the format SMS and voice providers expect.

  • Name
    national_format
    Type
    string | null
    Description

    The number as dialled within its country, with the country’s usual grouping ((415) 858-6273, 020 7946 0000).

  • Name
    rfc3966_format
    Type
    string | null
    Description

    The number as a tel: link (tel:+1-415-858-6273).

  • Name
    possible
    Type
    boolean
    Description

    Whether the number has a possible length for its country. A possible number can still be unassigned, so use valid to decide.

  • Name
    number_type
    Type
    string | null
    Description

    A finer classification next to line_type: landline, mobile, landline_or_mobile, toll_free, premium_rate, shared_cost, voip, personal_number, pager, uan, voicemail or unknown. In the US and Canada mobile and landline numbers share the same ranges, hence landline_or_mobile. Use voip to spot internet-based numbers in sign-up flows. null when the number is not valid in that metadata.

  • Name
    timezones
    Type
    array
    Description

    The IANA time zones the number’s area lies in, e.g. ["America/Los_Angeles"]. Useful for calling or messaging at a sensible local time. Empty when unknown.

To validate many numbers at once, use the batch endpoint.

Invalid numbers

A well-formed but unrecognised number does not produce an error: the API returns HTTP 200 with "valid": false, empty strings for the formatting, country, location and carrier fields, and "line_type": "N/A".

Request

GET
/v1/validate/{number}
curl -G https://api.numlookupapi.com/v1/validate/+14158586273 \
    -H "apikey: YOUR-API-KEY"

Full Response

{
    "valid": true,
    "number": "14158586273",
    "local_format": "4158586273",
    "international_format": "+14158586273",
    "country_prefix": "+1",
    "country_code": "US",
    "country_name": "United States of America",
    "location": "Novato",
    "carrier": "AT&T Mobility LLC",
    "line_type": "mobile",
    "e164_format": "+14158586273",
    "national_format": "(415) 858-6273",
    "rfc3966_format": "tel:+1-415-858-6273",
    "possible": true,
    "number_type": "landline_or_mobile",
    "timezones": ["America/Los_Angeles"]
}

Response for an unrecognised number

{
    "valid": false,
    "number": "14158586273",
    "local_format": "",
    "international_format": "",
    "country_prefix": "",
    "country_code": "",
    "country_name": "",
    "location": "",
    "carrier": "",
    "line_type": "N/A",
    "e164_format": "+14158586273",
    "national_format": "(415) 858-6273",
    "rfc3966_format": "tel:+1-415-858-6273",
    "possible": true,
    "number_type": null,
    "timezones": []
}