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: 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