DATPAQ MX Lookup API
Mail exchange record lookup with optional SPF and SMTP checks
Mail exchange record lookup with optional SPF and SMTP checks
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/datpaq-com:datpaq-com-mx-lookup-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Datpaq Com MX Lookup API
version: 1.1.0
contact:
name: Datpaq Support
url: https://datpaq.com
license:
name: Proprietary
description: 'Operations tagged MX Lookup across 2 of this provider''s published API definitions: datpaq-com.yaml, datpaq-com-openapi.yaml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://datpaq.com/api/v1
description: Production
- url: https://staging.datpaq.com/api/v1
description: Staging
security:
- ApiKeyHeader: []
- ApiKeyQuery: []
tags:
- name: MX Lookup
description: Mail exchange record lookup with optional SPF and SMTP checks
paths:
/mx-lookup:
get:
tags:
- MX Lookup
operationId: mxLookupGet
summary: Look up MX records for one or more domains (GET)
description: Returns priority-sorted MX records with optional IP resolution, SMTP port 25 checks, and SPF parsing.
parameters:
- name: domains
in: query
required: true
description: 'Domains to check. Note the parameter name is plural (`domains`, not `domain`), even for a single domain. Accepts one domain or a comma-separated list (max 50).
'
schema:
type: string
example: gmail.com
- name: resolveIps
in: query
required: false
schema:
type: boolean
default: true
- name: validateSmtp
in: query
required: false
schema:
type: boolean
default: false
- name: includeSpf
in: query
required: false
schema:
type: boolean
default: false
responses:
'200':
description: MX lookup results
content:
application/json:
schema:
$ref: '#/components/schemas/GenericSuccess'
example:
- domain: gmail.com
mxRecords:
- priority: 5
exchange: gmail-smtp-in.l.google.com
ipAddresses:
- 142.250.102.27
smtpOpen: true
spf:
record: v=spf1 include:_spf.google.com ~all
includes:
- _spf.google.com
mechanism: ~all
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/RateLimited'
default:
$ref: '#/components/responses/ServiceUnavailable'
post:
tags:
- MX Lookup
operationId: mxLookupPost
summary: Look up MX records for one or more domains (POST)
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- domains
properties:
domains:
oneOf:
- type: string
example: gmail.com
- type: array
items:
type: string
maxItems: 50
resolveIps:
type: boolean
default: true
validateSmtp:
type: boolean
default: false
includeSpf:
type: boolean
default: false
example:
domains:
- gmail.com
- protonmail.com
resolveIps: true
validateSmtp: true
includeSpf: true
responses:
'200':
description: MX lookup results
content:
application/json:
schema:
$ref: '#/components/schemas/GenericSuccess'
example:
success: true
count: 2
data:
- domain: gmail.com
mxRecords:
- priority: 5
exchange: gmail-smtp-in.l.google.com
- domain: protonmail.com
mxRecords:
- priority: 10
exchange: mail.protonmail.ch
processingTime: 12ms
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/RateLimited'
default:
$ref: '#/components/responses/ServiceUnavailable'
servers:
- url: https://datpaq.com/api/v1
description: Production
- url: https://staging.datpaq.com/api/v1
description: Staging
components:
schemas:
ErrorResponse:
type: object
properties:
error:
type: string
description: Human-readable error message
example: Invalid API key
correlationId:
type: string
description: Request tracking identifier for support
example: abc123-def456-789ghi
service:
type: string
description: Service name that produced the error
example: ip-geolocation
GenericSuccess:
type: object
description: Standard success envelope. The data property structure varies by endpoint.
properties:
correlationId:
type: string
description: Request tracking identifier
example: abc123-def456
data:
type: object
description: Response payload (structure varies by endpoint)
cached:
type: boolean
description: Whether the response was served from cache
example: false
responses:
BadRequest:
description: Bad request — missing or invalid parameters
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
RateLimited:
description: Rate limit exceeded — retry after the indicated period
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
ServiceUnavailable:
description: Service temporarily unavailable
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
Unauthorized:
description: Unauthorized — missing or invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
securitySchemes:
ApiKeyHeader:
type: apiKey
in: header
name: x-api-key
description: API key passed via x-api-key request header
ApiKeyQuery:
type: apiKey
in: query
name: api_key
description: API key passed as api_key query parameter
x-refined-from:
- datpaq-com.yaml
- datpaq-com-openapi.yaml