Blog · 2026-09-22

Congress Trading API: Track STOCK Act Disclosures as JSON

Congress Trading API: Track STOCK Act Disclosures as JSON
The data is public. Getting it as JSON is the hard part.

People want to know what members of Congress are buying. The data is public. Getting it as JSON is the hard part.

There is no official government Congress trading API. The STOCK Act forces members of Congress to disclose their stock trades, but the House publishes them as PDFs and the Senate as a search portal, not as JSON. To get congressional trades in your app, you either parse those filings yourself or use a third-party wrapper. This guide covers the data, why no official API exists, and how to pull it as clean JSON.

Key takeaway: There is no official government Congress trading API. The STOCK Act makes members disclose trades within 45 days, but the House publishes PDFs and the Senate a search portal, so getting them as JSON means parsing filings or using a wrapper. Edgrapi's /v1/congress returns US House trades as flat JSON on one key, honest about being House-only and never real-time.

Is there a Congress trading API?

Not an official one. The US government does not publish a Congress trading API. Congressional stock trades are disclosed under the STOCK Act as Periodic Transaction Reports, but those live as PDFs on the House Clerk site and as searchable filings on the Senate portal, with no JSON endpoint. Every "Congress trading API" you find is a third-party service that parses those official filings for you.

So the data is public, but not developer-ready.

The raw disclosures are real and free. What's missing is structure. A PDF of a member's trades is fine for a human and useless for code.

That gap is the whole product category. Services like Quiver Quantitative, Capitol Trades, and normalized endpoints like Edgrapi's /v1/congress exist because someone has to turn those filings into clean records.

If you want congressional trades in an app, the real question isn't "which API is official." None is. It's "which parser do I trust, and what does it cover."

Why do people track congressional trades?

People track congressional trades to watch informed, sometimes well-timed activity from officials with access to policy and briefings. The STOCK Act made these disclosures public precisely because that access raises conflict-of-interest questions. For builders, the appeal is a clean signal: named people, dated trades, and a legal paper trail, which is rarer than most alternative datasets.

The interest isn't only about suspicion.

Some of it is plain curiosity about what lawmakers buy and sell. Some of it is research into whether those trades beat the market, a question people have studied for years with mixed results.

Either way, the data has a property most stock signals lack. Every trade ties to a named person and a legal filing, not an anonymous flow, which makes it easy to explain and easy to verify.

That's why congress-trade features keep showing up in retail investing apps, newsletters, and now AI agents. The story writes itself, and the source is public record.

What is the STOCK Act, and what gets disclosed?

The STOCK Act is the 2012 law that makes congressional trading public. Signed on April 4, 2012, it requires members of Congress and senior staff to file a Periodic Transaction Report within 30 days of learning about a trade and no later than 45 days after it happens. Any transaction over $1,000 in stocks, bonds, or similar securities has to be reported, which is what makes the dataset usable.

Here's what a single disclosed trade actually contains.

You get the member, the ticker, whether it was a buy or a sell, the transaction date, and the date it was disclosed.

You do not get an exact dollar amount. Per the congressional financial-disclosure rules, the value comes as a range, like $1,001 to $15,000, up to an open-ended top bracket over $50 million.

That range is a quirk you have to design around. You can rank trades by their lower or upper bound, but you can never show a precise figure, because the law never required one.

Where does congressional trade data actually come from?

It comes from two official sources, and neither is an API. House trades are published by the Clerk of the House as individual PTR PDFs plus a yearly bulk index file. Senate trades live on the Secretary of the Senate's eFD portal, behind a search form. Both are the authoritative record, and both hand you documents, not structured data.

The House side is the friendlier of the two.

The House Clerk publishes a yearly ZIP index of every filing, which is open and needs no login. From that index you get each report's document id, then you fetch the PDF and parse the trades out of the text.

The Senate side is harder. Its portal is built for human search and actively blocks automated access, so pulling Senate data at scale usually needs a real browser session, not a plain HTTP client.

This is why so many tools are House-first. The House Clerk's open bulk index is a clean entry point, while the Senate portal fights you. It's also why you should always check a service's chamber coverage before you trust it to be complete.

How do I get congressional stock trades as JSON?

You have two paths. Parse the official House filings yourself, or call a service that has already done it. Parsing means downloading the House Clerk's yearly index, fetching each PTR PDF, and pulling ticker, action, dates, and amount range out of messy PDF text. A wrapper skips all of that and hands you JSON. Edgrapi's /v1/congress endpoint returns parsed US House STOCK Act trades on a single key.

Here's the wrapper path.

curl "https://api.edgrapi.com/v1/congress?action=buy&limit=20" \
  -H "Authorization: Bearer YOUR_EDGRAPI_KEY"

You get back a flat record per trade.

{
  "scope": "recent congressional stock trades (US House)",
  "count": 20,
  "trades": [
    {
      "member": "Jane Representative",
      "chamber": "house",
      "state_district": "CA05",
      "ticker": "NVDA",
      "action": "buy",
      "amount_low": 1001,
      "amount_high": 15000,
      "transaction_date": "2026-08-14",
      "disclosed_date": "2026-09-02",
      "disclosure_url": "https://disclosures-clerk.house.gov/public_disc/ptr-pdfs/2026/20026543.pdf"
    }
  ]
}

Notice the disclosure_url. It links back to the original House PDF, so every record is auditable against the source. That matters for anything you publish, because you can prove the trade is real.

There's a matching MCP tool, get_congress, so an AI agent can pull recent trades directly. Empty result sets don't cost a credit, so exploring is free.

The parse-it-yourself path is doable, and worth it if you want full control. Just know the House PDF text layer is ugly: it jams dates together with no spaces and renders the top dollar bracket in odd ways, so your regex has to be forgiving or you'll silently drop the biggest trades.

Start from the House Clerk's yearly FD.zip index and filter it to filing type P, the periodic transaction reports, then fetch only those PDFs. The index already carries the member name and filing date, so you can attach those without opening every document. It's a weekend project, not a research grant, but budget real time for the PDF edge cases, because they're where accuracy lives or dies.

How do I track trades in a specific stock?

You query by ticker to see who in Congress traded a given name. Add the symbol to the path, and the endpoint returns only that stock's trades, newest first. This is the query most people actually want, because "did anyone in Congress buy NVDA before it ran" is a more useful question than a raw firehose of every trade. It's also the query that turns a passing headline into something you can check against the record yourself.

Here's the single-ticker call.

curl "https://api.edgrapi.com/v1/congress/NVDA?limit=20" \
  -H "Authorization: Bearer YOUR_EDGRAPI_KEY"

You get the same trade records, filtered to that ticker, each with the member, buy or sell, the dollar range, and the disclosure date.

One honest caveat on empty results. If a ticker comes back with no trades, that's often real. Members trade a limited set of large, familiar names, so plenty of tickers have zero congressional activity on record, and House-only coverage narrows it further.

So an empty response usually means "no House member disclosed a trade in this stock recently," not "the API failed." And because empty results are free, checking a ticker costs you nothing.

How do I catch new trades as they post?

You catch new trades by polling the recent feed and deduping, not by re-scanning history. Because disclosures trickle in across the 45-day window, new filings keep landing on the recent feed as members submit them. Pull the latest trades on a schedule, key each record by member, ticker, action and transaction date, and skip the ones you've already stored.

The rhythm is simple.

Run the recent feed on a schedule, say once or twice a day. New disclosures from the last several weeks show up there as members file them.

Dedupe on a stable key. Member, ticker, action, and transaction date together identify a trade, so store that combination and ignore repeats.

Don't re-scan the whole archive every run. Nothing older changes, so a fresh pull of the recent feed plus your dedupe set keeps you current without wasting calls.

If you want alerts, this is where they fire. A record whose key you haven't seen before is a newly disclosed trade, which is exactly the moment worth pushing to a user.

How current is the data, and what are its limits?

Congressional trading data is never real-time, by law. The STOCK Act gives members up to 45 days after a trade to disclose it, so even a perfect API shows you what happened weeks ago, not today. On top of that, coverage and history vary a lot by source, and honest limits matter more here than in most datasets.

Three limits are worth stating plainly.

The lag is structural. A trade dated in early August might not appear until mid-September, because that's the legal window. No service can fix that, and any that claims "real-time congressional trades" is misreading its own data.

Chamber coverage is uneven. House data is easy to collect from the Clerk's open index; Senate data is harder because its portal blocks automated access. Edgrapi's /v1/congress is House-only for now, with the Senate feed noted as coming, so if you need both chambers today, use a service that already ships Senate coverage.

History depth varies. The official record and archives like Capitol Trades go back to 2012, while a lightweight feed may only keep a recent rolling window. If you need multi-year backtests, confirm the archive depth before you build on it.

None of this makes the data less useful. It makes it data you have to read honestly, which is exactly why the source disclosure_url on every record earns its place.

Congress trading API options compared

The right choice depends on chamber coverage, history, and whether you want raw filings or clean JSON. The official House and Senate sources are free but hand you PDFs and a portal. Quiver Quantitative and Financial Modeling Prep sell structured JSON with deep history. Capitol Trades has the richest web archive but no public API. Edgrapi returns House trades as JSON on one key alongside SEC and other government data.

Here's how the options stack up.

SourceChambersHistoryFormatAccess
House Clerk + Senate eFDHouse + SenateBack to 2012PDF + search portalFree, parse it yourself
Quiver QuantitativeHouse + SenateDeepJSON APIFree delayed tier, full from ~$25/mo
Capitol TradesHouse + SenateBack to 2012Web archiveFree web, no public API
Financial Modeling PrepHouse + SenateMulti-yearJSON APIPaid plans
Edgrapi /v1/congressHouse (Senate coming)Recent windowJSON API + MCPFree tier, credit-metered, one key

Read the table by your need, not by the feature count.

Want both chambers and years of history for a backtest? Quiver or Capitol Trades are built for that.

Want House trades as clean JSON on the same key as your SEC insider, 13F, and contract data, callable by an agent? That's the /v1/congress lane, and it's honest about being House-first.

Want zero cost and full control, and don't mind parsing? The House Clerk's own index is right there, free, no key.

Start with the question you can answer today

If you want congressional trades in your app, accept two things first. There's no official API, and nothing is real-time. Work from there and the project gets simple.

For House data as clean JSON with a source link on every record, call /v1/congress and you're pulling trades in minutes. For both chambers and deep history, budget for Quiver or Capitol Trades. And if you want full control and no cost, parse the House Clerk index yourself. Whatever you pick, show the disclosure_url, because the one thing that makes congressional-trade data trustworthy is that anyone can click through to the original filing.

Frequently asked questions

Is there a Congress trading API?

Not an official government one. Congressional stock trades are public under the STOCK Act, but the House publishes them as PDFs and the Senate as a search portal, with no JSON endpoint. Every Congress trading API, including Quiver Quantitative and Edgrapi's /v1/congress, is a third-party service that parses those official filings into structured data. The data is free; the parsing is the product.

What is the STOCK Act?

The STOCK Act is a 2012 US law, signed April 4, 2012, that requires members of Congress and senior staff to publicly disclose their securities trades. They must file a Periodic Transaction Report within 30 days of learning about a trade and no later than 45 days after it, for any transaction over $1,000. That reporting requirement is what makes congressional trading trackable at all.

How current is congressional trading data?

It is never real-time. The STOCK Act allows up to 45 days after a trade for a member to disclose it, so the freshest data still reflects trades from weeks earlier. Services can publish a filing within hours of it appearing on the official site, but they cannot beat the legal 45-day window. Treat any "real-time congressional trades" claim with skepticism.

Does the government provide congressional trades as JSON?

No. The House Clerk publishes Periodic Transaction Reports as PDFs plus a yearly bulk index, and the Senate offers a search portal, but neither provides a JSON API. To get structured congressional trade data, you either parse the House filings yourself or use a third-party service that has already turned the PDFs and portal results into clean records.

How do I get congressional stock trades for a specific ticker?

Query a congress API by ticker. With Edgrapi, call /v1/congress/NVDA and you get every House trade on record for that stock, newest first, with the member, buy or sell, the dollar range, and the disclosure date. An empty result usually means no House member recently disclosed a trade in that name, not an error, and empty results don't cost a credit.

What data does a congressional trade disclosure include?

A disclosed trade includes the member, the ticker, whether it was a buy or sell, the transaction date, and the disclosure date. The dollar value comes as a range, such as $1,001 to $15,000, not an exact figure, because the STOCK Act only requires brackets. House disclosures also link back to the original filing PDF, which is your audit trail to the source.

Get a free API key