Calls & numbers
Wangiri check: is this missed call a scam?
Coverage: The list holds the calling codes that European regulators and operators keep reporting in missed-call campaigns, the Caribbean +1 area codes that the US FTC lists for one-ring calls and the satellite networks. It works for every edition. Scammers change origin often: a code that is not listed can still be used.
Open toolOn this page
Purpose
Check whether the calling code of an international missed call is a known origin of one-ring callback scams (wangiri), and what to do.
Requirements
Anyone can read these guides, no account needed. Some tools require Pro, as indicated in each guide.
Got a missed call from abroad? Type the number or just its calling code. We tell you whether that code is a known origin of “one ring” scams that want you to call back an expensive number.
How to use it
Open tool
Got a missed call from abroad? Type the number or just its calling code. We tell you whether that code is a known origin of “one ring” scams that want you to call back an expensive number.
Check
Read the available fields alongside their limitations. An empty result does not prove safety or identify a person.
Synthetic example
Invented example, not a real lookup. Do not call or open its links.
+216Interpret the result
Read the available fields alongside their limitations. An empty result does not prove safety or identify a person.
Known origin of missed-call scams: Calls from this calling code keep appearing in wangiri campaigns. Do not call back: the call is charged as an expensive international call.
Caribbean area code used in one-ring scams: This +1 area code looks like a domestic North American number, but calling back is billed as an international call. It is a classic one-ring scam origin.
Satellite or global network: These codes have some of the highest per-minute rates. Do not call back a missed call from one of them.
A number from this edition’s country: It is not an international call, so it is not a wangiri pattern. If it seems suspicious, look the number up to see reports from other people.
Not on the list: This calling code is not among the usual wangiri origins. That does not make the call safe: if you don’t know anyone there, don’t call back.
Unknown calling code: No allocated calling code starts with those digits. Check the number: it may be spoofed or incomplete.
Limitations
The list holds the calling codes that European regulators and operators keep reporting in missed-call campaigns, the Caribbean +1 area codes that the US FTC lists for one-ring calls and the satellite networks. It works for every edition. Scammers change origin often: a code that is not listed can still be used.
Indicative information from published numbering plans. It describes the type of number, never the person or company behind it.
Troubleshooting
If the input is invalid, check its format and country. Retry connection errors; respect the waiting period when a limit is reached.
Enter a valid phone number or prefix.
We couldn’t check it right now. Please try again in a moment.
Use with the API
Needs an API key and credits. Each completed call costs 1 credit, even when there is no data. An active Pro account includes 20 credits per UTC calendar month, shared by every API route and spent first; unused monthly credits do not roll over. Credits bought on your account page work without Pro and never expire.
Errors are never charged: 401 invalid_api_key (missing or invalid key), 403 pro_required (no Pro credits and no purchased credits), 422 invalid input, 429 quota_exceeded (no credits left), rate_limit_exceeded or ai_busy (the AI of sms-check is at capacity), 503 tool_warming (the data is still being prepared) or tool or provider unavailable. After a 429 or 503, retry once the seconds in the Retry-After header have passed.
Whether the calling code is on the wangiri (one-ring callback scam) list, Caribbean NANP, satellite, domestic or not listed.
Send the JSON body to the tool's own route, or to POST /v2/tools with the tool field added. Both routes return the same result.
POST https://api.nocall.io/v2/wangiri
POST https://api.nocall.io/v2/tools {"tool":"wangiri","phone":"+216","country":"ES"}Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| phone | string (1–40) | Yes | Calling code or phone number, for example +216. |
| country | string (enum, 56) | No (default: "ES") | Two-letter country code, for example ES or US, used for national input and for the country's data. |
REQUEST_ID="$(uuidgen)" && [ -n "$REQUEST_ID" ] &&
curl --request POST 'https://api.nocall.io/v2/wangiri' \
--header "Authorization: Bearer $NOCALL_API_KEY" \
--header 'Content-Type: application/json' \
--header "Idempotency-Key: $REQUEST_ID" \
--data '{"phone":"+216","country":"ES"}'import json
import os
import urllib.request
import uuid
api_key = os.environ.get('NOCALL_API_KEY')
if not api_key:
raise SystemExit('Set NOCALL_API_KEY')
request = urllib.request.Request(
'https://api.nocall.io/v2/wangiri',
method='POST',
data=json.dumps({'phone': '+216', 'country': 'ES'}).encode(),
headers={
'Authorization': 'Bearer ' + api_key,
'Content-Type': 'application/json',
'Idempotency-Key': str(uuid.uuid4()),
},
)
with urllib.request.urlopen(request, timeout=30) as response:
result = json.load(response)
print(result['data']['result'], result['meta']['unitsCharged'])import { randomUUID } from 'node:crypto';
const requestId = randomUUID();
const apiKey = process.env.NOCALL_API_KEY;
if (!apiKey) throw new Error('Set NOCALL_API_KEY');
const response = await fetch('https://api.nocall.io/v2/wangiri', {
method: 'POST',
headers: {
Authorization: 'Bearer ' + apiKey,
'Content-Type': 'application/json',
'Idempotency-Key': requestId,
},
body: JSON.stringify({ phone: '+216', country: 'ES' }),
});
const result = await response.json();
if (!response.ok) throw new Error(result.error?.code ?? 'request_failed');
console.log(result.data.result, result.meta.unitsCharged);Example response (200)
This is the documented example from the API reference. Lookups use a fictional number, and aggregates and AI answers show the shape of the result, not live data.
{
"data": {
"tool": "wangiri",
"result": {
"verdict": "listed",
"code": "216",
"nanpArea": null,
"entry": {
"code": "216",
"name": "Tunisia",
"territories": [
"TN"
]
}
}
},
"meta": {
"requestId": "req_example",
"unitsCharged": 1,
"usage": {
"periodStart": "2026-10-01",
"unitLimit": 20,
"unitsUsed": 3,
"unitsRemaining": 17
}
}
}Result fields (data.result)
| Field | Type | Description |
|---|---|---|
| verdict | "listed" | "caribbean" | "satellite" | "domestic" | "not_listed" | "unknown_code" | Whether the calling code is on the wangiri list, Caribbean NANP, satellite, domestic or not listed. |
| code | string | null | Calling code that was checked, or null. |
| nanpArea | string | null | NANP area code for +1 numbers, or null. |
| entry | object | null | Wangiri list entry with its code, name and territories, or null. |
Frequently asked questions
What is a wangiri call?
Wangiri means “one ring and cut” in Japanese. The phone rings once from an international number so that you call back; the number is expensive and part of the charge goes to the scammer.
Is it dangerous to answer?
Answering an incoming call is normally free. The cost comes from calling back, which is what the scam wants.
I already called back. What now?
Hang up and check your next bill. If you see an international or premium charge you did not expect, complain to your operator.
