Tracefour API

Read-only access to the same public-disclosure data the site renders: SEC Form 4 insider filings, 13F and Congress tracker portfolios, buy clusters, streaks, and European PDMR filings. No key needed to read: 60 requests/hour per IP. A free key raises that to 600 requests/hour. Filing data never moves behind a price; Tracefour Pro is alerts tooling and leaves the API as it is.

Quick start

No sign-up, no key. Every endpoint below answers this today, rate-limited to 60 requests/hour per IP address.

curl "https://tracefour.com/v1/filings?direction=P&min_value=1000000&limit=50"

Machine-readable spec: /v1/openapi.json · Discovery endpoint (every tracker and Congress slug): /v1/catalog · Site overview for agents: /llms.txt

Guides

Four pages, each documenting its endpoints in full: every parameter with its type and default, curl, Python and JavaScript examples, and a real captured response.

Authentication (optional)

A key is an upgrade for volume, not a requirement. Past 60 requests/hour, sign in (free) and create one under Settings → API access, then pass it as a bearer token:

curl -H "Authorization: Bearer tf_YOUR_KEY" \
  "https://tracefour.com/v1/filings?limit=50"

Keys are shown once at creation and can be revoked at any time. A key is scoped to itself, not the account, so two keys on one account budget independently.

Rate limits

Anonymous (no key)60 requests/hourKeyed per IP address.
Free API key600 requests/hourKeyed per key, not per account, so two keys on one account budget independently.

Endpoints (API v1, keyless reads)

GET /v1/catalogDiscovery: every endpoint, every tracker and Congress slug, and how to search insiders.
GET /v1/filingsU.S. SEC Form 4 open-market filings (P and S). Filters: since, direction (P|S|all), min_value, ticker, limit. Details
GET /v1/insiders?q=Search insider slugs by name. Slugs are EDGAR name-order and are not guessable. Details
GET /v1/insiders/{id}One insider identity plus in-window transactions, by slug. Details
GET /v1/clustersCluster digests: 3+ distinct insiders, same ticker, same direction, 60-day window. Details
GET /v1/streaksStreak digests: consecutive-week filing runs with track records. Details
GET /v1/congressEvery Congress member with a slug, one row per person. Details
GET /v1/congress/{member}STOCK Act trades for one member, e.g. nancy-pelosi. Details
GET /v1/trackersEvery tracker portfolio slug (13F fund, Congress member, or OGE filer). Details
GET /v1/trackers/{slug}One tracker portfolio, holdings and recent activity, e.g. pelosi, berkshire. Details
GET /v1/eu/{country}Recent European PDMR filings: de, uk, se, or nl. Omits meta.sourceLicense (unverified upstream terms). Details
POST /v1/mcpMCP server, streamable HTTP. Nine tools mirroring the endpoints above, also keyless. Details

Every response uses the envelope { data, error, meta }. All endpoints are read-only and refreshed hourly. An MCP server exposing the same data to tool-calling agents is available at POST /v1/mcp (9 tools, also keyless).

Errors

400A query or path parameter failed validation.
401A presented API key is malformed, unknown, or revoked. An absent key is anonymous, not rejected, it gets a 200.
404Unknown slug (tracker, Congress member, or insider).
429Rate limit reached. Retry-After and X-RateLimit-* headers are set on every response, keyed and anonymous alike.

Static JSON exports (/data)

Whole-entity JSON files, prerendered hourly, CORS-open, no key needed. Each file carries source, license (the Tracefour compilation, CC BY 4.0), source_license (the upstream filings, public-domain government works), as_of and terms provenance. This layer covers trackers and Congress members only; there is no per-ticker or per-insider file here (that family was removed after it overloaded the hourly build). For an individual ticker or insider, call GET /v1/filings or GET /v1/insiders/{id} instead, both keyless.

GET /data/trackers/{slug}.jsonFull tracker portfolio export, e.g. /data/trackers/pelosi.json.
GET /data/congress/{member}.jsonAll STOCK Act trades for one member.

License and attribution

The underlying filings are public-domain U.S. government works. Tracefour's compilation (normalization, split-adjustment, deduplication, scoring) is licensed CC BY 4.0. Every response carries this in meta.license; SEC-sourced endpoints also carry the upstream license in meta.sourceLicense. The four /v1/eu/* endpoints omit meta.sourceLicense because those regulators' publication terms have not been verified.

Data via Tracefour (https://tracefour.com/filings), CC BY 4.0.
Underlying filings are public-domain U.S. government works.

Pro is alerts tooling, not an API tier

Tracefour Pro adds delivery channels, more follows, filters, and screens for the alerts product. It does not raise API rate limits, unlock endpoints, or move any of the data above behind a price. See /pro for what it covers.

Frequently asked questions

Is the Tracefour API free?

Yes. Every read endpoint is keyless: 60 requests/hour per IP with no sign-up. A free account and API key raise that to 600 requests/hour. The underlying data pages carry no paywall of any kind. Tracefour Pro adds alerts tooling (delivery channels, more follows, filters, screens) and does not change API access.

Where does the data come from?

Public regulatory filings only: SEC EDGAR (Form 4, 13F-HR), U.S. House STOCK Act PTR disclosures, OGE Form 278-T reports, and the PDMR registers of BaFin, the FCA, Finansinspektionen, and the AFM. Every record links back to its source filing. Refreshed hourly.

Do I need an API key?

No. Every endpoint answers unauthenticated requests up to 60 requests/hour per IP. A free account and API key raise the limit to 600 requests/hour and are worth creating only past that volume: sign in to Tracefour and create a key under Settings, then pass it as "Authorization: Bearer tf_…". Keys are shown once at creation and can be revoked at any time.

Can I show the data in my own app or site?

Yes. The one condition is attribution: link to the Tracefour page named in meta.attribution.page of every response, or the url carried by each filing, tracker, and record. That link keeps every number traceable to its source filing.

Is there a way to fetch data without a key?

Every /v1 read already works without a key, at 60 requests/hour per IP. Separately, the /data static JSON layer covers whole-entity exports for trackers and Congress members, keyless, CORS-open, and rebuilt hourly. It does not cover individual tickers or insiders: for those, call GET /v1/filings or GET /v1/insiders/{id}, both also keyless.

Data sourced from public regulatory filings. Not investment advice.