Domain Availability Checker

Check whether 1–10 domain names have an active registration record using the official RDAP protocol. Give this API up to 10 domain names and it will tell you whether each one has a registration record on file with the official registry. It uses RDAP — the modern, structured replacement for WHOIS — so there is no messy free-text parsing. Each domain comes back labeled 'registered', 'unregistered', or 'indeterminate' (when the registry does not support RDAP for that ending). Important: 'unregistered' means no record was found, which usually means the name is available — but reserved or premium names can also return no record. This API tells you registration status only; it does not tell you price, premium status, or whether a registrar will actually let you buy the name. 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 /check.

OpenAPI Specification

done-domain-availability-checker-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Domain Availability Checker
  description: 'Give this API up to 10 domain names and it will tell you whether each one has a registration record on file
    with the official registry. It uses RDAP — the modern, structured replacement for WHOIS — so there is no messy free-text
    parsing. Each domain comes back labeled ''registered'', ''unregistered'', or ''indeterminate'' (when the registry does
    not support RDAP for that ending). Important: ''unregistered'' means no record was found, which usually means the name
    is available — but reserved or premium names can also return no record. This API tells you registration status only; it
    does not tell you price, premium status, or whether a registrar will actually let you buy the name.'
  version: 1.0.0
  contact:
    name: _done
    url: https://forms.gle/5KzuSFH7p8hHtDmz7
    email: info@underscoredone.com
  x-openapi-url: https://domain-availability-checker.underscoredone.com/openapi.json
  x-logo:
    url: https://underscoredone.com/logo.png
    altText: _done
  x-guidance: 'POST up to 10 plain registrable domain names (like ''example.com'', not ''https://example.com'' or ''sub.example.com'')
    in the ''domains'' array. Each result has a ''registered'' field: true means a record exists, false means none was found,
    null means the result could not be determined. A false result does NOT guarantee the domain is purchasable — reserved
    and premium names can also return false. The ''tld_supported'' field tells you whether RDAP coverage exists for that domain
    ending; if false, treat the result as inconclusive. Process results one at a time — the API paces lookups to avoid rate
    limits, so a 10-domain batch may take up to 5 seconds. Never interpret ''unregistered'' as a purchase guarantee; always
    show the disclaimer to end users.'
  x-ai-instructions: 'POST up to 10 plain registrable domain names (like ''example.com'', not ''https://example.com'' or ''sub.example.com'')
    in the ''domains'' array. Each result has a ''registered'' field: true means a record exists, false means none was found,
    null means the result could not be determined. A false result does NOT guarantee the domain is purchasable — reserved
    and premium names can also return false. The ''tld_supported'' field tells you whether RDAP coverage exists for that domain
    ending; if false, treat the result as inconclusive. Process results one at a time — the API paces lookups to avoid rate
    limits, so a 10-domain batch may take up to 5 seconds. Never interpret ''unregistered'' as a purchase guarantee; always
    show the disclaimer to end users.'
  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
  - domain
  - availability
  - checker
  - rdap
  - whois
  - domain-lookup
  - tld
  - registration-status
  - name-search
  - brand-naming
  - ai-agent
  - utility
  - api
  - pay-per-call
  - usdc
  - x402
  x-category: domain availability
  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: 'Give this API up to 10 domain names and it will tell you whether each one has a registration record on file
      with the official registry. It uses RDAP — the modern, structured replacement for WHOIS — so there is no messy free-text
      parsing. Each domain comes back labeled ''registered'', ''unregistered'', or ''indeterminate'' (when the registry does
      not support RDAP for that ending). Important: ''unregistered'' means no record was found, which usually means the name
      is available — but reserved or premium names can also return no record. This API tells you registration status only;
      it does not tell you price, premium status, or whether a registrar will actually let you buy the name.'
    mime_type: application/json
    networks:
    - network: eip155:8453
      asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
      pay_to: '0xE9740820225B3918b4ddd1292C7cA4Ca0e2C2F08'
    - network: solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp
      asset: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
      pay_to: 8ugAWAXDB8V18kiUrGZTq1oMvU3C6Fxs8hfC6rvzQT3b
paths:
  /check:
    post:
      tags:
      - domain availability
      - is domain available
      - is domain registered
      - check domain availability
      - domain name search
      - available domains
      - rdap lookup
      - domain
      - domain registration check
      - unregistered domain
      - buy domain check
      - bulk domain check
      - domain availability api
      summary: Look up whether domain names are registered using official RDAP registry data.
      description: Look up whether each submitted domain name has a registration record, using the official RDAP registry
        system.
      operationId: check_check_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckRequest'
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CheckResponse'
              examples:
                success:
                  summary: Successful response
                  value:
                    count: 2
                    results:
                    - domain: example.com
                      registered: true
                      status: registered
                      rdap_source: registry
                      tld_supported: true
                      note: A registration record exists for this domain.
                    - domain: thisnameprobablyhasnorecord12345.ai
                      registered: false
                      status: unregistered
                      rdap_source: registry
                      tld_supported: true
                      note: No registration record found. Usually means unregistered, but reserved or premium names can also
                        return this result.
                    queried_at: '2026-06-26T09:00:00Z'
                    disclaimer: Status reflects whether a registration record exists. It does not confirm price, premium status,
                      or that an 'unregistered' name is purchasable at standard cost.
                    api_version: 1.0.0
        '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 up to 10 plain registrable domain names (like ''example.com'', not ''https://example.com''
        or ''sub.example.com'') in the ''domains'' array. Each result has a ''registered'' field: true means a record exists,
        false means none was found, null means the result could not be determined. A false result does NOT guarantee the domain
        is purchasable — reserved and premium names can also return false. The ''tld_supported'' field tells you whether RDAP
        coverage exists for that domain ending; if false, treat the result as inconclusive. Process results one at a time
        — the API paces lookups to avoid rate limits, so a 10-domain batch may take up to 5 seconds. Never interpret ''unregistered''
        as a purchase guarantee; always show the disclaimer to end users.'
      x-guidance: 'POST up to 10 plain registrable domain names (like ''example.com'', not ''https://example.com'' or ''sub.example.com'')
        in the ''domains'' array. Each result has a ''registered'' field: true means a record exists, false means none was
        found, null means the result could not be determined. A false result does NOT guarantee the domain is purchasable
        — reserved and premium names can also return false. The ''tld_supported'' field tells you whether RDAP coverage exists
        for that domain ending; if false, treat the result as inconclusive. Process results one at a time — the API paces
        lookups to avoid rate limits, so a 10-domain batch may take up to 5 seconds. Never interpret ''unregistered'' as a
        purchase guarantee; always show the disclaimer to end users.'
      x-payment-info:
        price:
          fixed:
            mode: fixed
            currency: USD
            amount: '0.01'
        protocols:
        - x402: {}
components:
  schemas:
    CheckRequest:
      properties:
        domains:
          items:
            type: string
          type: array
          maxItems: 10
          minItems: 1
          title: Domains
          description: Between 1 and 10 domain names to check, like 'example.com'. Use the plain domain only — no 'https://',
            no 'www.', no subdomains.
      type: object
      required:
      - domains
      title: CheckRequest
      example:
        domains:
        - example.com
        - mybrand.ai
        - coolstartup.io
    CheckResponse:
      properties:
        api_version:
          type: string
          title: Api Version
          description: The version of this API.
          default: 1.0.0
        count:
          type: integer
          title: Count
          description: How many domains were checked.
        results:
          items:
            $ref: '#/components/schemas/DomainResult'
          type: array
          title: Results
          description: One result object for each domain you submitted.
        queried_at:
          type: string
          title: Queried At
          description: The date and time the check was run, in UTC.
        disclaimer:
          type: string
          title: Disclaimer
          description: An important reminder that 'unregistered' does not guarantee a domain is available to purchase.
      type: object
      required:
      - count
      - results
      - queried_at
      - disclaimer
      title: CheckResponse
      example:
        api_version: 1.0.0
        count: 1
        disclaimer: Status reflects whether a registration record exists. It does not confirm price, premium status, or that
          an 'unregistered' name is purchasable at standard cost.
        queried_at: '2026-06-26T09:00:00Z'
        results:
        - domain: example.com
          note: A registration record exists for this domain.
          rdap_source: registry
          registered: true
          status: registered
          tld_supported: true
    DomainResult:
      properties:
        domain:
          type: string
          title: Domain
          description: The domain name that was checked.
        registered:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Registered
          description: True if a registration record exists, false if none was found, null if the result could not be determined.
        status:
          type: string
          title: Status
          description: One of 'registered', 'unregistered', or 'indeterminate'.
        rdap_source:
          type: string
          title: Rdap Source
          description: Where the lookup was performed — usually 'registry'.
        tld_supported:
          type: boolean
          title: Tld Supported
          description: Whether RDAP is available for this domain ending. If false, treat the result as inconclusive.
        note:
          type: string
          title: Note
          description: A plain-English explanation of the result.
      type: object
      required:
      - domain
      - registered
      - status
      - rdap_source
      - tld_supported
      - note
      title: DomainResult
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    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://domain-availability-checker.underscoredone.com
  description: Production
tags:
- name: domain availability
- name: is domain available
- name: is domain registered
- name: check domain availability
- name: domain name search
- name: available domains
- name: rdap lookup
- name: domain
- name: domain registration check
- name: unregistered domain
- name: buy domain check
- name: bulk domain check
- name: domain availability api
x402Version: 2
x-payment-accepts:
- scheme: exact
  network: eip155:8453
  payTo: '0xE9740820225B3918b4ddd1292C7cA4Ca0e2C2F08'
  asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
- scheme: exact
  network: solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp
  payTo: 8ugAWAXDB8V18kiUrGZTq1oMvU3C6Fxs8hfC6rvzQT3b
  asset: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v