CatchDoms Expired Domains API Domains API

The Domains API from CatchDoms Expired Domains API — 2 operation(s) for domains.

Operations 2

GET /domains Search expired and auction domains #
GET /domains/{domain} Get a single domain by ID #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/catchdoms:catchdoms-domains-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API 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 Specification

catchdoms-domains-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: CatchDoms Domains API
  description: Search expired, auction, brandable, aged deleted, and pending-delete domains from 20+ sources with SEO metrics, quality scores, traffic estimates, and auction prices. Updated continuously across source-specific schedules.
  version: 1.1.1
  contact:
    name: CatchDoms
    url: https://catchdoms.com
    email: hello@catchdoms.com
  x-logo:
    url: https://catchdoms.com/img/favicons/android-chrome-192x192.png
servers:
- url: https://catchdoms.com/api
  description: Production
security:
- BearerAuth: []
tags:
- name: Domains
paths:
  /domains:
    get:
      operationId: listDomains
      summary: Search expired and auction domains
      description: Returns paginated list of domains matching the given filters, sorted by quality score.
      tags:
      - Domains
      parameters:
      - name: source
        in: query
        description: Filter by source platform
        schema:
          type: string
          enum:
          - dynadot
          - catched
          - dropcatch
          - godaddy
          - gname
          - snapnames
          - ukdroplists
          - subreg
          - webexpire
          - parkio
          - bloomup
          - nicsell
          - namesilo
          - namecheap
          - sedo
          - gnews-domains
          - backorders-domains
          - domainlore
          - rakkodomain
          - seodomains
          - nameshift
          - namepros
          - regfree
      - name: tld
        in: query
        description: Filter by TLD (e.g. .com, .fr). Comma-separated for multiple.
        schema:
          type: string
        example: .fr,.de,.it
      - name: score_min
        in: query
        description: Minimum quality score (0-100). 50+ for good, 70+ for excellent.
        schema:
          type: integer
          minimum: 0
          maximum: 100
      - name: age_min
        in: query
        description: Minimum domain age in years (Wayback Machine first snapshot).
        schema:
          type: integer
          minimum: 0
      - name: type
        in: query
        description: Filter by domain type
        schema:
          type: string
          enum:
          - auction
          - closeout
          - backorder
      - name: has_bids
        in: query
        description: Only domains with active auction bids
        schema:
          type: boolean
      - name: has_backlinks
        in: query
        description: Only domains with referring domains
        schema:
          type: boolean
      - name: has_gmb
        in: query
        description: Only domains with a Google Business listing
        schema:
          type: boolean
      - name: has_edu_gov
        in: query
        description: Only domains with .edu or .gov referring domains
        schema:
          type: boolean
      - name: da_min
        in: query
        description: Minimum Domain Authority (0-100)
        schema:
          type: integer
          minimum: 0
          maximum: 100
      - name: rd_min
        in: query
        description: Minimum referring domains count
        schema:
          type: integer
          minimum: 0
      - name: tf_min
        in: query
        description: Minimum Trust Flow (0-100)
        schema:
          type: integer
          minimum: 0
          maximum: 100
      - name: cf_min
        in: query
        description: Minimum Citation Flow (0-100)
        schema:
          type: integer
          minimum: 0
          maximum: 100
      - name: categories
        in: query
        description: 'Comma-separated categories: TTF topics or seo.domains categories, parent (health) or parent/child (recreation/travel). Case-insensitive.'
        schema:
          type: string
      - name: techs
        in: query
        description: 'Comma-separated historical tech stack labels (case-sensitive). OR semantic: a domain matches if its historical_tech contains ANY of the labels. Examples: ''WordPress'', ''Google Maps'', ''Stripe,Shopify''. Pro plans cannot get regfee results through this filter — the access-regfree gate is enforced before the filter applies.'
        schema:
          type: string
          maxLength: 500
        example: WordPress,Yoast SEO
      - name: language
        in: query
        description: Filter by detected language code (EN, FR, DE, ES, etc.)
        schema:
          type: string
          maxLength: 5
      - name: contains
        in: query
        description: Keyword the domain name must contain. Single term or comma-separated list with OR semantic (e.g. 'entreprise,entrepreneur' matches names containing either).
        schema:
          type: string
          maxLength: 200
        example: entreprise,entrepreneur
      - name: price_min
        in: query
        description: Minimum price or bid in each source's native currency
        schema:
          type: number
          minimum: 0
      - name: price_max
        in: query
        description: Maximum price or bid in each source's native currency
        schema:
          type: number
          minimum: 0
      - name: snapshots_min
        in: query
        description: Minimum Wayback Machine snapshots
        schema:
          type: integer
          minimum: 0
      - name: use_cases
        in: query
        description: 'Comma-separated buyer-intent categories derived from historical tech. OR semantic: a domain matches if it has ANY requested category. Available values: ecommerce, local-biz, news, saas, forum, media, developer.'
        schema:
          type: string
          maxLength: 200
        example: ecommerce,saas
      - name: traffic_min
        in: query
        description: Minimum latest estimated worldwide monthly organic traffic
        schema:
          type: integer
          minimum: 0
      - name: created_after
        in: query
        description: Only domains added on or after this date
        schema:
          type: string
          format: date
        example: '2026-09-01'
      - name: created_before
        in: query
        description: Only domains added before this date
        schema:
          type: string
          format: date
        example: '2026-09-02'
      - name: ends_after
        in: query
        description: Only auctions ending on or after this date
        schema:
          type: string
          format: date
        example: '2026-09-11'
      - name: ends_before
        in: query
        description: Only auctions ending before this date
        schema:
          type: string
          format: date
        example: '2026-09-12'
      - name: include_historical_traffic
        in: query
        description: Include the full historical_traffic object. Disabled by default because the payload is comparatively large.
        schema:
          type: boolean
          default: false
      - name: per_page
        in: query
        description: Results per page (1-100, default 50)
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 50
      - name: page
        in: query
        description: Page number
        schema:
          type: integer
          minimum: 1
          default: 1
      - name: after_id
        in: query
        description: 'Keyset cursor for bulk access: returns rows with id > after_id ordered by id asc — cheap at any depth, preferred over deep page offsets for full syncs. The response gains a top-level `cursor` object (next_after_id, has_more); pass next_after_id back as after_id to continue. page/per_page offsets and standard links/meta are non-authoritative in cursor mode. Cursor results ALWAYS exclude source=regfree rows; requesting source=regfree with after_id, or using the cursor from a trial account or free API channel, returns 403 cursor_not_available. For incremental syncs prefer created_after.'
        schema:
          type: integer
          minimum: 0
      responses:
        '200':
          description: Paginated list of domains
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Domain'
                  links:
                    $ref: '#/components/schemas/PaginationLinks'
                  meta:
                    $ref: '#/components/schemas/PaginationMeta'
                  cursor:
                    type: object
                    description: Present only when the request used after_id (keyset mode). links/meta are non-authoritative in cursor mode.
                    properties:
                      after_id:
                        type: integer
                      next_after_id:
                        type:
                        - integer
                        - 'null'
                      has_more:
                        type: boolean
                      order:
                        type: string
                        example: id asc
                      note:
                        type: string
        '401':
          description: Missing or invalid API token
        '403':
          description: 'Valid token but no Pro subscription — or, for after_id requests, cursor_not_available: the keyset cursor is denied for free API channels, trial accounts and source=regfree (JSON body: error, message, docs)'
  /domains/{domain}:
    get:
      operationId: getDomain
      summary: Get a single domain by ID
      description: Returns full details for a specific domain.
      tags:
      - Domains
      parameters:
      - name: domain
        in: path
        required: true
        description: Domain ID
        schema:
          type: integer
      responses:
        '200':
          description: Domain details
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Domain'
        '404':
          description: Domain not found
components:
  schemas:
    PaginationLinks:
      type: object
      properties:
        first:
          type:
          - string
          - 'null'
        last:
          type:
          - string
          - 'null'
        prev:
          type:
          - string
          - 'null'
        next:
          type:
          - string
          - 'null'
    PaginationMeta:
      type: object
      properties:
        current_page:
          type: integer
        last_page:
          type: integer
        per_page:
          type: integer
        total:
          type: integer
        from:
          type:
          - integer
          - 'null'
        to:
          type:
          - integer
          - 'null'
    Domain:
      type: object
      properties:
        id:
          type: integer
          description: Unique domain identifier
        name:
          type: string
          description: Full domain name
          example: example.fr
        tld:
          type: string
          description: TLD with dot prefix
          example: .fr
        source:
          type: string
          description: Source platform
          enum:
          - dynadot
          - catched
          - dropcatch
          - godaddy
          - gname
          - snapnames
          - ukdroplists
          - subreg
          - webexpire
          - parkio
          - bloomup
          - nicsell
          - namesilo
          - namecheap
          - sedo
          - gnews-domains
          - backorders-domains
          - domainlore
          - rakkodomain
          - seodomains
          - nameshift
          - namepros
          - regfree
        type:
          type: string
          description: Domain type
          enum:
          - auction
          - closeout
          - backorder
        auction_type:
          type:
          - string
          - 'null'
          description: 'Sub-type (DropCatch: Dropped/PreRelease/PrivateSeller, GoDaddy: Bid/BuyNow)'
        price:
          type:
          - number
          - 'null'
          description: Fixed price or starting price in the source's native currency
        max_bid:
          type:
          - number
          - 'null'
          description: Current highest bid in the source's native currency
        effective_price:
          type:
          - number
          - 'null'
          description: 'Actual price: max_bid if set, otherwise price'
        currency:
          type:
          - string
          - 'null'
          pattern: ^[A-Z]{3}$
          description: ISO 4217 currency code for price, max_bid, effective_price, estibot_appraisal, and renewal_price values from this source; null when the source has no single deterministic currency
          example: USD
        bids_count:
          type:
          - integer
          - 'null'
          description: Number of bids
        auction_end_date:
          type:
          - string
          - 'null'
          format: date-time
          description: Auction end date (ISO 8601)
        estibot_appraisal:
          type:
          - number
          - 'null'
          description: Automated valuation estimate
        score:
          type:
          - integer
          - 'null'
          description: Quality score (0-100)
        is_spammy:
          type: boolean
          description: Whether flagged as spammy
        age:
          type:
          - integer
          - 'null'
          description: Domain age in years
        wayback_snapshots:
          type:
          - integer
          - 'null'
          description: Wayback Machine snapshot count
        wayback_first_date:
          type:
          - string
          - 'null'
          format: date
          description: First Wayback snapshot
        wayback_last_date:
          type:
          - string
          - 'null'
          format: date
          description: Last Wayback snapshot
        pagerank:
          type:
          - integer
          - 'null'
          description: Open PageRank (0-10)
        domain_authority:
          type:
          - integer
          - 'null'
          description: Domain Authority (0-100)
        backlinks_count:
          type:
          - integer
          - 'null'
          description: Total backlinks
        referring_domains:
          type:
          - integer
          - 'null'
          description: Unique referring domains
        trust_flow:
          type:
          - integer
          - 'null'
          description: Trust Flow (0-100)
        citation_flow:
          type:
          - integer
          - 'null'
          description: Citation Flow (0-100)
        ttf_topic:
          type:
          - string
          - 'null'
          description: Topical Trust Flow category
          example: Business/Marketing
        ref_domains_edu:
          type:
          - integer
          - 'null'
          description: EDU referring domains
        ref_domains_gov:
          type:
          - integer
          - 'null'
          description: GOV referring domains
        ref_domains_dofollow:
          type:
          - integer
          - 'null'
          description: Dofollow referring domains
        seo_domains_category:
          type:
          - string
          - 'null'
          description: SEO.Domains category (seodomains source only)
        seo_domains_subcategory:
          type:
          - string
          - 'null'
          description: SEO.Domains subcategory (seodomains source only)
        indexed_pages:
          type:
          - integer
          - 'null'
          description: Google indexed pages
        historical_tech:
          type:
          - array
          - 'null'
          items:
            type: string
          description: Tech stack fingerprints detected on the archived Wayback snapshot. null = not checked yet, [] = checked but no signal, array of labels = detected stack. Queryable via the techs filter (see /api/domains parameters).
          example:
          - WordPress
          - Yoast SEO
          - Stripe
        use_cases:
          type:
          - array
          - 'null'
          items:
            type: string
          description: 'Buyer-intent categories derived from historical tech: ecommerce, local-biz, news, saas, forum, media, or developer. null = not classified yet.'
        historical_traffic_etv:
          type:
          - integer
          - 'null'
          description: Latest estimated worldwide monthly organic traffic
        historical_traffic_peak:
          type:
          - integer
          - 'null'
          description: Peak estimated monthly organic traffic over the historical window
        historical_traffic_spark:
          type:
          - array
          - 'null'
          items:
            type: integer
          description: Denormalized historical monthly traffic series for charts
        historical_traffic_fetched_at:
          type:
          - string
          - 'null'
          format: date-time
          description: When historical traffic data was last fetched
        historical_traffic:
          type:
          - object
          - 'null'
          description: Full historical organic-traffic data, including country breakdowns. Present only when include_historical_traffic=true.
        monthly_visitors:
          type:
          - integer
          - 'null'
          description: Estimated monthly visitors
        language:
          type:
          - string
          - 'null'
          description: Detected language code
          example: FR
        has_gmb:
          type: boolean
          description: Has Google Business listing
        gmb_name:
          type:
          - string
          - 'null'
          description: GMB business name
        gmb_category:
          type:
          - string
          - 'null'
          description: GMB business category
        gmb_address:
          type:
          - string
          - 'null'
          description: GMB business address
        whois_registered_at:
          type:
          - string
          - 'null'
          format: date-time
          description: WHOIS or RDAP registration date
        whois_expires_at:
          type:
          - string
          - 'null'
          format: date-time
          description: WHOIS or RDAP expiration date
        whois_last_changed_at:
          type:
          - string
          - 'null'
          format: date-time
          description: WHOIS or RDAP last-change date
        whois_registrar:
          type:
          - string
          - 'null'
          description: Registrar reported by WHOIS or RDAP
        whois_status:
          type:
          - array
          - 'null'
          items:
            type: string
          description: Domain status values reported by WHOIS or RDAP
        whois_nameservers:
          type:
          - array
          - 'null'
          items:
            type: string
          description: Nameservers reported by WHOIS or RDAP
        whois_ns_category:
          type:
          - string
          - 'null'
          description: Classification of the current nameserver configuration
        whois_checked_at:
          type:
          - string
          - 'null'
          format: date-time
          description: When WHOIS or RDAP data was last checked
        purchase_url:
          type:
          - string
          - 'null'
          description: Direct buy/bid link
        purchase_platform:
          type:
          - string
          - 'null'
          description: Source platform name
        created_at:
          type: string
          format: date-time
          description: Added to CatchDoms
        updated_at:
          type: string
          format: date-time
          description: Last updated
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: API token from your CatchDoms account. Get one at https://catchdoms.com/api-access
externalDocs:
  description: Full API documentation
  url: https://catchdoms.com/docs