The ELITEDOMAINS API allows you to manage domains, handles, and catcher orders programmatically through a simple REST API.
This documentation provides all the information you need to work with the ELITEDOMAINS API.
To use the API, please contact our support team to enable API access for your account. Once activated, you can manage personal access tokens in your account settings.
All API requests must include your personal access token as a Bearer token:
Authorization: Bearer {YOUR_TOKEN}
All API requests should be made to: https://api.elitedomains.de
The API currently supports .de domains only. Requests for other TLDs are rejected with a dedicated error message. Support for additional TLDs is coming soon.
Every API request can be run in Sandbox mode by adding ?sandbox=1 to the URL. In Sandbox mode, no actual changes are performed (no database writes or registry calls).
These limits are shared between the REST API and the MCP server (below): requests to either interface count against the same per-account counter.
Every API operation is also available to AI agents through a Model Context Protocol (MCP) server. Any MCP-compatible client (for example Claude) can manage your domains, handles, offers and catcher orders directly.
https://mcp.elitedomains.de (Streamable HTTP transport)default ability.Point your MCP client at the endpoint and provide your token in the Authorization header. Example client configuration:
{
"mcpServers": {
"elitedomains": {
"type": "http",
"url": "https://mcp.elitedomains.de",
"headers": {
"Authorization": "Bearer {YOUR_TOKEN}"
}
}
}
}
The server exposes the same operations documented below: domains (list, check availability, prices, register/transfer, update, delete, tags, authinfo), handles (list, create, update), offers (list) and catcher backorders (list, info, create, delete). As with the REST API, only .de domains are supported.
To authenticate requests, include an Authorization header with the value "Bearer {YOUR_TOKEN}".
All authenticated endpoints are marked with a requires authentication badge in the documentation below.
You can retrieve your personal access token by visiting your account settings page in the ELITEDOMAINS dashboard. Contact support to enable API access for your account.
Retrieve a paginated list of all domain catcher orders in your account.
The page number for pagination.
Number of results per page. Default: 500, Max: 500.
curl --request GET \
--get "https://api.elitedomains.de/catcher?page=1&per_page=500" \
--header "Authorization: Bearer {YOUR_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"current_page": 1,
"per_page": 500,
"data": [
{
"name": "example.de",
"status": "rgp",
"users": 3,
"price": 5,
"dropdate_at": "2024-03-15",
"created_at": "2024-03-10 14:30:00",
"tags": [
"tag1",
"tag2"
]
}
]
}
Retrieve status information for any domain in the catcher, including the number of users competing for it, the current status and the expected drop date. The domain does not need to be in your own catcher orders.
The domain name.
curl --request GET \
--get "https://api.elitedomains.de/catcher/info?name=example.de" \
--header "Authorization: Bearer {YOUR_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"name": "example.de",
"status": "rgp",
"users": 3,
"dropdate_at": "2024-03-15 00:00:00"
}
Add a new domain to the RGP (Redemption Grace Period) catcher. Successfully caught domains will be registered using your default handle configuration.
curl --request POST \
"https://api.elitedomains.de/catcher" \
--header "Authorization: Bearer {YOUR_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"example.de\",
\"price\": 10
}"
{
"message": "Domain added to catcher",
"name": "example.de"
}
Remove a domain from your catcher order list.
curl --request DELETE \
"https://api.elitedomains.de/catcher" \
--header "Authorization: Bearer {YOUR_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"example.de\"
}"
{
"message": "Domain deleted",
"name": "example.de"
}
Retrieve a paginated list of all domains in your account.
The page number for pagination.
Number of results per page. Default: 500, Max: 500.
curl --request GET \
--get "https://api.elitedomains.de/domains?page=1&per_page=500" \
--header "Authorization: Bearer {YOUR_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"current_page": 1,
"per_page": 500,
"data": [
{
"name": "example.de",
"redirector_settings": {
"type": "landing",
"method": "redirect_sale_page"
},
"authinfo": "E-Hc$f3xx",
"auto_expire": "2024-12-31",
"paid_until": "2024-12-31",
"expires_at": "2025-01-01T00:00:00.000000Z",
"created_at": "2023-01-15T10:30:00.000000Z"
}
]
}
Retrieve the prices for all top-level domains (TLDs) available for registration. All prices are net (excluding VAT) and quoted per year.
The price object holds the price currently valid for your account. It may be lower than the standard price because of an active promotion or because an individual price has been negotiated for your account. The original_price object holds the standard list price without any promotions or individual pricing. The custom object indicates, per price type, whether an individual price is configured for your account that deviates from the standard price.
A price may be null when the corresponding action is not offered for a TLD.
Filter the result by a single TLD. The leading dot is optional.
curl --request GET \
--get "https://api.elitedomains.de/domains/prices?tld=de" \
--header "Authorization: Bearer {YOUR_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"data": [
{
"tld": "de",
"price": {
"reg": 5,
"transfer": 5,
"renew": 5,
"restore": 80
},
"original_price": {
"reg": 5,
"transfer": 5,
"renew": 5,
"restore": 80
},
"custom": {
"reg": false,
"transfer": false,
"renew": false,
"restore": false
}
}
]
}
Register a new domain or transfer an existing domain to your account. Domains will be created using your default redirector and handle configuration.
curl --request POST \
"https://api.elitedomains.de/domains" \
--header "Authorization: Bearer {YOUR_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"example.de\",
\"authinfo\": \"E-Hc$f3xx\",
\"handle_id\": 123,
\"period\": 12,
\"redirector_settings\": {
\"type\": \"landing\",
\"method\": \"redirect_sale_page\",
\"url\": \"https:\\/\\/example.com\",
\"ns\": [
\"ns1.example.com\",
\"ns2.example.com\"
],
\"dns\": [
{
\"type\": \"A\",
\"name\": \"@\",
\"value\": \"192.168.1.1\",
\"prio\": 10,
\"ttl\": 3600
}
],
\"options\": {
\"dnssec-active\": \"false\",
\"dnssec-key\": \"AwEAAa...\",
\"dnssec-algorithm\": \"13\",
\"dnssec-flags\": \"257\"
}
}
}"
{
"message": "Domain registered successfully",
"name": "example.de"
}
Add or update tags for a specific domain in your portfolio. Tags help organize and categorize your domains.
curl --request POST \
"https://api.elitedomains.de/domains/tags" \
--header "Authorization: Bearer {YOUR_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"example.de\",
\"tags\": [
\"premium\",
\"aged\",
\"brandable\"
]
}"
Check the registry status of a .de domain. The message field contains the
current status. The most common values are free (available for registration)
and connect (already registered). Other registry statuses such as
redemptionPeriod, transfer_lock or transit may also be returned.
Only .de domains are supported at this time.
The domain name to check.
curl --request GET \
--get "https://api.elitedomains.de/domains/check?name=example.de" \
--header "Authorization: Bearer {YOUR_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"name": "example.de",
"message": "free"
}
Update domain settings such as redirector configuration or handle assignment.
curl --request PATCH \
"https://api.elitedomains.de/domains" \
--header "Authorization: Bearer {YOUR_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"example.de\",
\"redirector_settings\": {
\"type\": \"landing\",
\"method\": \"redirect_sale_page\",
\"url\": \"https:\\/\\/example.com\",
\"ns\": [
\"ns1.example.com\",
\"ns2.example.com\"
],
\"dns\": [
{
\"type\": \"A\",
\"name\": \"@\",
\"value\": \"192.168.1.1\",
\"prio\": 10,
\"ttl\": 3600
}
],
\"options\": {
\"dnssec-active\": \"false\",
\"dnssec-key\": \"AwEAAa...\",
\"dnssec-algorithm\": \"13\",
\"dnssec-flags\": \"257\"
}
},
\"handle_id\": 1234
}"
{
"message": "Domain updated"
}
Delete a domain from your account or put it into DENIC transit state.
curl --request DELETE \
"https://api.elitedomains.de/domains" \
--header "Authorization: Bearer {YOUR_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"example.de\",
\"transit\": 0
}"
{
"message": "Domain deleted",
"name": "example.de"
}
Retrieve the AuthInfo/transfer code for a domain. If none exists, a new one will be generated.
The domain name.
curl --request GET \
--get "https://api.elitedomains.de/domains/authinfo?name=example.de" \
--header "Authorization: Bearer {YOUR_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"message": "Authcode exists",
"name": "example.de",
"authinfo": "EDxHc$f3xx",
"expires_at": "07.04.2024 21:34:35"
}
Check if an AuthInfo2 letter can be ordered for a .de domain via DENIC. Only available for accounts
that use monthly invoicing (Sammelrechnung).
The domain name to check.
curl --request GET \
--get "https://api.elitedomains.de/domains/authinfo2/check?name=example.de" \
--header "Authorization: Bearer {YOUR_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"name": "example.de",
"available": true,
"message": "AuthInfo2 can be ordered"
}
Order an AuthInfo2 letter from DENIC for a .de domain. Only available for accounts that use monthly
invoicing (Sammelrechnung); the order is added to the next collective invoice. A confirmation email
is sent on success.
curl --request POST \
"https://api.elitedomains.de/domains/authinfo2" \
--header "Authorization: Bearer {YOUR_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"example.de\",
\"sandbox\": \"0\"
}"
{
"name": "example.de",
"message": "AuthInfo2 letter for example.de has been ordered and will be sent within 1-2 business days."
}
List a domain on the Sedo marketplace with a specified price. The domain will be configured for Paynow transactions.
curl --request POST \
"https://api.elitedomains.de/domains/sedo" \
--header "Authorization: Bearer {YOUR_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"example.de\",
\"price\": 1500
}"
{
"message": "SEDO-Domain added or updated successfully",
"name": "example.de"
}
Retrieve a paginated list of all sale pages (domain offers) in your account with relevant data including status, pricing, visitors, leads, and template information.
The page number for pagination.
Number of results per page. Default: 50, Max: 500.
Filter by offer type. Options: paynow, 4sale.
Filter by status. Options: verified, hold, not_configured, unverified, inactive, deconnect.
Filter by internal domains (true) or external domains (false).
Filter by template name.
Minimum price filter.
Maximum price filter.
Minimum visitors in last 30 days.
Field to order by. Options: created_at, name, price, visitors, status. Default: created_at.
Order direction. Options: asc, desc. Default: desc.
curl --request GET \
--get "https://api.elitedomains.de/offers?page=1&per_page=50&type=paynow&status=verified&is_internal=1&template=slim&min_price=99&max_price=5000&min_visitors=10&order_by=visitors&order_direction=desc" \
--header "Authorization: Bearer {YOUR_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"current_page": 1,
"per_page": 50,
"total": 125,
"last_page": 3,
"data": [
{
"name": "example.de",
"type": "paynow",
"status": "verified",
"price": 2999,
"template": "slim",
"created_at": "2023-01-15T10:30:00.000000Z",
"is_internal": true,
"redirect_status": true,
"hide_on_marketplace": false,
"visitors": {
"last_30_days": 142,
"last_7_days": 35,
"referrer_30_days": 12
},
"template_data": {
"theme-color": "blue",
"price-suggest": "true"
},
"tags": [
"premium",
"short"
]
}
]
}
Retrieve a paginated list of all contact handles in your account.
The page number for pagination.
Number of results per page. Default: 500, Max: 500.
curl --request GET \
--get "https://api.elitedomains.de/handles?page=1&per_page=500" \
--header "Authorization: Bearer {YOUR_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"current_page": 1,
"per_page": 500,
"data": [
{
"id": 123,
"alias": "JohnPrivate",
"type": "PERSON",
"handle_name": "John Doe",
"street_name": "Unter den Linden",
"street_number": "12",
"postalcode": "12345",
"city": "Berlin",
"country_id": "DE",
"email": "[email protected]",
"phone": "+49.16094751251",
"created_at": "2023-01-15T10:30:00.000000Z"
}
]
}
Add a new contact handle to your account. Handles are used for domain contact information at the registry.
curl --request POST \
"https://api.elitedomains.de/handles" \
--header "Authorization: Bearer {YOUR_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"alias\": \"JohnPrivate\",
\"type\": \"PERSON\",
\"handle_name\": \"John Doe\",
\"street_name\": \"Unter den Linden\",
\"street_number\": \"12\",
\"postalcode\": \"12345\",
\"city\": \"Berlin\",
\"country_iso\": \"DE\",
\"email\": \"[email protected]\",
\"phone\": \"+49.16094751251\",
\"general_request\": \"[email protected]\",
\"abuse_contact\": \"[email protected]\",
\"address_suggest\": \"keep\"
}"
{
"id": 123,
"alias": "JohnPrivate",
"type": "PERSON",
"handle_name": "John Doe",
"street_name": "Unter den Linden",
"street_number": "12",
"postalcode": "12345",
"city": "Berlin",
"country_id": "DE",
"email": "[email protected]",
"phone": "+49.16094751251",
"created_at": "2023-01-15T10:30:00.000000Z"
}
Update an existing contact handle. Only include fields you want to update.
The handle ID.
curl --request PATCH \
"https://api.elitedomains.de/handles/123" \
--header "Authorization: Bearer {YOUR_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"alias\": \"JohnPrivate\",
\"street_name\": \"Unter den Linden\",
\"street_number\": \"12\",
\"postalcode\": \"12345\",
\"city\": \"Berlin\",
\"country_iso\": \"DE\",
\"email\": \"[email protected]\",
\"phone\": \"+49.16094751251\",
\"general_request\": \"[email protected]\",
\"abuse_contact\": \"[email protected]\",
\"address_suggest\": \"keep\"
}"
{
"id": 123,
"alias": "JohnPrivate",
"type": "PERSON",
"handle_name": "John Doe",
"street_name": "Unter den Linden",
"street_number": "12",
"postalcode": "12345",
"city": "Berlin",
"country_id": "DE",
"email": "[email protected]",
"phone": "+49.16094751251",
"created_at": "2023-01-15T10:30:00.000000Z"
}