Annuaires
Opérateurs
Couverture: Les zones proviennent du plan de numérotation officiel du pays de chaque édition. L’Espagne indique une province pour chaque tranche de fixes ; beaucoup d’autres pays publient leurs indicatifs et leurs villes. Les numéros mobiles n’ont de zone dans aucun pays, et quelques pays ne publient pas encore de plan que nous puissions lire : nous n’y affichons que le type de ligne.
Ouvrir l’outilSur cette page
Objectif
Ouvrez le répertoire de votre édition, choisissez une catégorie puis une fiche. Les compteurs décrivent les données disponibles dans NoCall, pas tous les appels du pays. L’absence de données ne prouve pas qu’un numéro est sûr.
Prérequis
Tout le monde peut lire ces guides, sans compte. Certains outils nécessitent Pro, comme indiqué dans chaque guide.
Mode d’emploi
Choisissez l’édition du pays, ouvrez la catégorie ou la ligne souhaitée et consultez les détails disponibles.
Filtrer par opérateur ou préfixe
Opérateurs
Exemple fictif
Exemple inventé, pas une recherche réelle. N’appelez pas et n’ouvrez pas ses liens.
+44 1632 960123Interpréter le résultat
Informations indicatives issues des plans de numérotation publiés. Elles décrivent le type de numéro, jamais la personne ou l’entreprise qui se trouve derrière.
Seules les données techniques vérifiées ou publiques sont affichées. Les identités privées et signaux de protection restent masqués.
Limites
Formats et indicatifs pris en charge uniquement. Ils ne prouvent ni la localisation, ni le titulaire, ni l’activité du numéro. Certains indicatifs sont partagés.
Résoudre un problème
Essayez une autre marque, raison sociale ou préfixe à trois chiffres.
Réessayez dans quelques minutes ou recherchez un numéro directement.
Utiliser avec l’API
Nécessite une API key et des crédits. Chaque appel abouti coûte 1 crédit, même sans données. Un compte Pro actif inclut 20 crédits par mois calendaire UTC, partagés entre toutes les routes de l’API et consommés en premier ; les crédits mensuels non utilisés ne sont pas reportés. Les crédits achetés sur la page de votre compte fonctionnent sans Pro et n’expirent jamais.
Les erreurs ne sont jamais facturées : 401 invalid_api_key (clé absente ou invalide), 403 pro_required (ni crédits Pro ni crédits achetés), 422 entrée invalide, 429 quota_exceeded (plus de crédits), rate_limit_exceeded ou ai_busy (l’IA de sms-check est à pleine capacité), 503 tool_warming (les données sont encore en préparation) ou tool ou fournisseur indisponible. Après un 429 ou un 503, réessayez une fois écoulées les secondes indiquées dans l’en-tête Retry-After.
Opérateurs espagnols avec leurs préfixes, type de numéro et nombre de spams, ainsi que les préfixes spéciaux. ES uniquement.
Envoyez le corps JSON à la route propre au tool, ou à POST /v2/tools en ajoutant le champ tool. Les deux routes renvoient le même résultat.
POST https://api.nocall.io/v2/operator-directory
POST https://api.nocall.io/v2/tools {"tool":"operator-directory","country":"ES","operator":"Movistar"}Paramètres
| Nom | Type | Obligatoire | Description |
|---|---|---|---|
| country | "ES" | Non (par défaut: "ES") | Pays des données. Seul ES est pris en charge. |
| operator | string (1–60) | Non | Uniquement cet opérateur, par son nom. |
REQUEST_ID="$(uuidgen)" && [ -n "$REQUEST_ID" ] &&
curl --request POST 'https://api.nocall.io/v2/operator-directory' \
--header "Authorization: Bearer $NOCALL_API_KEY" \
--header 'Content-Type: application/json' \
--header "Idempotency-Key: $REQUEST_ID" \
--data '{"country":"ES","operator":"Movistar"}'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/operator-directory',
method='POST',
data=json.dumps({'country': 'ES', 'operator': 'Movistar'}).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/operator-directory', {
method: 'POST',
headers: {
Authorization: 'Bearer ' + apiKey,
'Content-Type': 'application/json',
'Idempotency-Key': requestId,
},
body: JSON.stringify({ country: 'ES', operator: 'Movistar' }),
});
const result = await response.json();
if (!response.ok) throw new Error(result.error?.code ?? 'request_failed');
console.log(result.data.result, result.meta.unitsCharged);Exemple de réponse (200)
Il s’agit de l’exemple documenté dans la référence de l’API. Les recherches utilisent un numéro fictif ; les agrégats et les réponses de l’IA montrent la structure du résultat, pas des données réelles.
{
"data": {
"tool": "operator-directory",
"result": {
"operators": [
{
"name": "Movistar",
"prefixes": [
"609",
"619"
],
"numberType": "mobile",
"spamCount": 0
}
],
"specialPrefixes": [
{
"prefix": "400",
"name": "Llamadas comerciales",
"type": "commercial",
"cost": "no_callback",
"risk": "medium"
},
{
"prefix": "800",
"name": "Llamada gratuita",
"type": "toll_free",
"cost": "free",
"risk": "low"
},
{
"prefix": "900",
"name": "Llamada gratuita",
"type": "toll_free",
"cost": "free",
"risk": "low"
},
{
"prefix": "901",
"name": "Coste compartido",
"type": "premium",
"cost": "shared",
"risk": "medium"
},
{
"prefix": "902",
"name": "Coste extra",
"type": "premium",
"cost": "expensive",
"risk": "high"
},
{
"prefix": "903",
"name": "Teléfono premium",
"type": "premium",
"cost": "very_expensive",
"risk": "critical"
},
{
"prefix": "905",
"name": "Televoto",
"type": "premium",
"cost": "very_expensive",
"risk": "critical"
},
{
"prefix": "906",
"name": "Teléfono premium",
"type": "premium",
"cost": "very_expensive",
"risk": "critical"
},
{
"prefix": "907",
"name": "VoIP España",
"type": "premium",
"cost": "expensive",
"risk": "high"
},
{
"prefix": "908",
"name": "VoIP España",
"type": "premium",
"cost": "expensive",
"risk": "high"
},
{
"prefix": "909",
"name": "VoIP España",
"type": "premium",
"cost": "expensive",
"risk": "high"
},
{
"prefix": "803",
"name": "Servicios para adultos",
"type": "premium",
"cost": "very_expensive",
"risk": "critical"
},
{
"prefix": "806",
"name": "Entretenimiento",
"type": "premium",
"cost": "very_expensive",
"risk": "high"
},
{
"prefix": "807",
"name": "Servicios profesionales",
"type": "premium",
"cost": "very_expensive",
"risk": "high"
},
{
"prefix": "704",
"name": "Número personal",
"type": "premium",
"cost": "expensive",
"risk": "medium"
}
]
}
},
"meta": {
"requestId": "req_example",
"unitsCharged": 1,
"usage": {
"periodStart": "2026-10-01",
"unitLimit": 20,
"unitsUsed": 3,
"unitsRemaining": 17
}
}
}Champs du résultat (data.result)
| Champ | Type | Description |
|---|---|---|
| operators | array<object> | Opérateurs avec leurs préfixes, type de numéro et nombre de spams (null si indisponible). |
| specialPrefixes | array<object> | Préfixes spéciaux avec leur nom, type, coût et risque. |
