← Blog

When a live HLR dip is worth five credits

A live network dip costs more than a metadata check, and on most rows it buys nothing you will act on. The rows where it pays share a shape, and it is worth knowing that shape before you spend.

Contents

There are two different questions you can ask about a phone number, and they have different prices.

The first is whether the number could ring: is it well-formed, does it sit in an allocated range, and what is that range designated for. That is metadata, it is fast, and on Boundstone it costs one credit.

The second is whether it does: who carries it right now, whether it has been ported away from its original network, and whether the network says it is currently reachable. That requires asking the network, and it costs five credits.

Most rows do not need the second question. Knowing which ones do is the whole skill.

What the dip actually returns

Send hlr:true on a paid plan and Boundstone queries the Home Location Register — the mobile network's own record of the subscriber. The response gains:

  • current_carrier — who serves the number today, which is not necessarily who was allocated the range.
  • ported — whether it has moved networks.
  • reachabletrue only when the network answered CONNECTED. Anything less determinate comes back null rather than being rounded to a verdict.
  • roaming — whether the handset is currently on another network.

And the arrays change. carrier_lookup, ported_status and hlr_liveness move out of checks.not_performed and into checks.performed, because they genuinely ran. That movement is the point: you can tell from the payload alone which question was answered.

The refund is part of the price

Networks do not always answer. When a dip cannot be resolved, Boundstone abstains and refunds the five credits rather than returning a confident-looking null you have paid for.

This is worth checking with any vendor you evaluate, because it changes the real per-answer cost substantially. A provider that bills every attempt is charging you for its supplier's silence.

Where the dip pays

The rows where five credits is a good trade share a shape: the downstream action is expensive, irreversible, or both.

The ambiguous bucket. In North America the numbering plan shares ranges, so a large share of numbers return fixed_line_or_mobile — an honest abstention. If you were going to guess, a dip replaces the guess with the network's answer.

Before a paid send at volume. If a message costs you money per recipient, spending five credits to avoid spending it on an unreachable handset is straightforward arithmetic with your own numbers.

Aged lists. Metadata does not decay, which is exactly the problem. A number allocated to a mobile range five years ago still reads mobile today whether or not anyone has it. Porting and disconnection are invisible to a metadata check by construction.

High-value, low-volume rows. When the list is small and each contact matters, the marginal cost of certainty is trivial.

Where it does not

Fresh lists with clean metadata. If a number is well-formed, unambiguously mobile, and collected last week, the dip usually confirms what you already believed.

Rows you are about to drop anyway. Dip after filtering, never before. Paying to learn that an invalid number is also unreachable is paying twice for the same decision.

Free-tier work. HLR is a paid-plan feature. On the free tier the base checks run and the response marks the live layer not_performed — honestly, and without a paywall message dressed up as a result.

Compliance questions. A dip tells you the network's view of a number. It does not tell you whether you are permitted to contact it. DNC scrubbing and consent remain separate steps with separate tools, and none of this is legal advice.

The workflow that usually wins

  1. Screen the whole file on metadata with POST /v1/bulk/phone — one credit per row, refunded on any row that errors.
  2. Drop everything where valid is not true.
  3. Segment on line_type.
  4. Dip only the segment where a wrong answer costs you something — typically the ambiguous bucket and anything you are about to pay to reach.

That shape spends five credits where they change a decision and one credit everywhere else.

The short version

  • Two questions, two prices. Metadata asks whether a number could ring; an HLR dip asks whether it does.
  • The payload shows which you bought. carrier_lookup, ported_status and hlr_liveness move into checks.performed only when the dip actually ran.
  • reachable is true only on a CONNECTED answer. Anything less determinate returns null rather than a rounded verdict.
  • Abstentions are refunded. Five credits buys an answer, not an attempt — worth checking with every vendor you compare.
  • Dip the segment, not the list. Filter, segment, then spend where being wrong is expensive.
  • It is not a compliance layer. DNC and consent are separate steps, and this is not legal advice.

Frequently asked questions

What does an HLR lookup tell you that phone validation does not?

Metadata validation answers whether a number is well-formed, sits in an allocated range and what type of line that range is designated for. An HLR dip queries the mobile network itself, so it can return the current carrier, whether the number has been ported away from its original network, and a reachable value that reads true only when the network answered CONNECTED. In Boundstone's payload the difference is visible: carrier_lookup, ported_status and hlr_liveness move from checks.not_performed into checks.performed when you send hlr:true.

How much does an HLR dip cost on Boundstone?

Five credits per dip, on a paid plan. It is not available on the free tier. When the network cannot resolve the number the dip abstains and the credits are refunded, so you are not charged for a non-answer — a distinction worth checking with any vendor, because a per-lookup charge that bills for indeterminate results changes the economics considerably.

Should I run HLR on my whole list?

Usually not. On rows where metadata already gives you a confident answer and the cost of being wrong is low, the dip buys information you will not act on. It pays where the downstream action is expensive or irreversible — a paid SMS send, a compliance-adjacent routing decision, an ambiguous fixed_line_or_mobile row you would otherwise guess on. Screen the whole list on metadata first, then dip the segment where a wrong answer actually costs something.

Thomas Tsui

Founder of Boundstone — building phone, email and IP validation you can actually verify.

One honest API for email, phone and IP — every response lists what it checked and what it didn't claim to. Free tier: 250 credits/month, no card, credits never expire.

More from Boundstone — API documentation · Benchmark methodology · The benchmark series · Buyer's checklist