Cards Realm API
Erste Schritte
Eine reine Lese-JSON-API auf denselben Daten, die die Website speisen: Karten, Decks, Turniere und Spielerergebnisse.
Kein API-Schlüssel. Jeder Endpunkt ist öffentlich und benötigt weder Authentifizierung noch Token noch Registrierung.
Jede Anfrage ist ein GET. Alle Parameter stehen im Query-String.
https://cardsrealm.com/de-li/api/
Das Sprachsegment ist Teil des Pfades und bestimmt die Sprache von Kartennamen und anderem übersetzten Text. Jede Locale, die die Seite bedient, funktioniert.
Das Spiel auswählen. Zwei Wege mit demselben Ergebnis: die Subdomain des Spiels aufrufen oder den Parameter game_id übergeben. Ohne beides bekommst du das Spiel der aufgerufenen Domain.
curl "https://cardsrealm.com/en-us/api/getRecentDecks?game_id=1&limit=2"
cardinfo
Alles, was die Seite über eine Karte weiß, per Name gesucht: Text, Manakosten, Seltenheit, Editionen und aktuelle Preise.
| Parameter | Art | Muster | Notizen |
|---|---|---|---|
cardname | string | Path to exile | Höchstens 50 Zeichen. |
currency | string | Währung der Locale | Drei Buchstaben. |
game_id | int | Spiel der Domain | 1 = Magic, 2 = Yu-Gi-Oh, 3 = Pokémon, 4 = Runeterra. |
language_code | string | Sprache des Pfades | Sprache des zurückgegebenen Kartennamens und -textes. |
curl "https://cardsrealm.com/de-li/api/cardinfo?cardname=Lightning%20Bolt¤cy=USD"
{
"name_of_card": "Lightning Bolt",
"name_ing": "Lightning Bolt",
"type_of_card": "Instant",
"text_of_card": "Lightning Bolt deals 3 damage to any target.",
"price": 77,
"currency_prefix": "$",
"path_of_card": "oj7-lightning-bolt",
"card_url": "https://mtg.cardsrealm.com/en-us/card/lightning-bolt"
}getRecentDecks
Die zuletzt veröffentlichten Decks, neueste zuerst.
| Parameter | Art | Muster | Notizen |
|---|---|---|---|
page | int | 1 | Seitenzahl. |
limit | int | 50 | Decks pro Seite. Die Obergrenze ist 500; darüber liefert der Aufruf einen Fehler. |
game_id | int | 1 | Wie bei cardinfo. |
curl "https://cardsrealm.com/de-li/api/getRecentDecks?page=1&limit=2"
[
{
"deck_id": 374859,
"deck_title": "Attack of the myrs",
"deck_owner": "jarrod long",
"deck_format_name": "Commander",
"deck_colours": "B G R U W",
"total_cards": 100,
"deck_url": "https://cardsrealm.com/decks/en-us/l8dh-attack-of-the-myrs"
}
]getDeckByID
Eine vollständige Deckliste. Die Kartenliste steht unter dem Schlüssel cards, mit Anzahl, Board (main oder side) und Preis pro Karte.
| Parameter | Art | Muster | Notizen |
|---|---|---|---|
deck_id | int | 0 | Die numerische id des Decks. |
currency | string | BRL | Drei Buchstaben. |
curl "https://cardsrealm.com/de-li/api/getDeckByID?deck_id=374859¤cy=USD"
{
"deck_title": "Attack of the myrs",
"user_name": "jarrod long",
"tour_type_name": "Commander",
"deck_quantity_main": 99,
"deck_quantity_side": 1,
"cards": [
{
"name_ing": "Command Tower",
"deck_quantity": 1,
"deck_sideboard": 0,
"card_price_total": 18
}
]
}getDeckResults
Wie sich ein Archetyp schlägt: Gesamtbilanz plus eine by_meta-Aufschlüsselung der Ergebnisse gegen jeden anderen Archetyp.
| Parameter | Art | Muster | Notizen |
|---|---|---|---|
deck_name | string | leer | Name des Archetyps, höchstens 40 Zeichen. |
week | int | 4 | Wie viele Wochen zurück. Die Obergrenze ist 52. |
format | string | Standard | Höchstens 20 Zeichen. |
game_id | int | 1 | Wie bei cardinfo. |
curl "https://cardsrealm.com/de-li/api/getDeckResults?deck_name=Grixis%20Affinity&format=Pauper&week=8"
getPlayerResults
Die Bilanz eines Spielers, mit einer by_meta-Aufschlüsselung nach Archetyp.
| Parameter | Art | Muster | Notizen |
|---|---|---|---|
player_name | string | leer | Höchstens 40 Zeichen. |
week | int | 52 | Wie viele Wochen zurück. |
player_platform | string | cardsrealm_nickname | Nach welchem Namen du suchst. Einer von cardsrealm_nickname, mtgo, arena, riot oder display. Alles andere liefert einen Fehler. |
curl "https://cardsrealm.com/de-li/api/getPlayerResults?player_name=Carrubs&player_platform=mtgo"
getPastTournaments
Bereits ausgetragene Turniere, neueste zuerst.
| Parameter | Art | Muster | Notizen |
|---|---|---|---|
page | int | 1 | Seitenzahl. |
format | string | leer | Höchstens 20 Zeichen. Leer bedeutet alle Formate. |
game_id | int | 1 | Wie bei cardinfo. |
curl "https://cardsrealm.com/de-li/api/getPastTournaments?format=Pauper&page=1"
[
{
"tournament_id": 810845,
"tournament_name": "Domingooouuu Pauper 86",
"tournament_path": "https://cardsrealm.com/tournament/en-us/1k3c9-domingooouuu-pauper-86",
"format_name": "Pauper",
"game_name": "Magic: the Gathering",
"datetime_utc": "Sun, 16 Aug 2026 16:30:00 GMT"
}
]getTournamentInfo
Ein vollständiges Turnier: das Event, seine Runden unter round_info und die Endtabelle unter standings. Eine nicht existierende id liefert eine leere Liste, keinen Fehler.
| Parameter | Art | Muster | Notizen |
|---|---|---|---|
tournament_id | int | 1 | Die numerische id des Turniers. |
curl "https://cardsrealm.com/de-li/api/getTournamentInfo?tournament_id=810845"
getUserTournaments
Die von einem Konto veranstalteten Turniere.
| Parameter | Art | Muster | Notizen |
|---|---|---|---|
nickname | string | Cards Realm | Höchstens 30 Zeichen. |
curl "https://cardsrealm.com/de-li/api/getUserTournaments?nickname=leon-diniz"
Fehler und Support
| Code | Bedeutung |
|---|---|
200 | Erfolg. Der Body ist immer JSON. |
404 | Der Aufruf wurde abgelehnt. Der Body ist ein JSON-String, der sagt, was falsch war: ein zu langer Name, eine Zahl, die keine ist, oder ein Wert außerhalb der zulässigen Liste. |
Fragen, oder ein Feld, das du brauchst und das hier fehlt? Sprich uns auf Discord an. Discord