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. Two modes: provide keyword for keyword search, or provide tld without keyword to browse all new registrations under a gTLD. At least one of keyword or tld is required.
com, net, org). Without keyword, enters TLD browse mode (gTLDs only, ccTLDs not supported).start, end, middle. Any other value returns 400.7), a range (6-9, inclusive of both ends), or a preset band: ultra (1-4), short (5-10), medium (11-15), long (16-63). 0-5 and <5 are aliases for ultra; 15+ for long. Any other value returns 400.all_alpha (letters only), all_number (digits only).0-10, 10-20, 20+.2026-07-10), month (2026-07), or year (2026). A from:to range is also accepted (2026-07-01:2026-07-25, inclusive of both ends); either side may be omitted for an open-ended range (2026-07-20: or :2026-07-20).1, 2-5, 6+.reg_date_desc reg_date_asc length_asc length_desc period_asc period_desc tld_count_asc tld_count_desc alpha. Any other value returns 400.domain, registered_date, expiry_date, tld_count, status (for_sale, present only when the domain is listed for sale)Search the live newly registered feed, covering the last 3 days only. Same two modes as /search/nrds: provide keyword for keyword search, or provide tld without keyword to browse one TLD. At least one of keyword or tld is required. Use this endpoint when recency matters; use /search/nrds for the full history, richer filters, and larger exports.
com, xyz, app). Without keyword, enters TLD browse mode.2026-08-16), a month (2026-08), or a year (2026); a from:to range is also accepted (2026-08-14:2026-08-16, inclusive of both ends), and either side may be omitted for an open-ended range (2026-08-15: or :2026-08-15). Boundaries expand to the full day in UTC, so a single day covers 00:00:00 to 23:59:59. Same syntax as /search/nrds. Any other value returns 400.1 = today, 2 = today and yesterday, 3 = all three days. Omit for the full window. Superseded by reg_date, which can express the same thing and more; when both are given, reg_date wins. Any other value returns 400.start, end, middle. Ignored when keyword is absent.7), a range (6-9, inclusive of both ends), or a preset band: ultra (1-4), short (5-10), medium (11-15), long (16-63). 0-5 and <5 are aliases for ultra; 15+ for long. Any other value returns 400.all_alpha (letters only), all_number (digits only). A hyphenated name is neither, so both values exclude hyphens.type is set.type is set.reg_date_desc (default) reg_date_asc length_asc length_desc. Any other value falls back to reg_date_desc.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.domain, tld, registered_date, expiry_date/search/nrds, this endpoint does not return tld_count. Every domain here was registered within the last three days, so the count would be 1 on virtually every row and carry no information.position and exclude are applied after the page is fetched, so data may contain fewer rows than limit while total still reports the unfiltered match count. This is expected and not a pagination gap.Search aged domains. Two modes: provide keyword for keyword search, or provide tld without keyword to browse all aged domains under a gTLD. At least one of keyword or tld is required.
com, net, org). Without keyword, enters TLD browse mode (gTLDs only, ccTLDs not supported).start, end, middle. Any other value returns 400.7), a range (6-9, inclusive of both ends), or a preset band: ultra (1-4), short (5-10), medium (11-15), long (16-63). 0-5 and <5 are aliases for ultra; 15+ for long. Any other value returns 400.all_alpha, all_number.5-10, 10-15, 15-20, 20+; each excludes its lower bound and includes its upper), an exact age (25), or a range (20-25, inclusive of both ends). Supports multi-select: 5-10,20+.reg_date_desc reg_date_asc length_asc length_desc age_asc age_desc tld_count_asc tld_count_desc alpha. Any other value returns 400.domain, registered_date, age (years), tld_count, status (for_sale, present only when the domain is listed for sale)Search active (currently registered) domains. Two modes: provide keyword for keyword search, or provide tld without keyword to browse the full registered inventory of a gTLD, shortest names first. At least one of keyword or tld is required.
com, net, org). Without keyword, enters TLD browse mode (gTLDs only, ccTLDs not supported).start, end, middle. Keyword mode only. Any other value returns 400.7), a range (6-9, inclusive of both ends), or a preset band: ultra (1-4), short (5-10), medium (11-15), long (16-63). 0-5 and <5 are aliases for ultra; 15+ for long. Any other value returns 400.all_alpha, all_number.forsale.length_asc length_desc alpha. Any other value returns 400.domain, status (for_sale, present only when the domain is listed for sale)Search expired domains. Two modes: provide keyword for keyword search, or provide tld without keyword to browse all expiring domains under a gTLD. At least one of keyword or tld is required.
com, net, org). Without keyword, enters TLD browse mode (gTLDs only, ccTLDs not supported).start, end, middle. Any other value returns 400.7), a range (6-9, inclusive of both ends), or a preset band: ultra (1-4), short (5-10), medium (11-15), long (16-63). 0-5 and <5 are aliases for ultra; 15+ for long. Any other value returns 400.all_alpha, all_number.0-5, 5-10, 10-20, 20+; 0-5 includes both ends, the rest exclude their lower bound and include their upper), an exact age (25), or a range (20-25, inclusive of both ends). Supports multi-select: 0-5,20+.expired, redemption, pending_delete.no_hold, has_hold.1 (last observed day), 2 (last 2 days), 3 (last 3 days). true is equivalent to 3. Applies to the expired stage only.today, tomorrow, or YYYY-MM-DD.length_asc length_desc age_asc age_desc tld_count_asc tld_count_desc. Any other value returns 400.domain, registered_date, age (years), tld_count, status (expired | redemption | pending delete)Search deleted (dropped) domains. Filter by keyword, TLD, length, age, and hold status.
com, net, ai).start, end, middle. Any other value returns 400.7), a range (6-9, inclusive of both ends), or a preset band: ultra (1-4), short (5-10), medium (11-15), long (16-63). 0-5 and <5 are aliases for ultra; 15+ for long. Any other value returns 400.all_alpha, all_number.0-5, 5-10, 10-20, 20+; 0-5 includes both ends, the rest exclude their lower bound and include their upper), an exact age (25), or a range (20-25, inclusive of both ends). Supports multi-select: 0-5,20+.no_hold, has_hold.1 (last observed day), 2 (last 2 days), 3 (last 3 days). true is equivalent to 3.length_asc length_desc age_asc age_desc tld_count_asc tld_count_desc. Any other value returns 400.domain, registered_date, age (years), tld_countSearch marketplace domains currently listed for sale. Two modes: provide keyword for keyword search, or provide tld without keyword to browse all listings under a gTLD, shortest names first. At least one of keyword or tld is required.
400.com, net, org). Without keyword, enters TLD browse mode (gTLDs only, ccTLDs not supported).start, end, middle. Defaults to matching anywhere. Any other value returns 400.7), a range (6-9, inclusive of both ends), or a preset band: ultra (1-4), short (5-10), medium (11-15), long (16-63). 0-5 and <5 are aliases for ultra; 15+ for long. Any other value returns 400.all_alpha, all_number.Afternic, Atom, BuyDomains, Dan, DDD, DN.com, Godaddy, Hugedomains, SawSells, Sedo, Venture, 4.cn. Case-insensitive. Supports multi-select: Sedo,Godaddy.1 (last day), 2 (last 2 days), 3 (last 3 days). true is equivalent to 3.length_asc length_desc tld_count_asc tld_count_desc alpha. In TLD browse mode results default to shortest first; only tld_count_desc changes the order. Any other value returns 400.domain, tld, marketplace, tld_count. marketplace is the platform the domain is listed on: Godaddy, Sedo, Atom, BuyDomains, Hugedomains, PerfectDomain, DN.com, DDD, 4.cn, Venture, or SawSells.Export full search results as a downloadable file. Add export=csv or export=txt to any search endpoint, in keyword mode or TLD browse mode. Export bypasses pagination and returns up to 50,000 results in a single response (/search/active returns up to 10,000). All standard search filters (tld, position, length, no_number, no_hyphen, etc.) are supported.
csv or txt.
csv returns a per-endpoint column set, listed belowtxt returns domain names only, one per line/search/nrds — domain, registered_date, expiry_date, tld_count, status/search/aged — domain, registered_date, tld_count, status/search/expired — domain, registered_date, tld_count, status/search/deleted — domain, registered_date, tld_count/search/active — domain, tld, status/search/market — domain, marketplace, tld_countregistered_date is the registration year. status is written only when it
carries a distinction: for_sale on /search/nrds, /search/aged,
and /search/active, and the expiry stage (expired, redemption,
pending delete) on /search/expired. It is left blank otherwise.
sort is omitted, /search/expired, /search/aged, and
/search/deleted export oldest registration first.
/search/nrds, /search/aged, /search/active, /search/expired, /search/deleted, /search/market
| Plan | Per minute | Per day | Per month |
|---|---|---|---|
| Premium trial | 2 | 3 | 9 |
| 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. Useful for identifying domain portfolios and hosting providers.
ns1.example.com).400.length_asc length_desc alpha alpha_desc. Any other value returns 400.all_alpha, all_number.7), a range (6-9, inclusive of both ends), or a preset band: ultra (1-4), short (5-10), medium (11-15), long (16-63). 0-5 and <5 are aliases for ultra; 15+ for long. Any other value returns 400. Takes precedence over min_len / max_len.length; prefer length for consistency with the search endpoints.length.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 match this endpoint's JSON fields.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. Uses MaxMind GeoLite2 data.
Fuzzy search ICANN-accredited registrars by name or exact match by IANA ID. Supports common aliases (e.g. godaddy, namecheap, cloudflare). Returns up to 20 matching registrars with accreditation status and RDAP URL.
godaddy or 146).Look up EPP domain status codes. Search by status name, alias, or category (e.g. clientHold, pending, security).
Generate typosquat permutations for a domain and check which variants are registered. Covers omission, transposition, keyboard-adjacent replacement, insertion, repetition, hyphenation, vowel-swap, homoglyph, combosquatting (brand + keyword), IDN homograph (Cyrillic look-alikes), plural/singular, and TLD-swap mutations. Registered variants include a latest_whois snapshot. Use for brand protection, phishing detection, and defensive registration planning. IDN homograph variants are returned as ASCII punycode (xn--) domains; the input domain itself must be ASCII.
example.com). Must include a TLD. The name portion must be at least 2 characters.false. Set to true to include unregistered variants in the response. By default only registered variants are returned.true. Set to false to skip WHOIS lookups entirely, returning only registration status. Speeds up the response.true. Set to false to omit the mutation type field from each variant.data array (equals registered_count unless unregistered=true).omission, transposition, replacement, insertion, repetition, hyphenation, vowel-swap, homoglyph, combosquatting, idn-homograph, plural, exact-tld, tld-swap.registered, for_sale, or expiring.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 domain status changes including transfers, drops, renewals, and nameserver updates.
400.1-3, 4, 5-8, 9-63. Any other value returns 400.true.all_number (digits-only).length_asc length_desc tld_count_asc tld_count_desc alpha alpha_desc. Any other value returns 400.Discover 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 3 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 active: 10,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 such as .cn, .ru are not available).
com, net, xyz). Required unless tlds is used.tld.7, 14, 30, 60, 90, 180. Default: 30.Get trending domain registration keywords. hot: top keywords by total registrations. emerging: fastest growing keywords. prefix: trending domain prefixes with registration counts.
all (default) or com (.com only). Only for hot and emerging.