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.com → gmail.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"
}