/
Ratgeber

Lego API: Set-Daten, Händlerpreise und MCP für ChatGPT

🗓 Veröffentlicht: 
👤 Moritz
📘 Ratgeber

Eine offizielle, öffentliche Entwickler-API für Katalog oder Shoppreise bietet Lego nicht an. Wer Lego-Daten in eine App, eine Tabelle oder einen KI-Assistenten holen will, arbeitet mit Drittanbietern, und jeder davon beantwortet eine andere Frage. Für Teile und Inventare ist Rebrickable die richtige Adresse, für Set-Daten und Sammlungen Brickset, für Marktpreise BrickLink und für aktuelle Händlerangebote mit Versand in neun Ländern Brickfact. Die API und der MCP-Server von Brickfact brauchen keinen Schlüssel.

Dieser Ratgeber zeigt, welche Quelle zu welcher Aufgabe passt, führt getestete Abfragen gegen die öffentliche JSON-API von Brickfact vor und erklärt, wie du ChatGPT oder einen anderen Assistenten über das Model Context Protocol (MCP) anbindest. Die Beispiele rechnen in Euro für Deutschland und Österreich und in Franken für die Schweiz. Den Dienst betreibt Brickfact selbst, deshalb beschreiben wir seine Grenzen genauso offen wie seine Funktionen.

Welche Lego API passt zu deinem Projekt?

Ein Teileinventar, eine unverbindliche Preisempfehlung, ein Marktverkauf und ein Händlerangebot sind vier verschiedene Zahlen. Kläre zuerst, welche davon dein Projekt braucht, und such dir dann den Endpunkt aus.

Was du brauchstBeste QuelleZugangPreise
Teile, Farben, Minifiguren und Set-InventareRebrickable APIKostenloser API-SchlüsselKeine
Set-Daten, Anleitungen, Reviews und eine eigene SammlungBrickset APIKostenloser Schlüssel, Nutzer-Login für SammlungsabfragenUVP von Lego für einige Länder
Marktpreise für neu oder gebrauchtBrickLink APISignierte OAuth-AnfragenPreisguide für Verkäufe und Angebote
Aktuelle Händlerangebote mit Versand in ein ZiellandBrickfact JSON-APIKein SchlüsselArtikelpreis, Versand und Gesamtpreis
Ein KI-Assistent, der Sets sucht und vergleichtBrickfact MCP-ServerKein Schlüssel, MCP-fähiger ClientDieselben Daten wie die JSON-API

Das ist keine Rangliste, sondern eine Zuordnung von Werkzeug und Aufgabe. Viele Projekte kombinieren am Ende zwei Quellen: eine für Teile und Katalog, eine für Preise beim Einkaufen. Lies vor dem Start die Nutzungsbedingungen, denn alle drei Dienste setzen eigene Regeln.

Rebrickable: Teile, Inventare und der komplette Katalog

Die API von Rebrickable deckt offizielle Sets, Teile und Minifiguren ab, dazu Farben, Themen und Set-Inventare. Angemeldete Nutzer können außerdem ihre eigene Rebrickable-Sammlung lesen und ändern. Jeder Aufruf braucht einen API-Schlüssel, den du in deinen Profileinstellungen erzeugst und im Header Authorization: key … oder als Parameter key mitschickst.

Die Dokumentation sagt ausdrücklich, dass es keine Preise für Sets oder Teile gibt. Wer den kompletten Katalog braucht, soll laut Rebrickable die CSV-Downloads nutzen, statt die API Seite für Seite abzufragen. Ein Konto darf im Schnitt etwa eine Anfrage pro Sekunde senden; wer schneller fragt, bekommt HTTP 429.

Rebrickable passt, wenn die Frage lautet: Welche Teile stecken in diesem Set, oder in welchen Sets steckt dieses Teil? Was ein Set irgendwo kostet, erfährst du dort nicht.

Brickset: Set-Daten, Sammlungen und die UVP

Die Brickset API in Version 3 liefert Set-Daten, Themen, Unterthemen, Erscheinungsjahre, Anleitungen, Reviews und zusätzliche Bilder. Mit dem Login eines Nutzers liest und ändert sie auch dessen Brickset-Sammlung. Ein Schlüssel ist Pflicht; du beantragst ihn nach dem Einloggen bei Brickset.

Neue Schlüssel erlauben 100 Aufrufe von getSets pro Tag, genug zum Testen. Für den Produktivbetrieb bittet Brickset darum, ein höheres Limit anzufragen, und die Seite zu den Webservices untersagt den Nachbau der Brickset-Website. In den Set-Daten steht die UVP von Lego für die USA, Großbritannien, Kanada und Deutschland. Das ist eine Preisempfehlung, nicht der Preis, den Händler heute verlangen.

BrickLink: Marktpreise für neu und gebraucht

Die BrickLink API richtet sich vor allem an Verkäufer und gibt auch den BrickLink-Preisguide aus. Anfragen werden im Stil von OAuth 1.0 signiert, mit Consumer Key und Secret, und die Zugangstokens gelten nur für registrierte feste IP-Adressen. Von anderen Adressen aus funktioniert der Zugriff nicht, was die meisten Browser- und Serverless-Lösungen ausschließt.

Der Preisguide unterscheidet Verkäufe der letzten sechs Monate (guide_type=sold) und aktuelle Angebote (stock), Zustand neu oder gebraucht, Region und Währung, und seine Preise enthalten keine Mehrwertsteuer. Für die Frage, was gebrauchte Exemplare eines Sets einbringen, ist das die richtige Quelle. Wo du das Set heute neu und frei Haus am günstigsten bekommst, ist eine andere Frage.

Brickfact: aktuelle Händlerangebote in neun Ländern

Die öffentliche API von Brickfact liefert die Angebote, die Brickfact bei Händlern beobachtet: Artikelpreis, gemeldeten Versand und Gesamtpreis in der Währung des gewählten Ziellands. Sie deckt Set-Suche, technische Daten, Angebote, Vergleiche, den erfassten Händler-Preisverlauf, eine Angebotsbewertung und ähnliche Sets ab. JSON-API und MCP-Server nutzen dieselben Handler, dein Code und ein Assistent sehen also dieselben Daten.

Für diese lesenden Routen brauchst du weder ein Brickfact-Konto noch einen API-Schlüssel. Das heißt nicht, dass die Nutzung unbegrenzt ist oder für immer kostenlos bleibt. Alle Nutzer teilen sich den Dienst, und es gilt ein globales Anfragelimit; unter Last antwortet er mit HTTP 429 und einem Retry-After-Header. Ruf ihn von einem Server, einem Skript oder einem Notebook aus auf: Browseranfragen von fremden Websites lehnt er mit invalid_origin ab.

MarktCodeWährung
DeutschlandDEEUR
ÖsterreichATEUR
SchweizCHCHF
Vereinigtes KönigreichGBGBP
USAUSUSD
FrankreichFREUR
NiederlandeNLEUR
SpanienESEUR
ItalienITEUR

Der Markt ist in jeder Anfrage Pflicht und bestimmt, welche Händler zählen und in welcher Währung du Preise bekommst. Andere Länder werden abgelehnt, nicht auf ein Nachbarland umgebogen. Der optionale Parameter language ändert nur Namen und Beschriftungen. Eine Anfrage für die Schweiz mit "language": "en" liefert weiter Franken, Schweizer Händler und einen Link auf die Schweizer Vergleichsseite.

Die erste Abfrage: Lego Sets bis 50 € inklusive Versand

Diese Abfrage sucht auf dem deutschen Markt nach Orchideen-Sets mit einem bekannten Gesamtpreis inklusive Versand von höchstens 50 €:

curl --fail --silent --show-error \
  'https://mcp.brickfact.com/api/v1/search' \
  --header 'Content-Type: application/json' \
  --data '{"market":"DE","query":"orchidee","price_basis":"delivered","max_price":50,"limit":3}'

Gekürzte Antwort aus einem Test am 30. Oktober 2026. Preise ändern sich, deine Werte weichen also ab:

{
  "market": "DE",
  "currency": "EUR",
  "price_basis": "delivered",
  "sets": [
    {
      "set_id": 10311,
      "name": "Orchidee",
      "theme": "Icons",
      "pieces": 608,
      "comparison_url": "https://brickfact.com/de-de/sets/lego-icons-orchidee-10311",
      "item_price": null,
      "total_price": 32.28,
      "rrp": 49.99
    }
  ],
  "page": 1,
  "total": 3
}

Für Österreich ersetzt du "DE" durch "AT", für die Schweiz durch "CH"; dann gilt das Budget in Franken. Die Suche kennt außerdem theme_ids, Spannen für die Teilezahl, Altersangaben wie "18+", Filter für auslaufende und ausgelaufene Sets, Sortierung nach Preis, Rabatt oder Neuheit und Seiten mit bis zu 20 Treffern. Themen-IDs liefert GET /api/v1/themes?market=DE&query=Star. Unbekannte Felder führen zu HTTP 400, statt ignoriert zu werden; so macht ein Tippfehler deine Suche nicht unbemerkt breiter.

Die gleiche Suche in Python, für die Schweiz mit 50 Franken Budget, braucht nur die Standardbibliothek:

import json
import urllib.request

payload = {
    "market": "CH",
    "query": "orchidee",
    "price_basis": "delivered",
    "max_price": 50,
    "limit": 5,
}
request = urllib.request.Request(
    "https://mcp.brickfact.com/api/v1/search",
    data=json.dumps(payload).encode(),
    headers={"Content-Type": "application/json"},
)
with urllib.request.urlopen(request, timeout=30) as response:
    result = json.load(response)

for item in result["sets"]:
    print(item["set_id"], item["name"], item["total_price"], result["currency"])

Angebote für ein Set, mit Versandkosten

Die Angebote zu einem einzelnen Set holst du über die Offers-Route mit der Set-Nummer:

curl --fail --silent --show-error \
  'https://mcp.brickfact.com/api/v1/sets/10311/offers?market=CH&price_basis=delivered'

Jedes Angebot enthält item_price, shipping, total, currency, feed_updated_at und stock_status. Angebote mit bekanntem Gesamtpreis stehen vorn, dazu kommen lowest_known_total und lowest_item_price. Im Test am 30. Oktober 2026 lag in der Schweiz ein Angebot mit CHF 30.79 Artikelpreis wegen CHF 16 Versand am Ende bei CHF 46.79, also hinter einem Angebot für CHF 38.95 ohne Versandkosten. Kennt Brickfact die Versandkosten eines Shops nicht, sind shipping und total null. Das heißt unbekannt, nie kostenlos.

stock_status steht immer auf not_verified. Ein Preis im Feed beweist nicht, dass das Set lieferbar ist, und der gemeldete Versand gilt für ein einzelnes Set. Grenzen für kostenlosen Versand, Gutscheine und Regeln an der Kasse können den Endbetrag ändern; verbindlich ist erst der Checkout des Händlers.

Die Set-Details (GET /api/v1/sets/10311?market=AT) ergänzen UVP, Altersangabe, Minifiguren, Maße und ein geschätztes Auslaufdatum. Zwei bis vier Sets vergleichst du mit POST /api/v1/compare und einer Liste in set_ids.

Artikelpreis oder Preis inklusive Versand?

Standard ist "price_basis": "item". In diesem Modus rechnen Budget und Sortierung mit dem reinen Set-Preis, item_price ist gefüllt und total_price bleibt null. Ein Set für 45 € mit 6,99 € Versand rutscht so durch ein Budget von 50 €, obwohl es dich mehr als 50 € kostet.

Mit "delivered" nimmt Brickfact den Gesamtpreis inklusive gemeldetem Versand in den gewählten Markt. Angebote mit unbekanntem Versand fliegen vor Preisfilter, Trefferzahl und Seitenaufteilung heraus. total und jede Seite enthalten also nur Sets mit bekanntem Gesamtpreis, und zwischen den Seiten entstehen durch den Filter keine Lücken. Der Preis dafür: Ein Shop, der keine Versandkosten meldet, taucht in dieser Suche gar nicht auf.

Für den Einkauf ist der Preis inklusive Versand meist die ehrliche Wahl. Ein niedriger Artikelpreis aus einem Shop im Ausland ist oft kein Schnäppchen mehr, sobald der Versand nach Deutschland, Österreich oder in die Schweiz dazukommt. Sammler vergleichen deshalb meist Preise inklusive Versand. Den Artikelpreis-Modus brauchst du für Katalogansichten, bei denen Versand keine Rolle spielt.

Zwei Arten von Preisverlauf

Brickfact führt zwei Verlaufsdatensätze, und wer sie verwechselt, bekommt falsche Antworten.

Der Händler-Preisverlauf (POST /api/v1/retail-history, MCP-Tool get_retail_price_history) speichert pro Tag den niedrigsten bekannten Preis inklusive Versand bei den beobachteten Händlern eines Markts, in dessen Währung. Amazon ist ausgenommen, ebenso Tage mit unbekanntem oder geschätztem Versand. Vergangene Tage werden mit den heutigen Versandregeln für das Zielland gerechnet. Die Antwort nennt observation_days und first_observed_day. Diese Reihe beginnt erst am 12. Oktober 2026; ein langes angefragtes Zeitfenster heißt also nicht, dass auch entsprechend viele Daten vorliegen. Prüf die Abdeckung, bevor du Schlüsse ziehst.

Der Marktwert-Verlauf (GET /api/v1/sets/75192/history?market=CH&range=1Y, MCP-Tool get_price_history) ist eine eigene Reihe von Bewertungen versiegelter Sets in Euro. Sie zeigt, was ein versiegeltes Set über die Zeit wert ist, also die Art von Marktwert, die unsere Studie zur Lego-Marktentwicklung auswertet. Auch mit dem Markt Schweiz bleibt sie in Euro, und sie ist kein Verlauf von Händlerpreisen.

Die Angebotsbewertung (POST /api/v1/assess-deal, MCP-Tool assess_deal) vergleicht das günstigste aktuelle Angebot inklusive Versand, aus einem höchstens 48 Stunden alten Feed, mit dem erfassten Tiefstpreis der Händler. Sie antwortet mit at_or_below_recorded_low oder above_recorded_low und der Abweichung in Prozent. Fehlen mindestens zwei erfasste Tage oder ist der Verlauf älter als 48 Stunden, lautet die Antwort insufficient_history, ohne verwertbares Angebot no_delivered_offer. Das aktuelle Angebot kann von Amazon stammen, obwohl der Verlauf Amazon ausschließt. Ein Ergebnis auf dem erfassten Tiefststand ist kein Allzeittief und sagt nichts über den Preis im nächsten Monat.

ChatGPT und andere Assistenten per MCP anbinden

Das Model Context Protocol ist ein offener Standard, mit dem KI-Anwendungen externe Systeme anbinden. Statt selbst Abfragen zu schreiben, lässt du den Assistenten die Brickfact-Tools finden und aufrufen, sobald deine Frage aktuelle Daten braucht.

EinstellungWert
Server-URLhttps://mcp.brickfact.com/mcp
TransportStreamable HTTP (zustandslose POST-Anfragen)
AuthentifizierungKeine
Tools11, alle nur lesend

Für ChatGPT beschreibt die Anleitung von OpenAI den aktuellen Weg: ChatGPT Plugins öffnen, über das Plus-Symbol Add custom MCP server wählen, Name und Beschreibung vergeben, die URL samt /mcp eintragen, keine Authentifizierung auswählen, den Risikohinweis bestätigen und Create as a plugin wählen. Es gelten die Richtlinien deines Kontos und Workspaces; in Firmen-Workspaces entscheiden die Admins, ob eigene MCP-Server erlaubt sind. Ein Eintrag im öffentlichen Plugin-Verzeichnis von ChatGPT setzt eine eigene Prüfung durch OpenAI voraus; such dort also nach Brickfact, statt fest damit zu rechnen, dass es dort steht.

Andere Clients, die entfernte Server über Streamable HTTP unterstützen, verbinden sich mit derselben URL. Rein lokale Clients, die nur stdio sprechen, brauchen eine Brücke.

Die elf Tools:

ToolWofür
search_setsSuche nach Name, Nummer, Thema, Budget, Teilezahl, Alter oder Auslaufstatus
get_set_detailsTechnische Daten, geschätztes Auslaufdatum und Angebote
get_set_offersAngebote für ein Set mit Versand
compare_setsZwei bis vier Sets nebeneinander
list_themesThemennamen und IDs
get_retail_price_historyErfasste Händlerpreise inklusive Versand
assess_dealAktuelles Angebot gegen den erfassten Tiefstpreis
get_price_historyMarktwert versiegelter Sets in Euro
find_alternativesÄhnliche, günstigere oder kleinere Sets
render_setsShopping-Karten oder Vergleichsansicht
get_app_handoffSchritte, um einen Preisalarm oder Merklisteneintrag in der Brickfact App abzuschließen

Prompts, die beim Einkaufen helfen

Der Server weist den Assistenten an, das Einkaufsland aus dem Gespräch zu übernehmen und nachzufragen, wenn es fehlt. Nenn es also gleich mit. Diese Prompts decken die wichtigsten Tools ab:

  • „Finde Lego Star Wars Sets unter 100 € inklusive Versand nach Deutschland und zeig sie als Karten.“
  • „Hilf mir, ein Lego Geschenk bis 60 Franken mit Lieferung in die Schweiz für einen Zehnjährigen zu finden, der Autos mag.“
  • „Vergleiche Lego 10311 und 10313 für eine Lieferung nach Österreich, inklusive Teilezahl und Gesamtpreis.“
  • „Ist der heutige Preis für Lego 75192 in Deutschland gut im Vergleich zu den erfassten Händlerpreisen? Sag mir, wie viele Tage Daten du hast.“
  • „Finde günstigere Alternativen zu Lego 75192 mit Lieferung in die Schweiz.“

Hosts mit Unterstützung für MCP Apps zeigen Set-Karten mit Bildern, eine Vergleichsansicht und Diagramme zum Händler-Preisverlauf. Andere antworten mit denselben Daten als Text. Wo der Host Apps einen Zustand speichern lässt, merkt sich die Karte eine Auswahlliste von bis zu sechs Set-Nummern. Diese Liste gehört zur Karte im Chat, nicht zu einem Brickfact-Konto, und ist in einem neuen Chat womöglich nicht mehr da.

Was der Assistent nicht kann

Der MCP-Server liest nur öffentliche Katalogdaten. Er kann nichts kaufen, fragt keine Zahlungsdaten ab, sieht deine Brickfact-Sammlung nicht und ändert nichts an deinem Konto. Bittest du ihn, dich zu benachrichtigen, wenn Lego 10311 unter 30 € fällt, bekommst du eine Übergabe an die App mit "created": false: einen Link zur Brickfact App und die Schritte, den Alarm dort anzulegen. Angelegt ist erst etwas, wenn du es in der App bestätigst. Wie Preisalarme funktionieren, erklärt unser Ratgeber zum Lego Preisalarm.

Preise in einer Antwort sind nur so aktuell wie der Feed dahinter. Ein gutes Angebot kann Minuten nach dem Preissturz ausverkauft sein; öffne deshalb vor dem Kauf den mitgelieferten Vergleichslink und prüf den Shop.

So bleibt deine Integration verlässlich

Ein paar Gewohnheiten halten eine Integration korrekt, wenn sich die Daten ändern:

  • Fang mit einem Set und einem Markt an und prüf in jeder Antwort Währung und price_basis, bevor du weitere Länder ergänzt.
  • Zeig null beim Versand als unbekannt an. Ersetz es nicht durch null Euro.
  • Gib neben Preisen feed_updated_at oder den Zeitpunkt deiner Abfrage aus.
  • Behandle leere Treffer und kurze Verläufe als normale Antworten, nicht als Fehler.
  • Cache Antworten für ein paar Minuten, halte dich an Retry-After und durchkämm nicht den ganzen Katalog über Suchseiten.
  • Verlinke die gelieferte comparison_url, statt Set-URLs selbst zusammenzubauen.

Die Eingabeschemas aller Routen stehen am öffentlichen Schema-Endpunkt. Wer Preise lieber von Hand vergleicht, findet dieselben Angebote mit Filtern in der Lego Datenbank, und so vergleichen wir Preise erklärt, welche Händler wir beobachten.

Eine API, um Lego Hubs und Motoren zu programmieren, ist ein Robotik-Thema, kein Datenthema. Unser Ratgeber Lego Roboter programmieren behandelt SPIKE, Mindstorms und Python mit Pybricks. Brickfact ist unabhängig von der Lego Gruppe.

Wenn du über einen Händlerlink einkaufst, kann Brickfact eine Provision erhalten. Die Provision bestimmt nicht die Reihenfolge der Angebote. Redaktion und Tests

Disclaimer

Wenn du über einen Händlerlink einkaufst, kann Brickfact eine Provision erhalten. Die Provision bestimmt nicht die Reihenfolge der Angebote.

LEGO® ist eine Marke der LEGO Gruppe, durch die die vorliegende Webseite jedoch weder gesponsert noch autorisiert oder unterstützt wird. Als Amazon-Partner verdienen wir an qualifizierten Verkäufen, die ihr über Links zu Amazon auf unserer Website abschließt. Der Preis für euch bleibt gleich, aber ihr unterstützt damit dieses Projekt ❤️ .
© 2026 Brickfact. All Rights Reserved