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 brauchst | Beste Quelle | Zugang | Preise |
|---|---|---|---|
| Teile, Farben, Minifiguren und Set-Inventare | Rebrickable API | Kostenloser API-Schlüssel | Keine |
| Set-Daten, Anleitungen, Reviews und eine eigene Sammlung | Brickset API | Kostenloser Schlüssel, Nutzer-Login für Sammlungsabfragen | UVP von Lego für einige Länder |
| Marktpreise für neu oder gebraucht | BrickLink API | Signierte OAuth-Anfragen | Preisguide für Verkäufe und Angebote |
| Aktuelle Händlerangebote mit Versand in ein Zielland | Brickfact JSON-API | Kein Schlüssel | Artikelpreis, Versand und Gesamtpreis |
| Ein KI-Assistent, der Sets sucht und vergleicht | Brickfact MCP-Server | Kein Schlüssel, MCP-fähiger Client | Dieselben 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.
| Markt | Code | Währung |
|---|---|---|
| Deutschland | DE | EUR |
| Österreich | AT | EUR |
| Schweiz | CH | CHF |
| Vereinigtes Königreich | GB | GBP |
| USA | US | USD |
| Frankreich | FR | EUR |
| Niederlande | NL | EUR |
| Spanien | ES | EUR |
| Italien | IT | EUR |
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.
| Einstellung | Wert |
|---|---|
| Server-URL | https://mcp.brickfact.com/mcp |
| Transport | Streamable HTTP (zustandslose POST-Anfragen) |
| Authentifizierung | Keine |
| Tools | 11, 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:
| Tool | Wofür |
|---|---|
search_sets | Suche nach Name, Nummer, Thema, Budget, Teilezahl, Alter oder Auslaufstatus |
get_set_details | Technische Daten, geschätztes Auslaufdatum und Angebote |
get_set_offers | Angebote für ein Set mit Versand |
compare_sets | Zwei bis vier Sets nebeneinander |
list_themes | Themennamen und IDs |
get_retail_price_history | Erfasste Händlerpreise inklusive Versand |
assess_deal | Aktuelles Angebot gegen den erfassten Tiefstpreis |
get_price_history | Marktwert versiegelter Sets in Euro |
find_alternatives | Ähnliche, günstigere oder kleinere Sets |
render_sets | Shopping-Karten oder Vergleichsansicht |
get_app_handoff | Schritte, 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
nullbeim Versand als unbekannt an. Ersetz es nicht durch null Euro. - Gib neben Preisen
feed_updated_atoder 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-Afterund 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.


