Developer API
Point-in-time US fundamentals. A source-checked API.
Company financials pulled from SEC filings, daily price data, and a research score for each stock — every number comes with a note on where it came from. The API is built for a repeatable research pipeline, not an ordered buy list. This is a separate research product from the rankings used in our videos and emails.
How people use it
Pull it, screen it, verify it.
Build a dependable daily research workflow in your own spreadsheet, script, or dashboard.
1 · PULL
Start with dated facts
Pull company financials exactly as they were filed with the SEC, plus a checked trailing-12-month summary, for whatever stocks you're tracking.
2 · SCREEN
Build your own view
Use the research score, how it ranks against other stocks, and what drove it, in your own dashboard, screener, or report.
3 · VERIFY
Know where each number came from
Every row shows the filing date and data source. Restricted or unverified vendor fields are omitted rather than substituted, with source attribution and terms links in its provenance metadata.
Want to see the exact response shape first? See a sample response or read the full technical spec.
Pricing
Free
$0/mo
No signup, no key, real live data
✓5-row teaser of today's ranked stock & crypto picks
✓Full live track record (win rate, avg return vs. S&P 500)
✓Docs explaining how the data is scored and sourced
✓SEC signals: fails-to-deliver spikes, 8-K material weakness flags, congressional trading
✓100 calls/day, no key required
Starter
$19/mo
7-day free trial
500 calls / day · cancel anytime
Everything in Free, plus
✓Company financials exactly as filed with the SEC
✓Quarterly numbers plus a checked trailing-12-month summary
✓Look up up to 25 stocks in one request
✓Filing dates and a note on where each number came from
✓Daily price history
✓500 calls / day
Pro
$29/mo
7-day free trial
2,000 calls / day · cancel anytime
Everything in Starter, plus
✓Current research score for every stock we cover
✓Look up research data for up to 25 stocks at once
✓See how each score ranks against other stocks, and what drove it
✓Stable symbol-sorted output, not an ordered buy list
✓SEC-derived ratios and earnings quality with filing dates
✓SEC Form 4 insider filing activity
✓2,000 calls / day
Ultra
$49/mo
7-day free trial
10,000 calls / day · cancel anytime
Everything in Pro, plus
✓Higher daily call limit across the whole API
✓New research fields as we add them
✓Historical archive and export access, once those are live
✓10,000 calls / day
Want the full details? See every endpoint by tier and a real sample response below.
Every paid plan includes a 7-day free trial \— your card is not charged until day 8. Cancel anytime from your Stripe receipt or email top5stocksdaily@gmail.com. No long-term contract.
Endpoints, fields, and limits may change over time. Some paid endpoints are new and may not have much history yet.
Endpoints
This is a separate research product from the site's rankings. Full technical spec: /api/v1/openapi.json (OpenAPI 3.1, importable into Postman/codegen)
Free — no key, no signup (100 calls/day, 10/min)
/api/v1/stocks/public.json
5-row teaser of today's ranked stock picks
/api/v1/undervalued/public.json
5-row teaser of the value-screen picks
/api/v1/generational/public.json
5-row teaser of the long-hold quality screen
/api/v1/performance/cumulative.json
Full live track record: win rate and avg return vs. the S&P 500
/api/v1/performance.json
Win rates, avg returns, and S&P 500 comparison for every strategy
/api/v1/performance/history.json
Full pick-by-pick history with entry/exit returns
/api/v1/performance/symbols.json
Per-symbol win rates and average returns
/api/v1/metadata.json
Coverage universe, field list, and update schedule
Stock scores & research data
/api/v1/research/stocks/today.json
Every stock's research score, how it ranks, the financials behind it, and where the data came from
/api/v1/research/stocks/{symbol}.json
One stock's research score and a breakdown of its data sources
/api/v1/research/stocks/batch.json?symbols=AAPL,MSFT
Research data for a list of stocks you choose, up to 25 at once
/api/v1/fundamentals/{symbol}
A company's financials exactly as filed with the SEC, with filing dates
/api/v1/fundamentals/{symbol}/ttm
A checked trailing-12-month summary built from actual filings
/api/v1/fundamentals/batch?symbols=AAPL,MSFT
SEC financials for up to 25 stocks in one request
/api/v1/fundamentals/ttm/batch?symbols=AAPL,MSFT
TTM summaries for multiple stocks, with any missing ones flagged
/api/v1/fundamentals/coverage
How current and complete our SEC data is right now
/api/v1/bars/{symbol}/daily
Daily closing price history, with a note on where it's licensed from
Rows we can't fully verify against SEC and price sources are left out. This is research data, not a ranked buy list, trade instruction, or real-time feed.
Website and membership data stay separate
The main website, videos, emails, and member tools run on their own separate data feeds. Those aren't part of this Developer API and can't be accessed with a Developer API key.
This feed is built to stay stable and is always sorted alphabetically by ticker. It gives you a research score, how that score ranks, what drove it, and where the numbers came from — it doesn't give you a ranked buy/sell list or trade levels.
GET /api/v1/research/stocks/today.json
GET /api/v1/research/stocks/NVDA.json
GET /api/v1/research/stocks/batch.json?symbols=AAPL,MSFT,NVDA
| score | The overall research score — not a buy or sell signal |
| score_percentile_band | How this score compares to other stocks we cover |
| factor_attribution | A breakdown of what drove the score: quality, value, momentum, and where each piece came from |
| source_provenance | Which licensed sources fed into this row |
| price_source_capabilities | Details on the price data's licensing terms and how current it is |
This feed only shows current data — missing or outdated records are left out rather than filled in from another source. For batch requests, add a comma-separated symbols list (up to 25 tickers); results keep your requested order and flag anything missing.
Sample responses
Quick start
Every endpoint returns JSON, with your actual data inside the data field — for example response.data.stocks[0].symbol
To authenticate, send Authorization: Bearer YOUR_API_KEY. Docs/discovery endpoints don't need a key. Data endpoints follow your plan's daily limit: Starter 500/day, Pro 2,000/day, Ultra 10,000/day.
import requests
# Source-checked research feed (Pro)
headers = {"Authorization": "Bearer YOUR_API_KEY"}
payload = requests.get(
"https://top5stocks-api.top5stocks.workers.dev/api/v1/research/stocks/today.json",
headers=headers, timeout=15
).json()
for stock in (payload.get("data") or {}).get("stocks", []):
print(stock["symbol"], stock["score"], stock["score_percentile_band"])
print(stock["factor_attribution"])
# Point-in-time SEC lookup (Starter)
fundamentals = requests.get(
"https://top5stocks-api.top5stocks.workers.dev/api/v1/fundamentals/NVDA",
headers=headers, timeout=15
).json()
print(fundamentals.get("data"))
For a watchlist or dashboard, use one batch request instead of one request per symbol:
batch = requests.get(
"https://top5stocks-api.top5stocks.workers.dev/api/v1/fundamentals/batch?symbols=AAPL,MSFT,NVDA",
headers=headers, timeout=15
).json()
for row in (batch.get("data") or {}).get("records", []):
print(row["symbol"], row.get("latest_filed"))
const headers = { Authorization: "Bearer YOUR_API_KEY" };
const response = await fetch(
"https://top5stocks-api.top5stocks.workers.dev/api/v1/research/stocks/today.json",
{ headers }
);
const payload = await response.json();
const stocks = payload.data?.stocks ?? [];
stocks.forEach(stock => {
console.log(stock.symbol, stock.score, stock.score_percentile_band);
console.log(stock.factor_attribution);
});
This Developer API is REST-only.
Use /api/v1/research/stocks/today.json for the Pro research feed and
/api/v1/fundamentals/{symbol} for Starter SEC lookups.
Website and membership features run on a separate system from this Developer API and aren't covered by this documentation.
Errors & limits
Errors return JSON with an error code:
| Status | Error code | Meaning |
|---|---|---|
| 401 | invalid_or_missing_api_key | No key, or the key doesn't exist. Send Authorization: Bearer YOUR_API_KEY. |
| 401 | api_key_revoked | Key was revoked (usually a cancelled subscription). |
| 403 | insufficient_plan | Endpoint needs a higher plan. The response includes current_plan and required_plan. |
| 429 | rate_limit_exceeded | Per-minute burst limit hit. Honor the Retry-After header (60s). |
| 429 | daily_limit_exceeded | Daily call quota used up — resets at midnight UTC. |
Rate limits (daily limit / per-minute limit): Starter 500 & 30/min, Pro 2,000 & 60/min, Ultra 10,000 & 200/min. Free endpoints are open for reasonable use; unusually heavy traffic may get throttled.
Successful authenticated data responses include X-DailyLimit-Limit and X-DailyLimit-Remaining headers so you can track usage without extra calls.
Lost your key? Your API key is emailed at purchase. To confirm which keys exist for your email:
curl -X POST https://top5stocks-api.top5stocks.workers.dev/api/v1/key/lookup \
-H "Content-Type: application/json" \
-d '{"email": "you@example.com"}'
Returns masked keys (never the full key) for the checkout email. Limited to 5 attempts per 15 minutes. Need the full key resent? Reply to your welcome email.
7-day first-charge refund. Request a full refund of an eligible first API charge within seven days by replying to your API-key email or contacting top5stocksdaily@gmail.com. Include the checkout email and the last four characters of the API key. One refund per customer; an issued refund cancels that API subscription and revokes its key.
Data & terms
This Developer API is a separate research product from the site. It pulls company financials straight from SEC filings and licensed daily price data, then turns that into research scores — with a note on where every number came from. It's not connected to the rankings used in our videos and emails.
- No uptime guarantee. Data refreshes daily on a best-effort basis. If a data source goes down, we leave that field out rather than guess at a value.
- Field availability: If we can't verify a number against a licensed source, we leave it out rather than substitute something else. Each endpoint only returns fields cleared for its plan. Where price data is included, the response notes exactly where it's licensed from.
- This isn't an alert or trading-execution feed. It's latest-only research data. Telegram alerts and real-time model events are a separate beta feature with their own availability.
- Scoring changes: The scoring formula and fields may change over time. Significant changes will be noted in the API changelog; build your integration to check the schema version and handle unexpected fields gracefully.
- Cancel anytime using the manage-subscription link in your Stripe receipt, or email top5stocksdaily@gmail.com. No long-term contract.
Disclaimer: This API provides source-checked factor research for educational and informational purposes only. It is not an ordered recommendation, financial advice, a recommendation to buy, sell, or hold any security, or personalized investment guidance. We are not a registered investment advisor. Past model performance does not guarantee future results. Use this data at your own risk. Full disclaimer →