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.
$ 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.
{
"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.
-
Full pull
One CSV, every number under complaint in the last 15 days, all 195 countries.
GET /api/spam-reports/csv -
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=... -
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.