DNS & WHOIS Lookup

Look up all 13 DNS record types plus full WHOIS registration data for up to 10 domains in one call. 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. Pay-per-call at $0.01 USDC over x402 on Base or Solana — no account, no API key. OpenAPI 3.1.0; 1 operation(s): POST /lookup.

OpenAPI Specification

done-dns-whois-lookup-openapi.yml Raw ↑
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