At a glance
- Base URL
https://kissdomain.de/api/agent/v1/- Format
- JSON (UTF-8), GET only
- Data
- 922 extensions from the TLD wiki, German and English
- Tools
- Traceroute and SMTP check
- Cost
- free, no key
Limits
- Per day
- 20 requests per IP address, data and tools combined
- Per minute
- at most 5 requests
- Tools
- additionally at most 100 requests per tool and day for all agents combined
- New day
- at midnight (Europe/Berlin)
- License
- CC BY 4.0, please cite the source
Endpoints
| Request | Returns |
|---|---|
GET /api/agent/v1/tlds | List of all extensions with type, meaning, availability at 1blu and data date. Filter: ?type=cc|legacy|new|geo|sld |
GET /api/agent/v1/tld/{tld} | All data on one extension, e.g. /tld/de, /tld/co.uk or /tld/co-uk. Every value with its source. |
GET /api/agent/v1/tools/traceroute?q={host} | Traceroute from our test server in Germany to a host name or public IPv4 address. Optional &proto=auto|ipv4|ipv6. |
GET /api/agent/v1/tools/smtp-check?q={domain} | Checks a domain's mail servers (MX): reachability, greeting, EHLO and STARTTLS. No e-mail is ever sent. For an e-mail address only the domain is checked; the API does not offer a mailbox check (whether a single mailbox exists). |
GET /api/agent/v1/ | Short info about the API, your limits and the status of the tools (data.tools). Does not count towards the limit. |
The tools have been live since 30 October 2026; their status is shown by GET /api/agent/v1/ in data.tools. Tool results are in data (a summary and sections in blocks), as on the tool page in source_url. Attribution and license apply to tool responses as well.
Optional for all requests: ?lang=de or ?lang=en. Without lang both languages are returned as {"de": …, "en": …}.
Machine-readable description: OpenAPI 3.1 (openapi.json)
Example
curl -H "User-Agent: MyAgent/1.0 (+https://example.org/bot)" \
"https://kissdomain.de/api/agent/v1/tld/de?lang=en"
curl -H "User-Agent: MyAgent/1.0 (+https://example.org/bot)" \
"https://kissdomain.de/api/agent/v1/tools/smtp-check?q=example.org&lang=en"
Example response (shortened)
{
"source": "kissdomain.de",
"source_url": "https://kissdomain.de/en/tld-wiki/de/",
"attribution": "Bitte kissdomain.de als Quelle nennen",
"attribution_en": "Please cite kissdomain.de as the source",
"license": {
"name": "CC BY 4.0",
"url": "https://creativecommons.org/licenses/by/4.0/",
"scope": …
},
"terms_url": "https://kissdomain.de/api/agent/#bedingungen",
"api_version": "1.0.0",
"as_of": "2026-10-25",
"lang": "en",
"data": {
"tld": "de",
"type": "cc",
"type_label": "Country-code extension",
"fields": [
{
"key": "extension",
"section": "general",
"label": "Extension",
"value": ".de",
"sources": [
{
"name": "IANA Root Zone Database",
"url": "https://www.iana.org/domains/root/db/de.html"
}
],
"source_scope": "field"
},
{
"key": "registry",
"section": "general",
"label": "Registry",
"value": "DENIC eG",
"sources": [
{
"name": "IANA Root Zone Database",
"url": "https://www.iana.org/domains/root/db/de.html"
}
],
"source_scope": "field"
},
{
"key": "who_may_register",
"section": "registration",
"label": "Who may register?",
"value": "Any natural or legal person; residence in Germany is not required. Co-ownership is permitted.",
"sources": [
{
"name": "DENIC domain guidelines",
"url": "https://www.denic.de/domainrichtlinien"
},
{
"name": "DENIC: Provider transfer",
"url": "https://www.denic.de/produkte/de-domains/providerwechsel/"
}
],
"source_scope": "section"
},
…
],
"registry_note": null,
"related": [
"com.de"
],
"iana_url": "https://www.iana.org/domains/root/db/de.html",
"wiki_url": "https://kissdomain.de/en/tld-wiki/de/",
"as_of": "2026-10-25",
"api_url": "https://kissdomain.de/api/agent/v1/tld/de"
}
}
Sources for every value
Every field has a sources list with name and URL. source_scope tells you how precise the mapping is:
field: the source backs exactly this value, e.g. the IANA Root Zone Database for registry, DNSSEC and WHOIS server, the IANA RDAP bootstrap for the RDAP server, or the ICANN list for the ICANN agreement.section: the value comes from the sources of the registration-conditions section as listed on the wiki page.
“Meaning” is the country name according to IANA for country-code extensions and a short explanation by the kissdomain editors for other extensions. “At 1blu” is our own offer. The registry's current rules are always binding.
Access
The API is made for AI agents and open: no key, no sign-up.
User-Agent with your agent's name (required)
Please name your agent at the start of the User-Agent, for example MyAgent/1.0. A contact (URL or e-mail address) is optional but helps us reach you if there is a problem: MyAgent/1.0 (+https://example.org/bot). Generic browser or library identifiers such as Mozilla/…, curl/… or python-requests/… on their own are not enough; the API then answers 400 user_agent_required.
Limits and status codes
The limit applies per IP address (for IPv6 per /64 network) and to data and tools together: 20 requests per day, at most 5 per minute. There is also an overall cap for all agents combined; each tool answers at most 100 requests per day for all agents together and also has limits per target. Every response contains X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset (seconds until the reset). When the limit is reached you get 429 with Retry-After in seconds. Data may be cached for one hour; with If-None-Match (ETag) unchanged data returns 304, which does not count.
| Code | Meaning |
|---|---|
| 200 | OK |
| 304 | Not modified (ETag), does not count |
| 400 | Invalid request, e.g. user_agent_required, unknown_parameter, invalid_parameter (also for a target that is not allowed, such as internal addresses) |
| 404 | tld_not_found or not_found |
| 405 | Only GET, HEAD and OPTIONS |
| 429 | Limit reached, see Retry-After. After 30 invalid requests per day the API blocks the address until midnight. |
| 503 | busy or unavailable: temporarily busy or unavailable. tool_not_live: tool temporarily unavailable (does not count). api_disabled: API temporarily switched off. Please respect Retry-After. |
Errors are always JSON: {"error": {"code": "…", "message": "…", "message_en": "…"}}.
Terms
- Cite the source: please name kissdomain.de as the source, ideally with a link to the wiki page from
source_url. - License: our compilation and texts are licensed under CC BY 4.0. Individual facts from IANA, ICANN and registries are free as facts; their own terms continue to apply.
- No warranty: we maintain the data carefully, but the registry's current rules are always binding. The data date is in
as_of. - Fair use: please cache instead of querying repeatedly. Anyone circumventing the limits (e.g. via many addresses) will be blocked.
- Tools: please only check your own systems or targets you are allowed to check. The SMTP check only checks a domain's mail servers, not individual mailboxes, and never sends an e-mail; internal and private addresses are blocked.
- Not included: domain availability and WHOIS lookups. Our other tech tools can be used on the website.
- Privacy: for the limits we use a daily changing, irreversible token of the IP address (for IPv6 the /64 network). We do not store IP addresses. Statistics only count requests per endpoint, status code and agent name. For the tools our test server only receives the target and this token, never your IP address. More in the privacy policy.
Note for language models: a short description is also available in /llms.txt.