Directories
Prefixes
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
Open the directory for your edition, choose a category and open an entry to read its data. Counts describe data available in NoCall, not every call in the country. Missing data does not prove a number is safe.
Requirements
Anyone can read these guides, no account needed. Some tools require Pro, as indicated in each guide.
How to use it
Select the country edition, open the category or row you need and review the available details.
Number or area code
Area
Synthetic example
Invented example, not a real lookup. Do not call or open its links.
+34 · 91Interpret the result
Mobile numbers are not tied to an area: the prefix only says that it is a mobile line.
This range is not tied to a geographic area.
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.
Formats and supported calling codes only. They do not prove a number’s location, owner or active status. Some codes are shared.
Troubleshooting
This prefix is not in the published numbering plan of this edition’s country.
We can’t read this country’s numbering plan right now, so we can only tell the type of line, not the area.
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.
Published numbering ranges of a country, filterable by service class, cost class and prefix, paginated. FR, DK, HK and SG have no published plan (422 with details code no_numbering_plan); CA returns the shared NANP plan.
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-directory
POST https://api.nocall.io/v2/tools {"tool":"prefix-directory","country":"ES","serviceClass":"premium","page":1,"limit":3}Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| 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. |
| serviceClass | "geographic" | "mobile" | "personal" | "toll_free" | "shared_cost" | "premium" | "mass_call" | "nomadic" | "m2m" | "internet" | "short_code" | "global_service" | "other" | No | Only ranges of this service class. |
| costClass | "free" | "standard" | "shared" | "premium" | "variable" | "unknown" | No | Only ranges of this cost class. |
| query | string (1–20) | No | Only ranges whose prefix starts with these digits. |
| page | integer (1–10000) | No (default: 1) | Page number, starting at 1. |
| limit | integer (1–100) | No (default: 50) | Results per page. |
REQUEST_ID="$(uuidgen)" && [ -n "$REQUEST_ID" ] &&
curl --request POST 'https://api.nocall.io/v2/prefix-directory' \
--header "Authorization: Bearer $NOCALL_API_KEY" \
--header 'Content-Type: application/json' \
--header "Idempotency-Key: $REQUEST_ID" \
--data '{"country":"ES","serviceClass":"premium","page":1,"limit":3}'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-directory',
method='POST',
data=json.dumps({'country': 'ES', 'serviceClass': 'premium', 'page': 1, 'limit': 3}).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-directory', {
method: 'POST',
headers: {
Authorization: 'Bearer ' + apiKey,
'Content-Type': 'application/json',
'Idempotency-Key': requestId,
},
body: JSON.stringify({ country: 'ES', serviceClass: 'premium', page: 1, limit: 3 }),
});
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-directory",
"result": {
"countryCode": "ES",
"callingCode": "34",
"planVersion": "ES-2021-02-18.review-2026-08-09",
"total": 3,
"page": 1,
"limit": 3,
"hasMore": false,
"rows": [
{
"prefix": "803",
"serviceClass": "premium",
"costClass": "premium",
"geography": null,
"indexable": true,
"source": "es-ministry-pnn-2021-02-18"
},
{
"prefix": "806",
"serviceClass": "premium",
"costClass": "premium",
"geography": null,
"indexable": true,
"source": "es-ministry-pnn-2021-02-18"
},
{
"prefix": "807",
"serviceClass": "premium",
"costClass": "premium",
"geography": null,
"indexable": true,
"source": "es-ministry-pnn-2021-02-18"
}
]
}
},
"meta": {
"requestId": "req_example",
"unitsCharged": 1,
"usage": {
"periodStart": "2026-10-01",
"unitLimit": 20,
"unitsUsed": 3,
"unitsRemaining": 17
}
}
}Result fields (data.result)
| Field | Type | Description |
|---|---|---|
| countryCode | string | Country of the numbering plan. |
| callingCode | string | International calling code of the country. |
| planVersion | string | Version of the numbering plan. |
| total | integer | Total number of matching rows. |
| page | integer | Current page. |
| limit | integer | Rows per page. |
| hasMore | boolean | Whether more rows remain after this page. |
| rows | array<object> | Numbering ranges on this page: prefix, service class, cost class, geography and source. |
