← CongressInvests home

Quickstart

100 requests/day free — no account or API key required. Upgrade to Pro for webhooks and higher limits.

Fetch trades for a ticker

bash
curl https://congressinfor-production.up.railway.app/trades/NVDA

Most recent trades across all members

bash
curl "https://congressinfor-production.up.railway.app/trades/recent?limit=25&days=30"

Authenticated request (Pro)

bash
curl -H "X-Api-Key: YOUR_KEY" \
     "https://congressinfor-production.up.railway.app/trades/recent?limit=500"

Webhook setup Pro

Get notified within hours of a new filing — no polling required.

1. Subscribe to a ticker or politician

bash
curl -X POST https://congressinfor-production.up.railway.app/webhooks/subscribe \
  -H "X-Api-Key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"webhook_url": "https://your-server.com/hook", "ticker": "NVDA", "events": ["any"]}'

2. Handle the payload on your server

python — Flask receiver
from flask import Flask, request, jsonify
app = Flask(__name__)

@app.route("/hook", methods=["POST"])
def hook():
    trade = request.get_json()
    print(f"🔔 {trade['politician']} {trade['trade_type']} {trade['ticker']} — {trade['amount']}")
    return jsonify({"ok": True})

Payload delivered to your URL

{
  "event":            "new_trade",
  "ticker":           "NVDA",
  "politician":       "Nancy Pelosi",
  "trade_type":       "Purchase",
  "amount":           "$1,000,001 - $5,000,000",
  "filing_date":      "2026-05-30",
  "transaction_date": "2026-05-15",
  "source":           "House",
  "api_url":          "https://congressinfor-production.up.railway.app/trades/NVDA"
}

More examples in the congressinvests-api SDK repo ↗ · Full webhook API docs ↗