---
title: "MX-Lookup-API: Mailrouting und Providerdaten | Emvero"
description: "Rufen Sie MX, Routing, Provider sowie veröffentlichte SPF- und DMARC-Daten per Domain-API ab. Prüfen Sie Aktualität, Teilantworten und sichere Wiederholungen."
url: https://emvero.io/de/domain-intelligence-api/
language: de
updated: 2026-10-08
---

MX-Lookup-API

# Rufen Sie MX-Einträge und Maildaten einer Domain per API ab.

Rufen Sie MX-Einträge, Mailweg und Anbieter für eine Domain ab. Das JSON-Profil enthält auch SPF/DMARC, bekannte Domain-Signale sowie IP-Adressen und ASN. variant=extended ergänzt Registrierungsdaten aus der Registry.

Die JSON-Antwort erhält Status, Quelle und Aktualität jeder Beobachtung. Domain Intelligence öffnet keine SMTP-Sitzung, prüft kein Postfach und authentifiziert keine Nachricht.

Kostenlos starten

Dokumentation ansehen

GET für eine Domain · Strukturiertes JSON · Idempotency-Key erforderlich · Gemeinsame Credits

## Eine Domain aus Ihrem Backend abfragen

Der Endpunkt ist `GET /v1/domain/{domain}`. Senden Sie die Domain im Pfad, den API-Zugang in `Authorization: Bearer` und einen obligatorischen `Idempotency-Key`. Der Zugang bleibt auf Ihrem Server. Die Anfrage hat keinen Body. Der optionale Query-Parameter `variant` akzeptiert `standard` als Standardwert oder `extended`.

```
curl -sS https://api.emvero.tech/v1/domain/example.com \
  -H "Authorization: Bearer emv_your_credential" \
  -H "Idempotency-Key: 3f0c9a52-6d1e-4b8e-a7f4-2c51d0e9b6aa"
```

`example.com` und die Werte der Dokumentation sind synthetisch. Geben Sie eine Domain an, keine E-Mail-Adresse, URL oder IP-Adresse. Jede Anfrage prüft eine Domain; eine Subdomain wird als eigene Domain abgefragt.

Für Registrierungsdaten ergänzen Sie `?variant=extended`. Verwenden Sie für diesen separaten Vorgang einen neuen Key:

```
curl -sS "https://api.emvero.tech/v1/domain/example.com?variant=extended" \
  -H "Authorization: Bearer emv_your_credential" \
  -H "Idempotency-Key: 8c1d2e7a-4b9f-4f0e-9a3c-61e5d2b7c904"
```

**Vollständige JSON-Antwort ansehen · Erweitert**

Synthetisches Beispiel. Standard liefert registration: null und billing.variant: standard. Dieses Beispiel enthält Registrierungsdaten und kostet als neue vollständige erweiterte Abfrage 2 Credits. 
```
{
  "schema_version": "1",
  "operation_id": "45eb36a9-b4e6-48ac-94a9-0ad145b6cf98",
  "domain": "example.com",
  "ascii_domain": "example.com",
  "status": "complete",
  "generated_at": "2026-10-02T10:00:00Z",
  "mail_routing": {
    "status": "routable",
    "method": "mx",
    "issues": [],
    "meta": {
      "status": "ok",
      "reason": null,
      "source": "dns",
      "source_version": null,
      "observed_at": "2026-10-02T10:00:00Z",
      "expires_at": "2026-10-02T10:05:00Z",
      "stale": false
    }
  },
  "mx": {
    "records": [
      {
        "host": "mx.example.com",
        "priority": 10,
        "provider_id": null
      }
    ],
    "provider_id": null,
    "provider_match": "unknown",
    "truncated": false,
    "meta": {
      "status": "ok",
      "reason": null,
      "source": "dns",
      "source_version": "catalog:17",
      "observed_at": "2026-10-02T10:00:00Z",
      "expires_at": "2026-10-02T10:05:00Z",
      "stale": false
    }
  },
  "email": {
    "classification": {
      "disposable": false,
      "public_provider": false,
      "meta": {
        "status": "ok",
        "reason": null,
        "source": "dataset",
        "source_version": "bundle:example-v1",
        "observed_at": null,
        "expires_at": null,
        "stale": false
      }
    },
    "catch_all": {
      "state": "unknown",
      "provider_id": null,
      "meta": {
        "status": "unknown",
        "reason": "not_observed",
        "source": null,
        "source_version": null,
        "observed_at": null,
        "expires_at": null,
        "stale": false
      }
    }
  },
  "email_authentication": {
    "spf": {
      "present": true,
      "syntax": "valid",
      "record": "v=spf1 -all",
      "all_qualifier": "fail",
      "includes": [],
      "redirect": null,
      "evaluation": "not_performed",
      "issues": [],
      "meta": {
        "status": "ok",
        "reason": null,
        "source": "dns",
        "source_version": "spf-syntax:1",
        "observed_at": "2026-10-02T10:00:00Z",
        "expires_at": "2026-10-02T10:05:00Z",
        "stale": false
      }
    },
    "dmarc": {
      "present": true,
      "syntax": "valid",
      "record": "v=DMARC1; p=reject",
      "policy_domain": "example.com",
      "inherited": false,
      "published_policy": "reject",
      "effective_policy": "reject",
      "testing": false,
      "adkim": "r",
      "aspf": "r",
      "evaluation": "not_performed",
      "issues": [],
      "meta": {
        "status": "ok",
        "reason": null,
        "source": "dns",
        "source_version": "dmarc-rfc9989:1",
        "observed_at": "2026-10-02T10:00:00Z",
        "expires_at": "2026-10-02T10:05:00Z",
        "stale": false
      }
    }
  },
  "network": {
    "mail": [
      {
        "host": "mx.example.com",
        "priority": 10,
        "addresses": [
          {
            "ip": "198.51.100.25",
            "asn": 64500
          },
          {
            "ip": "203.0.113.25",
            "asn": 64511
          },
          {
            "ip": "2001:db8::25",
            "asn": 64500
          }
        ]
      }
    ],
    "web": {
      "host": "example.com",
      "cname_chain": [],
      "addresses": [
        {
          "ip": "198.51.100.80",
          "asn": 64500
        },
        {
          "ip": "2001:db8::80",
          "asn": 64500
        }
      ],
      "truncated": false,
      "edge_provider": null,
      "meta": {
        "status": "ok",
        "reason": null,
        "source": "dns",
        "source_version": null,
        "observed_at": "2026-10-02T10:00:00Z",
        "expires_at": "2026-10-02T10:05:00Z",
        "stale": false
      }
    },
    "autonomous_systems": [
      {
        "asn": 64500,
        "handle": "EXAMPLE-ISP",
        "name": "Example Access",
        "country": "DE",
        "type": "isp"
      },
      {
        "asn": 64511,
        "handle": null,
        "name": null,
        "country": null,
        "type": "unknown"
      }
    ],
    "meta": {
      "status": "ok",
      "reason": null,
      "source": "dataset",
      "source_version": "example-routing-dataset",
      "observed_at": "2026-10-02T00:35:16Z",
      "expires_at": null,
      "stale": false
    }
  },
  "registration": {
    "registered_domain": "example.com",
    "registered_at": "2020-10-02T10:00:00Z",
    "age_days": 2191,
    "expires_at": "2027-10-02T10:00:00Z",
    "registrar": "Example Registrar",
    "statuses": [
      "client transfer prohibited"
    ],
    "meta": {
      "status": "ok",
      "reason": null,
      "source": "registry",
      "source_version": "rdap.example.com",
      "observed_at": "2026-10-02T10:00:00Z",
      "expires_at": "2026-11-01T10:00:00Z",
      "stale": false
    }
  },
  "billing": {
    "product": "domain-intelligence",
    "variant": "extended",
    "operation_credits": 2
  }
}
```

## Mailweg, MX und Providerzuordnung lesen

`mail_routing.status` beschreibt den Mailweg der Domain. `mx.records` enthält empfangende Hosts und Prioritäten. Ein Mailweg belegt keine Annahme eines bestimmten Empfängers. Das [MX-Glossar](https://emvero.io/de/glossary/mx-record/) erklärt den DNS-Eintrag.

`mx.provider_match` ist `matched`, `mixed`, `unknown` oder `not_applicable`. Stimmen die bevorzugten Hosts überein, erkennt die Zuordnung den sichtbaren Eingangsbetreiber. Das kann ein Filtergateway vor dem Postfachhost sein. `mx.truncated` zeigt, dass die Liste gekürzt wurde. Der Artikel zum [Ermitteln des E-Mail-Anbieters](https://emvero.io/de/blog/how-to-find-email-provider/) erklärt die Grenzen dieser Zuordnung.

`email.classification` enthält bekannte Wegwerf- und öffentliche Provider-Signale. Eine negative Einordnung bedeutet keinen Listentreffer, keinen Beweis für das Gegenteil. `email.catch_all.state` meldet den bereits vorhandenen Zustand der Domain; diese Abfrage erhebt ihn nicht durch eine neue SMTP-Probe.

`email_authentication` enthält unterstützte Veröffentlichungsdaten für SPF und DMARC. `evaluation` lautet `not_performed`. Die API testet weder Nachricht noch Absender, sucht keine DKIM-Schlüssel und folgt keinen SPF-Includes zur rekursiven Auswertung. Absenderreputation und Domain-Inhaberschaft gehören nicht zum Profil.

## Netz- und Registrierungsfelder lesen

`network.mail` gruppiert öffentliche IP-Adressen und deren `asn` nach Mailhost. `network.web` enthält angefragten Host, `cname_chain`, Adressen, `truncated` und `edge_provider`. Die Abfrage ergänzt kein `www.` und prüft keine HTTP-Erreichbarkeit. Ein CDN oder Proxy kann den Ursprungsserver verdecken.

`network.autonomous_systems` beschreibt jede ASN mit `handle`, `name`, `country` und `type`. Das Land ist das Registrierungsland des Netzes, keine IP-Geolokalisierung. Unbekannte Angaben bleiben `null` oder `unknown`. Netzfehler ändern weder Gesamtstatus noch Preis. Prüfen Sie `network.meta` und `network.web.meta` separat.

Mit `variant=extended` enthält `registration` die Felder `registered_domain`, `registered_at`, `age_days`, `expires_at`, `registrar`, `statuses` und `meta`. Bei Subdomains gelten die Registry-Daten für die registrierbare übergeordnete Domain. Ohne Registrierungsdatum ist Erweitert unvollständig; `registration.meta.reason` erklärt fehlende oder nicht unterstützte Angaben. Standard liefert `registration: null`. Das Registrierungsalter belegt weder Firmenalter noch Inhaberschaft.

## Gesamtstatus mit Feldmetadaten verwenden

Der Profilstatus ist `complete` oder `partial`. `meta` an jedem Teil enthält Status, Grund, Quelle, Beobachtungs- und Ablaufzeiten sowie die Kennzeichnung veralteter Werte. `meta.reason` erklärt, warum ein Wert nicht ermittelt werden konnte. Ersetzen Sie die ursprüngliche Beobachtungszeit nicht durch den Abrufzeitpunkt.

Ein `partial`-Profil kann einen brauchbaren Mailweg haben, während eine ergänzende Angabe fehlt, veraltet oder gekürzt ist. Eine `unknown`-Providerzuordnung oder ein nicht beobachteter Catch-all-Zustand macht das Gesamtprofil allein nicht unvollständig. `complete` beschreibt den Umfang der Abfrage, kein positives Domain-Urteil.

Fällt die Routingquelle aus, kann der Endpunkt `503 source_unavailable` zurückgeben, statt einen fehlenden Mailweg zu vermuten. Behandeln Sie Anfragefehler getrennt von den Domain-Beobachtungen Ihrer Anwendung.

## Denselben Vorgang mit demselben Schlüssel wiederholen

Innerhalb von 24 Stunden nach Abschluss liefern derselbe Key, dieselbe Domain und dieselbe Variante die gespeicherte Antwort unverändert zurück. Beobachtungen werden dabei nicht aktualisiert. Ein anderer Domain- oder Variantenwert mit demselben Key führt zu `409 idempotency_conflict`. Läuft die erste Anfrage noch, warten Sie das angegebene Intervall ab und wiederholen dieselbe Anfrage mit demselben Key.

Eine vollständige `standard`-Abfrage kostet 1 Credit, `extended` 2. Ist nur der Standard-Teil vollständig und das Registrierungsdatum nicht verfügbar, kostet `extended` 1 Credit. Andere unvollständige Ergebnisse, gespeicherte Wiederholungen und bestätigte Ablehnungen kosten 0. Netzdaten ändern den Preis nicht. Bei einer Wiederholung bleibt `billing.operation_credits` erhalten; `X-Credits-Charged` beschreibt die aktuelle Anfrage.

Bei `commit_unknown` oder `accounting_uncertain` kann die Belastung bereits erfolgt sein. Die Antwort lässt `X-Credits-Charged` weg; ein fehlender Header belegt keinen Nullbetrag. Wiederholen Sie denselben Key, damit der Aufruf denselben Vorgang erreicht. Ein neuer Key beginnt neue Arbeit.

## Den passenden Domain-Ablauf wählen

Die Seite zu [Domain Intelligence im Konto](https://emvero.io/de/domain-intelligence/) erklärt die Abfrage ohne Programmierung. Wenn Sie nur wissen möchten, ob eine Domain Mail empfangen kann, gibt der kostenlose [E-Mail-Domain-Checker](https://emvero.io/de/email-domain-checker/) ohne Konto eine engere Antwort.

Anfrageprüfung, vollständiges Schema und Fehlerbehandlung stehen im [Leitfaden zur Domain Intelligence API](https://docs.emvero.io/using/domain-intelligence/). Keiner der beiden Domain-Abläufe prüft ein bestimmtes Postfach oder versendet eine E-Mail.

Fragen

## Häufig gefragt.

**Welche Domain-Felder liefert die API?**

Das Profil enthält Mailweg, MX-Hosts und Prioritäten, Anbieterzuordnung, Wegwerf- und öffentliche Provider-Signale, vorhandenen Catch-all-Zustand, SPF/DMARC, Mail- und Website-IP-Adressen, CNAMEs, erkannte CDN-/Proxy-Anbieter und autonome Systeme. Erweitert ergänzt Registrierungsdaten. Quelle und Status bleiben je Beobachtung erhalten.

**Belegt ein vorhandener Mailweg ein Postfach?**

Nein. Der Mailweg beschreibt die Domain. Die Abfrage führt keine SMTP-Probe durch und belegt weder ein bestimmtes Postfach noch dessen Inhaberschaft oder künftige Zustellung im Posteingang.

**Prüft die Abfrage, ob ein Absender SPF oder DMARC besteht?**

Sie liest veröffentlichte Einträge und unterstützte Syntax- oder Richtlinienfelder. `evaluation` lautet `not_performed`. Sie wertet keine Nachricht aus, sucht keine DKIM-Schlüssel und folgt SPF-Includes nicht rekursiv.

**Kann ich ein unvollständiges Profil nutzen?**

Prüfen Sie Status und Metadaten des benötigten Teils. Ein `partial`-Ergebnis kann einen bekannten Mailweg enthalten, obwohl eine andere Beobachtung fehlt oder veraltet ist. Ein unbekannter Catch-all-Zustand allein macht das Gesamtprofil nicht zwingend unvollständig.

**Was kosten vollständige Abfragen und Wiederholungen?**

Eine vollständige `standard`-Abfrage kostet 1 Credit, `extended` 2. Ist nur der Standard-Teil vollständig und das Registrierungsdatum nicht verfügbar, kostet `extended` 1 Credit. Andere unvollständige Ergebnisse, gespeicherte Wiederholungen und bestätigte Ablehnungen kosten 0. Netzdaten ändern den Preis nicht. Bei einer Wiederholung bleibt `billing.operation_credits` erhalten; `X-Credits-Charged` beschreibt die aktuelle Anfrage. Bei `commit_unknown` oder `accounting_uncertain` ist die Belastung ungewiss und dieser Header fehlt. Wiederholen Sie denselben Key.

## Im direkten Vergleich

### MX-Record

Ein DNS-Eintrag mit dem Namen eines Mailservers und dessen Priorität. Er beschreibt den Mailweg einer Domain und bestätigt kein einzelnes Postfach.

Domain-Abfrage anbinden

## Nutzen Sie das Profil im Backend oder prüfen Sie es im Konto.

Bestätigen Sie ein neues Konto für 1.000 gemeinsame Credits ohne Karte. Standard kostet vollständig 1 Credit, Erweitert 2. Wird nur der Standard-Teil abgeschlossen, kostet Erweitert 1 Credit.

Kostenlos starten

Dokumentation ansehen
