Developer API

Read-only JSON endpoints. CORS-enabled. Cached 10 minutes at the CDN. Anonymous access works without a key at the free-tier limits below; attach a Bearer key (generate one at /account/api) to lift rate limits and row caps to match your subscription plan.

🤖 New: Model Context Protocol (MCP) Server

Connect European insider filings directly into Gemini, Claude Desktop, Cursor, Glama, and Smithery. Public tools need no key; paper trading and Radar Pro use your API key (Claude/Cursor). View MCP Server Documentation & Setup →

Authentication

Optional. Send your key as a Bearer token:

Authorization: Bearer ins_live_XXXXXXXXXXXXXXXXXXXXXX

Generate and revoke keys from /account/api. Keys inherit the owning account's plan — upgrading from Hobby to Pro lifts existing keys without rotation. Keys are hashed at rest; we can never show you a lost key and will only let you regenerate.

Endpoints

Leaderboard

Anonymous callers get the top 5 rows; Hobby keys extend this to 100, Pro to 1,000, Team to 5,000. The limitquery param is clamped to your tier's row cap — it won't error, just return up to your maximum.

GET /api/v1/leaderboard?sort=win_rate&limit=5
GET /api/v1/leaderboard?sort=active&limit=500   # needs a Pro key

Response:
{
  "sort": "win_rate",
  "rows": [
    {
      "insider_id": "klaus-muller__sap-se",
      "insider_name": "Klaus Müller",
      "most_recent_company": "SAP SE",
      "most_recent_role": "CFO",
      "win_rate_3m": 0.78,
      "avg_return_3m": 0.12,
      "buys_with_price_data": 7,
      "last_buy_at": "2026-03-14"
    }
  ]
}

Insider profile

GET /api/v1/insider/{id}

Response:
{
  "insider": {
    "id": "klaus-muller__sap-se",
    "name": "Klaus Müller",
    "role": "CFO",
    "country": "DE",
    "companies": ["SAP SE"]
  },
  "stats": {
    "total_filings": 12,
    "buys": 8,
    "sells": 4,
    "total_buy_eur": 5420000,
    "total_sell_eur": 1800000,
    "net_flow_eur": 3620000
  },
  "filings": [
    {
      "id": "...",
      "date": "2026-03-14",
      "type": "buy",
      "company": "SAP SE",
      "isin": "DE0007164600",
      "shares": 1500,
      "price": 148.20,
      "value_eur": 222300,
      "exchange": "XETRA"
    }
  ]
}

Company profile

GET /api/v1/company/{isin}

Response: same shape as insider, but stats include distinct_insiders count.

Streaming APIs (Server-Sent Events)

Listen to live insider trades and substantial holdings as they are ingested. Perfect for algorithmic execution or immediate alerts. You can also connect via Make.com or n8n by using a standard HTTP request to poll the base /api/v1/filings?since=...endpoint every 1 minute.

GET /api/v1/filings/stream?since=2026-09-03T16:00:00Z
GET /api/v1/holdings/stream?since=2026-09-03T16:00:00Z

# Connect using EventSource in JavaScript
const source = new EventSource('https://insidereu.com/api/v1/filings/stream', {
  headers: { 'Authorization': 'Bearer ins_live_...' }
});

source.addEventListener('filing', (e) => {
  console.log("New Trade:", JSON.parse(e.data));
});

Recent buys (Atom)

GET /feed.xml

Standard Atom 1.0 feed. Works in any RSS reader.

Service health

GET /api/health

Returns 200 if green, 503 if the last scrape is > 36h old or failed.
Point your uptime monitor (UptimeRobot, BetterStack) at this URL.

Rate limits

TierReq / minMax rows / response
Anonymous (no key)305
Hobby (€9 / mo)120100
Pro (€29 / mo)6001,000
Team3,0005,000
  • Anonymous limits are per IP; keyed limits are per key.
  • 429 responses include a Retry-After header.
  • Every response echoes your active tier in the tier field.

Stability

The v1 prefix is a soft promise of compatibility. Additive changes (new fields, new endpoints) will not be considered breaking. Removed fields or schema changes would ship under v2.

What's not public (yet)

  • Full per-insider 3m/12m forward return arrays — Pro-tier only.
  • Bulk filings endpoint without filters — see Team.
  • Historical leaderboard snapshots.

Team

Need limits above 3,000 req/min, a no-cache pass-through, a private feed of your competitors' insider activity, or bulk historical pulls? Those sit in the Team conversation — email george@insidereu.comwith fund size, coverage needs, and integration details and we'll reply the same day.