---
title: "MX Lookup API: маршрут почты и провайдер домена | Emvero"
description: "Получайте MX, маршрут, провайдера и опубликованные SPF и DMARC одним API-запросом по домену. Читайте даты, частичные результаты и правила безопасного повтора."
url: https://emvero.io/ru/domain-intelligence-api/
language: ru
updated: 2026-10-08
---

MX Lookup API

# Получайте MX-записи и почтовые данные домена через API.

Получайте MX-записи, маршрут и почтового провайдера одним запросом по домену. JSON-профиль также содержит SPF/DMARC, известные признаки домена, IP-адреса и ASN. Параметр variant=extended добавляет сведения о регистрации из реестра.

JSON-ответ сохраняет статус, источник и актуальность каждого наблюдения. Domain Intelligence не открывает SMTP-сессию, не проверяет ящик и не подтверждает подлинность письма.

Начать бесплатно

Документация

GET для одного домена · Структурированный JSON · Обязательный Idempotency-Key · Общие кредиты

## Запросите домен со своего сервера

Эндпоинт — `GET /v1/domain/{domain}`. Передайте домен в пути, учетные данные в `Authorization: Bearer` и обязательный `Idempotency-Key`. Учетные данные остаются на сервере. У запроса нет тела. Необязательный параметр `variant` принимает `standard` по умолчанию или `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` и значения в документации синтетические. Передавайте домен, а не email-адрес, URL или IP-адрес. Каждый запрос проверяет один домен; поддомен запрашивается как отдельный домен.

Чтобы получить сведения о регистрации, добавьте `?variant=extended`. Для этой отдельной операции нужен новый ключ:

```
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"
```

**Посмотреть полный JSON-ответ · Расширенный режим**

Условный пример. Стандартный режим возвращает registration: null и billing.variant: standard. Здесь показан новый полный расширенный запрос с данными регистрации стоимостью 2 кредита. 
```
{
  "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
  }
}
```

## Прочитайте маршрут, MX и совпадение провайдера

`mail_routing.status` описывает маршрут домена. `mx.records` содержит принимающие серверы и их приоритеты. Наличие маршрута не подтверждает принятие конкретного получателя. [Глоссарий MX](https://emvero.io/ru/glossary/mx-record/) объясняет эту DNS-запись.

`mx.provider_match` принимает `matched`, `mixed`, `unknown` или `not_applicable`. Если предпочтительные серверы указывают на одного известного оператора, API сообщает совпадение. Это может быть фильтрующий шлюз перед сервером ящиков. `mx.truncated` показывает, что список сокращен. Статья о том, [как узнать почтового провайдера](https://emvero.io/ru/blog/how-to-find-email-provider/), разбирает ограничения такого определения.

`email.classification` содержит известные признаки одноразовой почты и публичного провайдера. Отрицательная классификация означает отсутствие совпадения в справочных данных, а не доказательство обратного. `email.catch_all.state` возвращает уже сохраненное состояние домена; этот запрос не устанавливает его новой SMTP-пробой.

`email_authentication` содержит поддерживаемые опубликованные данные SPF и DMARC. Их `evaluation` равен `not_performed`: API не проверяет письмо или отправителя, не ищет DKIM-ключи и не вычисляет SPF через рекурсивный обход includes. Репутация отправки и владелец домена в профиль не входят.

## Прочитайте сетевые данные и регистрацию

`network.mail` группирует публичные IP-адреса и их `asn` по почтовым серверам. `network.web` содержит запрошенный домен, `cname_chain`, адреса, `truncated` и `edge_provider`. Запрос не добавляет `www.` и не проверяет доступность сайта по HTTP. CDN или прокси может скрывать исходный сервер.

`network.autonomous_systems` описывает каждый ASN через `handle`, `name`, `country` и `type`. Страна относится к регистрации сети, а не к геолокации IP. Неизвестные значения остаются `null` или `unknown`. Ошибки сетевых данных не меняют общий статус и стоимость: проверяйте `network.meta` и `network.web.meta` отдельно.

При `variant=extended` объект `registration` содержит `registered_domain`, `registered_at`, `age_days`, `expires_at`, `registrar`, `statuses` и `meta`. Для поддомена реестр возвращает сведения о регистрируемом родительском домене. Без даты регистрации расширенный ответ будет частичным; причину недоступности или отсутствия данных показывает `registration.meta.reason`. В стандартном режиме `registration` равен `null`. Возраст регистрации не подтверждает возраст компании или владение доменом.

## Читайте общий статус вместе с метаданными полей

Статус профиля — `complete` или `partial`. В `meta` каждой части находятся статус, причина, источник, время наблюдения и срок актуальности, а также признак устаревших данных. `meta.reason` объясняет, почему значение не установлено. Не заменяйте исходное время наблюдения датой получения ответа.

Профиль `partial` может содержать пригодный маршрут, даже если дополнительное поле недоступно, устарело или сокращено. Совпадение провайдера `unknown` или отсутствие наблюдения catch-all сами по себе не делают весь профиль частичным. `complete` описывает полноту профиля, а не положительный вердикт о домене.

При отказе источника маршрута эндпоинт может вернуть `503 source_unavailable`, а не предположение об отсутствии почты. Отделяйте ошибки запроса от наблюдений о домене, на которые опирается приложение.

## Повторяйте запрос с тем же ключом

В течение 24 часов после завершения тот же ключ, домен и режим возвращают сохраненный ответ без изменений. Повтор не обновляет наблюдения. Использование ключа с другим доменом или режимом вызывает `409 idempotency_conflict`. Если исходный запрос еще выполняется, дождитесь указанного интервала и повторите запрос с тем же ключом.

Полный `standard` стоит 1 общий кредит, полный `extended` — 2. Если стандартная часть завершена, но дата регистрации недоступна, `extended` стоит 1 кредит. Остальные частичные результаты, сохраненные повторы и подтвержденные отказы стоят 0. Сетевые сведения не влияют на стоимость. При повторе `billing.operation_credits` сохраняет исходную стоимость, а `X-Credits-Charged` описывает текущий запрос.

При `commit_unknown` или `accounting_uncertain` списание могло уже произойти. В ответе нет `X-Credits-Charged`; отсутствие заголовка не подтверждает нулевую стоимость. Повторите запрос с тем же ключом, чтобы обратиться к той же операции. Новый ключ создает новую работу.

## Выберите подходящий сценарий домена

Страница [Domain Intelligence в аккаунте](https://emvero.io/ru/domain-intelligence/) объясняет запрос без программирования. Если нужен только ответ, может ли домен принимать почту, бесплатная [проверка почтового домена](https://emvero.io/ru/email-domain-checker/) решает эту более узкую задачу без аккаунта.

Проверка входных данных, полная схема ответа и обработка ошибок описаны в [руководстве Domain Intelligence API](https://docs.emvero.io/using/domain-intelligence/). Ни один из этих двух доменных сценариев не проверяет конкретный ящик и не отправляет письма.

Вопросы

## Часто спрашивают.

**Какие поля домена возвращает API?**

Ответ содержит маршрут, MX-серверы и приоритеты, провайдера, признаки одноразовой почты и публичного сервиса, сохраненное состояние catch-all, SPF/DMARC, IP-адреса почты и сайта, CNAME, распознанный CDN или прокси и автономные системы. Расширенный режим добавляет регистрацию. У наблюдений сохраняются источник и статус.

**Подтверждает ли почтовый маршрут существование ящика?**

Нет. Маршрут описывает домен. Запрос не делает SMTP-пробу и не подтверждает конкретный ящик, его владельца или будущую доставку во входящие.

**Проверяет ли запрос прохождение SPF или DMARC отправителем?**

Он читает опубликованные записи и поддерживаемые поля синтаксиса и политики. `evaluation` имеет значение `not_performed`. Запрос не анализирует письмо, не ищет DKIM-ключи и не проходит по SPF includes рекурсивно.

**Можно ли использовать частичный профиль?**

Читайте статус и метаданные нужной части. Ответ `partial` может содержать известный маршрут при недоступных или устаревших дополнительных сведениях. Неизвестное состояние catch-all само по себе не обязательно делает весь профиль частичным.

**Сколько стоят полные запросы и повторы?**

Полный `standard` стоит 1 общий кредит, полный `extended` — 2. Если стандартная часть завершена, но дата регистрации недоступна, `extended` стоит 1 кредит. Остальные частичные результаты, сохраненные повторы и подтвержденные отказы стоят 0. Сетевые сведения не влияют на стоимость. При повторе `billing.operation_credits` сохраняет исходную стоимость, а `X-Credits-Charged` описывает текущий запрос. При `commit_unknown` или `accounting_uncertain` списание неизвестно и этот заголовок отсутствует: повторите тот же ключ.

## Прямое сравнение

### MX-запись

DNS-запись с именем сервера для входящей почты домена и его приоритетом. Она не подтверждает существование ящика.

Подключить запрос по домену

## Используйте профиль на сервере или прочитайте его в аккаунте.

Подтвердите новый аккаунт и получите 1 000 общих кредитов без карты. Полный стандартный запрос стоит 1 кредит, расширенный — 2. Если завершена только стандартная часть расширенного запроса, стоимость — 1 кредит.

Начать бесплатно

Документация
