Verification methodology

How CarrierLookup looks up a phone number's carrier

CarrierLookup returns the carrier a phone number was originally allocated to for service_type=carrier, synchronously for single and multi lookups. This page covers the lookup flow, the number format, and what the result does and does not say.

Reviewed September 18, 2026

What happens during a carrier lookup?

CarrierLookup looks up one phone number at a time: submit it in E.164 form, and the extra object comes back in the same HTTP response. It describes the network the number was originally allocated to — not the current carrier after porting, and not whether the number is reachable.

Complete one check

This section covers realtime checks: the SaaS dashboard and the synchronous REST endpoints share one check service and one response meaning. Very large lists have an asynchronous bulk option, covered at the end of this page.

  1. 1

    Submit a phone number

    Submit one complete phone number, as described in the API documentation.

  2. 2

    Use service_type=carrier

    The carrier product returns the network the number was originally allocated to, with line type and allocation region.

  3. 3

    Read the result

    Read the extra object in the same response. Run a new lookup when you need current data.

Which phone number format to submit

CarrierLookup accepts one phone number per lookup, written in E.164 format: a plus sign, the country code, then the subscriber number with no spaces or separators.

  • Submit the complete number, including the country code. A national number without one cannot be looked up.
  • National formats with leading zeros, spaces, dashes or brackets are not accepted — send only + and digits.
  • Numbers in the wrong format are rejected before any charge; a rejected format is not a “no allocation data” result.

What does the extra object mean?

extra is the answer of a carrier lookup. It only appears in a successful response and carries the originally allocated carrier and line type, the country, and the allocation region and city when the provider supplies them. Anything else — a timeout, an undetermined result, an invalid number — comes back as an error code instead, and that lookup is refunded automatically. An empty value never means “no carrier”; it means the provider did not supply that field.

  • extra.carrier is the network the number was allocated to when it was issued.
  • extra.number_type, extra.region and extra.city may be empty when the provider does not supply them; the keys are always present.
  • Handle other outcomes according to the API response code; do not infer allocation yourself.

Use the result within its scope

A check reflects the status at request time. It is not identity verification or permission to contact someone.

  • It does not confirm who owns the phone number, and it does not follow number portability — a ported number still reports the carrier its range was originally allocated to.
  • A carrier result does not establish consent to contact the number.
  • Run a new check when the business decision needs a current status.

Very large lists: the asynchronous option

The dashboard multi check and the API multi endpoint cover most lists. Only when a list far exceeds those limits does it make sense to submit the whole file as one asynchronous bulk task.

  • Upload a .txt or .csv with one phone number per line, from the bulk check page or through the API.
  • Pick the country the numbers belong to when you upload; every line should still be in E.164 form.
  • Balance is reserved for the valid lines on submit, you are charged only for phone numbers that return a result, and the difference is refunded.
  • The task runs in the background; download the result file when it finishes. A failed task is refunded in full.

Related standards