Börsenlotse
Kauftag heute: Gut (67 ) Breite Marktteilnahme · Breite steigend (+13 zum 10-Tage-Schnitt) · kein Makro-Großtermin

Beta · kostenlos

Daten-API für Entwickler

Unsere eigenen Signale und Einschätzungen als JSON: typisierte Antworten, feste Schemas, dazu ein MCP-Server für KI-Agenten.

Was hier herauskommt

Wir beobachten Aktien mit eigenen Wächtern und einer eigenen Redaktion. Diese Schnittstelle gibt heraus, was dabei entsteht: unsere Feststellungen — nicht die Rohdaten, auf denen sie beruhen.

Fünf Bereiche

  • Frühwarn-Signale — vier Wächter melden anstehende Katalysatoren, gemeldete Insiderkäufe, auffällige Handelsaktivität und eigene Ausstiegswarnungen. Jedes Signal trägt unsere Einschätzung und, sobald das Beobachtungsfenster geschlossen ist, das gemessene Ergebnis in Prozent.
  • Conference-Call-Urteile — wir lesen die öffentlichen Wortprotokolle der letzten zwei bis drei Jahre und halten fest, was das Management versprochen und was es geliefert hat. Der Frageteil zählt mehr als das Eingangsstatement.
  • Superinvestoren — die 13F-Meldungen an die SEC, von uns selbst geladen, dazu unsere Fünfjahres-Rechnung des gemeldeten Depots gegen den S&P 500.
  • Politiker-Trades — die Wertpapiergeschäfte des US-Kongresses aus den STOCK-Act-Offenlegungen, mit Betragsspanne, Handels- und Meldedatum.
  • Hype-Radar — welche Kürzel in den Anlegerforen gerade auffallen. Aufmerksamkeit ist ausdrücklich kein Urteil.

KI-nativ

Jede Antwort ist typisiert und trägt dieselbe Hülle. Feldnamen und Aufzählungswerte sind englisch und auf beiden Marken identisch, die Sortierung ist deterministisch — ein Agent lernt das Schema einmal und nicht zweimal. Dieselben Daten stehen zusätzlich als MCP-Server bereit: tools/list beschreibt jedes Werkzeug samt erlaubter Werte, Sortierung und Grenzen der Auskunft, sodass ein Modell ohne weitere Erklärung damit arbeiten kann.

In drei Schritten

  1. 1 Schlüssel anfordern — das Formular am Ende der Seite gibt ihn sofort zurück.
  2. 2 Schlüssel als Kopfzeile mitschicken: X-Api-Key: DEIN_SCHLÜSSEL oder Authorization: Bearer DEIN_SCHLÜSSEL.
  3. 3 GET /api/v1/status aufrufen. Kommt eine 200 zurück, steht alles.

Die Hülle jeder Antwort

Erfolgreiche Antworten tragen data und meta. In meta steht immer, wie alt die Auskunft ist (as_of), woher sie stammt (source), welche Marke geantwortet hat (brand) und wo diese Doku liegt (docs). Geblätterte Listen ergänzen page, per_page und total.

{
    "data": [],
    "meta": {
        "as_of": "2026-07-30T06:12:44+00:00",
        "source": "own-analysis",
        "brand": "boersenlotse",
        "docs": "https://boersenlotse.de/entwickler"
    }
}

Endpunkte

Alle Datenendpunkte sind GET und liegen unter /api/v1. Die Pfade sind auf beiden Marken gleich; übersetzt werden nur die Textinhalte in den Antworten.

Ohne eigene Angabe liefert eine Liste 25 Einträge je Seite; ein größeres limit wird auf 100 gekappt statt abgelehnt. meta.total sagt, wie viel dahinter steht.

GET /api/v1/status

Selbstauskunft des Zugangs: Plan, bisherige Anfragen, Kontingent. Erste Anlaufstelle beim Einrichten — antwortet der Endpunkt mit 200, sind Schlüssel und Kopfzeile richtig gesetzt.

Parameter

keine

Beispiel-Anfrage

curl -H "X-Api-Key: $API_KEY" \
  "https://boersenlotse.de/api/v1/status"

Beispiel-Antwort

{
    "data": {
        "plan": "beta",
        "email_masked": "d****@example.com",
        "requests_total": 128,
        "rate_limit_per_minute": 60,
        "created_at": "2026-07-29T08:14:02+00:00"
    },
    "meta": {
        "as_of": "2026-07-30T06:12:44+00:00",
        "source": "own-analysis",
        "brand": "boersenlotse",
        "docs": "https://boersenlotse.de/entwickler"
    }
}

Gekürzt. Die Feldnamen sind echt, die Werte erfunden.

GET /api/v1/signals

Die neuesten Frühwarn-Signale aller vier Wächter, jüngste zuerst. pattern grenzt auf einen Wächter ein, since auf Signale ab einem Tag.

Parameter

  • pattern catalyst | insider | volume | exit
  • since YYYY-MM-DD
  • limit integer, 1–100
  • page integer, ≥ 1

Beispiel-Anfrage

curl -H "X-Api-Key: $API_KEY" \
  "https://boersenlotse.de/api/v1/signals?pattern=catalyst&limit=1"

Beispiel-Antwort

{
    "data": [
        {
            "ticker": "EXMPL",
            "company_name": "Example Industries Inc.",
            "pattern": "catalyst",
            "signal_date": "2026-07-28",
            "title": "Quartalszahlen am 12.08. — erster Bericht nach der Übernahme",
            "recommendation": "Vor dem Termin beobachten, nicht kaufen",
            "assessment": "Der Katalysator ist datiert und die Erwartung niedrig; die Verschuldung bleibt der Haken.",
            "outcome": {
                "max_gain_pct": 18.4,
                "max_drawdown_pct": -6.1,
                "finalized_at": null
            }
        }
    ],
    "meta": {
        "as_of": "2026-07-30T06:12:44+00:00",
        "source": "own-analysis",
        "brand": "boersenlotse",
        "docs": "https://boersenlotse.de/entwickler",
        "page": 1,
        "per_page": 1,
        "total": 47
    }
}

Gekürzt. Die Feldnamen sind echt, die Werte erfunden.

GET /api/v1/signals/{ticker}

Alle Signale, die wir zu einem Kürzel geführt haben, jüngste zuerst. Kennen wir das Kürzel nicht, kommt eine 404 — eine Aussage über unsere Abdeckung, nicht über das Unternehmen.

Parameter

  • limit integer, 1–100
  • page integer, ≥ 1

Beispiel-Anfrage

curl -H "X-Api-Key: $API_KEY" \
  "https://boersenlotse.de/api/v1/signals/EXMPL"

Beispiel-Antwort

{
    "data": [
        {
            "ticker": "EXMPL",
            "company_name": "Example Industries Inc.",
            "pattern": "catalyst",
            "signal_date": "2026-07-28",
            "title": "Quartalszahlen am 12.08. — erster Bericht nach der Übernahme",
            "recommendation": "Vor dem Termin beobachten, nicht kaufen",
            "assessment": "Der Katalysator ist datiert und die Erwartung niedrig; die Verschuldung bleibt der Haken.",
            "outcome": {
                "max_gain_pct": 18.4,
                "max_drawdown_pct": -6.1,
                "finalized_at": null
            }
        }
    ],
    "meta": {
        "as_of": "2026-07-30T06:12:44+00:00",
        "source": "own-analysis",
        "brand": "boersenlotse",
        "docs": "https://boersenlotse.de/entwickler",
        "page": 1,
        "per_page": 25,
        "total": 3
    }
}

Gekürzt. Die Feldnamen sind echt, die Werte erfunden.

GET /api/v1/call-ratings

Unsere Urteile zu den Telefonkonferenzen, nach Kürzel sortiert. rating grenzt auf eine Stufe ein.

Parameter

  • rating positive | neutral | flagged
  • limit integer, 1–100
  • page integer, ≥ 1

Beispiel-Anfrage

curl -H "X-Api-Key: $API_KEY" \
  "https://boersenlotse.de/api/v1/call-ratings?rating=flagged&limit=1"

Beispiel-Antwort

{
    "data": [
        {
            "ticker": "EXMPL",
            "company_name": "Example Industries Inc.",
            "rating": "flagged",
            "label": "Versprechen und Lieferung gehen auseinander",
            "as_of": "2026-07-22"
        }
    ],
    "meta": {
        "as_of": "2026-07-30T06:12:44+00:00",
        "source": "own-analysis",
        "brand": "boersenlotse",
        "docs": "https://boersenlotse.de/entwickler",
        "page": 1,
        "per_page": 1,
        "total": 61
    }
}

Gekürzt. Die Feldnamen sind echt, die Werte erfunden.

GET /api/v1/call-ratings/{ticker}

Das Urteil zu einem Kürzel. Eine Firma, deren Calls wir noch nicht ausgewertet haben, trägt kein Urteil und ergibt eine 404 — nicht etwa ein neutrales.

Parameter

keine

Beispiel-Anfrage

curl -H "X-Api-Key: $API_KEY" \
  "https://boersenlotse.de/api/v1/call-ratings/EXMPL"

Beispiel-Antwort

{
    "data": {
        "ticker": "EXMPL",
        "company_name": "Example Industries Inc.",
        "rating": "flagged",
        "label": "Versprechen und Lieferung gehen auseinander",
        "as_of": "2026-07-22"
    },
    "meta": {
        "as_of": "2026-07-30T06:12:44+00:00",
        "source": "own-analysis",
        "brand": "boersenlotse",
        "docs": "https://boersenlotse.de/entwickler"
    }
}

Gekürzt. Die Feldnamen sind echt, die Werte erfunden.

GET /api/v1/superinvestors

Die Investoren, denen wir über ihre Quartalsmeldungen folgen, mit unserer Fünfjahres-Rechnung gegen den S&P 500. Größter Vorsprung zuerst.

Parameter

  • limit integer, 1–100
  • page integer, ≥ 1

Beispiel-Anfrage

curl -H "X-Api-Key: $API_KEY" \
  "https://boersenlotse.de/api/v1/superinvestors?limit=1"

Beispiel-Antwort

{
    "data": [
        {
            "slug": "example-investor",
            "name": "Example Investor",
            "fund_name": "Example Capital Management",
            "latest_period": "2026-03-31",
            "portfolio_value": 18420000000,
            "positions_count": 42,
            "perf_5y": {
                "portfolio": 91.4,
                "spx": 74.8,
                "diff": 16.6
            }
        }
    ],
    "meta": {
        "as_of": "2026-07-30T06:12:44+00:00",
        "source": "own-analysis",
        "brand": "boersenlotse",
        "docs": "https://boersenlotse.de/entwickler",
        "page": 1,
        "per_page": 1,
        "total": 15
    }
}

Gekürzt. Die Feldnamen sind echt, die Werte erfunden.

GET /api/v1/superinvestors/{slug}

Die gemeldeten Positionen eines Investors für ein Quartal, größte zuerst, jeweils mit der Veränderung gegenüber dem Vorquartal. period wählt ein früheres Quartal; ein 13F ist immer eine Momentaufnahme, nie ein Live-Depot.

Parameter

  • period YYYY-MM-DD
  • limit integer, 1–100
  • page integer, ≥ 1

Beispiel-Anfrage

curl -H "X-Api-Key: $API_KEY" \
  "https://boersenlotse.de/api/v1/superinvestors/example-investor?period=2026-03-31&limit=1"

Beispiel-Antwort

{
    "data": {
        "slug": "example-investor",
        "name": "Example Investor",
        "fund_name": "Example Capital Management",
        "latest_period": "2026-03-31",
        "portfolio_value": 18420000000,
        "positions_count": 42,
        "perf_5y": {
            "portfolio": 91.4,
            "spx": 74.8,
            "diff": 16.6
        },
        "period": "2026-03-31",
        "holdings": [
            {
                "ticker": "EXMPL",
                "company_name": "Example Industries Inc.",
                "put_call": null,
                "value_usd": 2140000000,
                "shares": 9800000,
                "pct_portfolio": 11.62,
                "share_change": 1200000,
                "is_new": false,
                "rank": 1
            }
        ]
    },
    "meta": {
        "as_of": "2026-07-30T06:12:44+00:00",
        "source": "own-analysis",
        "brand": "boersenlotse",
        "docs": "https://boersenlotse.de/entwickler",
        "page": 1,
        "per_page": 1,
        "total": 42
    }
}

Gekürzt. Die Feldnamen sind echt, die Werte erfunden.

GET /api/v1/politicians

Die kuratierten Abgeordneten und Senatoren mit unserer Kaufbilanz gegen den Index. Bewusst kuratiert statt vollständig.

Parameter

  • limit integer, 1–100
  • page integer, ≥ 1

Beispiel-Anfrage

curl -H "X-Api-Key: $API_KEY" \
  "https://boersenlotse.de/api/v1/politicians?limit=1"

Beispiel-Antwort

{
    "data": [
        {
            "slug": "example-politician",
            "name": "Example Representative",
            "chamber": "house",
            "party": "independent",
            "state": "XX",
            "buy_performance": {
                "perf_pct": 23.9,
                "spx_pct": 14.2,
                "diff_pct": 9.7,
                "hit_rate": 61.5,
                "rated": 26,
                "total": 31,
                "as_of": "2026-07-30"
            }
        }
    ],
    "meta": {
        "as_of": "2026-07-30T06:12:44+00:00",
        "source": "own-analysis",
        "brand": "boersenlotse",
        "docs": "https://boersenlotse.de/entwickler",
        "page": 1,
        "per_page": 1,
        "total": 11
    }
}

Gekürzt. Die Feldnamen sind echt, die Werte erfunden.

GET /api/v1/politicians/{slug}

Die offengelegten Geschäfte einer Person, jüngste zuerst — mit Richtung, amtlicher Betragsspanne, Handels- und Meldedatum.

Parameter

  • limit integer, 1–100
  • page integer, ≥ 1

Beispiel-Anfrage

curl -H "X-Api-Key: $API_KEY" \
  "https://boersenlotse.de/api/v1/politicians/example-politician?limit=1"

Beispiel-Antwort

{
    "data": {
        "slug": "example-politician",
        "name": "Example Representative",
        "chamber": "house",
        "party": "independent",
        "state": "XX",
        "buy_performance": {
            "perf_pct": 23.9,
            "spx_pct": 14.2,
            "diff_pct": 9.7,
            "hit_rate": 61.5,
            "rated": 26,
            "total": 31,
            "as_of": "2026-07-30"
        },
        "trades": [
            {
                "ticker": "EXMPL",
                "asset_name": "Example Industries Inc.",
                "side": "buy",
                "amount_label": "$15,001 - $50,000",
                "traded_at": "2026-06-18",
                "disclosed_at": "2026-07-11",
                "performance": {
                    "change_pct": 12.4,
                    "spx_change_pct": 3.1
                }
            }
        ]
    },
    "meta": {
        "as_of": "2026-07-30T06:12:44+00:00",
        "source": "own-analysis",
        "brand": "boersenlotse",
        "docs": "https://boersenlotse.de/entwickler",
        "page": 1,
        "per_page": 1,
        "total": 31
    }
}

Gekürzt. Die Feldnamen sind echt, die Werte erfunden.

GET /api/v1/hype

Zwei Ranglisten in einer Antwort: der eigene Reddit-Scanner und, wo diese Instanz sie führt, die wallstreet-online-Listen. Dieser Endpunkt blättert nicht — limit kappt beide Listen.

Parameter

  • limit integer, 1–100

Beispiel-Anfrage

curl -H "X-Api-Key: $API_KEY" \
  "https://boersenlotse.de/api/v1/hype?limit=1"

Beispiel-Antwort

{
    "data": {
        "reddit": [
            {
                "ticker": "EXMPL",
                "name": "Example Industries Inc.",
                "mentions": 214,
                "first_seen_at": "2026-07-29T21:04:11+00:00"
            }
        ],
        "wo": [
            {
                "name": "Example Industries",
                "ticker": "EXMPL",
                "source": "discussed",
                "score": 7,
                "first_seen_at": "2026-07-30T05:02:39+00:00"
            }
        ]
    },
    "meta": {
        "as_of": "2026-07-30T06:12:44+00:00",
        "source": "own-analysis",
        "brand": "boersenlotse",
        "docs": "https://boersenlotse.de/entwickler",
        "limit": 1,
        "reddit_total": 38,
        "wo_total": 20,
        "wo_available": true
    }
}

Gekürzt. Die Feldnamen sind echt, die Werte erfunden.

POST /api/v1/mcp

Der MCP-Server: JSON-RPC 2.0 über HTTP, der einzige POST der Schnittstelle. Er holt seine Daten durch dieselben Controller wie die GET-Endpunkte und liefert deshalb per Bauart exakt dasselbe.

Parameter

keine

Beispiel-Anfrage

curl -X POST "https://boersenlotse.de/api/v1/mcp" \
  -H "X-Api-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_signals","arguments":{"pattern":"catalyst","limit":1}}}'

Beispiel-Antwort

{
    "jsonrpc": "2.0",
    "id": 1,
    "result": {
        "isError": false,
        "structuredContent": {
            "data": [
                {
                    "ticker": "EXMPL",
                    "company_name": "Example Industries Inc.",
                    "pattern": "catalyst",
                    "signal_date": "2026-07-28",
                    "title": "Quartalszahlen am 12.08. — erster Bericht nach der Übernahme",
                    "recommendation": "Vor dem Termin beobachten, nicht kaufen",
                    "assessment": "Der Katalysator ist datiert und die Erwartung niedrig; die Verschuldung bleibt der Haken.",
                    "outcome": {
                        "max_gain_pct": 18.4,
                        "max_drawdown_pct": -6.1,
                        "finalized_at": null
                    }
                }
            ],
            "meta": {
                "as_of": "2026-07-30T06:12:44+00:00",
                "source": "own-analysis",
                "brand": "boersenlotse",
                "docs": "https://boersenlotse.de/entwickler",
                "page": 1,
                "per_page": 1,
                "total": 47
            }
        }
    }
}

Gekürzt. Die Feldnamen sind echt, die Werte erfunden.

Fehler

Fehler tragen statt data ein error-Objekt mit code und message. Der HTTP-Status sagt dasselbe noch einmal.

{
    "error": {
        "code": "invalid_parameter",
        "message": "Unknown value for \"pattern\". Allowed: catalyst, insider, volume, exit."
    }
}
  • 401 Schlüssel fehlt, ist unbekannt oder gesperrt. Alle drei Fälle antworten absichtlich gleich.
  • 404 Zu diesem Kürzel oder dieser Kennung führen wir nichts — oder den angefragten Pfad gibt es nicht.
  • 405 Den Pfad gibt es, aber nicht mit dieser HTTP-Methode. Die richtige steht in der Kopfzeile Allow.
  • 422 Ein Parameter trägt einen Wert, den es nicht gibt, oder eine Liste, wo ein Einzelwert stehen muss.
  • 429 Kontingent erschöpft: 60 Anfragen je Minute und Schlüssel.
  • 500 Bei uns ist etwas schiefgegangen. Die Anfrage war in Ordnung, ein zweiter Versuch lohnt sich.

MCP-Server einrichten

Der Server spricht Streamable HTTP und braucht keine Installation. Der Schlüssel geht als Kopfzeile X-Api-Key mit.

Claude Desktop und Cursor

In die Konfigurationsdatei des Clients eintragen — claude_desktop_config.json beziehungsweise ~/.cursor/mcp.json — und den Client neu starten.

{
    "mcpServers": {
        "boersenlotse": {
            "type": "http",
            "url": "https://boersenlotse.de/api/v1/mcp",
            "headers": {
                "X-Api-Key": "bl_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
            }
        }
    }
}

Claude Code

Ein Befehl im Terminal genügt.

claude mcp add --transport http boersenlotse https://boersenlotse.de/api/v1/mcp \
  --header "X-Api-Key: $API_KEY"

Werkzeuge

Der Server meldet diese Werkzeuge. Ihre Beschreibungen liefert tools/list mit — englisch, wie die Feldnamen.

  • get_signals
  • get_signal
  • get_call_ratings
  • get_call_rating
  • get_superinvestors
  • get_superinvestor_holdings
  • get_politicians
  • get_politician_trades
  • get_hype

Beta, Kontingent und Lizenz

  • Die Beta ist kostenlos.
  • 60 Anfragen je Minute und Schlüssel. Darüber antwortet die Schnittstelle mit 429 statt zu drosseln.
  • Ausgeliefert werden ausschließlich unsere eigenen Analysen und Daten, die wir selbst aus amtlichen Quellen geladen haben — SEC-Meldungen und STOCK-Act-Offenlegungen. Rohe Kurswerte fremder Anbieter sind nicht enthalten; deshalb gibt es Prozentwerte, aber keine Preise.
  • Wer die Daten veröffentlicht, nennt bitte Börsenlotse als Quelle. Pflicht ist das nicht, gern gesehen schon.
  • Bezahlte Pläne mit mehr Volumen sind vorgesehen, aber noch nicht scharf. Wer sie braucht, hakt unten das Kästchen an — wir melden uns, bevor sich etwas ändert.

Schlüssel anfordern

Eine E-Mail-Adresse genügt. Der Schlüssel erscheint sofort auf dieser Seite — ein einziges Mal.

Wir speichern die Adresse nur, um den Zugang zuzuordnen und über Änderungen zu informieren.

War diese Seite hilfreich für Dich?