{"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.","x-pricing":{"model":"pay-per-call","currency":"USDC","network":"Base 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":"network","x-provider-url":"https://underscoredone.com","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"}},"paths":{"/lookup":{"post":{"tags":["Network"],"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"},"examples":{"typical":{"summary":"Typical input","value":{"domains":["onescales.com","hillms.com","underscore.com"]}},"zero_or_empty":{"summary":"Zero or empty input","value":{"domains":[]}},"negative_or_invalid":{"summary":"Invalid input (400 error)","value":{"domains":["not_a_domain","!!!bad###"]}},"large":{"summary":"Large input","value":{"domains":["example.com","google.com","cloudflare.com","github.com","stripe.com","openai.com","fastapi.tiangolo.com","python.org","pypi.org","docs.python.org"]}}}}},"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":"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_cname":"","dns_txt":"openai-domain-verification=dv-Y9cDXv64Bj8Z6h43mpki1rgt | v=spf1 include:_spf.google.com ~all","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_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 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"}]}