Open Data · API v1
Offene Daten: unsere Daten als API
Kostenlos, ohne Schlüssel und ohne Anmeldung, nur lesend. Jeder Wert trägt die Quell-URL und das Datum, an dem wir ihn an der Quelle bestätigt haben.
Die Krabbe teilt. Mit Quellenangabe.
Das Wichtigste in Kürze
- Kostenlos und offen lesbar. Kein Schlüssel, keine Anmeldung, kein Cookie. Jede Website darf die Daten per GET abrufen (CORS
*). - Jeder Wert mit Beleg. Zu jeder Angabe gehören
sources(Adresse, Art der Seite, Abrufdatum) undcheckedOn(Datum der Bestätigung). - Unbekannt bleibt leer. Was wir nicht bestätigen konnten, fehlt – nie 0, nie null – und steht mit Grund unter
open(Firma) bzw.gaps(Challenge-Zeile). - Regelversionen bleiben erhalten. Frühere und angekündigte Regeln stehen mit Startdatum, Geltungsbereich und Bestandsschutz neben den aktuellen.
- Keine Note, keine Rangliste. Die API liefert Fakten, keine Bewertung. Der Partnerstatus steht nur zur Transparenz da.
- Keine Klick- oder Partnerdaten. Keine Affiliate-Links, keine Klickzahlen, keine Vertragsdaten.
Endpunkte
Basis: https://propcrab.io. Jede Antwort ist application/json; charset=utf-8.
| Pfad (GET) | Inhalt |
|---|---|
| /api/v1 | Übersicht der Endpunkte mit Beschreibung. |
| /api/v1/firms | Alle Firmen: Status, Märkte, Anzahl Programme, Datenstand, Partnerstatus. |
| /api/v1/firms/{slug} | Eine Firma vollständig, wie veröffentlicht: Programme, aktuelle und frühere Regelversionen, Kontogrössen mit Preisen, Wohnsitz, Gesellschaften, Ereignisse, Warnungen, offene Punkte. |
| /api/v1/challenges | Eine Zeile je Programm und Kontogrösse mit den Regeln für einen Kauf heute. |
| /api/v1/changes | Der Änderungsverlauf aller Firmen, neueste zuerst. |
| /api/v1/openapi.json | Diese API als OpenAPI-3.1-Beschreibung. |
Aufbau jeder Antwort
Jede Antwort hat zwei Teile: meta beschreibt die Datei, data enthält die Daten. Die Firmen kommen alphabetisch, die Challenge-Zeilen nach Firma, Programm und Kontogrösse, die Änderungen mit der neuesten zuerst.
- generatedOn
- Tag, an dem die Datei erzeugt wurde: beim Build, danach höchstens einmal täglich.
- count
- Anzahl Einträge in
data. - dataAsOf
- Ältestes Bestätigungsdatum in dieser Antwort. Jeder Wert wurde an oder nach diesem Tag bestätigt.
- latestCheck
- Neuestes Bestätigungsdatum in dieser Antwort.
- fxReferenceDate
- Nur bei den Challenges: Datum der Referenzkurse hinter jeder
usd-Zahl. - licence
- Die Lizenz der Daten. Heute
null: Es ist noch keine festgelegt. - citation, notice
- Wie du uns nennst, und der Hinweis «keine Anlageberatung».
So sieht ein Wert aus
Ein echter Wert aus den Daten von heute (FTMO · FTMO Challenge 2-Step · 10k · listPrice):
{
"value": {
"amount": 89,
"currency": "EUR"
},
"sources": [
{
"url": "https://ftmo.com/en/",
"kind": "firm-page",
"seenOn": "2026-10-29",
"title": "FTMO home (pricing widget)"
}
],
"checkedOn": "2026-10-29",
"certainty": "official"
}Was die Felder bedeuten
| Feld | Bedeutung |
|---|---|
| value | Der Wert, in der Form, die die OpenAPI-Beschreibung für das Feld nennt. |
| sources[].url | Die Seite, auf der wir den Wert gelesen haben. Bei Regeln und Preisen immer eine Seite der Firma selbst. |
| sources[].kind | Art der Seite: firm-page, terms, help-center, faq, pdf, regulator, registry oder press. |
| sources[].seenOn | Tag, an dem wir die Seite abgerufen und gelesen haben. |
| checkedOn | Tag, an dem wir den Wert zuletzt an seiner Quelle bestätigt haben. |
| certainty | official: Seite, AGB, Hilfe-Center oder PDF der Firma. official-extract: Text der Firma, aber nur als Auszug. third-party: Presse oder Behörde, nie für Regelwerte. open: mit Vorbehalt, nie für Filter oder Sortierung. |
| note | Einschränkung oder Rechenbasis, auf Deutsch und Englisch. |
| derived | Nur in Challenge-Zeilen: aus mehreren Angaben berechnet (Puffer, Einstiegskosten, Kosten je 1.000 Puffer, Ziel ÷ Puffer). Die Quellen sind die der verwendeten Angaben. |
| ruleVersions[].status | current: Regeln für einen Kauf heute. upcoming: angekündigt, Start nach heute. previous: gilt nicht mehr für Neukäufe, kann aber für schon gekaufte Konten weiter gelten. |
| validFrom, observedFrom, validUntil | Start laut Firma, Tag unserer ersten Beobachtung, letzter Tag für Neukäufe. |
| appliesTo, grandfathering | Für wen eine Regelversion gilt (nur Neukäufe, alle Konten, …) und was mit vorher gekauften Konten passiert. |
| affiliate | Ob wir mit der Firma einen Partnervertrag haben. Er ändert weder Reihenfolge noch Inhalt. |
| verified | false, oder das Datum, an dem ein Mensch den ganzen Datensatz gegen die Quellen geprüft hat. |
Unbekannt ist nicht 0
Fehlt ein Wert, fehlt das Feld. Wir schreiben nie 0, null oder einen leeren Text an seine Stelle. Im Firmendatensatz steht der Grund unter open, in einer Challenge-Zeile unter gaps – dort auch, wenn eine Regel für ein Programm gar nicht gilt (not-applicable, etwa kein Gewinnziel bei einem Instant-Konto).
Ein echter Eintrag aus gaps:
{
"field": "activationFee",
"state": "unknown",
"reason": {
"de": "Nicht erfasst: Für diesen Wert liegt uns keine belegte Angabe der Firma vor.",
"en": "Not recorded: we hold no sourced statement from the firm for this value."
}
}Beispiele
Mit curl und jq auf der Kommandozeile, oder mit fetch im Browser:
curl -s https://propcrab.io/api/v1/firms \
| jq '.data[] | {slug, state: .status.value.state, dataAsOf}'curl -s https://propcrab.io/api/v1/firms/ftmo \
| jq '.data.programs[] | {id, name, current: .currentRuleVersionId}'curl -s https://propcrab.io/api/v1/challenges \
| jq '.data[] | select(.listPrice)
| {id, price: .listPrice.value, source: .listPrice.sources[0].url, checkedOn: .listPrice.checkedOn}'curl -s https://propcrab.io/api/v1/changes \
| jq '.data[] | select(.upcoming) | {firm: .firm.name, date, kind}'const response = await fetch("https://propcrab.io/api/v1/firms");
const { meta, data } = await response.json();
console.log(meta.generatedOn, meta.licence, data.length);Aktualisierung und Caching
- Statische Dateien. Sie entstehen beim Build und danach höchstens einmal täglich neu.
meta.generatedOnnennt den Tag. - Cache-Control: public, max-age=3600, s-maxage=86400. Frag eine Adresse bitte höchstens einmal pro Stunde ab; die Daten ändern sich höchstens einmal am Tag.
- /api/v1/challenges ist die grösste Datei (heute rund 20.1 MB unkomprimiert). Brauchst du nur eine Firma, nimm /api/v1/firms/{slug}.
- Nur lesen. GET, HEAD und OPTIONS; alles andere beantwortet der Server mit 405.
- Versionen. In v1 kommen höchstens Felder dazu. Umbenennen oder Entfernen gäbe es nur unter einem neuen Pfad (/api/v2).
Bitte so zitieren
Nenne «PropCrab (propcrab.io)» mit dem Datenstand und deinem Abrufdatum. Bei einzelnen Werten zusätzlich die Quelle der Firma aus sources – sie ist die eigentliche Primärquelle.
Quelle: PropCrab (propcrab.io), Datenstand 29. Oktober 2026, abgerufen am <dein Abrufdatum>; Primärquelle: https://ftmo.com/en/Lizenz
Für diese Daten ist noch keine Lizenz festgelegt; die API meldet deshalb licence: null. Sobald der Betreiber eine wählt, steht sie hier und in jeder Antwort. Bis dahin: Frag uns, bevor du die Daten gesammelt weiterveröffentlichst.
Keine Anlageberatung
Die Daten beschreiben kostenpflichtige Bewertungsprogramme, meist auf Simulationskonten. Sie sind keine Empfehlung und keine Anlageberatung. Massgeblich sind immer die Bedingungen der Firma zum Zeitpunkt des Kaufs; simulierte Gewinne und Auszahlungen sind keine realen Handelsergebnisse.