Signup Protection Pricing Documentation Sign up Log in

API Reference

Domain Validation Endpoint

The domain endpoint returns UserCheck's signals for a domain: whether it is disposable, its mail configuration, its age, and the other fields documented below.

Endpoint

GET /domain/{domain}

Parameters

Parameter Type Required Description
domain string Yes The domain to check (e.g., github.com)

Query parameters

Parameter Type Default Description
include_mx boolean true Set to false to skip the MX lookup. The mx and mx_records keys are then left out of the response entirely rather than returned as null. mx_providers is still returned.
wait string none Comma-separated list of fields to resolve before responding, instead of returning null and filling them in afterwards. Accepts domain_age_in_days and domain_authority. Pro plans only; unrecognized names are ignored.

wait trades response time for completeness. A field that is already known returns at normal speed; one that has to be looked up holds the response open until the lookup finishes. Ask only for the fields you actually need on the first response.

Request example

curl -X GET "https://api.usercheck.com/domain/github.com" \
  -H "Authorization: Bearer YOUR_API_KEY"

Response

Success response (200)

{
  "status": 200,
  "domain": "github.com",
  "domain_authority": 96,
  "tld_trust": 1,
  "domain_age_in_days": 6871,
  "mx": true,
  "mx_records": [
      { "hostname": "github-com.mail.protection.outlook.com", "priority": 0 }
  ],
  "mx_providers": [
      { "slug": "microsoft", "type": "mailbox", "grade": "professional" }
  ],
  "spf": "relaxed",
  "dmarc": "quarantine",
  "disposable": false,
  "public_domain": false,
  "relay_domain": false,
  "free_subdomain": false,
  "spam": false,
  "did_you_mean": null,
  "blocklisted": false
}

Response fields

Field Type Description
status integer HTTP status code indicating the result of the API request. 200: Successful request 400: Invalid input (malformed domain) 429: Rate limit exceeded
domain string The domain that was checked, in normalized form: lowercased, with internationalized names converted to their ASCII (punycode) representation.
domain_authority integer|null A 0–100 score indicating how established and credible a domain is. Higher scores indicate well-established domains with strong online presence. Lower scores may signal newly created or less reputable domains. The value is null when the score has not been determined. See Domain Authority. Pro Plan Only
tld_trust integer|null A 1–5 score indicating how strict the registration requirements are for the domain's TLD. Higher scores mean the registry performed more identity verification before issuing the domain. See TLD Trust. Pro Plan Only
domain_age_in_days integer|null The number of days since the domain was registered, based on the registration date reported by the domain's registry. The value is null when the registration date is unknown or hasn't been retrieved yet.
mx boolean|null Indicates whether the domain has valid MX (Mail Exchange) records, the DNS records that name the servers accepting mail for a domain. A value of true means the domain is configured to receive email. The value is null when the DNS lookup couldn't be completed.
mx_records array The domain's MX records, sorted by priority (lowest value first, the order in which sending servers try them). Each record contains the mail server hostname and its priority. Empty when the domain has no MX records.
mx_providers array Third-party services the domain delegates its MX records to. Empty when the domain manages its own MX infrastructure or uses an unrecognized setup. See MX Providers.
spf string|null The domain's SPF posture: how strictly its published SPF record limits who may send email as the domain. One of: strict, relaxed, neutral, permissive, missing, or invalid. The value is null when the SPF posture hasn't been assessed yet. See SPF & DMARC.
dmarc string|null The domain's effective DMARC policy: what it asks receivers to do with mail that fails authentication. One of: reject, quarantine, none, missing, or invalid. The value is null when the DMARC policy hasn't been assessed yet. See SPF & DMARC.
disposable boolean Indicates whether the domain is from a temporary or disposable email provider. These domains allow users to create temporary email addresses that typically expire after a short period, and are commonly used to bypass verification systems. Subdomains of a disposable domain are flagged as well. See Disposable Domains.
disposable_provider string|null Names the service operating the disposable domain, as context for the disposable flag: the domain itself rarely reveals which service is behind it. Usually the provider's primary domain, but an app store URL for providers that are mobile apps, so treat it as an opaque identifier. The value is null when the provider hasn't been identified. Only included in the response when disposable is true. See Disposable Domains. Pro Plan Only
public_domain boolean Indicates whether the domain is a public email service like Gmail, Yahoo Mail, or Outlook, where anyone can create a mailbox. Addresses on a public domain belong to unrelated individuals, unlike addresses on a company domain, which belong to one organization. See Public Domains.
relay_domain boolean Indicates whether the domain belongs to an email forwarding or relay service such as SimpleLogin, DuckDuckGo Email Protection, or Apple's Hide My Email. Addresses on these domains automatically forward mail to the owner's actual mailbox at another address, which stays hidden. See Relay Domains.
free_subdomain boolean Indicates whether the domain is a subdomain of a free subdomain or dynamic DNS service like duckdns.org. The parent domain itself is not flagged. See Free Subdomains.
spam boolean Indicates whether the domain is associated with spam or other abusive activity. These domains often look legitimate at first glance but have been flagged in UserCheck's dataset. A domain can be flagged as spam without being disposable. See Spam Domains.
did_you_mean string|null A suggested correction when the domain looks like a likely misspelling of a well-known domain (e.g., gmial.comgmail.com). The value is null when no suggestion is available. See Did You Mean.
blocklisted boolean Indicates whether the domain exactly matches an entry on your account's custom blocklist. Entries are managed in the dashboard or through the Blocklist endpoint. Pro Plan Only

Error responses

Invalid domain format (400)

{
  "status": 400,
  "error": "The domain is invalid."
}

Rate limit exceeded (429)

{
  "status": 429,
  "error": "Too many requests"
}
Previous
Authentication