Validate Mexican phone numbers: leads and anti-fraud

Before you spend on SMS or calls, clean the list: drop the nonexistent series, split mobile from landline, and segment by region — with official IFT data, at 0.01 u per number.

A phone list is always dirtier than it looks. Ten-digit numbers nobody answers because they never existed, landlines mixed into an SMS campaign that only bills for the landlines, contacts from another state slipping into a regional promo. Each of those records costs you — in wasted sends, call-center time, and metrics that lie. The good news: a lot of that dirt can be caught before you spend, by querying the official IFT catalog.

This post is the practical side of the post on how to look up a number's carrier and location: that one explains what the API returns; this one, how to use that response to clean leads and stop fraud.

What you can verify (and what you can't)

One lookup per number against the phone service gives you, from the IFT National Numbering Plan:

  • Whether the series exists. A 404 means that numbering block isn't assigned — a well-formed number that is, almost always, nonexistent or not routable.
  • Mobile or landline (tipo_red) — so you don't send SMS to a landline.
  • The region (estado, municipio, poblacion) — to segment, or to sanity-check against a declared address.
  • The assigned carrier (razon_social) — the one on the series in the PNN.

And what you can't: tell whether a number was ported to another company. The carrier the API returns is the one assigned to the series, not the current one. If a Telcel number's owner took it to Movistar, the API will still say Telcel. Subscriber portability doesn't live in the PNN, so don't use it as a “changed companies” signal.

Case 1: clean a list before a campaign

You have 50,000 phone numbers captured over years of forms, and you're about to send SMS. Sweep the list against the endpoint: the ones that return 404 you flag as invalid (don't spend a send on them), and of the valid ones you keep those with tipo_red: "MOVIL". With that, before paying for the first SMS, you've already cut the landlines and the nonexistent numbers.

curl -X GET "https://api.tlaloc.sh/mx/v1/phone?number=8112345678" \
  -H "Authorization: Bearer tlmx_YOUR_API_KEY"

A valid mobile number responds with its series (an array with at least one record and tipo_red: "MOVIL"); a nonexistent one responds 404. That's the entire cleanup logic. And since each lookup costs 0.01 u, cleaning the 50,000 runs about $500 MXN — less than sending SMS to the dead numbers would.

Case 2: pick the channel per number

Not every contact is reached the same way. With tipo_red you decide, number by number, between SMS (mobiles only), a call, or WhatsApp. Routing the channel well raises contact rate and lowers cost: you stop burning messages on landlines and stop dialing numbers that don't exist.

Case 3: anti-fraud and lead validation

In onboarding and anti-fraud, the phone is one of the first signals you can verify without friction:

  • Geographic consistency. If a lead claims to be from Yucatán but their number is a series assigned in another state, that's not proof of fraud, but it is a cheap flag to escalate the review.
  • Nonexistent series. A number that returns 404 at sign-up is suspicious: nobody receives the verification SMS on a number that doesn't exist. Catching it in the form prevents junk accounts.
  • Landline posing as mobile. A record that requires a “cell phone” and carries a landline (tipo_red: "FIJO") deserves a second look.

None of this replaces a real identity system, but it's a cheap, automatable validation layer that cuts the noise before it reaches more expensive processes.

How you integrate it

It's one HTTP call per number, so it fits any flow: inline in the sign-up form, in a batch job over your base, or inside your scoring pipeline. There's no state to manage and no session to create — you ask about a number and decide from the response. If you'd rather do it from an AI assistant, the consultar_telefono tool is available on the MCP server.

Price

0.01 u ($0.01 MXN, VAT included) per lookup, prepaid, pay per call, no monthly plan. The price is set precisely so that cleaning a full base isn't a budget decision.

Get started

Official source: Federal Telecommunications Institute (IFT) — administrator of the National Numbering Plan. The reported carrier is the one assigned to the series; validation does not detect subscriber portability.

← Back to blog Next: Look up a number's carrier →