# Telefonnummer nachschlagen

Ein einziger Aufruf beantwortet, was eine Nummer ist. Alles hier erfordert einen API-Key mit dem Scope `lookup`.

## Einfache Abfrage ausführen

Senden Sie die Nummer ohne weitere Parameter. Die Basisabfrage wird immer genau einmal berechnet und liefert immer das Land, das aktuell zustellende Netz, das ursprünglich zuweisende Netz und einen groben Leitungstyp.

**TypeScript**

```typescript
const answer = await bird.lookup.phoneNumber({
  phone_number: "+31612345678",
  type: ["classification", "score"],
});
console.log(answer.country_code, answer.line_type);
// Only a block whose status is ok carries a value, and only that one is billed.
if (answer.score?.status === "ok") console.log(answer.score.value);
```

Examples: [TypeScript](/de-de/dokumentation/guides/lookup/phone-numbers.ts.md) · [Python](/de-de/dokumentation/guides/lookup/phone-numbers.py.md) · [Go](/de-de/dokumentation/guides/lookup/phone-numbers.go.md) · [PHP](/de-de/dokumentation/guides/lookup/phone-numbers.php.md) · [CLI](/de-de/dokumentation/guides/lookup/phone-numbers.cli.md) · [MCP](/de-de/dokumentation/guides/lookup/phone-numbers.mcp.md) · [cURL](/de-de/dokumentation/guides/lookup/phone-numbers.curl.md)

## So schreiben Sie die Nummer

Senden Sie die Landesvorwahl, dann die nationale Nummer. Das führende `+` ist optional und `00` funktioniert an seiner Stelle, sodass `+31612345678`, `31612345678` und `0031612345678` alle dieselbe Nummer sind.

Eine Nummer, die zum Wählen innerhalb eines Landes formatiert ist und keinen Ländercode enthält, wird abgelehnt statt geraten. `0612345678` gibt [`E22000`](/docs/api/errors/E22000) zurück, weil das Voranstellen eines Ländercodes eine reale Nummer anderswo benennen und Ihnen deren Abfrage berechnen würde.

## Was die Basisabfrage liefert

`country_code` ist das Land der Nummer. Es fehlt, wenn die Nummer keinem einzelnen Land zugehört, wie es bei einem nicht-geografischen Nummernbereich der Fall ist.

`network_info` ist das Netz, das die Nummer aktuell bedient, und `original_network_info` ist das Netz, das den Nummernbereich vergeben hat. Beide unterscheiden sich, wenn die Nummer portiert wurde, und in diesem Fall enthält `flags` den Wert `ported`.

`line_type` gibt an, welche Art von Anschluss die Nummer ist: `mobile`, `fixed_line`, `voip`, `toll_free`, `premium_rate`, `satellite`, `pager`, `payphone`, `m2m`, `service`, `other` oder `unknown`. `unknown` bedeutet, dass die Carrier-Plattform keine Klassifikation für den Bereich hat; `other` bedeutet, dass eine Klassifikation existiert, die hier kein Äquivalent hat. Für den zugewiesenen Dienst in feinerer Auflösung fordern Sie die Eigenschaft `classification` an. Sie antwortet aus einer anderen Quelle mit einem umfangreicheren Vokabular und wird separat gemeldet, sodass Sie die beiden immer unterscheiden können.

## Eigenschaften hinzufügen

Geben Sie die gewünschten Eigenschaften in `type` an. Jede wird einzeln berechnet und nur bei Lieferung.

| Eigenschaft      | Was sie liefert                                                                         |
| ---------------- | --------------------------------------------------------------------------------------- |
| `classification` | Den genauen zugewiesenen Dienst des Bereichs: Premium-Rate, Satellit, M2M, Münztelefon. |
| `porting`        | Wann die Nummer zuletzt das Netz gewechselt hat und jeder Wechsel in der Historie.      |
| `presence`       | Ob die Nummer derzeit im Netz aktiv ist.                                                |
| `roaming`        | Ob sie sich im Roaming befindet und in welchem Netz.                                    |
| `sim_swap`       | Wann die SIM zuletzt gewechselt wurde.                                                  |
| `score`          | Ein Glaubwürdigkeitswert von 0 bis 100.                                                 |

`classification`, `porting` und `score` lesen gespeicherte Daten und antworten schnell. `presence`, `roaming` und `sim_swap` greifen auf das Live-Netz zu und sind daher langsamer; ihre Abdeckung variiert je nach Betreiber. Erwarten Sie `unavailable` oder `inconclusive` bei diesen häufiger als bei den gespeicherten.

Zwei Eigenschaften beantworten Fragen, die die Basisabfrage bereits berührt, in höherer Auflösung. `porting` liefert Ihnen das Datum und die vollständige Historie, während das Flag `ported` der Basisabfrage nur angibt, ob ein Wechsel jemals stattgefunden hat. `classification` löst `line_type` zum genauen zugewiesenen Dienst auf.

## Lesen Sie den Status vor dem Wert

Jeder Eigenschaftsblock enthält einen `status`, und nur `ok` enthält einen Wert.

```json
{
  "phone_number": "+441904123456",
  "country_code": "GB",
  "line_type": "service",
  "classification": {
    "status": "ok",
    "value": "premium_rate"
  },
  "score": {
    "status": "unavailable"
  }
}
```

In dieser Antwort wurde Ihnen die Basisabfrage und `classification` berechnet. `score` wurde Ihnen nicht berechnet.

Lesen Sie zuerst `status` und behandeln Sie jeden Wert außer `ok` als "not answered". Das Vokabular ist offen, ein Ihnen unbekannter Wert ist also ein künftiger Status und kein Fehler.

Zwei Blöcke melden eine Grenze statt eines exakten Werts, wenn das Netz keinen herausgibt. `sim_swap` gibt `min_days` und `max_days` anstelle von `last_swapped_at` zurück, wenn nur ein Aktualitätsband bekannt ist. `porting` setzt `last_ported_at_is_approximate`, wenn ein Register den Zeitraum eines Wechsels erfasst, aber nicht den Tag.

Ein Feld liest sich wie ein negativer Befund, ist aber ein positiver: `porting.ported` mit dem Wert `false` bedeutet, dass das Register abgefragt wurde und keinen Wechsel für diese Nummer verzeichnet, nicht dass nichts geprüft werden konnte. Genau diese Unterscheidung ist der Zweck von `status`.

## Erneut versuchen, ohne doppelt zu zahlen

Eine Abfrage wird berechnet, daher darf ein wiederholter Request keine zweite Antwort kaufen. Senden Sie einen `Idempotency-Key`, und eine Wiederholung desselben Requests spielt die gespeicherte Antwort ab, statt eine neue Abfrage auszuführen. Siehe [Idempotenz](/docs/guides/idempotency).

Die `GET`-Variante dieser Operation, die die Nummer in die URL setzt, kann keinen Idempotenz-Schlüssel übertragen. Verwenden Sie die `POST`-Variante für alles Automatisierte.

## Fehler

| Code                                | Was passiert ist                                                                                                                     |
| ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| [`E22000`](/docs/api/errors/E22000) | Die Nummer ist keine gültige Telefonnummer im internationalen Format. Es wurde nichts berechnet.                                     |
| [`E22001`](/docs/api/errors/E22001) | Das Guthaben der Organisation reicht nicht für die Abfrage. Laden Sie es auf und versuchen Sie es erneut. Es wurde nichts berechnet. |
| [`E22002`](/docs/api/errors/E22002) | Die Abfrage ist vorübergehend nicht verfügbar. Versuchen Sie es mit Backoff erneut. Es wurde nichts berechnet.                       |

Eine fehlschlagende Eigenschaft ist kein Fehler. Sie wird als Status in ihrem Block zurückgegeben, und die Basisabfrage wird daneben ausgeliefert.

## Nächste Schritte

- [E-Mail-Adresse abfragen](/docs/guides/lookup/email-addresses) ist die andere Hälfte von Lookup.
- [Lookup-API-Referenz](/docs/api/reference/create-phone-number-lookup) dokumentiert jedes Feld und jeden Eigenschaftsblock.
- [Rate Limits](/docs/guides/rate-limits) behandelt den `lookup`-Bucket, aus dem diese Aufrufe schöpfen.
- [Telefonnummern-Lookup: Nummer prüfen, bevor Sie senden](/learn/lookup/phone-number-lookup-check-a-number-before-you-send) ist ein Video, das eine Abfrage durchführt und die Live-Netzprüfungen hinzufügt.

## Related resources

- [Phone number lookup](/lookup-api) (product)

[Get an implementation brief](/learn/workspace?topic=lookup-phone)
