OpenInsider APIopeninsider.com ↗
Access SEC Form 4 insider trading filings, cluster buys, top monthly purchases, and a full screener via the OpenInsider API. 6 endpoints, real-time data.
What is the OpenInsider API?
The OpenInsider API exposes 6 endpoints covering SEC Form 4 insider trading data sourced from OpenInsider.com, returning up to 100 of the most recent filings per call. Endpoints like get_latest_cluster_buys and screener let you filter by insider role, sector, trade type, and price range, while get_insider_buy_sell_chart_data provides aggregated daily purchase and sale counts going back through the full historical dataset.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/5cfdfa29-94a5-47c6-90fa-08b86361565a/get_latest_insider_trading' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace openinsider-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: OpenInsider SDK — track insider trading activity, bounded and re-runnable."""
from parse_apis.openinsider_api import OpenInsider, FilingDateRange, Purchases, Sales, TickerRequired
client = OpenInsider()
# Latest cluster buys — multiple insiders buying the same company.
for cluster in client.clusterbuys.latest(limit=3):
print(cluster.ticker, cluster.company_name, cluster.industry, cluster.insider_count)
# Screen for CEO purchases filed in the last week.
for trade in client.trades.search(
is_ceo="1",
purchases=Purchases.INCLUDE,
sales=Sales.EXCLUDE,
filing_date_range=FilingDateRange.ONE_WEEK,
limit=5,
):
print(trade.ticker, trade.insider_name, trade.trade_type, trade.value)
# Drill into one ticker's full insider history.
trade = client.trades.by_ticker(ticker="AAPL", limit=1).first()
if trade:
print(trade.filing_date, trade.insider_name, trade.price, trade.qty)
# Daily buy/sell aggregates for recent period.
for agg in client.dailyaggregates.list(start_date="260601", end_date="260610", limit=5):
print(agg.date, agg.purchases, agg.sales, agg.purchase_value, agg.sale_value)
# Typed error handling — missing ticker triggers TickerRequired.
try:
client.trades.by_ticker(ticker="ZZZZZZ", limit=1).first()
except TickerRequired as exc:
print(f"Error: {exc}")
print("exercised: clusterbuys.latest / trades.search / trades.by_ticker / dailyaggregates.list")
Fetch the latest insider trading filings (purchases and sales). Returns up to 100 of the most recent SEC Form 4 filings with details including filing date, trade date, ticker, company, insider name, title, trade type, price, quantity, ownership change, and value.
No input parameters required.
{
"type": "object",
"fields": {
"items": "array of insider trade objects"
},
"sample": {
"data": {
"items": [
{
"X": "",
"1d": "",
"1m": "",
"1w": "",
"6m": "",
"Qty": "-100,000",
"Owned": "0",
"Price": "$0.07",
"Title": "10%",
"Value": "-$6,880",
"ΔOwn": "-100%",
"Ticker": "ADTX",
"Trade Date": "2026-06-09",
"Trade Type": "S - Sale",
"Filing Date": "2026-06-10 21:51:15",
"Company Name": "Aditxt, Inc.",
"Insider Name": "Gong Sandie"
}
]
},
"status": "success"
}
}About the OpenInsider API
What the API covers
All six endpoints deal with insider trading activity as reported via SEC Form 4 filings. Core fields across most endpoints include Filing Date, Trade Date, Ticker, Company Name, Insider Name, Title, Trade Type, Price, Qty (shares), Owned (shares held after trade), ΔOwn (ownership change percentage), and Val (dollar value of the trade). The get_latest_cluster_buys endpoint additionally returns an Industry label and an Ins field representing the count of distinct insiders buying the same company within a short window — a signal that distinguishes coordinated buying from a single executive's activity.
Screener and filtering
The screener endpoint is the most configurable. It accepts optional parameters including is_ceo, is_cfo to scope results by executive role, sector and industry for SIC code-based filtering, max_price to limit by share price, sales to include or exclude sale transactions, and page for pagination. The ticker parameter works across both the screener and the dedicated get_ticker_insider_trades endpoint, letting you pull all recorded filings for a specific symbol.
Historical and aggregate data
get_insider_buy_sell_chart_data returns daily aggregate rows — Date (YYMMDD), Purchases count, Sales count, Purchase Value, and Sale Value — drawn from the full historical CSV dataset on OpenInsider. Both start_date and end_date should be supplied together in YYMMDD format; providing only start_date returns all records from that date forward. This endpoint is oriented toward time-series analysis of insider sentiment rather than individual trade-level detail.
Top trades and freshness
get_top_insider_purchases_month returns purchases ranked by trade value over the prior 30 days, making it useful for quickly identifying the largest dollar-value conviction bets. get_latest_insider_trading returns up to 100 of the most recently filed trades regardless of company or role. All endpoints reflect what OpenInsider has processed from SEC EDGAR at the time of the request.
The OpenInsider API is a managed, monitored endpoint for openinsider.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when openinsider.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official openinsider.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Monitor real-time insider buying signals by polling
get_latest_insider_tradingfor new Form 4 filings - Detect cluster buy events where multiple executives purchase shares of the same company using
get_latest_cluster_buys - Rank the largest dollar-value insider purchases over the past month with
get_top_insider_purchases_month - Filter CEO and CFO trades within a specific SIC sector using the
screenerendpoint'sis_ceo,is_cfo, andsectorparameters - Build historical buy/sell ratio charts by querying
get_insider_buy_sell_chart_datawith astart_dateandend_date - Pull a full insider activity history for a single stock using
get_ticker_insider_tradeswith a ticker symbol - Screen for low-priced stocks with recent insider purchases by combining
max_priceandsales=0in the screener
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does OpenInsider have an official developer API?+
What does the `screener` endpoint return and how do I filter it?+
is_ceo or is_cfo for role, sector and industry for SIC codes, max_price for share price ceiling, sales to include or exclude sale transactions, and ticker to scope to a single symbol. Use page to step through results.What does the `Ins` field in cluster buy results represent?+
Ins field in get_latest_cluster_buys results is the count of distinct insiders who purchased shares of the same company within a short period. A higher count indicates more individuals at the company are buying concurrently, which is the defining characteristic of a cluster buy versus an isolated executive purchase.