DEV Community

Ken-Mutisya
Ken-Mutisya

Posted on

Build a Stock Dashboard from Three Keyless Public Data Feeds

Every time I start a finance side project I hit the same wall. The data I want is public, but it lives behind finance sites that fight scrapers or data plans that bundle fifty things I will never touch. Over the past week I packaged three slices of that data as plain JSON, no key and no browser. Together they cover most of what a small stock dashboard needs: price history, company fundamentals, and the forward earnings calendar.

Here is how each one works and why keyless HTTP keeps the whole thing cheap.

1. Price history (OHLCV)

Nasdaq exposes keyless JSON behind its quote pages. Send a normal User-Agent and you get daily open, high, low, close and volume back as rows.

GET https://api.nasdaq.com/api/quote/AAPL/historical?assetclass=stocks&fromdate=2025-01-01&todate=2026-06-30
Enter fullscreen mode Exit fullscreen mode

One row per trading day, ready to drop into a chart or a backtest. No login, no proxy. The dates come back in a US format, so normalize them once at the edge or every downstream join will hurt.

2. Company fundamentals (SEC XBRL)

The SEC publishes every public company's reported financials as structured XBRL, free and keyless. You resolve a ticker to its CIK, then pull the company facts.

GET https://www.sec.gov/files/company_tickers.json          # ticker to CIK
GET https://data.sec.gov/api/xbrl/companyfacts/CIK0000320193.json
Enter fullscreen mode Exit fullscreen mode

That second call returns revenue, net income, assets, EPS and dozens more line items, each with the filing it came from. The one rule the SEC asks for is a descriptive User-Agent with a contact, so set that and you are a good citizen.

3. Earnings calendar

Nasdaq again, this time the calendar endpoints. Earnings and dividends are per day, splits are one list, IPOs are per month.

GET https://api.nasdaq.com/api/calendar/earnings?date=2026-06-30
Enter fullscreen mode Exit fullscreen mode

Each earnings row carries the symbol, report date, whether it reports pre market or after hours, the EPS estimate and last year's number for context. Filter it down to a watchlist and you have the feed a Discord bot needs to ping before a big report.

Why keyless matters

The moment a scraper needs a headless browser plus a residential proxy, the per run cost balloons and a thin data feed goes underwater. All three feeds above are pure HTTP over JSON, so a run costs almost nothing and the margin works. The tradeoff is that an endpoint can quietly return zero rows on a bad day, so always sanity check the row count against a date or ticker you know is busy before you trust the output.

If you would rather not run it yourself

I packaged each feed as a small pay per use scraper on Apify:

First rows of every run are free, so you can check the shape before you pay. They are part of a growing set of keyless public data tools I keep shipping, and counting.

Either way the takeaway is the same. This data is public. With the right endpoint it is also clean data.

Top comments (0)