Calls & numbers
Where is this area code from?
Coverage: Areas come from the official numbering plan of each edition’s country. Spain lists a province for every landline range; many other countries list their area codes and cities. Mobile numbers have no area in any country, and a few countries do not publish a plan we can read yet: there we only show the type of line.
Open toolOn this page
Purpose
Type a number or a prefix to see the province, city or area it belongs to, the type of line and what calling it costs.
Requirements
Anyone can read these guides, no account needed. Some tools require Pro, as indicated in each guide.
Type a phone number or just its first digits. We look it up in the official numbering plan and tell you which area it belongs to, what type of line it is and what calling it usually costs.
How to use it
Open tool
Type a phone number or just its first digits. We look it up in the official numbering plan and tell you which area it belongs to, what type of line it is and what calling it usually costs.
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.
+44 1632 960123Interpret the result
Read the available fields alongside their limitations. An empty result does not prove safety or identify a person.
No. It tells you the area the number was assigned to. Landlines can be moved to another place and internet telephony numbers can be used anywhere, so it is a hint, not a location.
Mobile ranges are national: the first digits only say that it is a mobile line, not where it was issued or who the operator is today.
Yes. It comes from the numbering plan that the country’s regulator or the ITU publishes, and it is updated when the plan changes.
Limitations
Areas come from the official numbering plan of each edition’s country. Spain lists a province for every landline range; many other countries list their area codes and cities. Mobile numbers have no area in any country, and a few countries do not publish a plan we can read yet: there we only show the type of line.
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.
Where a prefix or number belongs: an exact numbering range, up to 8 suggestions, a foreign code, or no match.
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/prefix-origin
POST https://api.nocall.io/v2/tools {"tool":"prefix-origin","phone":"910","country":"ES"}Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| phone | string (1–40) | Yes | Phone number or prefix, in E.164 or national format. |
| 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/prefix-origin' \
--header "Authorization: Bearer $NOCALL_API_KEY" \
--header 'Content-Type: application/json' \
--header "Idempotency-Key: $REQUEST_ID" \
--data '{"phone":"910","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/prefix-origin',
method='POST',
data=json.dumps({'phone': '910', '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/prefix-origin', {
method: 'POST',
headers: {
Authorization: 'Bearer ' + apiKey,
'Content-Type': 'application/json',
'Idempotency-Key': requestId,
},
body: JSON.stringify({ phone: '910', 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": "prefix-origin",
"result": {
"kind": "match",
"national": "910",
"row": {
"prefix": "910",
"serviceClass": "geographic",
"costClass": "standard",
"geography": "Madrid",
"indexable": true
},
"complete": false,
"planLoaded": true,
"numberType": null,
"foreignCode": null
}
},
"meta": {
"requestId": "req_example",
"unitsCharged": 1,
"usage": {
"periodStart": "2026-10-01",
"unitLimit": 20,
"unitsUsed": 3,
"unitsRemaining": 17
}
}
}Result fields (data.result)
| Field | Type | Description |
|---|---|---|
| kind | "foreign" | "match" | "suggestions" | "no_match" | What kind of sender it is. |
| planLoaded | boolean | Whether the country's numbering plan is available. |
| numberType | string (enum, 14) | null | Number type from the numbering plan, or null. |
| foreignCode | string | null | Foreign calling code found in the input, or null. |
| national | string | National digits of the input that were looked up. |
| row | object | The numbering range that matched: prefix, service class, cost class and geography. |
| complete | boolean | Whether the input is already a complete, valid number of the country rather than only a prefix. |
| rows | array<object> | Up to 8 numbering ranges the input may belong to. |
| factsType | "mobile" | "landline" | "toll_free" | "premium" | null | When no range matched, the type suggested by the country's number rules (mobile, landline, toll_free or premium), or null. |
Frequently asked questions
Can an area code tell me where the caller is?
No. It tells you the area the number was assigned to. Landlines can be moved to another place and internet telephony numbers can be used anywhere, so it is a hint, not a location.
Why does a mobile number have no area?
Mobile ranges are national: the first digits only say that it is a mobile line, not where it was issued or who the operator is today.
Is the information official?
Yes. It comes from the numbering plan that the country’s regulator or the ITU publishes, and it is updated when the plan changes.
