Public API von Karma.Domains bietet programmgesteuerten Zugriff auf Domain-Reports: auctions, expired, backorder und buy-now. Alle Antworten sind JSON uber HTTPS. Basis-URL: https://api.karma.domains, Routen-Prafix: /v1.
Karma.Domains ist eine Domain-Intelligence-Plattform fur Investoren, SEO-Teams und Automatisierungs-Pipelines:
- 400.000+ neue Domains taglich in Discovery- und Monitoring-Workflows (insgesamt 7.000.000+ Domains)
- 30+ Domain-Datenquellen insgesamt, darunter 27+ Quellen fur auction/expired/backorder/buy-now (GoDaddy, NameJet, DropCatch, Dynadot, GNAME, Namecheap usw.)
- 90+ Filter fur prazise Suche uber Domain-Qualitat, SEO, Content-Historie und Auktionssignale (TF, CF, DA, DR, Age, Backlinks, Traffic, Keywords, Anchor Text usw.)
- TLD- und ccTLD-Abdeckung (zum Beispiel
.com,.net,.org,.biz,.info,.at,.be,.ca,.cc,.cl,.co,.co.nz) - SEO- und Autoritatsdaten von fuhrenden Anbietern: Ahrefs, Majestic, Moz, SimilarWeb
- Historische Inhalte und Anderungssignale uber die Wayback Machine
Request- und Response-Schemas (Filterfelder, Report-Struktur, Sortier-Enums) findest du in den interaktiven Docs: Swagger UI oder ReDoc.
Diese Seite ist eine Integrations-Ubersicht: Authentifizierung, Limits, Endpoint-Liste, typische Workflows und Beispiele.
- Einfuhrung
- Authentifizierung
- Rate Limiting
- Daily row quota
- Endpoint-Ubersicht
- Referenz der Modellparameter
- Typische Workflows
- Caching
- Request-Beispiele (curl)
- Integrations-Use-Cases
- MCP und Public API
- FAQ
- Wo ist die vollstandige Referenz der Filterfelder?
- Was ist der Unterschied zwischen
availableundis_expired? - Warum 403 trotz korrektem Key?
- Warum passt die API-Antwort nicht zur UI oder zu einer gerade ausgefuhrten Aktion?
- Welche
sort_by-Werte sind erlaubt? - Brauche ich diese Seite, wenn OpenAPI existiert?
- Can I export the entire database via the API?
- Gibt es eine Sandbox?
- Error-Codes
- Nutzliche Links
Einfuhrung
Die Public API ist fur Skripte, interne Dashboards, CRM-Systeme und jede Automatisierung gedacht, die dieselben Daten wie die Karma.Domains-Web-App benotigt.
- Format: JSON
- API-Version: 1.0.0
- Datenbanken:
auctions,expired,backorder,buynow; Suche uber alle gleichzeitig —POST /v1/reports/search(entspricht der Tabelle "all databases" in der UI) - Felddokumentation: nur in OpenAPI
- Verfugbar nur im Tarif Pro und hoher
Authentifizierung
Jede Anfrage muss den Header enthalten:
Authorization: Bearer YOUR_API_KEY
So bekommst du einen API-Key
- Pro-Tarif (ohne Pro ist die API nicht verfugbar).
- Profile → Settings — im Bereich API key den Schlussel erstellen oder zurucksetzen.
Derselbe Key wird fur den MCP-Server (KI-Assistenten) verwendet. Das Request-Limit wird zwischen REST und MCP geteilt.
Typische Antworten bei falschem Key
| Code | Reason |
|---|---|
| 401 | Fehlender Header, unguItiger Key oder Tippfehler in Bearer |
| 403 | Key ist gultig, aber das Konto hat kein aktives Pro (Pro plan required for API access) |
Sende immer Accept: application/json.
Rate Limiting
- 60 Anfragen pro Minute pro API-Key
- Fenster: 60 Sekunden
- Der Zahler ist geteilt uber alle Public-API-Endpoints und MCP
Erfolgreiche Antworten enthalten Header:
| Header | Description |
|---|---|
X-RateLimit-Limit | Limit (60) |
X-RateLimit-Remaining | Verbleibende Anfragen im aktuellen Fenster |
X-RateLimit-Reset | Unix-Timestamp, wann das Fenster resetet |
Wenn das Limit uberschritten wird: 429 Too Many Requests und Header Retry-After (Sekunden bis zum Retry).
Tipps: nutze page_size bis 50 fur Listen; POST /search nicht haufiger pollen als notig — Antworten sind gecacht (siehe „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-Ubersicht
Vollstandige Query-/Body-Parameter in OpenAPI.
| Method | Path | Purpose |
|---|---|---|
POST | /v1/reports/search | Reports nach ReportListFilterSchema-Body suchen, Pagination, Sorting |
GET | /v1/reports/favorites | Favoritenliste des aktuellen Users |
POST | /v1/reports/favorites | Report zu Favoriten hinzufugen |
DELETE | /v1/reports/favorites/{report_type}/{report_id} | Aus Favoriten entfernen |
GET | /v1/reports/by-domain/{domain} | Report-IDs nach exaktem Domainnamen finden |
GET | /v1/reports/{report_type}/{report_id} | Vollstandiger Report nach Datenbanktyp und Report-ID |
GET | /v1/reports/check/expired/{report_id} | Prufen, ob die Domain fur einen expired-Report gedroppt ist |
GET | /v1/user | Benutzerprofil (PublicUserProfileSchema) |
GET | /v1/domains/checker/expiry/{domain} | Live-Check: ob die Domain registrierbar ist |
GET | /v1/domains/checker/karma_metric/{domain} | Live-Berechnung von Karma Metric uber die WayBack Machine |
Referenz der Modellparameter
Unten ist eine praxisnahe Parameter-Ubersicht fur die 3 zentralen OpenAPI-Modelle, die den GroIteil der API-Funktionalitat definieren.
ReportListFilterSchema (Request-Body fur POST /v1/reports/search)
Verwendete Wert-Semantik in diesem Schema:
nulloder ausgelassenes Feld = kein Filter.- String-Query-Felder unterstutzen
,fur AND und|fur OR, wo dokumentiert. - Datumsbereiche sind Arrays mit 2 Strings:
[from, to]. - Die meisten Score-Bereiche nutzen inklusive
*_min/*_max.
| Parameter | Type | Description |
|---|---|---|
domain | string | null | Domain-Substring-Filter, case-insensitive. , = AND (alle Begriffe mussen passen), | = OR (beliebiger Begriff). Max-Lange: 350. |
tlds | string | null | TLD-Liste, durch Komma oder Leerzeichen getrennt (z. B. .com .net .org). Max-Lange: 350. |
domain_type | string[] | null | Zulassige Werte: auctions, backorder, buynow, expired. OR-Logik zwischen gewahlten Werten. |
favorites | boolean | null | true = nur Favoriten, false = Favoriten ausschlieIen. Erfordert authentifizierten Benutzerkontext. |
categories | string[] | null | OR-Logik nach Kategorie, unterstutzt Category / Subcategory-Format, case-insensitive Substring-Matching. |
languages | string | Sprach-Query mit , (AND) / | (OR), case-insensitive Substring-Matching. Max-Lange: 350. |
keywords | string | null | Suche im Wayback-Content (title, description, h1-h6 usw.). , = AND, | = OR. Max-Lange: 350. |
website_ids | string[] | IDs wie GA/Metrika, um Domains mit gleichem Inhaber zu finden. |
domain_length_min / domain_length_max | integer | null | Grenzen der Domain-Lange (dokumentiert als 1..30). |
domain_numbers / domain_hyphens | boolean | Ziffern und Bindestriche in Domainnamen verlangen/ausschlieIen. |
report_added_time | string[2] | null | Datumsbereich: ["YYYY-MM-DD","YYYY-MM-DD"]. Backend setzt Start-/Ende-des-Tages-Grenzen automatisch. |
karmascore_min / karmascore_max | integer | null | KarmaScore-Grenzen, 0..100. |
karmametric_min / karmametric_max | integer | null | Karma-Metric-Grenzen, 0..100. |
brandscore_min / brandscore_max | integer | null | Brandscore-Grenzen, 0..100. |
openpagerank_min / openpagerank_max | integer | null | Open-PageRank-Grenzen, dokumentiert als 0..10. |
ahrefs_dr_min / ahrefs_dr_max | number | null | Ahrefs-DR-Grenzen, 0..100. |
ahrefs_ur_min / ahrefs_ur_max | number | null | Ahrefs-UR-Grenzen, 0..100. |
ahrefs_ar_min / ahrefs_ar_max | integer | null | Ahrefs-Rank-Grenzen (>= 0). |
majestic_tf_min / majestic_tf_max | integer | null | Majestic-TF-Grenzen, 0..100. |
majestic_cf_min / majestic_cf_max | integer | null | Majestic-CF-Grenzen, 0..100. |
majestic_bl_min / majestic_bl_max | integer | Grenzen fur Majestic-Backlinks. |
majestic_rd_min / majestic_rd_max | integer | Grenzen fur Majestic-Referring-Domains. |
majestic_topics / majestic_lang | string[] / string | Topic- und Anchor-Language-Filter. |
moz_da_min / moz_da_max | integer | null | Moz-DA-Grenzen, 0..100. |
moz_ss_min / moz_ss_max | integer | null | Moz-Spam-Score-Grenzen, 0..100. |
moz_bl_min / moz_bl_max | integer | Grenzen fur Moz-Backlinks. |
moz_rd_min / moz_rd_max | integer | Grenzen fur Moz-Referring-Domains. |
moz_bl_url / moz_bl_anchor | string | Moz-Backlink-URL-/Anchor-Phrase-Filter. |
sw_visits_min / sw_visits_max | integer | SimilarWeb-Visits-Grenzen. |
sw_last_traffic_date | string[2] | null | SimilarWeb-Monatsbereich: ["YYYY-MM","YYYY-MM"]. |
sw_country_filters | object[] | Country-Share-Filter (country, optional share_min). |
sw_ts_direct_min...sw_ts_social_max | number | null | SimilarWeb-Channel-Share-Grenzen der Traffic-Quellen, 0..100. |
wa_age_min / wa_age_max | integer | null | Wayback-Domain-Alter in Jahren. |
wa_first_snap / wa_last_snap | string[2] | null | Datumsbereich: ["YYYY-MM-DD","YYYY-MM-DD"] fur erste/letzte Snapshot-Fenster. |
wa_changes_min/max, wa_redirects_min/max, wa_parkings_min/max | integer | Wayback-History-Counter. |
wa_hieroglyphs, wa_redirects, wa_error403 | boolean | Wayback-Content-Quality-Flags. |
wa_lang_filters | object[] | Wayback-Sprachfilter (language, optional ratio_min). |
wa_server_code, wa_server_code_ratio_min/max | integer | null / number | null | Wayback-Server-Code-Filter (z. B. 200, 301, 302, 403, 404) + Ratio-Grenzen 0..100. |
ke_etv_min/max, ke_total_min/max | integer | Keywords-Everywhere-Traffic-Value-/Keyword-Grenzen. |
ke_keyword | string | Keywords-Everywhere-Phrase-Filter. |
google_has_index, google_has_mentions | boolean | null | true/false/unset-Semantik fur erforderlichen Index oder Mentions in Google-SERP. |
google_title_index/mentions, google_description_index/mentions | string | SERP-Snippet-Title-/Description-Phrase-Filter. |
trustpilot_rating_min/max, trustpilot_reviews_count_min/max | number | null / integer | null | Trustpilot-Rating-Grenzen (0..5) und Review-Count-Grenzen. |
trustpilot_category | string | Trustpilot-Kategorie-Phrase-Filter. |
auction_source | string[] | null | Auktionsquellnamen (case-insensitive) oder zusammengesetzter Wert `source |
auction_end_time, auction_added_time | string[2] | null | Datumsbereich: ["YYYY-MM-DD","YYYY-MM-DD"]. |
auction_price_min/max | number | Auktionspreis-Grenzen. |
auction_bids_min/max | integer | Auktionsgebote-Anzahl-Grenzen. |
combine_seo | object | null | Cross-Vendor-CombineSEOFilter: authority/backlinks/refdomains/traffic/keywords/backlink-url/anchors, mit vendor-spezifischer OR-Logik pro Zeile und AND zwischen Zeilen. |
ReportListResponseSchema (Response fur POST /search und GET /favorites)
| Parameter | Type | Description |
|---|---|---|
report_list | ReportItem[] | Paginierte Zeilen fur Tabellenansicht und Shortlist-Erstellung. |
total_count | integer | Gesamtzahl passender Datensatze fur den aktuellen Filter. |
report_list[]-Felder auf Zeilenebene (aus ReportItem) enthalten:
| Parameter | Type | Description |
|---|---|---|
report_id | string | Stabiler Report-Identifier (fur Vollreport und Favoriten). |
report_type | string | Einer von auctions, expired, backorder, buynow. |
domain, domain_tld | string | Domainname und TLD. |
added_at, updated_at | integer | Zeitstempel. |
processed, demo, is_expired | boolean | Status-Flags in UI/API-Workflows. |
karmascore, karmametric, brandscore | integer | Kernmetriken fur Qualitat/Brandability. |
ahrefs_dr, ahrefs_ur | number | Ahrefs-Zusammenfassungsmetriken. |
majestic_tf/cf/bl/rd, moz_da/ss/bl/rd | integer | Majestic- und Moz-Zusammenfassungsmetriken. |
ke_etv, ke_total | integer | Keywords-Everywhere-Zusammenfassungswerte. |
sw_last_traffic, sw_country_share, sw_sources | integer/object | SimilarWeb-Traffic-Zusammenfassungen. |
wa_age, wa_last_snap, wa_changes, wa_langs, wa_server_code | integer/array | Wayback-Zusammenfassungssignale. |
google_index, trustpilot_rating, trustpilot_reviews_count | boolean/number/integer | Google-/Trustpilot-Zusammenfassungsfelder. |
auctions | array/object | Auktions-Eintrage-Zusammenfassung, falls verfugbar. |
ReportFullResponseSchema (Response fur GET /v1/reports/{report_type}/{report_id})
| Parameter | Type | Description |
|---|---|---|
report_id, report_type, domain, domain_tld | string | Kern-Identitatsfelder. |
domain_length, domain_numbers, domain_hyphens | integer/boolean | Domainstruktur-Attribute. |
favorite, demo, processed, is_expired | boolean | Report-Status und benutzerbezogene Flags. |
added_at, updated_at, created_at, checked_at, expire_checked_at | integer | Lifecycle-Zeitstempel. |
providers_status | object | Pro-Provider-Statusmap der Verarbeitung (String-Werte). |
web_archive | object | Wayback-Machine-Daten — siehe Aufschlüsselung unten. |
metrics | DomainMetrics | Verschachtelte SEO-/Traffic-/Reputationsmetriken — siehe unten. |
auctions | object | null | Auktionslose, gruppiert nach end_time — siehe unten. |
metrics → DomainMetrics
Die meisten Provider-Blocke konnen Objekt mit Daten, false (nicht geladen) oder null sein. categories und blacklists konnen bei leerem Inhalt auch [] sein.
| Parameter | Type | Description |
|---|---|---|
openpagerank | number | integer | boolean | null | Open-PageRank-Score (typischerweise 0..10), wenn verfugbar. |
categories | CategoryData[] | boolean | null | Content-Kategorien von Klassifikations-Providern. |
blacklists | BlacklistsData[] | boolean | null | Treffer in Security-/Reputations-Blacklists. |
ahrefs | AhrefsData | boolean | null | Ahrefs-Domainmetriken. |
majestic | MajesticData | boolean | null | Majestic Trust/Citation Flow und Backlink-Profil. |
moz | MozData | boolean | null | Moz Authority, Spam Score und Backlink-Details. |
keywordseverywhere | KeywordseverywhereData | boolean | null | Keywords-Everywhere-Traffic-/Keyword-Schatzungen. |
similarweb | SimilarWebData | boolean | null | SimilarWeb Visits, Sources und Geo-Anteile. |
brandscore | BrandscoreData | boolean | null | Brandability-Score-Komponenten. |
karma_metric | KarmaMetricData | boolean | null | Karma-Metric-Score aus Wayback-Historie. |
trustpilot | TrustpilotData | boolean | null | Trustpilot-Rating und Review-Statistiken. |
google | GoogleData | boolean | null | Google-Index und Mention-SERP-Snippets. |
ai_summary | string | null | KI-generierter Domain-Zusammenfassungstext. |
AhrefsData
| Parameter | Type | Description |
|---|---|---|
domain_rating | number | null | Ahrefs DR. |
url_rating | number | integer | null | Ahrefs UR. |
ahrefs_rank | integer | null | Ahrefs Rank (niedriger = starker). |
MajesticData
| Parameter | Type | Description |
|---|---|---|
tf, cf | integer | null | Trust Flow / Citation Flow (0..100). |
backlinks, refdomains | integer | null | Backlinks- und Referring-Domains-Anzahl. |
primary_topic | string | null | Hauptthemen-Kategorie. |
topics | array | null | Themenverteilungsliste. |
anchor_lang | array | null | Sprachverteilung der Anchor-Texte. |
indexed_urls, referring_ips, referring_subnets | integer | null | Index- und Netzwerkdiversitats-Counter. |
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 und Link-Propensity. |
moz_*_to_subdomain fields | integer | null | Moz-Linkgraph-Counter (pages/domains, follow/nofollow/redirect/deleted). |
moz_da_history_values | string | null | Serialisierte DA-Historienwerte. |
backlinks | MozBacklink[] | null | Backlink-Zeilen (domain_source, url_source, domain_target, url_target, anchor_text, harmonic_centrality, last_found_date). |
KeywordseverywhereData
| Parameter | Type | Description |
|---|---|---|
etv | integer | null | Geschatzter Traffic Value. |
total_keywords | integer | null | Gesamtzahl verfolgter Keywords. |
data | KeywordItem[] | null | Keyword-Zeilen (position, etv, keyword). |
SimilarWebData
| Parameter | Type | Description |
|---|---|---|
estimated_monthly_visits | object | null | Monat → Visits-Map. |
traffic_sources | TrafficSources | null | Kanalanteile: Social, Paid Referrals, Mail, Referrals, Search, Direct (0..1-Verhaltnisse). |
top_country_shares | CountryShare[] | null | Geo-Verteilung (Country, CountryCode, Value). |
engagments | Engagements | null | BounceRate, PagePerVisit, Visits, TimeOnSite, Month, Year. |
category | string | null | SimilarWeb-Site-Kategorie. |
BrandscoreData
| Parameter | Type | Description |
|---|---|---|
pronounceability, memorability, uniqueness, appeal, brandscore | integer | Brandability-Komponenten und Endscore. |
KarmaMetricData
| Parameter | Type | Description |
|---|---|---|
karma_metric | integer | Endscore, 0..100. |
components | KarmaMetricComponents | A_mass, A_cont, A_stab, A_trend (jeweils 0..100). |
period | string | null | Zeitraum im Format YYYY-MM (oder null, wenn nicht verfugbar). |
TrustpilotData
| Parameter | Type | Description |
|---|---|---|
rating | number | null | Bewertung, typischerweise 0..5. |
reviews_count | integer | null | Anzahl Reviews. |
category | string | null | Trustpilot-Business-Kategorie. |
GoogleData
| Parameter | Type | Description |
|---|---|---|
google_index | GoogleItem[] | null | Indexierte Seiten fur site:domain (rank, url, title, description). |
google_mentions | GoogleItem[] | null | Mention-Ergebnisse fur Domain-Suchen in Anfuhrungszeichen. |
CategoryData / BlacklistsData
| Model | Key fields |
|---|---|
CategoryData | categories[], vendor, info_url |
BlacklistsData | vendor, info_url, optional info |
web_archive (Wayback-Machine-Payload)
Objekt mit drei Hauptblocken: info, ts_summary, history. In Vollreport-Antworten wird history newest-first zuruckgegeben.
| Parameter | Type | Description |
|---|---|---|
info | object | null | Zusammenfassung der Archivabdeckung fur die Domain. |
ts_summary | object | null | Aggregierte KarmaScore-/Wayback-Signale fur Tabellenfilter. |
history | array | Snapshot-Timeline (ein Objekt pro Wayback-Capture). |
web_archive.info
| Parameter | Type | Description |
|---|---|---|
snap_counter | integer | Gesamtzahl gezahlter Wayback-Snapshots. |
years_counter | integer | Anzahl Jahre mit Archivaktivitaten (Domain-Age-Signal). |
first_ts | integer | Unix-Timestamp des ersten Snapshots. |
last_ts | integer | Unix-Timestamp des neuesten Snapshots. |
years | object | Jahr → monatliche Snapshot-Count-Map (Sparkline-/Kalenderdaten). |
web_archive.ts_summary
| Parameter | Type | Description |
|---|---|---|
average_karma_score | integer | Durchschnittlicher KarmaScore, 0..100 (mapped auf Listenfeld karmascore). |
wa_changes | integer | Anzahl signifikanter Content-Anderungen in der gescannten Historie. |
wa_langs | array | Sprachverteilungszeilen: language, pageRatio (0..100). |
wa_server_code | array | HTTP-Code-Verteilung: server_code (z. B. 200, 301, 403), response_ratio (0..100). |
wa_tags | array | Erkannte Content-Tags uber die Historie. |
pattern_shares | array | Pattern-Share-Zeilen: factor, description, share. |
chart_data | array | Zeitreihenpunkte: timestamp, karma_score, lang, server_code, tags, detected_patterns. |
web_archive.history[] (Snapshot-Zeile)
| Parameter | Type | Description |
|---|---|---|
snaped_at | integer | Snapshot-Unix-Timestamp. |
webarchive_link | string | null | Wayback-URL fur dieses Capture (null bei schlieIendem Placeholder-Snapshot). |
headers | object | null | HTTP-Metadaten, haufig status_code (200, 301, 302, 403, 404, 429, …), original_url. |
screenshot | boolean | null | true, wenn Screenshot existiert (Binary separat gespeichert; Abruf uber Screenshot-API in der UI). |
content_info | object | null | Geparster Seiteninhalt (siehe unten). |
karma_score | object | null | Score pro Snapshot: score (0..100), detected_patterns, tags (porno/crypto/gambling/… Flags). |
redirects | array | null | Redirect-Chain-Daten, falls vorhanden. |
website_ids | array | null | Erkannte Site-IDs (name, website, ids[]), z. B. Analytics-Tags. |
built_with | object | null | Technology-Stack-Detection-Payload (wenn verfugbar). |
web_archive.history[].content_info
| Parameter | Type | Description |
|---|---|---|
lang | string | null | Erkannter Sprachcode der Seite. |
title, description, keywords | string | null | Meta-/Seitentextfelder fur Filter und UI. |
generator, author, copyright | string | null | Weitere Meta-Felder. |
h1 … h6 | string[] | null | Heading-Texte (durchsuchbar uber keywords-Filter). |
cloud_words | array | null | Word-Cloud-Eintrage (word). |
external_links, internal_links | array | null | Outbound-/Inbound-Linklisten. |
rel_canonical, meta_robots | string | null | Canonical-URL und Robots-Meta. |
length_symbols, length_words | integer | Content-GroIencounter. |
auctions (Auktionslose)
Vorhanden, wenn der Report Auktionsdaten hat (auctions, und manchmal zugehorige Zeilen in anderen Bases).
In Vollreport-Antworten sind Lose nach Endzeit gruppiert:
{
"1764441900": [
{ "source": "godaddy", "sale_type": "auction", "price": 120, "bids": 3, "...": "..." }
]
}
- Objektschlussel =
end_time(Unix-Sekunden). - Wert = Array von Lot-Objekten mit diesem Endzeitpunkt (mehrere Plattformen konnen einen Schlussel teilen).
| Parameter | Type | Description |
|---|---|---|
source | string | Auktionsplattform-/Registrar-Quelle (z. B. godaddy, namejet, dynadot, dropcatch, sedo, sav.com). Case-insensitive in Filtern. |
sale_type | string | Listing-Typ (z. B. auction, buynow, Closeout, Pre-Release, Dropped). |
domain | string | Domainname des Lots. |
item_id | string | Plattform-spezifische Lot-/Listing-ID. |
end_time | integer | Lot-Endzeit (Unix-Sekunden); auch Gruppierungsschlussel im Vollreport. |
price | number | Aktueller Preis (typischerweise USD). |
bids | integer | null | Gebotsanzahl, wenn anwendbar. |
currency | string | Wahrungssymbol/-code (Standard "$"). |
report_type | string | Zugehorige Base: auctions, backorder oder buynow. |
priority | integer | Internes Sortier-/Prioritatsgewicht (Standard 0). |
Filter-Tipp: auction_source in der Suche akzeptiert reine Quelle (godaddy) oder zusammengesetzten Wert source|sale_type (z. B. godaddy|auction).
Fur exakte Feldrestriktionen (Nullable-Regeln, Enum-Werte, Min/Max, verschachtelte Objekte) immer OpenAPI oder ReDoc nutzen.
Parameter report_type
Fur Vollreport und Favoriten: auctions, expired, backorder, buynow.
Wert all wird nur in der Suchlogik (alle Datenbanken) verwendet, nicht als {report_type} im Path.
Pagination und Sorting (Listen-Endpoints)
Query-Parameter:
| Parameter | Default | Description |
|---|---|---|
page | 1 | Seitennummer |
page_size | 10 | SeitengroIe (max 50) |
sort_by | added_at | Name der Sortierspalte (wie in der UI-Tabelle; Enum in OpenAPI) |
sort_desc | true | true — absteigend |
Depth limit: page × page_size ≤ 5000. Requests beyond this return 422 validation error.
Domains in URLs
Fur {domain} im Path Percent-Encoding verwenden (IDN, Kyrillisch usw.). Der Server normalisiert den Namen (punycoded/lowercase).
Typische Workflows
1. Suche → Vollreport
POST https://api.karma.domains/v1/reports/searchmit Filter-Body (siehe OpenAPI →ReportListFilterSchema).- Aus
report_list[]report_idundreport_typeentnehmen. GET https://api.karma.domains/v1/reports/{report_type}/{report_id}.
Filter entsprechen den Filtern in der Web-UI — einfacher UI-Abgleich; Feldschema in OpenAPI.
2. Exakte Domain ohne lange Suche
GET /v1/reports/by-domain/example.com- In der Antwort
matches[]— bis zu ein Eintrag pro Datenbank, in der die Domain existiert. - Gewunschten
report_typewahlen →GET /v1/reports/{report_type}/{report_id}.
Wenn matches leer ist — die Domain ist nicht in den Karma-Datenbanken.
3. Favoriten
- Nur Liste:
GET /v1/reports/favorites - Dieselbe Liste uber Suche:
POST /v1/reports/searchmit"favorites": trueim Body - Hinzufugen:
POST /v1/reports/favoritesmit{"report_id": "...", "report_type": "expired"} - Entfernen:
DELETE /v1/reports/favorites/expired/{report_id}
4. Drop-Check (expired report)
GET /v1/reports/check/expired/{report_id} — Report-ID, nicht Domainname.
- Bei erfolgreichem Check wird der Report-Datensatz auf dem Server aktualisiert
is_expired: true— Domain ist wahrscheinlich registrierbar (nicht "WHOIS expiry date passed")- Wiederholter Live-Check fur denselben Report — maximal einmal alle 3 Stunden (Business-Regel)
- HTTP-Response wird 1 Stunde fur wiederholte GETs mit derselben
report_idgecacht (siehe „Caching“)
5. Domain-Check ohne Report in der Datenbank
GET /v1/domains/checker/expiry/{domain} — Live WHOIS/DNS; verandert den Datenbank-Report nicht.
available: true— wahrscheinlich registrierbaravailable: false— vergeben oder reserviert- Wiederholte Anfrage fur dieselbe Domain innerhalb von ~1 Stunde kann eine gecachte Antwort liefern
6. Karma Metric on the fly
GET /v1/domains/checker/karma_metric/{domain} — Karma Metric aus der WayBack Machine; aktualisiert den Report nicht. Response-Felder — OpenAPI (KarmaMetricData). Response-Cache pro Domain — ~1 Stunde.
Mehr zu Karma Metric im Blog
7. Guthaben und Tarif
GET /v1/user — E-Mail, balance (Credits), Tarif-Flags, Subscription-Daten. API-Key ist nicht in der Antwort. Antwort wird ~1 Minute pro Key gecacht — nicht haufiger pollen als notig fur aktuelles Guthaben.
Caching
Auf Public-API-Ebene wird der HTTP-Response-Body gecacht. Manche Endpoints nutzen Early Refresh (Hintergrund-Refresh vor TTL-Ablauf: 4 Min bei 5 Min TTL, 50 Min bei 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 bei Favoriten andern Serverdaten sofort, aber ein erneutes GET /favorites oder POST /search mit favorites: true kann bis zum Cache-Ablauf (5 Min) eine veraltete Liste liefern.
Request-Beispiele (curl)
Ersetze YOUR_API_KEY durch deinen Profil-Key. Basis-URL: https://api.karma.domains.
Expired mit Filter suchen
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 — beliebige Felder aus ReportListFilterSchema in OpenAPI.
Vollreport
curl "https://api.karma.domains/v1/reports/expired/507f1f77bcf86cd799439011" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json"
Lookup nach Domain
curl "https://api.karma.domains/v1/reports/by-domain/example.com" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json"
Zu Favoriten hinzufugen
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-Verfugbarkeit prufen
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"
Integrations-Use-Cases
Nachtliche Expired-Selection-Pipeline
Taglicher Cron: POST /search mit gespeichertem JSON-Filter (wie ein saved filter in der UI), Pagination mit page_size=50, report_id in die eigene DB exportieren. Detaillierte Analyse — GET Vollreport nur fur die Shortlist.
Monitoring einer Namensliste vor Registrierung
Queue von Domains → GET /domains/checker/expiry/{domain} → Verzweigung uber available. Benotigt keinen Report in Karma.Domains.
Favoriten mit internem CRM synchronisieren
Periodisch GET /favorites; bei User-Aktion im CRM — POST/DELETE Favoriten. ~5 Min Listen-Cache berucksichtigen.
BI / Funnel-Analytics
Search-Seiten exportieren, total_count und Metriken aus report_list aggregieren, ohne die UI zu offnen. Listenzeilen-Schema — ReportListResponseSchema in OpenAPI.
MCP + Skripte mit einem Key
Team nutzt MCP in Cursor fur ad-hoc Suche und Public API fur stabiles ETL. Gesamtlimit 60 Anfragen pro Minute — Batches planen und Backoff bei 429.
MCP und Public API
| Public API (REST) | MCP | |
|---|---|---|
| Audience | Entwickler, Skripte, ETL | KI-Assistenten (Cursor, Claude) |
| Interface | HTTP + JSON | Dialog, Tools |
| Docs | Diese Seite + OpenAPI | /de/expired-domains-mcp/ |
| Data | Dieselben Reports und Datenbanken | Dasselbe |
| Key & limit | Geteilt | Geteilt |
Fur neue Code-Integrationen mit REST starten. Fur Chat-Experimente — MCP.
FAQ
Wo ist die vollstandige Referenz der Filterfelder?
OpenAPI, Schema ReportListFilterSchema. Feldbedeutungen entsprechen der Filter-Hilfe in der UI.
Was ist der Unterschied zwischen available und is_expired?
Beides bedeutet im API-Kontext: Domain ist wahrscheinlich registrierbar.
available — Live-Check nach Name (/domains/checker/expiry).
is_expired — Check, gebunden an einen expired-Datenbank-Report (/reports/check/expired/{report_id}).
Warum 403 trotz korrektem Key?
Kein aktiver Pro-Tarif. Subscription im Profil prufen.
Warum passt die API-Antwort nicht zur UI oder zu einer gerade ausgefuhrten Aktion?
Public-API-HTTP-Cache — siehe Tabelle in „Caching“. TTL bei UI-Sync berucksichtigen.
Welche sort_by-Werte sind erlaubt?
Enum-Liste in OpenAPI — Spaltennamen der Report-Tabelle in der Web-App.
Brauche ich diese Seite, wenn OpenAPI existiert?
OpenAPI ist die Source of Truth fur Typen und Felder. Diese Seite liefert Kontext: Limits, Cache, Call-Reihenfolge, Use-Cases und Fallstricke, die nicht im Schema stehen.
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}.
Gibt es eine Sandbox?
Keine separate Sandbox; nutze ein Pro-Konto und halte Rate Limits ein. Fur Debugging eignen sich GET /user und ein enges POST /search mit strengem Filter.
Error-Codes
| Code | Meaning |
|---|---|
| 200 | Success |
| 401 | Unauthorized (key) |
| 403 | No Pro |
| 404 | Report oder Ressource nicht gefunden |
| 422 | Body-/Query-Validierungsfehler (ungultiger Filter, sort_by, …) |
| 429 | Rate limit or daily row quota exceeded |
| 503 | Rate Limiter vorubergehend nicht verfugbar |
Error-Body hat normalerweise detail (String oder Array von Validierungsobjekten). Beispiel:
{
"detail": "Invalid API key"
}
Nutzliche Links
- OpenAPI (Swagger): https://api.karma.domains/docs
- ReDoc: https://api.karma.domains/redoc
- MCP fur AI
- API key: Profile → Settings
- UI-Filter-Hilfe