Free returns data API

The same JSON that powers this site, served as static files. No key, no signup. Fair use — use it, cite it, build on it.

Everything on returnsview is precomputed into plain JSON and served from our CDN. That means you can read it directly — from a script, a spreadsheet, or your own app — for free. Data refreshes once a day around 00:30 UTC after markets settle. A polite request: if you publish with it, link back to returnsview.com.

Base URL

https://returnsview.com/data

Endpoints

PathWhat it returns
/meta.jsonGeneration timestamp and coin count.
/coins.jsonArray of all coins with headline returns (24h/7d/30d/YTD/1y), rank, market cap.
/coins/{id}.jsonFull history for one coin: monthly/quarterly/yearly returns matrices, weekly & daily, seasonality, and stats. id is the CoinGecko id, e.g. bitcoin.
/stocks.jsonArray of all stocks, ETFs and world indices with headline returns and index-membership flags.
/stocks/{ticker}.jsonFull history for one ticker, e.g. AAPL, GSPC (S&P 500 index), AZN-L (LSE).
/cycles.jsonBitcoin four-year halving cycles: growth-of-$1 series per coin per cycle.
/recaps.jsonPer-month breadth, index moves, biggest movers and a written recap for every month on record.
/news.jsonLatest crypto and markets headlines.

The id and ticker values are exactly the last path segment of any asset page — e.g. /coin/solana → /data/coins/solana.json.

Key fields

Returns are percentages. Matrices are keyed by year; monthly is a 12-slot array (Jan…Dec), quarterly 4, weekly 52 (ISO week), with null where there's no data. Each has a parallel _val grid of period-end closes in the asset's currency.stats holds ret_24h/7d/30d/ytd/1y, best/worst month, and the history span.

Examples

Shell:

curl https://returnsview.com/data/coins/bitcoin.json | jq .stats

Python:

import requests
d = requests.get("https://returnsview.com/data/stocks/AAPL.json").json()
print(d["name"], d["stats"]["ret_1y"], "% (1y)")

Google Sheets — import Bitcoin's record as rows (IMPORTDATA returns the whole file, not one field):

=IMPORTDATA("https://returnsview.com/data/coins/bitcoin.json")

JavaScript (browser or server — CORS is enabled):

const d = await (await fetch("https://returnsview.com/data/coins.json")).json();
const top = d.sort((a, b) => b.ret_1y - a.ret_1y)[0];

Embeddable charts

If you want the chart rather than the numbers, every heatmap here can be iframed into your own page. No key, no script tag, and it rebuilds daily so the embed stays current without you touching it.

<iframe src="https://returnsview.com/embed/coin/bitcoin/"
        width="600" height="420"
        style="border:0;width:100%;max-width:600px"
        loading="lazy" title="Bitcoin monthly returns heatmap"></iframe>
<p style="font:12px/1.4 system-ui,sans-serif;margin:6px 0 0">Source:
  <a href="https://returnsview.com/coin/bitcoin/">Bitcoin monthly returns — returnsview</a></p>

Keep the credit paragraph outside the iframe. An iframe is a separate document, so the caption is the only part that lands in your page — it is what tells a reader where the figures came from. The Embed button on any asset page builds this snippet for you.

Notes & fair use