# Call-center and spam screening

> Screen inbound callers and outbound dialling lists by line type and carrier and, where enabled, by spam-report reputation for US, CA and DE numbers.

Canonical: https://mobilevalidate.com/use-cases/call-center-screening · Last updated: 2026-09-25

![Incoming calls queued for an agent, each with a risk gauge; one high-risk call is held back.](https://mobilevalidate.com/images/call-center-spam-screening.svg)

*Score callers before an agent picks up, and hold back high-risk calls.*


Call-center screening checks phone numbers before or during a call, so agents and diallers spend their time on real contacts. The [carrier lookup](/services/carrier-lookup) reports the line type, the carrier and the country. Where it's enabled, [spam reputation](/services/spam-reputation) reports whether a US, Canadian or German number appears in spam and nuisance-call reports, with the reasons. Spam reputation is in limited access for now (internal customers only).

## 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 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](/use-cases/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.

## 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`.
3. Route the call using the table below and log the level, not the raw response.

**Outbound lists:**

1. Run a bulk job with `checks: ["carrier"]`. For US and Canadian lists, add `network.carrier_us`, and add `spam` if it's enabled for your account.
2. Download the CSV. Each check has its own columns, such as `number.spam.risk_level` and `network.carrier.line_type`.
3. Remove or reorder rows before they reach the dialler.

## What should you do with each result?

| Result | Suggested 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: medium` | Inbound: ask for extra verification. Outbound: review |
| `risk_level: low` | Handle normally and watch for patterns |
| `risk_level: no_reports` | No negative signal. Not proof of safety |
| `reason_unassigned: true` | Treat as a possible spoofed caller ID or fake lead |
| `line_type: fixed_line` on a mobile campaign | Move to the voice-only queue |
| `unknown` / `unsupported_country` | Handle normally; not charged |

## 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 outside the US, Canada and Germany 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. See [pricing](/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.

## Example request

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

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`.

## 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. People who find their number in our data can object or ask for access through the [opt-out form](/opt-out) and the [data-subject notice](/legal/data-subject-notice).

## Frequently asked questions

### Is the spam reputation check available to every customer?

Not yet. Spam reputation is in limited access, for internal customers only, until its review is finished. The carrier lookup is available to all customers.

### Which countries does spam reputation cover?

The United States, Canada and Germany, where report data is dense. Numbers from other countries return unsupported_country and are not charged.

### 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.
