The DomainKits REST API provides programmatic access to domain intelligence data. Search newly registered, aged, expired, and deleted domains. Look up WHOIS records, reverse nameserver queries, and download NRDs zone files. API access requires a Premium or higher plan.
Responses contain no personal data. WHOIS results are limited to registrar, dates, status codes and nameservers; registrant names, emails, addresses and phone numbers are not returned.
Include your API key in every request. API keys are the same keys used for the DomainKits MCP Server.
Authorization: Bearer dk_xxx
X-API-Key: dk_xxx
The API is versioned in the URL path (/api/v1). We treat the v1 contract as stable so you can build on it without surprises.
success / error envelope and HTTP status code semantics do not change.0 in rate-limit configuration means unlimited. This convention is stable./api/v2). When a version is scheduled for retirement, we announce it with at least 90 days notice before v1 stops responding. Endpoints marked Beta are excluded from this guarantee and may change while in beta.The API uses standard HTTP status codes. Errors return a JSON object with success: false and an error message.
Search newly registered domains (last 60 days, refreshed continuously). Provide query for keyword search, tld without query to browse, or neither to page through the full dataset. The freshest rows (registered within the last hours, not yet in the daily datasets) carry live: true. They are included by default; pass live=false to leave them out. Unrecognized parameter names and values return 400.
com or com,net,org). Results are the union. Without query, enters TLD browse mode.start, end, middle. Requires query; omit to match anywhere.YYYY-MM-DD, inclusive. Either side may be omitted.true / false; 1, 0, yes return 400. has_sale=true keeps only domains with a marketplace listing.false restricts results to the daily datasets; true (same as omitting the parameter) returns the full data including the freshest rows. Only the literals true / false. To isolate the freshest rows, filter on the per-row live field.reg_date_desc (default) reg_date_asc length_asc length_desc period_asc period_desc tld_count_asc tld_count_desc alpha.export.domain, tld, created, expires, period, length, tld_count, components, for_sale (listing code, empty when not listed), live (true = registered within the last hours, flips to false once the daily datasets cover it). The field set is fixed; empty means no value.Search the live newly registered feed, covering the last 3 days only. Same parameter vocabulary as /search/nrds: provide query for keyword search, tld without query to browse one TLD (single value here, no comma lists), or neither to page through the whole live window. Use this endpoint when recency matters; use /search/nrds for the full history, richer filters, and larger exports. Unrecognized parameter names and values return 400.
com). Optional; omit both tld and query to browse the whole window.start, end, middle. Requires query; omit to match anywhere.YYYY-MM-DD, inclusive. The feed only holds the last 3 days.true / false.reg_date_desc (default) reg_date_asc length_asc length_desc alpha alpha_desc. Any other value returns 400.csv, txt. Bypasses pagination and returns up to 10,000 rows in one pass. Billed against the Search Export quota, which carries a monthly cap. txt is one domain per line; csv columns match this endpoint's JSON fields. Returns 404 when no rows match.domain, tld, created, expires, length, components/search/nrds, this endpoint does not return tld_count. Every domain here was registered within the last three days, so the count would carry no information.total is exact after all filters, including position and exclude_query. When a query matches more than 10,000 rows before those filters, the endpoint returns 400; narrow the conditions.Search aged domains (5 to 20+ years of history). Provide query for keyword search, tld without query (comma-separated, up to 10), or neither to page through the full dataset. Unrecognized parameter names and values return 400.
query, enters TLD browse mode.start, end, middle. Requires query; omit to match anywhere.true / false.age_desc (default) age_asc length_asc length_desc reg_date_asc reg_date_desc tld_count_asc tld_count_desc.domain, tld, created (full date), age (years), length, components, for_sale (listing code, empty when not listed), tld_countSearch active (currently registered) domains, 250M+ inventory. Two modes: provide query for keyword search, or provide tld without query (comma-separated, up to 10). Omitting both browses the full inventory across all TLDs. Unrecognized parameter names and values return 400.
query, enters TLD browse mode.start, end, middle. Requires query; omit to match anywhere.true / false.length_asc (default) length_desc alpha tld_count_asc tld_count_desc.domain, tld, length, for_sale (listing code, empty when not listed), tld_countSearch expired domains (grace, redemption, pending delete). Provide query for keyword search, tld without query (comma-separated, up to 10), or neither to page through the full dataset. Unrecognized parameter names and values return 400.
query, enters TLD browse mode.start, end, middle. Requires query; omit to match anywhere.expired, redemption, pending_delete.true / false.YYYY-MM-DD, inclusive. Either side may be omitted.YYYY-MM-DD, inclusive. Use a recent start date to select fresh expiries.true / false.age_desc (default) age_asc length_asc length_desc tld_count_asc tld_count_desc.domain, tld, created, age, status (expired | redemption | pending_delete), auction_date, found_date, length, category, majestic, backlinks, hold, tld_count. The field set is fixed; empty or null means no value.Search deleted (dropped) domains. Provide query for keyword search, tld without query (comma-separated, up to 10), or neither to page through the full dataset. Unrecognized parameter names and values return 400.
query, enters TLD browse mode.start, end, middle. Requires query; omit to match anywhere.true / false.YYYY-MM-DD, inclusive. Use a recent start date to select fresh drops.true / false.age_desc (default) age_asc length_asc length_desc tld_count_asc tld_count_desc.domain, tld, age (years), reg_year, exp_year (year granularity), found_date, length, components, hold, tld_countSearch marketplace domains currently listed for sale. Provide query for keyword search, tld without query (comma-separated, up to 10), or neither to page through the full dataset. Unrecognized parameter names and values return 400.
query, enters TLD browse mode.start, end, middle. Requires query; omit to match anywhere.sedo,godaddy or 4.cn). Values follow the data; a platform with no listings returns an empty result, not an error.listed_days_max=3 for fresh listings.true / false.length_asc (default) length_desc alpha tld_count_asc tld_count_desc.domain, tld, length, components, for_sale (listing code), platform (marketplace name), listed_days (1-3, null when older), tld_countExport full results as a downloadable file. Add export=csv or export=txt to any endpoint listed below, with any of that endpoint's filters. Export bypasses pagination and returns up to 50,000 results in a single response (per-endpoint caps below). All export requests, regardless of endpoint, draw on the shared Search Export quota. Returns 404 when no rows match.
csv or txt.
csv returns a per-endpoint column set, listed belowtxt returns domain names only, one per line/search/nrds — domain, tld, created, expires, period, length, tld_count, for_sale, components/search/aged — domain, tld, created, age, length, components, for_sale, tld_count/search/expired — domain, tld, created, age, status, auction_date, found_date, length, category, majestic, backlinks, hold, tld_count/search/deleted — domain, tld, age, reg_year, exp_year, found_date, length, components, hold, tld_count/search/active — domain, tld, length, for_sale, tld_count/search/market — domain, tld, length, components, for_sale, platform, listed_days, tld_count/ns-reverse: domain, tld, length/monitor/changes: domain, tld, found_date, reason, details_old, details_new, length, tld_count, components/typosquat: domain, tld, type, registered, for_sale, expiring, tld_countsort is omitted, each endpoint exports in its default order
(newest first on /search/nrds, oldest first on /search/aged,
/search/expired, and /search/deleted, shortest first on
/search/active, /search/market, and /ns-reverse,
most recent change first on /monitor/changes; /typosquat
exports in generation order, grouped by variant class).
/search/nrds, /search/aged, /search/active, /search/expired, /search/deleted, /search/market (up to 50,000 rows)/ns-reverse, /monitor/changes (up to 50,000 rows; columns in their sections)/typosquat (the whole generated set, up to 5,000 rows; no latest_whois in exports)/search/nrds-live (up to 10,000 rows), /ct/subdomains (10,000), /ct/certs and /ct/search (5,000)| Plan | Per minute | Per day | Per month |
|---|---|---|---|
| Premium | 2 | 10 | 100 |
| Platinum | 10 | 100 | 1,000 |
/usage.Retrieve WHOIS registration data for a domain name.
abtdomain.com).Query DNS records for a domain. The records object is keyed by record type (A, AAAA, MX, NS, TXT, CNAME, SOA, and CAA when present). A record type is included only when the resolver returns data for it; an absent key is not proof that no such record exists. Parse defensively.
google.com).Resolve nameservers for up to 20 domains in one request. Where the nameservers identify a marketplace or a parking service, the entry carries a domain_status of for_sale or parking; domains in normal use have no such field. Each domain in the batch draws one unit from the same daily quota as /dns, so a batch of 20 costs the same as 20 single lookups. Batch calls are capped at 5 per minute.
Registrar, dates, EPP status codes and nameservers for up to 30 domains in one request. No registrant personal data is returned. Each domain in the batch draws one unit from the same daily quota as /whois, so a batch of 30 costs the same as 30 single lookups. Batch calls are capped at 5 per minute.
Find all domains using a specific nameserver, across gTLDs and ccTLDs (multi-level suffixes like co.uk supported). Same parameter vocabulary as the search endpoints; unrecognized parameter names and values return 400.
ns1.example.com). An unknown nameserver returns an empty result, not an error.com,net or co.uk).start, end, middle. Requires query; omit to match anywhere.true / false; 1, 0, yes return 400.length_asc (default) length_desc alpha.csv, txt. Bypasses pagination and returns up to 50,000 rows in one pass. Billed against the Search Export quota, which carries a monthly cap. txt is one domain per line; csv columns: domain, tld, length. Returns 404 when no rows match.ns (echo), ns_total (domains on this nameserver before filters), total (matches after filters), limit, offset. Each record: domain, tld, length.Check if a domain is flagged as unsafe by Google Safe Browsing, and whether it is indexed by Google.
google.com).Look up geolocation and network information for an IP address or domain. Domains are resolved server-side (scheme and www. prefixes are stripped). Fields with no data are null (numbers) or empty strings. IP geolocation data by MaxMind (GeoLite2).
Search ICANN-accredited registrars by name substring (with alias support) or exact match by IANA ID. Results include accreditation status, RDAP URL, drop-catch platform detection, parent organization mapping, and RDAP contact details when available. total is the full hit count; page with limit / offset.
godaddy or 146).20.0.parent_id is an IANA ID or a platform label (not always numeric); empty when independent.false means RDAP contact details (address / phone / email) could not be fetched for this row, not that none exist.Look up EPP domain status codes. Search by status name, alias, or category (e.g. clientHold, pending, security). Each row is one status code; possible_reasons is always present and is an empty string when not applicable.
Generate lookalike domains for a domain and check which variants are registered. Thirteen classes: omission, transposition, keyboard-adjacent replacement, insertion, repetition, hyphenation, vowel-swap, homoglyph, plural/singular, exact-TLD, TLD-swap, combosquatting (brand + keyword), and IDN homograph (Cyrillic look-alikes, returned as ASCII punycode xn-- domains). Registered variants carry a latest_whois snapshot. Use for brand protection, phishing detection, and defensive registration planning. The input domain itself must be ASCII; subdomains are reduced to their registrable domain (www.example.co.uk becomes example.co.uk).
example.com). Must include a TLD.omission,combosquatting). Omit for all 13. Any other value returns 400.true, who is squatting) or only unregistered (false, still available to register defensively) variants. Omit for both. Only the literals true / false.true. Set to false to skip WHOIS lookups entirely, returning only registration status. Speeds up the response. Not applied to export downloads.csv, txt. Billed against the Search Export quota, which carries a monthly cap. txt is one domain per line; csv columns are domain, tld, type, registered, for_sale, expiring, tld_count (exports do not carry latest_whois). Returns 404 when no rows match.types and registered filters, independent of offset.omission, transposition, replacement, insertion, repetition, hyphenation, vowel-swap, homoglyph, plural, exact-tld, tld-swap, combosquatting, idn-homograph.0 for names nobody has registered.Check the registration status of a domain prefix across monitored TLDs.
abtdomain).count, check (default), or list.mode=check). Default: com,net,org,io,ai,bot,dev,app,pro,online.Track status changes of high-value domains over the last 7 days: transfers, drops, renewals, and nameserver updates. Each row is one change event, so a domain that changed twice appears twice. All parameters are optional; without filters, returns the most recent events first. Unrecognized parameter names and values return 400.
start, end, middle. Requires query; omit to match anywhere.new_registration, domain_transfer, domain_expired, nameserver_change.YYYY-MM-DD, inclusive. Data covers the last 7 days.true / false. No filter is applied by default.found_date_desc (default, most recent change first) found_date_asc length_asc length_desc tld_count_asc tld_count_desc alpha alpha_desc.csv, txt. Bypasses pagination. Billed against the Search Export quota, which carries a monthly cap. txt is one domain per line; csv columns match this endpoint's JSON fields. Returns 404 when no rows match.domain, tld, found_date, reason, details_old / details_new (state before / after the change: registrar or nameservers), length, tld_count, componentsDiscover subdomains observed in Certificate Transparency logs. Returns unique subdomain prefixes with the date each was last seen.
example.com).400.YYYY-MM-DD).YYYY-MM-DD).csv, txt. Bypasses pagination and returns up to 10,000 rows in one pass. Billed against the Search Export quota, which carries a monthly cap. txt is one domain per line; csv columns match this endpoint's JSON fields.Look up certificate records by domain or SHA-256 fingerprint. Covers currently valid certificates.
fingerprint is provided.domain is provided.400.R11, WE1).DV, OV, EV.YYYY-MM-DD).YYYY-MM-DD).csv, txt. Bypasses pagination and returns up to 5,000 rows in one pass. Billed against the Search Export quota, which carries a monthly cap. txt is one domain per line; csv columns match this endpoint's JSON fields.Search for domains across CT logs by keyword. Finds domains containing the query string in certificates observed since 2020.
400.reg (registered domain, default) or sld (second-level label only). Any other value returns 400.newest (default, by log time) or latest (by certificate expiry).com).DV, OV, EV.YYYY-MM-DD).YYYY-MM-DD).csv, txt. Bypasses pagination and returns up to 5,000 rows in one pass. Billed against the Search Export quota, which carries a monthly cap. txt is one domain per line; csv columns match this endpoint's JSON fields.Download newly registered domains data files. Returns a 302 redirect to a signed download URL valid for 5 minutes. Each file can be downloaded up to 10 times per day per API key.
domains_only.
domains_only (.txt.gz) domain names, one per line. e.g. abtdomain.combasic_info (.csv.gz) domain, registration date, expiration date. e.g. abtdomain.com,2026-06-30,2027-06-30full_whois (.csv.gz, Platinum only) domain, registration date, expiration date, registrar, status codes, nameservers. e.g. abtdomain.com,2026-06-30,2027-06-30,GoDaddy.com LLC,clientTransferProhibited,ns1.example.com|ns2.example.comYYYY-MM-DD format. Defaults to today.View your current API key usage and per-endpoint counters.
Each endpoint has a per-minute and a daily request limit that vary by tier. A value of unlimited means no numeric cap applies. Daily quotas reset at 00:00 UTC; per-minute limits use a rolling 60-second window. Search Export additionally carries a monthly quota, which resets on the 1st (UTC). When a limit is exceeded, the API returns 429 Too Many Requests.
| Endpoint | Premium / min | Premium / day | Platinum / min | Platinum / day | Max results |
|---|---|---|---|---|---|
| Search | 60 | 2,000 | unlimited | unlimited | 50,000 |
| NRDs Live | 20 | 500 | unlimited | unlimited | P:200 / Plat:500 |
| Search Export | 2 | 10 100 / month | 10 | 100 1,000 / month | 50,000 |
| RDAP WHOIS | 30 | 500 | 50 | unlimited | |
| DNS | 60 | 500 | unlimited | unlimited | |
| Reverse NS | 20 | 100 | unlimited | 500 | 1,000 |
| Domain Changes | 20 | 2,000 | unlimited | unlimited | 1,000 |
| TLD Check | 20 | 600 | unlimited | unlimited | |
| Safety | 5 | 50 | 10 | 200 | |
| IP Lookup | 20 | 200 | 50 | unlimited | |
| Registrar Check | 20 | 200 | 50 | unlimited | |
| Status Guide | 30 | unlimited | unlimited | unlimited | |
| TLD Trends | 30 | unlimited | unlimited | unlimited | |
| Keyword Trends | 20 | unlimited | unlimited | unlimited | P:50 / Plat:100 |
| CT Subdomains | 20 | 200 | 60 | unlimited | 10,000 |
| CT Certs | 20 | 200 | 60 | unlimited | 5,000 |
| CT Search | 10 | 100 | 30 | unlimited | 5,000 |
| Typosquat Scan | 1 | 20 | unlimited | unlimited | |
| NRDs Download | unlimited | unlimited | unlimited | unlimited | 3 / file / day |
| Usage | 30 | unlimited | 30 | unlimited |
Get daily registration volume trends for a gTLD. Only gTLDs are supported (ccTLDs are not available). Pass one TLD or compare up to 10 (comma-separated); rows are flat and each carries a tld field, so single- and multi-TLD requests share one response shape. TLDs with no data are reported in tlds_missing instead of being silently skipped.
com or com,net,org). One row per TLD per day.30. An out-of-range value returns 400.Get trending domain registration keywords. hot: top keywords by 28-day registrations. emerging: fastest growing keywords, with growth metrics (increase, surge, w1_avg, w4_avg) that are null on the hot board. prefix: trending domain prefixes with 30-day, 7-day and 48-hour registration counts.
all (default) or com (.com only). Only for hot and emerging; prefix rejects it with 400.