Phone number lookup

Scopri cos'è un numero. Prima di inviargli un messaggio.

Un POST, una risposta, nessuna risorsa da creare o interrogare. Il lookup base restituisce il paese del numero, la rete che lo serve oggi, la rete che ha emesso il suo range, un flag che indica se è stato spostato tra le due e il tipo di linea. Altre cinque proprietà sono disponibili semplicemente specificandole.

phone-number.ts
200
const answer = await bird.lookup.phoneNumber({
  phone_number: "+31612345678",
  type: ["classification", "porting"],
});

console.log(answer.country_code, answer.line_type);
// → "NL" "mobile"
console.log(answer.network_info?.carrier_name);
// → "KPN"
console.log(answer.original_network_info?.carrier_name);
// → "Vodafone"
console.log(answer.flags);
// → ["ported"]

if (answer.porting?.status === "ok") {
  console.log(answer.porting.ported, answer.porting.last_ported_at);
  // → true "2021-04-18T00:00:00Z"
}

Due reti e la differenza tra loro.

Quella differenza è l'aspetto della portabilità in una risposta.

Il phone number lookup è una delle due operazioni nella Bird Lookup API. Invia un numero in formato internazionale, con o senza il segno più iniziale, e ricevi country_code, un blocco network_info per l'operatore che serve il numero oggi e un blocco original_network_info per l'operatore a cui è stato assegnato il range. Quando i due non coincidono, il numero è stato portato e flags lo indica. I numeri solo nazionali vengono rifiutati anziché interpretati, così un input errato fallisce in modo evidente invece di restituire una risposta plausibile sul paese sbagliato.

Cosa viene restituito e quando.

I primi tre arrivano con ogni lookup. Gli altri arrivano quando li specifichi in type.

  1. 01

    Paese e entrambi gli operatori.

    country_code è il paese ISO del range ed è assente per i numeri non geografici anziché stimato. network_info e original_network_info contengono ciascuno il nome dell'operatore più i codici paese e rete mobile, utili se instradare in base a MCC e MNC anziché in base al nome.

  2. 02

    Tipo di linea, da un elenco chiuso.

    mobile, fixed_line, voip, toll_free, premium_rate, satellite, pager, payphone, m2m, service, other o unknown. L'elenco è chiuso, quindi uno switch su di esso resta esaustivo, ed è il campo da controllare prima di decidere se un SMS è possibile.

  3. 03

    Il flag di portabilità, senza costi aggiuntivi.

    flags include ported quando il numero ha cambiato rete in qualsiasi momento. Arriva con la risposta base, quindi la semplice domanda se un numero sia mai stato portato non richiede alcuna proprietà aggiuntiva.

  4. 04

    classification, un secondo parere sulla linea.

    Una lettura più dettagliata da una fonte diversa, con valori che line_type non ha: fixed_line_or_mobile, shared_cost, national_rate, personal_number, isp, voice_mail, short_codes e altri. Si affianca a line_type nella risposta anziché sostituirlo, così puoi confrontare i due quando un numero sembra insolito.

  5. 05

    porting, con date e cronologia.

    ported come booleano, last_ported_at come timestamp, last_ported_at_is_approximate quando il registro conosce solo il mese, e history come elenco degli eventi di portabilità dal più vecchio al più recente. Ogni evento include un codice azione specifico del registro, che vale la pena mostrare ma non usare come condizione di branching.

  6. 06

    presence e roaming, dalla rete live.

    presence interroga la rete e riporta reachable, che è il modo più vicino per sapere se la linea è attiva. roaming riporta is_roaming più MCC e MNC della rete visitata, così una registrazione da un numero su una rete estera è qualcosa che puoi vedere anziché dedurre.

  7. 07

    score, un singolo numero da 0 a 100.

    Un punteggio di credibilità composito. Non è derivabile dalle altre proprietà, ed è proprio per questo che vale la pena richiederlo: un singolo intero su cui impostare una soglia in un flusso di registrazione senza dover scrivere regole su nomi di operatori e tipi di linea.

Ogni proprietà ti dice se ha risposto.

Ogni blocco ha il proprio status: ok, unavailable o inconclusive. Solo ok contiene un valore, quindi non devi mai ispezionare una risposta per capire se è vuota, e un campo senza valore viene omesso anziché impostato a null. La fatturazione segue la stessa logica. Il lookup base viene addebitato una volta, una proprietà viene addebitata solo quando il suo status è ok, e un lookup che fallisce non addebita nulla.

properties.ts
200 · partial
const answer = await bird.lookup.phoneNumber({
  phone_number: "+31612345678",
  type: ["presence", "roaming", "score"],
});

// Only a block whose status is ok carries a value.
if (answer.presence?.status === "ok") {
  console.log(answer.presence.reachable);
}

if (answer.roaming?.status === "ok") {
  console.log(answer.roaming.is_roaming, answer.roaming.mcc, answer.roaming.mnc);
}

// unavailable and inconclusive both mean no value, and no charge.
if (answer.score?.status !== "ok") {
  console.log("no credibility score on this answer");
}

Un numero per richiesta.

Non esiste una forma batch, per scelta: un lookup è una query live sui dati dell'operatore, e un batch nasconderebbe quale delle mille righe ha ricevuto risposta e quale no. Il rate limit parte da 10 richieste al minuto per credenziale attiva e Lookup ha un proprio budget, così la verifica dei numeri non intacca mai il tuo invio. Invia un Idempotency-Key e un retry restituirà la risposta già pagata invece di acquistarne una seconda.

Approfondisci nella documentazione.

Cercare un numero di telefono illustra la richiesta e ogni campo restituibile. La panoramica di Lookup copre entrambe le operazioni e gli status delle proprietà in un'unica pagina, rate limit documenta il gruppo lookup e idempotency spiega quanto costa una risposta riprodotta.

Domande sul phone number lookup, con risposta.

Formattazione, tipi di linea, portabilità e cosa un lookup non fa.

A cosa risponde una ricerca di numero di telefono?
La ricerca base restituisce il paese del numero, la rete che lo serve attualmente, la rete che ha assegnato il suo range, se è mai stato trasferito su un'altra rete e un tipo di linea generico. Viene sempre eseguita e, se non è possibile ottenere una risposta, l'intera richiesta fallisce anziché restituire una risposta incompleta.
Come devo scrivere il numero?
Prima il prefisso internazionale, poi il numero nazionale. Il segno più iniziale è opzionale e 00 funziona al suo posto, quindi +31612345678, 31612345678 e 0031612345678 sono tutti lo stesso numero.
Perché il mio numero è stato rifiutato?
Un numero scritto per la composizione interna a un paese, senza prefisso internazionale, restituisce E22000 anziché essere interpretato a indovinare. Anteporre un prefisso internazionale a 0612345678 indicherebbe un numero reale altrove e vi addebiterebbe la ricerca di quel numero.
Quali tipi di linea può restituire?
mobile, fixed_line, voip, toll_free, premium_rate, satellite, pager, payphone, m2m, service, other o unknown. unknown significa che la piattaforma dell'operatore non ha una classificazione per il range, e other significa che ne ha una senza equivalente qui. Richiedete la proprietà classification per il servizio assegnato con maggiore precisione.
Come faccio a sapere se un numero è stato portato?
network_info è la rete che serve il numero oggi e original_network_info è la rete che ha assegnato il suo range. Le due differiscono quando un numero è stato portato e, in tal caso, flags contiene ported. Richiedete la proprietà porting quando avete bisogno anche della data e del record completo.
Perché country_code manca dalla mia risposta?
Perché il numero non appartiene a un singolo paese, come nel caso di un range non geografico. I campi senza valore vengono omessi anziché restituiti come null, quindi ogni campo presente nella risposta è stato risolto.
Una ricerca chiama o invia messaggi al numero?
No. Una ricerca non contatta mai il numero stesso. Legge i dati dell'operatore e di number intelligence, e le proprietà presence e roaming interrogano la rete su cui il numero è registrato, quindi nulla squilla e nulla arriva sul dispositivo.

Mettilo in pratica.

Prosegui con la documentazione, le guide e gli esempi per questo argomento. Le risorse sono in inglese.

Ottieni un brief di implementazione

Esegui il tuo primo lookup su un numero che conosci.

La dashboard esegue la stessa operazione un numero alla volta: è il modo più rapido per ottenere una risposta prima di scrivere codice.

Inizia con un canale.
Aggiungi gli altri quando sei pronto.

Una chiave API di test è subito tua. La produzione si sblocca quando aggiungi un metodo di pagamento e verifichi un mittente.

Usi Claude Code, Cursor o Codex? Copia un prompt di configurazione e il tuo agente installerà la CLI e le skill di Bird per te. Scegli il tuo:

Cursor