Use case

Call-center and spam screening

Screen inbound callers and outbound dialling lists by line type, carrier and live network status and, where enabled, by spam-report reputation.

Last updated

A snow leopard on a mountain ridge framed by cards for phone validation, e-mail deliverability and a low-risk result.
Real people, real data, real business.

Call-center screening checks phone numbers before or during a call, so agents and diallers spend time on real contacts. The carrier lookup reports line type, carrier and country; the HLR lookup says whether a mobile number is live. Where enabled, spam reputation reports whether a number appears in nuisance-call reports, with reasons. Spam reputation is in limited access.

What problems does screening solve?

Contact centers lose time and money in both directions:

  • Inbound. Robocalls and nuisance calls tie up agents and IVR minutes. Scam callers pretend to be customers. A reputation signal lets you send high-risk calls to an IVR or a verification step instead of a live agent.
  • Outbound. Dialling lists contain fixed lines where you expected mobiles, numbers that are no longer assigned, numbers that were recently offered as unassigned, and numbers with fraud reports. Checking them first protects agent time and your caller reputation.
  • Lead intake. Web leads with a spoofed or recently unassigned number are a common sign of fake leads. See lead verification.

Spam reputation works from report classes described in general terms: telecom regulator actions, government nuisance-call complaint data, community reports and a signal for recently unassigned numbers. There's also a VoIP hint, which is not a risk by itself. Every level comes with the reasons behind it. Report texts and reporter details are never returned. The HLR lookup answers a different question: whether the mobile network considers the number assigned and reachable at the moment you ask.

How does the workflow look?

Inbound calls:

  1. Your telephony platform receives the caller ID.
  2. Call POST /v1/lookup with checks: ["spam", "carrier"] and a short wait, for example 3 seconds.
  3. Route the call using the table below and log the level, not the raw response.
  4. If the answer isn't back in time, route the call normally. Never hold a caller on a pending check.

Outbound lists:

  1. Call POST /v1/jobs/estimate (free) with the list and checks: ["carrier", "hlr"]. For US and Canadian lists, add network.carrier_us, and add spam if it's enabled for your account.
  2. Create the job with POST /v1/jobs, passing the estimate as max_cost.
  3. Download the CSV. Each check has its own columns, such as number.spam.risk_level and network.carrier.line_type.
  4. Remove or reorder rows before they reach the dialler.

Which checks answer which question?

CheckWhat it answersWhen to run itLink
carrierMobile, fixed line or VoIP? Which carrier and country?Inbound calls; outbound list preparationCarrier lookup
network.carrier_us (bulk)Current carrier for US and Canadian numbersUS/CA outbound listsUS/CA carrier lookup
hlrIs the mobile number assigned and reachable now?Outbound lists before a campaignHLR lookup
spam (limited access)Is the number in spam or nuisance-call reports, and why?Inbound calls; outbound lists; lead intakeSpam reputation

What should you do with each result?

ResultSuggested action
risk_level: high (score ≥ 80 and a regulator action or two or more signal classes)Inbound: IVR or verification step. Outbound: remove from the list
risk_level: mediumInbound: ask for extra verification. Outbound: review
risk_level: lowHandle normally and watch for patterns
risk_level: no_reportsNo negative signal. Not proof of safety
reason_unassigned: trueTreat as a possible spoofed caller ID or fake lead
HLR status: invalidOutbound: remove; the number isn't assigned
HLR status: unreachableOutbound: move to a later retry slot
line_type: fixed_line on a mobile campaignMove to the voice-only queue
unknown / unsupported_countryHandle normally; not charged

What does a request look like?

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

Runs as pasted with the public sandbox key, which answers the test values only. In the SDKs, omit the key to use MOBILEVALIDATE_API_KEY.

In test mode the whole +44 7700 900xxx test range is allowed for spam reputation, so the documented numbers work. Response (excerpt, test mode: checks of the first item):

JSON
{
  "number.spam": {
    "service": "number.spam", "status": "completed", "registered": true,
    "attributes": {
      "risk_level": "high", "risk_score": 95, "reason_regulator": true, "reason_government": false,
      "reason_community": true, "reason_unassigned": false, "voip_range": false, "top_category": "robocall",
      "first_seen": "2025-11", "last_seen": "2026-08", "sources": 2
    },
    "confidence": "high", "confidence_score": 0.99, "checked_at": "2026-09-25T14:28:24.778Z",
    "cached": false, "age_seconds": 0, "billed": false, "reason": null, "poll_after_ms": null
  },
  "network.carrier": {
    "service": "network.carrier", "status": "completed", "registered": true,
    "attributes": {"line_type": "mobile", "carrier": "Test Carrier", "country": "GB"},
    "confidence": "high", "confidence_score": 0.99, "checked_at": "2026-09-25T14:28:24.778Z",
    "cached": false, "age_seconds": 0, "billed": false, "reason": null, "poll_after_ms": null
  }
}

For attributes services, registered: true means "data found". The answer is in attributes. This test caller is high risk with a regulator action, so an inbound call would go to the IVR or a verification step.

How much does it cost?

You're not charged for inconclusive results (unknown, unsupported country, timeout, invalid, duplicate). For spam reputation, every level, including no_reports, is a conclusive answer and is billed. Numbers from sanctioned countries and regions return unsupported_country for free. The carrier lookup is billed when it returns a carrier. When no carrier data exists for a number, the answer is unknown and free. For the HLR lookup, reachable, unreachable and invalid are all billed. See pricing for current rates.

Spam answers come from our own reference data, which is refreshed daily. That keeps real-time answers fast, and repeat checks within 24 hours are served from your account's cache for free. That matters for repeat callers.

What limits and rules apply?

A lookup takes up to 100 numbers and a job up to 50,000. Requests that look like sequential number ranges or generated e-mail lists are rejected, and each account has a daily cap on numbers. Spam scores can change as new reports arrive and old ones age out, so read checked_at.

A reputation level is a signal about a number, not a judgment about a person. Numbers get spoofed and reassigned. Always give legitimate callers a way through, for example a verification step. Don't use the results for credit, employment, housing or insurance decisions.

For outbound work, screening doesn't replace consent or do-not-call rules. In the US, the TCPA and the telemarketing rules in 47 CFR 64.1200 govern calls to mobiles and marketing calls, and the FCC's call authentication framework (STIR/SHAKEN) governs caller ID. Other countries have their own rules. This is not legal advice.

People who find their number in our data can object or ask for access through the opt-out form and the data-subject notice.

What are the common mistakes?

  • Blocking on no_reports gaps. No reports is not safe, and it isn't suspicious either. It is the absence of a signal.
  • Blocking every VoIP caller. The voip_range hint adds no risk points on purpose. Many businesses call from VoIP ranges.
  • Holding callers on a pending check. Use a short wait and route normally if the answer is late.
  • Dialling invalid numbers again next week. Remove them from the list and fix the source record.
  • Keeping full responses. Log the level and reasons you acted on, with checked_at.

More on inbound routing: screening inbound calls with spam reputation.

Frequently asked questions

Is the spam reputation check available to every customer?

Not yet. Spam reputation is in limited access, for approved customers only, until its review is finished. The carrier lookup and the HLR lookup are available to all customers.

Which countries does spam reputation cover?

All countries except sanctioned ones, which return unsupported_country and are not charged. Report data is densest for North American and European numbers and growing elsewhere, so give no_reports less weight for other countries.

Does no_reports mean a caller is safe?

No. It means we hold no reports for the number. New, rarely used or spoofed numbers can still be abusive. Treat it as no negative signal and combine it with other checks.

Is a no_reports answer charged?

Yes. Every risk level, including no_reports, is a conclusive answer and is billed. Unknown and unsupported-country results are free.

Can the carrier lookup tell me who is calling?

No. It returns line type, carrier and country for the number. It never returns names or any other details about the person behind the number.

How does the HLR lookup help outbound dialling?

It asks the home network whether a mobile number is assigned and reachable. Numbers reported as invalid (not assigned) can come off the list before an agent dials them; unreachable ones can be retried later.

Does screening replace STIR/SHAKEN?

No. STIR/SHAKEN authenticates caller ID on the call itself in the US and Canada. Spam reputation and line type are separate signals about the number, and they work alongside it.

All articles

Know before you send.

Create a free account: approved automatically, usually within 10–15 minutes.

Free to start: check 20 phone numbers and 10 e-mail addresses for real on your account, plus an unlimited test mode. You pay only for conclusive answers, from $20.