openapi: 3.1.0 info: title: DNS & WHOIS Lookup description: Send up to 10 domain names and get back every DNS record type (A, AAAA, MX, CNAME, TXT, NS, PTR, SOA, SRV, CAA, NAPTR, DS, TLSA) plus the full WHOIS registration profile (registrar, dates, contacts, status, nameservers) for each one. URLs are accepted and automatically stripped down to the bare domain. Duplicate domains are quietly removed before processing. Results come back as one flat row per domain, ready to drop into a spreadsheet, database, or pipeline. version: 1.0.0 contact: name: _done url: https://forms.gle/5KzuSFH7p8hHtDmz7 email: info@underscoredone.com x-openapi-url: https://dns-whois-lookup.underscoredone.com/openapi.json x-logo: url: https://underscoredone.com/logo.png altText: _done x-guidance: POST an array of domain names (or full URLs) under the key 'domains'. You may send between 1 and 10 entries. The response is an array of objects, one per unique domain, each containing fields prefixed with 'dns_' (all 13 record types) and 'whois_' (full registration data). All fields are always present; empty string means no record found or data not available. Multiple values within a single record type are joined with ' | '. MX records are prefixed with their priority number. SOA is returned as a single human-readable string. DS and TLSA are attempted but silently left empty if unsupported. Raise a 400 error back to the caller if the API returns a 400. Never pass more than 10 domains in one call; split larger lists into batches. x-ai-instructions: POST an array of domain names (or full URLs) under the key 'domains'. You may send between 1 and 10 entries. The response is an array of objects, one per unique domain, each containing fields prefixed with 'dns_' (all 13 record types) and 'whois_' (full registration data). All fields are always present; empty string means no record found or data not available. Multiple values within a single record type are joined with ' | '. MX records are prefixed with their priority number. SOA is returned as a single human-readable string. DS and TLSA are attempted but silently left empty if unsupported. Raise a 400 error back to the caller if the API returns a 400. Never pass more than 10 domains in one call; split larger lists into batches. x-provider: _done — single-purpose utility APIs for developers and AI agents. Pay per call with USDC on Base Mainnet or Solana Mainnet. x-pricing: model: pay-per-call currency: USDC network: Base Mainnet or Solana Mainnet price: $0.01 x-keywords: - network - dns - whois - domain lookup - dns records - domain audit - mx record - spf dkim dmarc - domain expiry - migration verification - infrastructure check - bulk domain - utility - api - ai-agent - pay-per-call - usdc - x402 x-category: dns lookup x-provider-url: https://underscoredone.com x-agentcash-auth: mode: paid x-402: price: $0.01 network: eip155:8453 asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' pay_to: '0xE9740820225B3918b4ddd1292C7cA4Ca0e2C2F08' facilitator: https://api.cdp.coinbase.com/platform/v2/x402 scheme: exact description: Send up to 10 domain names and get back every DNS record type (A, AAAA, MX, CNAME, TXT, NS, PTR, SOA, SRV, CAA, NAPTR, DS, TLSA) plus the full WHOIS registration profile (registrar, dates, contacts, status, nameservers) for each one. URLs are accepted and automatically stripped down to the bare domain. Duplicate domains are quietly removed before processing. Results come back as one flat row per domain, ready to drop into a spreadsheet, database, or pipeline. mime_type: application/json networks: - network: eip155:8453 asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' pay_to: '0xE9740820225B3918b4ddd1292C7cA4Ca0e2C2F08' - network: solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp asset: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v pay_to: 8ugAWAXDB8V18kiUrGZTq1oMvU3C6Fxs8hfC6rvzQT3b paths: /lookup: post: tags: - dns lookup - whois lookup - dns - whois - domain lookup - dns records - nameservers - mx records - registrar lookup - rdap - domain registration - txt records - a record lookup - domain intelligence - bulk dns summary: Get all DNS records and WHOIS data for up to 10 domains at once description: Look up all DNS record types and WHOIS registration data for up to 10 domains at once. operationId: handler_lookup_post requestBody: content: application/json: schema: $ref: '#/components/schemas/Request' required: true responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/Response' examples: success: summary: Successful response value: api_version: 1.0.0 results: - domain: onescales.com checkedAt: '2026-06-15T01:45:08.607Z' dns_a: 23.227.38.65 dns_aaaa: '' dns_mx: 5 alt2.aspmx.l.google.com | 1 aspmx.l.google.com | 10 alt3.aspmx.l.google.com | 10 alt4.aspmx.l.google.com | 5 alt1.aspmx.l.google.com dns_cname: '' dns_txt: openai-domain-verification=dv-Y9cDXv64Bj8Z6h43mpki1rgt | v=spf1 include:_spf.google.com ~all dns_ns: carter.ns.cloudflare.com | bonnie.ns.cloudflare.com dns_ptr: '' dns_soa: mname=bonnie.ns.cloudflare.com rname=dns.cloudflare.com serial=2406862386 refresh=10000 retry=2400 expire=604800 minttl=1800 dns_srv: '' dns_caa: '' dns_naptr: '' dns_ds: '' dns_tlsa: '' whois_registrar: Cloudflare, Inc. whois_iana_id: '1910' whois_registrar_url: http://www.cloudflare.com whois_registrar_abuse_email: registrar-abuse@cloudflare.com whois_registrar_abuse_phone: '+1.6503198930' whois_created: '2022-10-11T10:20:28Z' whois_expires: '2028-10-11T10:20:28Z' whois_updated: '2023-02-13T02:38:06Z' whois_status: clientTransferProhibited whois_nameservers: bonnie.ns.cloudflare.com | carter.ns.cloudflare.com whois_registrant_name: '' whois_registrant_org: '' whois_registrant_address: '' whois_registrant_country: '' whois_registrant_phone: '' whois_admin_name: '' whois_admin_org: '' whois_admin_email: '' whois_admin_country: '' '422': description: Unprocessable — a required field is missing or the wrong type. Check the detail field for specifics. content: application/json: schema: type: object properties: detail: type: array '402': description: Payment required. Send a signed USDC payment on Base Mainnet or Solana Mainnet using the x402 protocol. headers: X-Payment-Response: description: x402 payment challenge — base64-encoded JSON with payment details. schema: type: string '400': description: Bad request — your input failed validation or could not be processed. Check the detail field for specifics. content: application/json: schema: type: object properties: detail: type: string x-ai-instructions: POST an array of domain names (or full URLs) under the key 'domains'. You may send between 1 and 10 entries. The response is an array of objects, one per unique domain, each containing fields prefixed with 'dns_' (all 13 record types) and 'whois_' (full registration data). All fields are always present; empty string means no record found or data not available. Multiple values within a single record type are joined with ' | '. MX records are prefixed with their priority number. SOA is returned as a single human-readable string. DS and TLSA are attempted but silently left empty if unsupported. Raise a 400 error back to the caller if the API returns a 400. Never pass more than 10 domains in one call; split larger lists into batches. x-guidance: POST an array of domain names (or full URLs) under the key 'domains'. You may send between 1 and 10 entries. The response is an array of objects, one per unique domain, each containing fields prefixed with 'dns_' (all 13 record types) and 'whois_' (full registration data). All fields are always present; empty string means no record found or data not available. Multiple values within a single record type are joined with ' | '. MX records are prefixed with their priority number. SOA is returned as a single human-readable string. DS and TLSA are attempted but silently left empty if unsupported. Raise a 400 error back to the caller if the API returns a 400. Never pass more than 10 domains in one call; split larger lists into batches. x-payment-info: price: fixed: mode: fixed currency: USD amount: '0.01' protocols: - x402: {} components: schemas: DomainResult: properties: domain: type: string title: Domain description: The bare domain name that was looked up. checkedAt: type: string title: Checkedat description: The date and time this lookup was performed, in UTC. dns_a: type: string title: Dns A description: IPv4 address records. Multiple values joined with ' | '. default: '' dns_aaaa: type: string title: Dns Aaaa description: IPv6 address records. Multiple values joined with ' | '. default: '' dns_mx: type: string title: Dns Mx description: Mail server records, each prefixed with its priority number. Multiple values joined with ' | '. default: '' dns_cname: type: string title: Dns Cname description: Canonical name alias records. Multiple values joined with ' | '. default: '' dns_txt: type: string title: Dns Txt description: Text records (SPF, DKIM, domain verification, etc). Multiple values joined with ' | '. default: '' dns_ns: type: string title: Dns Ns description: Name server records. Multiple values joined with ' | '. default: '' dns_ptr: type: string title: Dns Ptr description: Reverse DNS pointer records. Multiple values joined with ' | '. default: '' dns_soa: type: string title: Dns Soa description: Start of Authority record as a single human-readable string. default: '' dns_srv: type: string title: Dns Srv description: Service locator records. Multiple values joined with ' | '. default: '' dns_caa: type: string title: Dns Caa description: Certification Authority Authorization records. Multiple values joined with ' | '. default: '' dns_naptr: type: string title: Dns Naptr description: Naming Authority Pointer records. Multiple values joined with ' | '. default: '' dns_ds: type: string title: Dns Ds description: Delegation Signer records for DNSSEC. Multiple values joined with ' | '. default: '' dns_tlsa: type: string title: Dns Tlsa description: TLS Authentication records. Multiple values joined with ' | '. default: '' whois_registrar: type: string title: Whois Registrar description: The company that registered this domain. default: '' whois_iana_id: type: string title: Whois Iana Id description: The registrar's IANA identifier number. default: '' whois_registrar_url: type: string title: Whois Registrar Url description: The registrar's website. default: '' whois_registrar_abuse_email: type: string title: Whois Registrar Abuse Email description: The registrar's abuse contact email. default: '' whois_registrar_abuse_phone: type: string title: Whois Registrar Abuse Phone description: The registrar's abuse contact phone number. default: '' whois_created: type: string title: Whois Created description: When this domain was first registered. default: '' whois_expires: type: string title: Whois Expires description: When this domain registration expires. default: '' whois_updated: type: string title: Whois Updated description: When this domain registration was last updated. default: '' whois_status: type: string title: Whois Status description: The current status flags on the domain registration. default: '' whois_nameservers: type: string title: Whois Nameservers description: The nameservers listed in the WHOIS record. Multiple values joined with ' | '. default: '' whois_registrant_name: type: string title: Whois Registrant Name description: The name of the person or entity that registered the domain. default: '' whois_registrant_org: type: string title: Whois Registrant Org description: The organisation that registered the domain. default: '' whois_registrant_address: type: string title: Whois Registrant Address description: The registrant's street address. default: '' whois_registrant_country: type: string title: Whois Registrant Country description: The registrant's country. default: '' whois_registrant_phone: type: string title: Whois Registrant Phone description: The registrant's phone number. default: '' whois_admin_name: type: string title: Whois Admin Name description: The name of the administrative contact for this domain. default: '' whois_admin_org: type: string title: Whois Admin Org description: The organisation of the administrative contact. default: '' whois_admin_email: type: string title: Whois Admin Email description: The email address of the administrative contact. default: '' whois_admin_country: type: string title: Whois Admin Country description: The country of the administrative contact. default: '' type: object required: - domain - checkedAt title: DomainResult HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError Request: properties: domains: items: type: string type: array title: Domains description: A list of domain names or full web addresses to look up. You can pass bare domains like 'example.com', or full addresses like 'https://www.example.com/page' — the system will automatically extract just the domain. Send between 1 and 10 entries per request. type: object required: - domains title: Request example: domains: - onescales.com - hillms.com - underscore.com Response: properties: api_version: type: string title: Api Version description: The version of this API. default: 1.0.0 results: items: $ref: '#/components/schemas/DomainResult' type: array title: Results description: One result object per unique domain, containing all DNS records and WHOIS registration data. type: object required: - results title: Response example: api_version: 1.0.0 results: - checkedAt: '2026-06-15T01:45:08.607Z' dns_a: 23.227.38.65 dns_aaaa: '' dns_caa: '' dns_cname: '' dns_ds: '' dns_mx: 1 aspmx.l.google.com | 5 alt1.aspmx.l.google.com | 5 alt2.aspmx.l.google.com | 10 alt3.aspmx.l.google.com | 10 alt4.aspmx.l.google.com dns_naptr: '' dns_ns: bonnie.ns.cloudflare.com | carter.ns.cloudflare.com dns_ptr: '' dns_soa: mname=bonnie.ns.cloudflare.com rname=dns.cloudflare.com serial=2406862386 refresh=10000 retry=2400 expire=604800 minttl=1800 dns_srv: '' dns_tlsa: '' dns_txt: openai-domain-verification=dv-Y9cDXv64Bj8Z6h43mpki1rgt | v=spf1 include:_spf.google.com ~all domain: onescales.com whois_admin_country: '' whois_admin_email: '' whois_admin_name: '' whois_admin_org: '' whois_created: '2022-10-11T10:20:28Z' whois_expires: '2028-10-11T10:20:28Z' whois_iana_id: '1910' whois_nameservers: bonnie.ns.cloudflare.com | carter.ns.cloudflare.com whois_registrant_address: '' whois_registrant_country: '' whois_registrant_name: '' whois_registrant_org: '' whois_registrant_phone: '' whois_registrar: Cloudflare, Inc. whois_registrar_abuse_email: registrar-abuse@cloudflare.com whois_registrar_abuse_phone: '+1.6503198930' whois_registrar_url: http://www.cloudflare.com whois_status: clientTransferProhibited whois_updated: '2023-02-13T02:38:06Z' ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type input: title: Input ctx: type: object title: Context type: object required: - loc - msg - type title: ValidationError securitySchemes: siwx: type: apiKey in: header name: SIGN-IN-WITH-X description: CAIP-122 wallet signature for repeat access after payment servers: - url: https://dns-whois-lookup.underscoredone.com description: Production tags: - name: dns lookup - name: whois lookup - name: dns - name: whois - name: domain lookup - name: dns records - name: nameservers - name: mx records - name: registrar lookup - name: rdap - name: domain registration - name: txt records - name: a record lookup - name: domain intelligence - name: bulk dns x402Version: 2 x-payment-accepts: - scheme: exact network: eip155:8453 payTo: '0xE9740820225B3918b4ddd1292C7cA4Ca0e2C2F08' asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' - scheme: exact network: solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp payTo: 8ugAWAXDB8V18kiUrGZTq1oMvU3C6Fxs8hfC6rvzQT3b asset: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v