Congress & Insider Trades API — STOCK Act PTRs + SEC Form 4
Pricing
from $0.30 / 1,000 transaction returneds
Congress & Insider Trades API — STOCK Act PTRs + SEC Form 4
Every disclosed trade by people legally required to disclose one, in one schema: House and Senate periodic transaction reports and SEC Form 4. Ticker, side, parsed amount ranges, party, state, committees, days to disclose and late-filing flags on every row. Primary .gov sources only. No API key.
Pricing
from $0.30 / 1,000 transaction returneds
Rating
0.0
(0)
Developer
Insight Solutions
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Share
Every disclosed stock trade by people who are legally required to disclose one, in one schema: members of the U.S. House and Senate filing periodic transaction reports under the STOCK Act, and corporate officers, directors and ten-percent owners filing SEC Form 4. Same columns, same run, same query.
Read straight from the three systems that publish them — the Clerk of the House, the Senate Office of Public Records (eFD) and SEC EDGAR. No aggregator sits in the middle.
What this is. Filer-reported, delayed evidence. A periodic transaction report is due within 45 days of the trade and appears one to two business days after it is submitted; a Form 4 is due within two business days. Congressional amounts are ranges, not exact figures. Filings are amended. This is not investment advice, and it is not a feed of live trades — it is a machine-readable copy of public disclosure documents, with a link to each one.
At a glance
Input — this is the Store prefill; paste it and run:
{ "sources": ["house", "senate", "form4"], "dateBasis": "disclosure", "userAgentContact": "Insight Solutions austinhughhillis@gmail.com", "maxTransactions": 300, "maxFilings": 40, "maxHouseFilings": 15, "includeSummary": true }
Replace userAgentContact with your own organisation and address before you use the Form 4 half for real — the SEC answers HTTP 403 without one.
Output — one row per disclosed transaction; the fields you will use most are filerName, ticker, side, amountRange, transactionDate, disclosureDate and filingUrl (full list under Output reference). Anything that could not be fetched comes back as a free diagnostic row (ok: false, errorType, error) instead of a charge.
Price — $0.50 per 1,000 transactions on the FREE tier (+ $0.001 per run); diagnostic rows, scanned filings that could not be read, every summary and cluster row, transactions your filters excluded and a run that returns nothing are all free. Pay-per-event, no API key, no browser, limited permissions — works over the Apify MCP server (mcp.apify.com) and with agentic (x402) payments.
From code — client.actor("insight.solutions/congress-insider-trades-api").call(run_input={"tickers": ["NVDA"], "transactionTypes": ["buy"]}) with apify-client, or POST https://api.apify.com/v2/acts/insight.solutions~congress-insider-trades-api/run-sync-get-dataset-items.
What you get
One row per disclosed transaction. Same columns whoever traded:
{"rowType": "transaction","source": "house","insiderType": "congress","chamber": "house","filerName": "Nancy Pelosi","party": "D","state": "CA","district": 11,"bioguideId": "P000197","committees": [],"owner": "spouse","ticker": "GOOGL","assetName": "Alphabet Inc. - Class A Common Stock (GOOGL) [ST]","assetType": "ST — Stocks (including ADRs)","side": "buy","transactionType": "P","amountMin": 500001,"amountMax": 1000000,"amountMidpoint": 750000.5,"amountRange": "$500,001 - $1,000,000","transactionDate": "2026-01-16","notificationDate": "2026-01-16","disclosureDate": "2026-01-23","daysToDisclose": 7,"filingDeadlineDays": 45,"complianceStatus": "on-time","daysLate": 0,"description": "Purchased 25,000 shares.","filingId": "20033725","filingType": "PTR","filingUrl": "https://disclosures-clerk.house.gov/public_disc/ptr-pdfs/2026/20033725.pdf","parseStatus": "parsed"}
…and the same row for a corporate insider, with the fields that only Form 4 has:
{"rowType": "transaction","source": "form4","insiderType": "corporate","filerName": "Taich Adam","reporterRoles": ["officer"],"officerTitle": "Chief Financial Officer","issuerName": "10x Genomics, Inc.","issuerCik": "0001770787","ticker": "TXG","side": "sell","transactionCode": "S","transactionCodeLabel": "Open-market or private sale","acquiredDisposed": "D","shares": 31428,"pricePerShare": 64.3097,"value": 2021125.25,"sharesOwnedAfter": 330098,"transactionDate": "2026-09-09","disclosureDate": "2026-09-11","daysToDisclose": 2,"filingDeadlineDays": 2,"complianceStatus": "on-time","filingType": "4","filingUrl": "https://www.sec.gov/Archives/edgar/data/1770787/000161071726000414/0001610717-26-000414-index.htm"}
ticker, side, transactionDate, disclosureDate and daysToDisclose mean
the same thing on both. That is the whole point: "everyone required to disclose
who bought NVDA in September" is one query, not two datasets and a join.
Quick start
Leave everything on its defaults and run it. You get the last 60 days of House and Senate periodic transaction reports plus the latest market-wide Form 4s.
Some things people actually ask:
| You want | Input |
|---|---|
| Everything Nancy Pelosi disclosed this year | { "members": ["Pelosi"], "dateFrom": "2026-01-01" } |
| Who in Congress bought NVDA | { "tickers": ["NVDA"], "transactionTypes": ["buy"], "sources": ["house", "senate"] } |
| Senate only, last month | { "chamber": "senate", "dateFrom": "2026-08-01" } |
| Energy and Commerce members' energy trades | { "committees": ["Energy and Commerce"], "tickers": ["XOM", "CVX"] } |
| Filings that missed the 45-day deadline | { "lateFilingsOnly": true } |
| NVIDIA insiders, open-market only | { "sources": ["form4"], "issuers": ["NVDA"], "transactionCodes": ["P", "S"] } |
| Trades over $100k in March, by trade date | { "minAmount": 100000, "dateFrom": "2026-03-01", "dateTo": "2026-03-31", "dateBasis": "transaction" } |
| A cheap daily monitor | { "incremental": true, "maxTransactions": 0 } on a schedule |
Set userAgentContact to your own organisation and address before you use
the Form 4 half for real. The SEC requires every automated request to say who is
making it and how to reach them, and answers HTTP 403 without it. The prefilled
value is the publisher's, so the example run works out of the box.
Use cases
- Follow one ticker across both halves of the disclosure system — a single
tickersquery returns the members of Congress and the corporate officers who traded it, in the same columns, instead of two datasets and a join. - Watch a member, a committee or a delegation —
members,committees,statesandpartyare applied to the index before any document is downloaded, so a narrow question stays a cheap run. - Report on late disclosure —
lateFilingsOnly,daysToDisclose,complianceStatusanddaysLateturn the STOCK Act's 45-day deadline into a column you can sort, with the filing linked on every row. - Run a cheap daily monitor —
incremental: trueon a schedule returns only what has been filed since the last run, and a day with nothing new finishes SUCCEEDED and costs nothing. - Look for clustered buying — free
clusterrows name every ticker three or more members of Congress bought within 30 days of each other, alongside free per-ticker and per-member summaries.
Input
| Field | Type | Default | What it does |
|---|---|---|---|
sources | array | ["house","senate","form4"] | Which disclosure systems to read |
members | array | [] | Pelosi, Nancy Pelosi or Tuberville, Tommy. Applied to the index before any document is downloaded |
chamber | enum | both | both, house, senate. Choosing one switches the other's source off |
states | array | [] | Two-letter codes, e.g. ["CA","TX"] |
party | enum | any | any, D, R, I |
committees | array | [] | Substring match on the committee name, e.g. "Energy and Commerce" |
ownerTypes | array | [] | self, spouse, joint, dependent |
tickers | array | [] | Applies to both halves |
transactionTypes | array | [] | buy, sell, exchange, other |
dateFrom / dateTo | string | last 60 days / today | ISO dates |
dateBasis | enum | disclosure | Which date the window applies to |
minAmount | integer | 0 | USD. Compared to the top of a congressional band, or to a Form 4's reported value |
lateFilingsOnly | boolean | false | Only filings past their deadline |
issuers | array | [] | Form 4: tickers or CIKs. Empty means the latest market-wide Form 4s |
maxFilingsPerIssuer | integer | 25 | Per issuer, newest first |
includeDerivative | boolean | true | Form 4 Table II lines (options, RSUs) |
reporterRoles | array | [] | officer, director, tenPercentOwner, other |
transactionCodes | array | [] | Section 16 codes, e.g. ["P","S"] |
userAgentContact | string | publisher's | Required for Form 4. Your organisation and contact address |
incremental | boolean | false | Skip filings already returned by an earlier run |
includeSummary | boolean | true | Free per-ticker, per-member and cluster rows |
maxTransactions | integer | 500 | The number you are billed for. 0 = no cap |
maxFilings | integer | 200 | Per source |
maxHouseFilings | integer | 40 | A separate, lower ceiling on the House PDFs |
maxConcurrency | integer | 4 | Filings in flight per source |
maxRunSecs | integer | 240 | Wall-clock budget |
proxyConfiguration | object | US residential | See Proxy, below |
Output reference
Every row carries every column, null where it does not apply, so the dataset exports as one rectangular table. Six saved views come with it: Transactions, Congress, Corporate insiders, Late filings, Clusters & summaries and Problems.
Who — insiderType, source, chamber, filerName, firstName,
lastName, bioguideId, party, state, district, committees[], owner,
reportingOwnerCik, reporterRoles[], officerTitle.
What — issuerName, issuerCik, ticker, assetName, assetType, side,
transactionType, transactionCode, transactionCodeLabel, acquiredDisposed,
shares, pricePerShare, value, amountMin, amountMax, amountMidpoint,
amountRange, capitalGainsOver200.
When — transactionDate, notificationDate, disclosureDate,
daysToDisclose, filingDeadlineDays, complianceStatus, daysLate.
Where it came from — isAmendment, filingId, filingUrl, filingType,
parseStatus, description, comments, subholdingOf, footnotes[],
sharesOwnedAfter, ownershipNature, sourceUrl, scrapedAt.
Amount ranges
Congressional filings report a band, never an exact figure. All ten are parsed to numbers:
| Band | amountMin | amountMax | amountMidpoint |
|---|---|---|---|
$1,001 - $15,000 | 1001 | 15000 | 8000.5 |
$15,001 - $50,000 | 15001 | 50000 | 32500.5 |
$50,001 - $100,000 | 50001 | 100000 | 75000.5 |
$100,001 - $250,000 | 100001 | 250000 | 175000.5 |
$250,001 - $500,000 | 250001 | 500000 | 375000.5 |
$500,001 - $1,000,000 | 500001 | 1000000 | 750000.5 |
$1,000,001 - $5,000,000 | 1000001 | 5000000 | 3000000.5 |
$5,000,001 - $25,000,000 | 5000001 | 25000000 | 15000000.5 |
$25,000,001 - $50,000,000 | 25000001 | 50000000 | 37500000.5 |
Over $50,000,000 | 50000001 | null | null |
The open-ended top band has no maximum, so it gets no midpoint. A Form 4 reports
an actual price and share count instead, so it fills shares, pricePerShare
and value and leaves the band columns null.
Compliance fields
daysToDisclose is the gap between the trade and the filing.
filingDeadlineDays is 45 for a congressional periodic report (the STOCK Act
deadline) and 2 for a Form 4. complianceStatus grades the gap: on-time,
late, or severely-late for a congressional filing more than 90 days after the
trade. daysLate is how far past the deadline it went.
These are arithmetic on two dates printed on the filing. They are not an allegation, and the filing is linked on every row so you can check them. Form 4 deadlines are two business days and we count calendar days, which can over-report a Form 4 by a weekend; congressional deadlines are calendar days, so those are exact.
Free summary rows
With includeSummary on (the default), the run adds rows computed from its own
results and charges for none of them:
ticker-summary— per ticker:trades,buys,sells,uniqueBuyers,uniqueSellers,firstSeen,lastSeen.member-summary— per member:trades,buys,sells,lateFilings,lateRate(late filings as a share of their filings in this run).cluster— where three or more different members of Congress bought the same ticker within 30 days of each other:ticker,memberCount,members[],windowDays,firstSeen,lastSeen.
A cluster row says those people bought that thing within a month of each other. It is not a score, a signal or a claim about why.
Coverage, and where it stops
- House. The Clerk publishes a yearly index of every financial-disclosure
filing; the 2026 index holds 385 periodic transaction reports. Earlier years
are reachable by setting
dateFrom— each year is its own index, and the run fetches the ones your window touches. - Senate. eFD publishes periodic transaction reports back through the current filing system. The run pages the search 100 filings at a time.
- SEC Form 4. Either the latest filings market-wide, a specific company's
filings from
data.sec.gov, or EDGAR's settled daily index when you ask for a date range that has closed. - Scanned filings. Some members file on paper, and those reports are
published as images with no text in them — roughly 10–15% of House periodic
reports, plus a handful of senators who file exclusively on paper. Those come
back as a free row with
parseStatus: "unparsed",errorType: "unparsed"and the document's URL. Nothing is guessed at and nothing is charged. If you need those, open the link. - Not in this version. Annual reports, holdings, assets, income and liabilities. This Actor returns transactions only.
What you are never charged for
- Diagnostic rows of every type:
not-found,no-results,unparsed,invalid-input,blocked,timeout,unavailable. - Scanned filings that could not be read.
- Every summary and cluster row.
- Transactions your filters excluded — the filters run before the charge.
- A run that returns no transaction at all. A run whose sources were usable but produced nothing — filters that excluded every transaction, nothing filed in your window, a disclosure site that refused us — finishes SUCCEEDED with zero results, a status message that says so, and a free diagnostic row telling you why wherever there is one; nothing is charged, start fee included. A run finishes FAILED only when there was nothing usable to attempt (no source selected), or the Actor itself hit an error.
- An incremental run on a quiet day. When every filing in range was already returned by an earlier run and nothing has been filed since, the run finishes SUCCEEDED with "Nothing new" in its status message and no charge — a scheduled monitor should not look broken because Congress took the day off.
Pricing
| Event | FREE | BRONZE | SILVER | GOLD |
|---|---|---|---|---|
| Run started | $0.001 | $0.001 | $0.001 | $0.001 |
| Transaction returned | $0.0005 | $0.0005 | $0.0004 | $0.0003 |
That is $0.50 per 1,000 transactions, congressional and corporate alike. The
run honours ACTOR_MAX_TOTAL_CHARGE_USD: when the budget runs out it stops
fetching rather than handing over rows it cannot bill for, and says so in the run
status.
Proxy
The default is Apify's US residential proxy, and it is not a luxury: the House Clerk's site is behind a bot filter that refuses datacenter addresses, and Senate eFD is reachable from United States addresses only. SEC EDGAR requests always go direct, whatever you set — EDGAR rate-limits per IP and asks for a contact address in the User-Agent, so a rotating shared exit buys nothing there.
The run holds itself to 8 requests a second against sec.gov (SEC publishes a limit of 10) and pauses between successive pages of any one search.
Running it every day
Set incremental: true and schedule it. The Actor keeps a record (in a named key-value store, stateStoreName, default congress-insider-trades-state) of the House
DocIDs, Senate report IDs and EDGAR accession numbers it has already returned,
skips them, and returns only what has been filed since. The indexes are small;
the cost is the documents, and a daily run downloads only the new ones. It is the
single biggest lever on what a scheduled job costs.
Use it from an AI agent, or from code
One JSON object in, one flat array out — the shape agent runtimes want. The Actor runs with limited permissions, uses pay-per-event pricing and never enters Standby, so it works over the Apify MCP server and with x402 agentic payments. The Integrations tab pushes results to Slack, a webhook, Zapier, Make, Google Sheets, Snowflake or BigQuery.
curl -X POST "https://api.apify.com/v2/acts/insight.solutions~congress-insider-trades-api/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"sources":["house","senate"],"tickers":["NVDA"],"transactionTypes":["buy"],"maxTransactions":100}'
# pip install apify-clientfrom apify_client import ApifyClientclient = ApifyClient("<APIFY_TOKEN>")run = client.actor("insight.solutions/congress-insider-trades-api").call(run_input={"sources": ["house", "senate", "form4"],"tickers": ["NVDA", "AMD"],"dateFrom": "2026-01-01","minAmount": 50000,"maxTransactions": 300,"userAgentContact": "Acme Research data@acme.com",})for row in client.dataset(run["defaultDatasetId"]).iterate_items():if row.get("ok") and row["rowType"] == "transaction":print(row["filerName"], row["insiderType"], row["side"], row["ticker"],row["amountRange"] or row["value"], row["transactionDate"], row["filingUrl"], sep=" | ")
Set userAgentContact to your own organisation and address whenever sources includes form4 — the SEC answers HTTP 403 without it. Set incremental: true when you want a monitor rather than a backfill: the run returns only filings it has not returned before.
FAQ
Is this insider trading? No. Everything here is a document its filer was legally required to publish. A periodic transaction report exists precisely so that these trades are public.
Why is the amount a range?
Because that is what the law requires members of Congress to disclose. They
report a band, not a figure. amountMidpoint is offered for aggregation, and it
is a midpoint of a band, not an estimate of the trade.
Why do some rows have no ticker? Because the filing names an asset that has no exchange symbol — a municipal bond, a private partnership, a fund share class. The asset name is still there. Nothing is guessed at from the name.
Why is side "other" on a Form 4 grant?
Because an award of restricted stock is not somebody spending their own money in
the market, and calling it a buy would put it in the same bucket as one.
transactionCode, transactionCodeLabel and acquiredDisposed are on the row,
so you can treat an A as accumulation if that is what you want.
Why is the disclosure so old?
A periodic transaction report is due within 45 days of the trade. Some are filed
on day 44. daysToDisclose tells you exactly how old each one is.
Can I use this data? Congressional financial disclosure reports are public records. The Ethics in Government Act places restrictions on how reports obtained under it may be used — notably for commercial purposes and for determining credit rating or soliciting money — and you are responsible for using them lawfully. This is a statement of where the restriction lives, not legal advice; if your use case is commercial, take your own advice.
What happens if a source changes its format? The upstream documents are not APIs, and their format can change without notice. When a filing cannot be read the run returns a free diagnostic row naming the document rather than a wrong number, and the run only finishes successfully if it returned at least one real transaction.
Limitations
- Congressional amounts are ranges. There is no way to recover an exact figure from a filing that does not contain one.
- Roughly 10–15% of House periodic reports are scanned images and come back unparsed and free, with a link.
- The House leg is the slow one: each filing is a PDF that must be downloaded and
its text laid back out.
maxHouseFilingsbounds it separately for that reason. - Form 4 deadlines are counted in calendar days, which can over-report a weekend.
- Party, state, district and committee membership come from the public
congress-legislatorsdataset, matched on chamber, surname, state and district. A filer who cannot be matched to a sitting member gets nulls in those columns rather than a guess. A former member who filed after leaving office will not match. - Cluster detection looks only at the rows this run returned. Widen the window and you will find more.
- The upstream format may change. See the FAQ.
Our other Actors
Every Insight Solutions Actor is pay-per-result with no browser, no login and no API key, and every one of them returns free diagnostic rows instead of billing for failures. Prices are per 1,000 results.
Video, audio & social
- YouTube Transcript API — captions as timed segments, text, SRT or VTT, with language fallback and translation.
- YouTube Comments API — comments and replies with likes, pinned and hearted flags, newest or top sort.
- YouTube Channel API — a channel's videos, Shorts and live streams, plus YouTube search.
- Podcast Search, Episodes & Charts API — Apple Podcasts search, charts and full episode feeds.
- Bluesky Scraper — profiles, posts, followers and follows from the public AT Protocol API.
- Telegram Channel Scraper — posts, views and channel stats from public Telegram channels.
- Substack Scraper — posts with full free text, comments and publication profiles.
- Hacker News API — stories, comments, users, front page and a structured "Who is hiring?" parser from the official HN APIs.
- GitHub Repos, Trending & Releases API — repository facts, trending lists, releases and search, no token needed for small runs.
- Discourse Forum API — topics, posts and categories from any Discourse community via its own JSON endpoints, usernames only.
News, documents & the web
- Google News Search, Topics & Real Article URLs — news search and topic feeds with the publisher's real URL decoded.
- Website to Markdown — Content Extractor for LLMs & RAG — any site as clean Markdown, text and heading-aware chunks.
- WordPress Posts & Pages API — posts and pages from any WordPress site as clean text or Markdown, with categories, tags and images.
- Website Metadata API — any URL's meta tags, Open Graph, Twitter cards, hreflang, feeds, JSON-LD and microdata, with normalised Product, Article, Event and FAQ entities.
- Subdomain Finder API — every subdomain of a domain from certificate-transparency logs, resolved over DNS, with an optional live HTTP check.
- Internet Archive API — archive.org search, item metadata, files and reviews.
- Wayback Machine Toolkit — archived URL inventories, snapshots and text diffs between dates.
- Website Technology Detector — the tech stack behind any site, with the evidence for each detection.
- Domain Intelligence API — DNS, RDAP registration, TLS certificate and HTTP facts in one row per domain.
- SEO Page Audit — sitemap crawl with on-page checks, structured data and broken-link reports.
- Keyword Suggestions API — Google, YouTube, Bing, Amazon and eBay autocomplete with alphabet and question expansions.
- Website Contact Extractor — emails, phone numbers and social profiles from any list of websites.
- Web Search Results API — Bing and DuckDuckGo organic results with snippets, no key, no browser.
- Company Enrichment API — a domain in, a company profile out: firmographics, contacts, tech stack, DNS and hiring signal.
- Company Dossier API — one company in, twelve sections out: profile, tech, contacts, DNS, open roles, news, SEC filings, federal awards, recalls, YC batch and apps.
- Press Releases API — GlobeNewswire and PR Newswire releases plus any newsroom feed, by keyword, company, ticker or subject.
- Federal Register API — rules, proposed rules, notices and the Public Inspection desk with dockets, comment deadlines and CFR references.
- Academic Papers Search API — OpenAlex, Crossref, arXiv and PubMed in one row per paper: abstract, citations, open-access PDF, authors and venue.
- RSS & Atom Feed Monitor — any RSS, Atom or JSON feed (or an OPML file) in, only the new items out, with keyword filters and a webhook.
- Website Change Monitor — watch any pages, diff the text between runs, get change rows with added/removed lines, keyword alerts and a webhook.
- Wikipedia & Wikidata API — article text, search, daily pageviews and Wikidata entity facts, any language edition.
Business, finance & jobs
- Federal Contracts, Grants & Lobbying API — SAM.gov opportunities, USAspending awards, Grants.gov notices and Senate lobbying filings in one schema.
- SEC EDGAR API — filings, XBRL financials and full-text search by ticker or CIK.
- Clinical Trials & FDA API — ClinicalTrials.gov studies plus openFDA recalls, labels, approvals, 510(k)s and adverse-event reports.
- Product & Vehicle Recalls API — CPSC, NHTSA, FDA and USDA recalls, vehicle complaints and ratings, plus a VIN decoder.
- Y Combinator Companies, Batches & Founders — the YC directory with founders and social links, filterable by batch, industry and hiring status.
- Career Site Jobs API — jobs straight from Greenhouse, Lever, Ashby, Workable and 10+ other ATS career sites.
- Workday Jobs API — every posting on any Workday career site, with facets, search, posted dates and full descriptions.
- New Job Postings Monitor — new, closed and changed postings on the career sites you watch.
- Hiring Signals API — Open Roles & Hiring Surge by Company — one row per company per run: open roles, what opened and closed, department and seniority breakdowns, and a hiring-surge flag.
- Remote Jobs API — RemoteOK, Remotive, We Work Remotely, Himalayas, Jobicy and more in one schema, deduplicated.
- Shopify Products API — any Shopify store's catalogue, variants, prices and stock signals.
- WooCommerce Products API — any WooCommerce store's catalogue, prices, variants and stock through its public Store API.
- Shopify App Store API — Shopify App Store listings by category, collection or developer: pricing plans, ratings and merchant reviews.
- Luma Events API — upcoming Luma events by city, category or calendar: dates, venue, price, capacity and organiser calendar, no host names.
- Shopify Store Monitor — price drops, sales, restocks, sell-outs and new products on any Shopify store, one row per change.
- Public Tenders API — EU TED, UK Find a Tender and Contracts Finder notices by keyword, CPV code, country, stage and deadline.
- Nonprofit & IRS 990 Lookup API — search US nonprofits and get EIN, NTEE code and multi-year Form 990 financials.
- OpenStreetMap Places API — businesses and points of interest by category and area from OpenStreetMap: name, address, coordinates, website, phone, opening hours.
Apps & games
- App Store & Google Play Reviews API — reviews from both stores with ratings, versions and developer replies.
- App Store Top Charts & App Search API — Apple top charts by country and genre, plus app search and details.
- App Store Keyword Rank Tracker — where any app ranks for any keyword on the App Store and Google Play, with rank changes and ASO suggestions.
- Steam Reviews API — Steam reviews with playtime, helpfulness and game details.
- Steam Game Data API — prices, tags, review scores, live player counts and top charts.
- Sports Scores & Schedules API — scores, schedules, standings, teams and headlines for the NFL, NBA, MLB, NHL, soccer and more, no key.
- App Store Monitor — App Store and Google Play listings watched between runs: new versions with release notes, price, rating and listing changes, one row per change.