Spam phone number database feed for carriers, CPaaS and MVNOs

A spam phone number database you host yourself. Every reported number from 195 countries, the last 15 days, refreshed every minute. One flat fee, zero lookup latency, every use case.

your switch
$ curl -sH "x-auth: $API_KEY" \
    https://callerapi.com/api/spam-reports/csv \
    -o spam_numbers.csv

$ head -4 spam_numbers.csv
+18882211161
+12099009302
+447476937994
+4930120849110

$ curl -sH "x-auth: $API_KEY" \
    https://callerapi.com/api/spam-reports/daily/US \
    | jq '.data.next_update_in'
41  # seconds until the next delta

195

countries in one spam number database. Not a US-only list with a few extras.

60s

between updates. A campaign that started this morning is on your switch this morning.

15 days

of rolling history. The list cleans itself. Nothing on it is stale, nothing on it is guessed.

One file in. Four products out.

The feed is a list of numbers under active complaint. You pull it, you host it, and every system you own reads the same copy.

Source

Consumer complaints

Reports from 195 countries, each with a subject, a date and a robocall flag. Deduplicated and normalized to +E.164.

Feed

CallerAPI spam number database

15-day window, refreshed every minute. Full CSV or per-country delta with a cursor. Hosted on your side after the pull.

Switch or SBC

Inbound block at zero milliseconds.

Outbound filter

Dynamic do-not-originate list.

Subscriber app

Labels and blocking you charge for.

Compliance file

Evidence behind every block.

Pay once. Use it everywhere.

Per-lookup pricing punishes you for every new use case. Add outbound filtering, and the bill doubles. Add a subscriber app, and it doubles again. A feed you host has the opposite economics. The more places you use it, the cheaper each one gets.

The list also keeps working when our API does not. Your switch reads a local file. Nothing on the call path waits on us.

Get a flat-fee quote
Per-lookup API Hosted feed
Cost at carrier volume Grows with every call One flat fee
Lookup latency One round trip Zero, list is local
Second use case Second bill Same file
Our API is unreachable Calls pass unchecked Blocking continues
Business caller names Included Not included, spam only

Built for teams that run networks, not campaigns

Everyone on this list needs one answer about a number in many places at once, and none of them want a per-call bill for it.

Carriers and MVNOs

Block at the switch so the scam never rings. Then sell the same protection to subscribers as a monthly add-on and keep the margin. Churn drops because the phone stops ringing with fraud, and the feed cost stays flat while the subscriber count grows.

Want it on the handset too? The call blocking SDK runs on the same list, under your brand.

CPaaS and UCaaS

Label and block spam on every leg without a lookup on the hot path. Ship it as a platform feature and bill per seat.

Mobile security vendors

One list for iOS, Android and the backend. Add scam call blocking to the suite you already sell.

Compliance and trust teams

Run the list against outbound traffic as a dynamic do-not-originate filter. Numbers under active complaint never leave your network, and when a regulator or a carrier asks why a call was blocked, you show the complaint record: subject, date, robocall flag.

GET /api/spam-reports/daily/US 200 OK
{
  "data": {
    "total": 4812,
    "has_more": true,
    "next_cursor": "KzE4ODgyMjExMTYxAD...",
    "next_update_in": 41,
    "complaints": [{
      "PhoneNumber": "+18882211161",
      "Subject": "Calls pretending to be government",
      "RecordedMessageOrRobocall": "Y",
      "ConsumerState": "Missouri",
      "ViolationDate": "2026-09-15T14:02:00Z"
    }]
  }
}

Every number comes with a reason

A bare blacklist is a liability. When a subscriber or a regulator asks why a call was blocked, "the vendor said so" is not an answer. Every entry in this feed traces back to a consumer complaint with a subject, a date, a state and a robocall flag.

Numbers in this list are a hard block in our own spam call blocking API and SIP firewall. What you host is what we enforce.

Two endpoints, one cron job

Pull the full list once. Then sync only what changed. The response tells you when to come back.

  1. Full pull

    One CSV, every number under complaint in the last 15 days, all 195 countries.

    GET /api/spam-reports/csv
  2. Delta sync

    Per country, per day, with a keyset cursor. Paging cost stays flat no matter how deep you go.

    GET /api/spam-reports/daily/{country}?cursor=...
  3. Come back on time

    Every response carries next_update_in. Your job sleeps exactly that long. No polling storms, no stale minutes.

    "next_update_in": 41

Spam phone number database questions

One feed. One flat fee. Every use case.

Tell us your network size and where the list will run. You get a price, a sample export and a sync plan.