Guides

Free carrier lookup: how to find a phone number's carrier (and when free isn't enough)

Free carrier lookup methods (prefix data, regulator tables, web tools), why they fail for ported numbers, and when a paid live lookup is worth it.

By Published 10 min read

On this page

A free carrier lookup tells you which carrier a phone number's range was allocated to, using numbering-plan data: libphonenumber's carrier mapper, regulator number-range files, or free web tools built on them. In countries with number portability, that answer is wrong for every ported number. To find the carrier serving a number today, you need a lookup against current porting or network data.

That gap is the whole story of "free vs paid". This guide lists the free methods that actually exist, shows exactly where each one stops, and gives a decision table for the common jobs: a one-off check, cleaning a list, routing SMS and screening sign-ups. If you want the concepts behind carrier and line type data first, read carrier and line type lookup explained. If you need the network code rather than the name, see how to get the MCC and MNC from a phone number.

What free carrier lookup methods are there?

There are four kinds, and all but the last read the same thing: who the number's range belongs to on paper.

MethodWhat you getFollows ported numbers?Works in bulk?Typical limits
Prefix data in code (libphonenumber carrier mapper)Name of the carrier the range was allocated to, for mobile rangesNoYes, offline, unlimitedMany countries and ranges have no carrier data
Regulator number-range files (NANPA, Ofcom and others)Range holder per prefix blockNoYes, after you build a matcherOne country per file, formats differ, you maintain updates
Operator or regulator lookup pagesDepends on the service; some show the current operatorSometimesNoOne number at a time, terms usually forbid automation
Free web toolsUsually range data, sometimes a few live answersRarely clearNo, or a small daily quotaDaily limits, sign-up walls, unclear data age

Prefix data in code

The most widely used free source is the carrier mapper that ships with Google's libphonenumber. Its own documentation is unusually honest about what it returns: "The carrier name is the one the number was originally allocated to", and "if the country supports mobile number portability the number might not belong to the returned carrier anymore" (libphonenumber source). The library's FAQ says the same: for regions with portability, "we return the original carrier for the supplied number" (libphonenumber FAQ).

The library even includes a method, getSafeDisplayName, that returns a name only when it is "safe" to show, meaning the number is valid and its region "doesn't support mobile number portability". In practice that excludes most large markets. Treat its output as a hint about the original network, which is still useful for country and range checks.

Regulator number-range tables

National numbering administrators publish who holds which block of numbers. In the US and Canada, NANPA publishes Central Office Code assignment records sorted by state and NPA-NXX (area code and prefix), with the operating company number and company name for each block. NANPA itself notes that these files "do not include all of the information required for routing and billing" (NANPA). In the UK, Ofcom publishes downloadable numbering data listing allocated number ranges and the providers they were allocated to (Ofcom).

These files are authoritative for allocation. They say nothing about which numbers in a block have since been ported out, and they don't follow individual subscribers. They are a good source if you build your own prefix table, but you have to parse a different format per country and keep it updated.

Operator and regulator lookup pages

A few regulators and operators offer a lookup page for single numbers. Sweden's regulator PTS, for example, runs an "Operator lookup" e-service to "identify which operator a number belongs to" (PTS). Where such a service reads current porting data, it is the best free answer for one number in that country. But coverage stops at the border, it is built for people checking a single number by hand, and scraping it is neither reliable nor acceptable.

Free web tools

Search for "free carrier lookup" and you'll find many web forms. Most answer from range data, some add a few live answers per day, and almost all cap usage with a daily limit, a captcha or a sign-up. Before you trust one for anything else, look for three things: does it say whether the number was ported, does it show when the answer was obtained, and does it say what happens to the numbers you type in.

A phone number card feeds three rising steps: a prefix table with a question mark on the low free step, a list sheet and database on the bulk step, and a network tower with a confirmed result card on the top live step.A phone number card feeds three rising steps: a prefix table with a question mark on the low free step, a list sheet and database on the bulk step, and a network tower with a confirmed result card on the top live step.
Free prefix data names the original carrier; current and live lookups show the network today.

Why are free carrier lookups wrong for ported numbers?

Because the prefix stays with the number, not with the network. Mobile number portability lets a subscriber keep their number when they switch carrier. The digits don't change, so any lookup that reads the digits still points to the original carrier.

In the US, wireless local number portability started on 24 November 2003 (FCC), and numbers can also move between landline, mobile and VoIP services. A number that was allocated as a landline block may now be a mobile phone, and the other way round. Most countries with competing mobile networks have portability today; our mobile number portability atlas lists launch dates and published porting volumes for 67 countries.

The errors that follow are predictable:

  • Wrong carrier name. The free lookup names the original carrier, not the current one.
  • Wrong line type. A landline range that was ported to a mobile or VoIP service still looks like a landline, and vice versa.
  • No answer at all. Many ranges have no carrier data in free sources, especially newer allocations and smaller operators.
  • Stale data. A table you downloaded last year misses ranges allocated since then.

Our post on why carrier lookups can be wrong explains how networks route ported numbers and how to handle porting in code.

What does a paid live carrier lookup add?

It answers from data about the number today rather than the allocation table. Three kinds of lookup are often all called "carrier lookup", and each adds something different:

CheckWhat it adds over free range dataPorted numbersModes
Carrier lookup (carrier, beta)Current carrier, line type, and the original carrier when it differsYes, as far as our data shows; coverage varies by countryReal time + bulk
MNP lookup (mnp)Whether the number was ported, plus the current network code (MCC/MNC)YesReal time + bulk
HLR lookup (hlr)A live question to the home network: reachable, unreachable or not assigned, plus ported and current networkYesReal time + bulk

The carrier lookup is the direct replacement for a free lookup: same question, current answer, plus line_type so you can drop landlines and toll-free numbers before you send. The MNP lookup is the right tool when you route SMS by network. The HLR lookup is the only one that tells you whether a mobile number is assigned and reachable right now.

Every answer carries checked_at, so you know how old it is. When we have no data for a number, the result is unknown (for example with reason NO_DATA) instead of a guess. Unknown or inconclusive results are never charged.

Should you use a free or a paid carrier lookup?

It depends on what a wrong answer costs you. If nothing happens when the carrier is wrong, free is enough. If you spend money or make a decision based on it, use a current lookup.

Use caseFree range dataPaid lookup to useWhy
One-off check of a single numberUsually enoughOptionalA curious look rarely needs the current carrier; a regulator lookup page may answer it
Country and rough network split of a listEnoughNot neededAllocation is accurate for country and range-level statistics
Cleaning a list before an SMS campaignNot enoughCarrier lookup in bulkPorted landlines and mobile-to-VoIP moves are invisible in range data; line type decides whether a text can arrive
SMS routing and per-network cost estimatesNot enoughMNP lookupRouting to the original network after a port can fail or cost more
Removing dead numbersNot ableHLR lookupRange data can't see whether a number is still assigned
Sign-up and OTP fraud screeningNot enoughCarrier lookup in real time, plus HLR where it mattersLine type and the current carrier are signals; a stale answer misleads the risk decision
US/Canada calling or texting listsNot enoughUS/CA carrier lookup in bulkPorting between carriers and line types is common in North America

A sensible pattern is to use free data first, then pay only where it matters. Validate the format and drop duplicates for free, use range data to sort numbers by country, then run the current lookup only on the numbers you will actually message or score. The SMS routing use case shows how teams combine the checks.

How do you run a carrier lookup in real time?

Send up to 100 numbers to POST /v1/lookup with checks: ["carrier"]. This is the documented request with a test number; test keys are free and never reach a real network:

Shell
curl https://api.mobilevalidate.com/v1/lookup \
  -H "Authorization: Bearer $MOBILEVALIDATE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"numbers": ["+447700900001"], "checks": ["carrier"]}'

The result for each number is under checks["network.carrier"], with attributes.line_type, attributes.carrier, attributes.original_carrier (only when it differs) and attributes.country. The carrier lookup page shows the full test-mode response and every field. You can add "mnp" or "hlr" to checks in the same request.

How do you do a carrier lookup in bulk?

Use a bulk job. A job takes up to 50,000 numbers, runs in the background and gives you a CSV or NDJSON file with your original rows in their original order. Start with the free estimate, which checks nothing and charges nothing:

Shell
curl https://api.mobilevalidate.com/v1/jobs/estimate \
  -H "Authorization: Bearer $MOBILEVALIDATE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"numbers": ["+447700900001", "+447700900002", "+447700900003"], "checks": ["carrier"]}'

The estimate counts valid, invalid, duplicate and cached rows and shows the maximum cost. Create the job with the same body at POST /v1/jobs, add an Idempotency-Key header, and pass max_cost so the job can never cost more than you agreed to. If you'd rather not write code, the dashboard's Bulk jobs › Upload a list takes a CSV file and shows the same estimate. The bulk jobs docs and our step-by-step guide on cleaning a phone list in bulk cover progress, downloads and data deletion. Current prices per check are on the pricing page.

Bulk limits that matter for list cleaning:

  • Requests that look like sequential number ranges (20 or more consecutive numbers) are refused with suspected_enumeration.
  • A daily numbers cap applies per account; GET /v1/limits shows yours.
  • Repeat checks inside the freshness window come from your account's cache and are free.

What is different for US carrier lookups?

In the US the prefix is an especially weak guide. The area code and exchange (NPA-NXX) show the company a block of numbers was assigned to in NANPA's records, but subscribers have been able to keep their wireless number when changing carrier since November 2003, and numbers move between landline, mobile and VoIP services too. A free NPA-NXX lookup will therefore misname the carrier, and often the line type, for a meaningful share of any older US list.

For US and Canadian numbers, use the US/CA carrier lookup (network.carrier_us). It returns the current carrier and line type, follows ported numbers and runs in bulk jobs only; a real-time request is refused with service_disabled. Numbers from other +1 countries, such as Caribbean numbers, are unsupported_country and free. For real-time checks on North American numbers, the general carrier lookup works too.

Two things a US carrier lookup does not do. It doesn't tell you whether a number was reassigned to a new subscriber, which is what the FCC's Reassigned Numbers Database is for. And it doesn't create consent: US calling and texting rules apply whatever the line type.

How do you use carrier lookups responsibly?

A carrier and line type are facts about a number, but the number usually belongs to a person. Keep to these rules:

  • Check only numbers you have a lawful reason to process, such as customers, sign-ups and leads who gave you their number.
  • No identity lookups. A carrier lookup never returns a name, address, photo or location, and you shouldn't combine it with other data to identify people.
  • No list building or unsolicited messaging. Our acceptable use policy forbids using checks to find recipients for messages they didn't ask for, and anti-enumeration controls refuse sequential ranges.
  • No eligibility decisions. Don't use line type or carrier to decide credit, housing, employment or insurance.
  • A voip answer is not proof of fraud. Many real customers use VoIP numbers; treat it as a reason for an extra step, not an automatic block.

People can object to their number being checked through the opt-out form. Suppressed numbers are skipped and never charged.

What are the key takeaways?

  • A free carrier lookup shows the carrier a number's range was allocated to, from libphonenumber, regulator files or free web tools.
  • In countries with number portability, that answer is wrong for every ported number, and the line type can be wrong too.
  • Free data is enough for one-off checks and country splits; it is not enough for SMS routing, list cleaning or fraud signals.
  • Use the carrier lookup for current carrier and line type, the MNP lookup for routing, and the HLR lookup for live status.
  • For lists, run the free estimate first and pass max_cost; for US and Canadian lists, use the bulk US/CA carrier lookup.
  • Unknown or inconclusive results are never charged; see pricing for current prices.

Sources

  1. PhoneNumberToCarrierMapper (getNameForValidNumber, getSafeDisplayName) — Google libphonenumber, 2026
  2. libphonenumber FAQ: number portability and carrier data — Google libphonenumber, 2026
  3. Central Office Code Assignment Records — North American Numbering Plan Administrator (NANPA), 2026
  4. Download numbering data — Ofcom, 2026
  5. Numbering and addressing (Operator lookup e-service) — Swedish Post and Telecom Authority (PTS), 2026
  6. Wireless Local Number Portability (WLNP) — Federal Communications Commission, 2025
  7. Reassigned Numbers Database — Federal Communications Commission, 2026

Frequently asked questions

Is there a free carrier lookup?

Yes. Numbering-plan data, such as the carrier mapper in the open-source libphonenumber library or the number-range files published by regulators, tells you for free which carrier a number's range was allocated to. In countries with number portability that is the original carrier, which can be wrong for any number that has moved to another network.

Why does a free carrier lookup show the wrong carrier?

Most free lookups read the number's prefix and match it to the range a regulator allocated to a carrier. When a subscriber ports their number to another carrier, the prefix stays the same, so the free answer still shows the old carrier. Only a lookup against current porting or network data shows the carrier serving the number today.

When is a free carrier lookup good enough?

For a one-off check of a number in a country without mobile number portability, for a rough country or network split of a list, or as a first filter before a paid check. It is not good enough for SMS routing, per-carrier cost estimates or fraud signals, where a wrong carrier leads to wrong decisions.

How do I look up the carrier of many numbers at once?

Send the list to a bulk job. With MobileValidate that is POST /v1/jobs with checks: ["carrier"] for up to 50,000 numbers per job. Run the free estimate (POST /v1/jobs/estimate) first: it removes invalid rows and duplicates and shows the maximum cost before anything is checked.

How do I find the carrier of a US phone number?

The area code and exchange (NPA-NXX) only show the carrier the number block was assigned to. US wireless numbers have been portable since November 2003, and landline numbers can move to mobile or VoIP. For the current carrier and line type, use a lookup that follows ports, such as MobileValidate's US/CA carrier lookup in bulk jobs.

Does a carrier lookup tell me who owns the number?

No. A carrier lookup describes the number: its line type and the network that serves it. It never returns the subscriber's name, address or photo, and it does not tell you whether the phone is switched on. For live reachability you need an HLR lookup.

All articles

Know before you send.

Tell us about your use case. We review every request and set you up with test and live keys.