Expired Domains API Documentation

One REST API with JSON responses for domain intelligence: SEO metrics (TF, CF, DA, DR, Age, Backlinks, Traffic, etc.), Webback Machine history, 400,000+ new domains every day, 30+ domain data sources, and 90+ filters for precise search. Includes live auctions, expired domains, full reports, favorites, availability checks, Karma Metric, and profile data. Pro Bearer key, 60 requests per minute.

Try for Free!
Use bonus credits!

Public API Karma.Domains provides programmatic access to domain reports: auctions, expired, backorder, and buy-now. All responses are JSON over HTTPS. Base URL: https://api.karma.domains, route prefix: /v1.

Karma.Domains is a domain intelligence platform for investors, SEO teams, and automation pipelines:

  • 400,000+ new domains daily in discovery and monitoring flows (7,000,000+ domains in total)
  • 30+ domain data sources overall, including 27+ auction/expired/backorder/buy-now sources (GoDaddy, NameJet, DropCatch, Dynadot, GNAME, Namecheap, etc.)
  • 90+ filters for precise search across domain quality, SEO, content history, and auction signals (TF, CF, DA, DR, Age, Backlinks, Traffic, Keywords, Anchor Text, etc.)
  • TLD and ccTLD coverage (for example .com, .net, .org, .biz, .info, .at, .be, .ca, .cc, .cl, .co, .co.nz)
  • SEO and authority data from major vendors: Ahrefs, Majestic, Moz, SimilarWeb
  • Historical content and change signals via Wayback Machine

Request and response schemas (filter fields, report structure, sort enums) — in the interactive docs: Swagger UI or ReDoc.
This page is an integration overview: authentication, limits, endpoint list, typical workflows, and examples.

Introduction

The Public API is for scripts, internal dashboards, CRM systems, and any automation that needs the same data as the Karma.Domains web app.

  • Format: JSON
  • API version: 1.0.0
  • Databases: auctions, expired, backorder, buynow; search across all at once — POST /v1/reports/search (same as the “all databases” table in the UI)
  • Field documentation: only in OpenAPI
  • Available only on the Pro plan and above

Authentication

Every request must include the header:

Authorization: Bearer YOUR_API_KEY

How to get an API key

  1. Pro plan (without Pro, the API is unavailable).
  2. Profile → Settings — create or reset the key in the API key section.

The same key is used for the MCP server (AI assistants). The request limit is shared between REST and MCP.

Typical responses when the key is wrong

Code Reason
401 Missing header, invalid key, or typo in Bearer
403 Key is valid, but the account has no active Pro (Pro plan required for API access)

Always send Accept: application/json.

Rate limiting

  • 60 requests per minute per API key
  • Window: 60 seconds
  • Counter is shared across all Public API endpoints and MCP

Successful responses include headers:

Header Description
X-RateLimit-Limit Limit (60)
X-RateLimit-Remaining Requests left in the current window
X-RateLimit-Reset Unix timestamp when the window resets

When the limit is exceeded: 429 Too Many Requests and Retry-After header (seconds until retry).

Tips: use page_size up to 50 for lists; do not poll POST /search more often than needed — responses are cached (see “Caching”).

Daily row quota

  • 50,000 list rows per day per account (API key / signed-in user)
  • Reset: UTC midnight
  • Counter is shared across Public API list endpoints, MCP list tools, web UI tables, and CSV export

Each list request charges page_size rows (the requested page size, not total_count).

Successful list responses include headers:

Header Description
X-Quota-Limit Daily limit (50000)
X-Quota-Remaining Rows left today
X-Quota-Reset Unix timestamp when the daily quota resets

When the quota is exceeded: 429 Too Many Requests and Retry-After (seconds until reset).

Pagination depth: for a single search/filter, page × page_size must not exceed 5000 (e.g. with page_size=50, max page is 100). This limits deep scraping of one result set; the daily quota caps total volume across all queries.

Endpoint overview

Full query/body parameters — in OpenAPI.

Method Path Purpose
POST /v1/reports/search Search reports by ReportListFilterSchema body, pagination, sorting
GET /v1/reports/favorites Current user’s favorite reports list
POST /v1/reports/favorites Add a report to favorites
DELETE /v1/reports/favorites/{report_type}/{report_id} Remove from favorites
GET /v1/reports/by-domain/{domain} Find report IDs by exact domain name
GET /v1/reports/{report_type}/{report_id} Full report by database type and report id
GET /v1/reports/check/expired/{report_id} Check whether the domain has dropped for an expired report
GET /v1/user User profile (PublicUserProfileSchema)
GET /v1/domains/checker/expiry/{domain} Live check: whether the domain is available to register
GET /v1/domains/checker/karma_metric/{domain} Live Karma Metric calculation via WayBack Machine

Model parameters reference

Below is a practical parameter-level map for the 3 core OpenAPI models that define most API capabilities.

ReportListFilterSchema (request body for POST /v1/reports/search)

Value semantics used across this schema:

  • null or omitted field = no filter.
  • String query fields support , for AND and | for OR where documented.
  • Date ranges are arrays of 2 strings: [from, to].
  • Most score ranges use inclusive *_min / *_max.
Parameter Type Description
domain string | null Domain substring filter, case-insensitive. , = AND (all terms must match), | = OR (any term). Max length: 350.
tlds string | null TLD list separated by comma or space (e.g., .com .net .org). Max length: 350.
domain_type string[] | null Allowed values: auctions, backorder, buynow, expired. OR logic between selected values.
favorites boolean | null true = only favorites, false = exclude favorites. Requires authenticated user context.
categories string[] | null OR logic by category, supports Category / Subcategory format, case-insensitive substring matching.
languages string Language query with , (AND) / | (OR), case-insensitive substring matching. Max length: 350.
keywords string | null Search in Wayback content (title, description, h1-h6, etc.). , = AND, | = OR. Max length: 350.
website_ids string[] IDs like GA/Metrika to find same-owner domains.
domain_length_min / domain_length_max integer | null Domain length bounds (documented as 1..30).
domain_numbers / domain_hyphens boolean Require/exclude digits and hyphens in domain names.
report_added_time string[2] | null Date range: ["YYYY-MM-DD","YYYY-MM-DD"]. Backend applies start/end day boundaries automatically.
karmascore_min / karmascore_max integer | null KarmaScore bounds, 0..100.
karmametric_min / karmametric_max integer | null Karma Metric bounds, 0..100.
brandscore_min / brandscore_max integer | null Brandscore bounds, 0..100.
openpagerank_min / openpagerank_max integer | null Open PageRank bounds, documented as 0..10.
ahrefs_dr_min / ahrefs_dr_max number | null Ahrefs DR bounds, 0..100.
ahrefs_ur_min / ahrefs_ur_max number | null Ahrefs UR bounds, 0..100.
ahrefs_ar_min / ahrefs_ar_max integer | null Ahrefs Rank bounds (>= 0).
majestic_tf_min / majestic_tf_max integer | null Majestic TF bounds, 0..100.
majestic_cf_min / majestic_cf_max integer | null Majestic CF bounds, 0..100.
majestic_bl_min / majestic_bl_max integer Majestic backlinks bounds.
majestic_rd_min / majestic_rd_max integer Majestic referring domains bounds.
majestic_topics / majestic_lang string[] / string Topic and anchor-language filters.
moz_da_min / moz_da_max integer | null Moz DA bounds, 0..100.
moz_ss_min / moz_ss_max integer | null Moz Spam Score bounds, 0..100.
moz_bl_min / moz_bl_max integer Moz backlinks bounds.
moz_rd_min / moz_rd_max integer Moz referring domains bounds.
moz_bl_url / moz_bl_anchor string Moz backlink URL / anchor phrase filters.
sw_visits_min / sw_visits_max integer SimilarWeb visits bounds.
sw_last_traffic_date string[2] | null SimilarWeb month range: ["YYYY-MM","YYYY-MM"].
sw_country_filters object[] Country share filters (country, optional share_min).
sw_ts_direct_min...sw_ts_social_max number | null SimilarWeb traffic-source channel share bounds, 0..100.
wa_age_min / wa_age_max integer | null Wayback domain age in years.
wa_first_snap / wa_last_snap string[2] | null Date range: ["YYYY-MM-DD","YYYY-MM-DD"] for first/last snapshot windows.
wa_changes_min/max, wa_redirects_min/max, wa_parkings_min/max integer Wayback history counters.
wa_hieroglyphs, wa_redirects, wa_error403 boolean Wayback content quality flags.
wa_lang_filters object[] Wayback language filters (language, optional ratio_min).
wa_server_code, wa_server_code_ratio_min/max integer | null / number | null Wayback server code filter (e.g., 200, 301, 302, 403, 404) + ratio bounds 0..100.
ke_etv_min/max, ke_total_min/max integer Keywords Everywhere traffic value / keywords bounds.
ke_keyword string Keywords Everywhere phrase filter.
google_has_index, google_has_mentions boolean | null true/false/unset semantics for requiring index or mentions in Google SERP.
google_title_index/mentions, google_description_index/mentions string SERP snippet title/description phrase filters.
trustpilot_rating_min/max, trustpilot_reviews_count_min/max number | null / integer | null Trustpilot rating bounds (0..5) and reviews count bounds.
trustpilot_category string Trustpilot category phrase filter.
auction_source string[] | null Auction source names (case-insensitive) or compound value `source
auction_end_time, auction_added_time string[2] | null Date range: ["YYYY-MM-DD","YYYY-MM-DD"].
auction_price_min/max number Auction price bounds.
auction_bids_min/max integer Auction bids count bounds.
combine_seo object | null Cross-vendor CombineSEOFilter: authority/backlinks/refdomains/traffic/keywords/backlink-url/anchors, with vendor-scoped OR logic in each row and AND between rows.

ReportListResponseSchema (response for POST /search and GET /favorites)

Parameter Type Description
report_list ReportItem[] Paginated rows for table view and shortlist generation.
total_count integer Total number of matched records for current filter.

report_list[] row-level fields (from ReportItem) include:

Parameter Type Description
report_id string Stable report identifier (used for full report and favorites).
report_type string One of auctions, expired, backorder, buynow.
domain, domain_tld string Domain name and TLD.
added_at, updated_at integer Timestamps.
processed, demo, is_expired boolean State flags used in UI/API workflows.
karmascore, karmametric, brandscore integer Core quality/brandability metrics.
ahrefs_dr, ahrefs_ur number Ahrefs summary metrics.
majestic_tf/cf/bl/rd, moz_da/ss/bl/rd integer Majestic and Moz summary metrics.
ke_etv, ke_total integer Keywords Everywhere summary values.
sw_last_traffic, sw_country_share, sw_sources integer/object SimilarWeb traffic summaries.
wa_age, wa_last_snap, wa_changes, wa_langs, wa_server_code integer/array Wayback summary signals.
google_index, trustpilot_rating, trustpilot_reviews_count boolean/number/integer Google/Trustpilot summary fields.
auctions array/object Auction entries summary if available.

ReportFullResponseSchema (response for GET /v1/reports/{report_type}/{report_id})

Parameter Type Description
report_id, report_type, domain, domain_tld string Core identity fields.
domain_length, domain_numbers, domain_hyphens integer/boolean Domain structure attributes.
favorite, demo, processed, is_expired boolean Report state and user-related flags.
added_at, updated_at, created_at, checked_at, expire_checked_at integer Lifecycle timestamps.
providers_status object Per-provider processing status map (string values).
web_archive object Wayback Machine data — see breakdown below.
metrics DomainMetrics Nested SEO/traffic/reputation metrics — see breakdown below.
auctions object | null Auction lots grouped by end_time — see breakdown below.

metricsDomainMetrics

Most provider blocks can be an object with data, false (not loaded), or null. categories and blacklists can also be [] when empty.

Parameter Type Description
openpagerank number | integer | boolean | null Open PageRank score (typically 0..10) when available.
categories CategoryData[] | boolean | null Content categories from classification providers.
blacklists BlacklistsData[] | boolean | null Security/reputation blacklist hits.
ahrefs AhrefsData | boolean | null Ahrefs domain metrics.
majestic MajesticData | boolean | null Majestic Trust/Citation Flow and backlink profile.
moz MozData | boolean | null Moz authority, spam score, and backlink details.
keywordseverywhere KeywordseverywhereData | boolean | null Keywords Everywhere traffic/keyword estimates.
similarweb SimilarWebData | boolean | null SimilarWeb visits, sources, and geo share.
brandscore BrandscoreData | boolean | null Brandability score components.
karma_metric KarmaMetricData | boolean | null Karma Metric score from Wayback history.
trustpilot TrustpilotData | boolean | null Trustpilot rating and review stats.
google GoogleData | boolean | null Google index and mention SERP snippets.
ai_summary string | null AI-generated domain summary text.

AhrefsData

Parameter Type Description
domain_rating number | null Ahrefs DR.
url_rating number | integer | null Ahrefs UR.
ahrefs_rank integer | null Ahrefs Rank (lower = stronger).

MajesticData

Parameter Type Description
tf, cf integer | null Trust Flow / Citation Flow (0..100).
backlinks, refdomains integer | null Backlinks and referring domains counts.
primary_topic string | null Main topical category.
topics array | null Topic distribution list.
anchor_lang array | null Anchor text language distribution.
indexed_urls, referring_ips, referring_subnets integer | null Index and network diversity counters.

MozData

Parameter Type Description
moz_domain_authority integer | null Moz DA.
moz_spam_score integer | null Moz Spam Score.
page_rank, moz_link_propensity number | integer | null Legacy rank and link propensity.
moz_*_to_subdomain fields integer | null Moz link graph counters (pages/domains, follow/nofollow/redirect/deleted).
moz_da_history_values string | null Serialized DA history values.
backlinks MozBacklink[] | null Backlink rows (domain_source, url_source, domain_target, url_target, anchor_text, harmonic_centrality, last_found_date).

KeywordseverywhereData

Parameter Type Description
etv integer | null Estimated traffic value.
total_keywords integer | null Total tracked keywords.
data KeywordItem[] | null Keyword rows (position, etv, keyword).

SimilarWebData

Parameter Type Description
estimated_monthly_visits object | null Month → visits map.
traffic_sources TrafficSources | null Channel shares: Social, Paid Referrals, Mail, Referrals, Search, Direct (0..1 ratios).
top_country_shares CountryShare[] | null Geo distribution (Country, CountryCode, Value).
engagments Engagements | null BounceRate, PagePerVisit, Visits, TimeOnSite, Month, Year.
category string | null SimilarWeb site category.

BrandscoreData

Parameter Type Description
pronounceability, memorability, uniqueness, appeal, brandscore integer Brandability components and final score.

KarmaMetricData

Parameter Type Description
karma_metric integer Final score, 0..100.
components KarmaMetricComponents A_mass, A_cont, A_stab, A_trend (each 0..100).
period string | null Period in YYYY-MM format (or null when unavailable).

TrustpilotData

Parameter Type Description
rating number | null Rating, typically 0..5.
reviews_count integer | null Number of reviews.
category string | null Trustpilot business category.

GoogleData

Parameter Type Description
google_index GoogleItem[] | null Indexed pages for site:domain (rank, url, title, description).
google_mentions GoogleItem[] | null Mention results for quoted domain searches.

CategoryData / BlacklistsData

Model Key fields
CategoryData categories[], vendor, info_url
BlacklistsData vendor, info_url, optional info

web_archive (Wayback Machine payload)

Object with three main blocks: info, ts_summary, history. In full-report responses, history is returned newest-first.

Parameter Type Description
info object | null Archive coverage summary for the domain.
ts_summary object | null Aggregated KarmaScore / Wayback signals used in table filters.
history array Snapshot timeline (one object per Wayback capture).

web_archive.info

Parameter Type Description
snap_counter integer Total number of Wayback snapshots counted.
years_counter integer Number of years with archive activity (domain age signal).
first_ts integer Unix timestamp of first snapshot.
last_ts integer Unix timestamp of latest snapshot.
years object Year → monthly snapshot-count map (sparkline/calendar data).

web_archive.ts_summary

Parameter Type Description
average_karma_score integer Average KarmaScore, 0..100 (maps to list field karmascore).
wa_changes integer Number of significant content changes in scanned history.
wa_langs array Language distribution rows: language, pageRatio (0..100).
wa_server_code array HTTP code distribution: server_code (e.g. 200, 301, 403), response_ratio (0..100).
wa_tags array Detected content tags over history.
pattern_shares array Pattern share rows: factor, description, share.
chart_data array Time series points: timestamp, karma_score, lang, server_code, tags, detected_patterns.

web_archive.history[] (snapshot row)

Parameter Type Description
snaped_at integer Snapshot Unix timestamp.
webarchive_link string | null Wayback URL for this capture (null on closing placeholder snap).
headers object | null HTTP metadata, commonly status_code (200, 301, 302, 403, 404, 429, …), original_url.
screenshot boolean | null true if screenshot exists (binary stored separately; fetch via screenshot API in UI).
content_info object | null Parsed page content (see below).
karma_score object | null Per-snapshot score: score (0..100), detected_patterns, tags (porno/crypto/gambling/… flags).
redirects array | null Redirect chain data when present.
website_ids array | null Detected site IDs (name, website, ids[]) e.g. analytics tags.
built_with object | null Technology stack detection payload (when available).

web_archive.history[].content_info

Parameter Type Description
lang string | null Detected page language code.
title, description, keywords string | null Meta / page text fields used in filters and UI.
generator, author, copyright string | null Additional meta fields.
h1h6 string[] | null Heading texts (searchable via keywords filter).
cloud_words array | null Word cloud entries (word).
external_links, internal_links array | null Outbound/inbound link lists.
rel_canonical, meta_robots string | null Canonical URL and robots meta.
length_symbols, length_words integer Content size counters.

auctions (auction lots)

Present when the report has auction data (auctions, and sometimes related rows in other bases).
In full report responses, lots are grouped by end time:

{
  "1764441900": [
    { "source": "godaddy", "sale_type": "auction", "price": 120, "bids": 3, "...": "..." }
  ]
}
  • Object key = end_time (Unix seconds).
  • Value = array of lot objects ending at that time (multiple platforms can share one key).
Parameter Type Description
source string Auction platform/registrar source (e.g. godaddy, namejet, dynadot, dropcatch, sedo, sav.com). Case-insensitive in filters.
sale_type string Listing type (e.g. auction, buynow, Closeout, Pre-Release, Dropped).
domain string Domain name for the lot.
item_id string Platform-specific lot/listing id.
end_time integer Lot end time (Unix seconds); also used as grouping key in full report.
price number Current price (typically USD).
bids integer | null Bid count when applicable.
currency string Currency symbol/code (default "$").
report_type string Owning base: auctions, backorder, or buynow.
priority integer Internal sort/priority weight (default 0).

Filter tip: auction_source in search accepts plain source (godaddy) or compound value source|sale_type (e.g. godaddy|auction).

For exact field constraints (nullable rules, enum values, min/max, nested objects), always use OpenAPI or ReDoc.

report_type parameter

For full report and favorites: auctions, expired, backorder, buynow.
Value all is only used in search logic (all databases), not as {report_type} in the path.

Pagination and sorting (list endpoints)

Query parameters:

Parameter Default Description
page 1 Page number
page_size 10 Page size (max 50)
sort_by added_at Sort column name (as in the UI table; enum in OpenAPI)
sort_desc true true — descending

Depth limit: page × page_size ≤ 5000. Requests beyond this return 422 validation error.

Domains in URLs

For {domain} in the path, use percent-encoding (IDN, Cyrillic, etc.). The server normalizes the name (punycoded/lowercase).

Typical workflows

1. Search → full report

  1. POST https://api.karma.domains/v1/reports/search with a filter body (see OpenAPIReportListFilterSchema).
  2. From report_list[], take report_id and report_type.
  3. GET https://api.karma.domains/v1/reports/{report_type}/{report_id}.

Filters match filters in the web UI — easy to compare with the UI; see OpenAPI for the field schema.

  1. GET /v1/reports/by-domain/example.com
  2. In the response, matches[] — up to one entry per database where the domain exists.
  3. Pick the needed report_typeGET /v1/reports/{report_type}/{report_id}.

If matches is empty — the domain is not in Karma databases.

3. Favorites

  • List only: GET /v1/reports/favorites
  • Same list via search: POST /v1/reports/search with "favorites": true in the body
  • Add: POST /v1/reports/favorites with {"report_id": "...", "report_type": "expired"}
  • Remove: DELETE /v1/reports/favorites/expired/{report_id}

4. Drop check (expired report)

GET /v1/reports/check/expired/{report_id}report id, not domain name.

  • On successful check, updates the report record on the server
  • is_expired: true — domain is likely available to register (not “WHOIS expiry date passed”)
  • Repeat live check for the same report — at most once every 3 hours (business rule)
  • HTTP response is cached 1 hour for repeated GET with the same report_id (see “Caching”)

5. Domain check without a report in the database

GET /v1/domains/checker/expiry/{domain} — live WHOIS/DNS; does not change the database report.

  • available: true — likely registerable
  • available: false — taken or reserved
  • Repeat request for the same domain within ~1 hour may return a cached response

6. Karma Metric on the fly

GET /v1/domains/checker/karma_metric/{domain} — Karma Metric from WayBack Machine; does not update the report. Response fields — OpenAPI (KarmaMetricData). Response cache per domain — ~1 hour.

Read more about Karma Metric in the blog

7. Balance and plan

GET /v1/user — email, balance (credits), plan flags, subscription data. API key is not in the response. Response cached ~1 minute per key — do not poll more often than needed for an up-to-date balance.

Caching

At the Public API level, the HTTP response body is cached. Some endpoints use early refresh (background refresh before TTL expires: 4 min for 5 min TTL, 50 min for 1 h TTL).

Endpoint TTL
POST /v1/reports/search 5 min
GET /v1/reports/favorites 5 min
POST /v1/reports/favorites none
DELETE /v1/reports/favorites/{report_type}/{report_id} none
GET /v1/reports/by-domain/{domain} 5 min
GET /v1/reports/check/expired/{report_id} 1 h
GET /v1/reports/{report_type}/{report_id} none
GET /v1/user 1 min
GET /v1/domains/checker/expiry/{domain} 1 h
GET /v1/domains/checker/karma_metric/{domain} 1 h

POST/DELETE favorites change server data immediately, but a repeat GET /favorites or POST /search with favorites: true may return a stale list until cache expires (5 min).

Request examples (curl)

Replace YOUR_API_KEY with your profile key. Base URL: https://api.karma.domains.

Search expired with a filter

curl -X POST "https://api.karma.domains/v1/reports/search?page=1&page_size=25&sort_by=added_at&sort_desc=true" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "karmascore_min": 60,
    "domain_type": ["expired"]
  }'

Filter body — any fields from ReportListFilterSchema in OpenAPI.

Full report

curl "https://api.karma.domains/v1/reports/expired/507f1f77bcf86cd799439011" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"

Lookup by domain

curl "https://api.karma.domains/v1/reports/by-domain/example.com" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"

Add to favorites

curl -X POST "https://api.karma.domains/v1/reports/favorites" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "report_id": "507f1f77bcf86cd799439011",
    "report_type": "expired"
  }'

Domain availability check

curl "https://api.karma.domains/v1/domains/checker/expiry/mybrand.com" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"

Karma Metric

curl "https://api.karma.domains/v1/domains/checker/karma_metric/mybrand.com" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"

Integration use cases

Nightly expired selection pipeline

Daily cron: POST /search with a saved JSON filter (like a saved filter in the UI), pagination with page_size=50, export report_id to your DB. Detailed analysis — GET full report only for the shortlist.

Monitoring a name list before registration

Queue of domains → GET /domains/checker/expiry/{domain} → branch on available. Does not require a report in Karma.Domains.

Syncing favorites with internal CRM

Periodic GET /favorites; on user action in CRM — POST/DELETE favorites. Account for ~5 min list cache.

BI / funnel analytics

Export search pages, aggregate total_count and metrics from report_list without opening the UI. List row schema — ReportListResponseSchema in OpenAPI.

MCP + scripts on one key

Team uses MCP in Cursor for ad-hoc search and Public API for stable ETL. Total 60 requests per minute — plan batches and backoff on 429.

MCP and Public API

Public API (REST) MCP
Audience Developers, scripts, ETL AI assistants (Cursor, Claude)
Interface HTTP + JSON Dialog, tools
Docs This page + OpenAPI /en/expired-domains-mcp/
Data Same reports and databases Same
Key & limit Shared Shared

For new code integrations, start with REST. For chat experiments — MCP.

FAQ

Where is the full filter field reference?

OpenAPI, schema ReportListFilterSchema. Field meanings match filter help in the UI.

What is the difference between available and is_expired?

Both in API context mean: domain is likely available to register.
available — live check by name (/domains/checker/expiry).
is_expired — check tied to an expired-database report (/reports/check/expired/{report_id}).

Why 403 with a correct key?

No active Pro plan. Check subscription in profile.

Why does the API response not match the UI or a just-done action?

Public API HTTP cache — see the table in “Caching”. Account for TTL when syncing with the UI.

What sort_by values are allowed?

Enum list in OpenAPI — names of report table columns in the web app.

Do I need this page if OpenAPI exists?

OpenAPI is the source of truth for types and fields. This page adds context: limits, cache, call order, use cases, and pitfalls not in the schema.

Can I export the entire database via the API?

No. A single search is limited to 5000 rows of pagination depth, and your account can retrieve at most 50,000 list rows per day (UTC) across API, MCP, and UI. Use filters to narrow results; fetch full reports one domain at a time via GET /reports/{report_type}/{report_id}.

Is there a sandbox?

No separate sandbox; use a Pro account and respect rate limits. For debugging, GET /user and a narrow POST /search with a strict filter work well.

Error codes

Code Meaning
200 Success
401 Unauthorized (key)
403 No Pro
404 Report or resource not found
422 Body/query validation error (invalid filter, sort_by, …)
429 Rate limit or daily row quota exceeded
503 Rate limiter or row quota service temporarily unavailable

Error body usually has detail (string or validation object array). Example:

{
  "detail": "Invalid API key"
}

Try for Free!

Use bonus credits!

Open domain list
+5