REST API · v2.0
Build with 30,000+ assets.
Programmatic access to live market caps, historical data, and per-asset fundamentals. Every account includes a free key with the top 100 assets. Upgrade for the full dataset.
What you get
Built for builders.
Stable JSON, predictable schema, free tier on every account. The data behind assetmarketcap.com, served via REST.
X-API-Key header or ?api_key= query param.Retry-After header on limit; resets on the first.Authentication
One key, two delivery options.
All endpoints require an API key. Pass it either in a header (recommended for server-side calls) or as a query string parameter (useful for quick browser tests).
# Header (recommended) curl -H "X-API-Key: YOUR_API_KEY" "https://assetmarketcap.com/API/daily" # Query string (quick browser tests) curl "https://assetmarketcap.com/API/daily?api_key=YOUR_API_KEY"
Endpoints
Four endpoints, one consistent shape.
All responses are JSON. Errors come back as {"detail": "..."} with the appropriate status code. Click the language tabs to switch between curl, Python, and JavaScript.
/API/daily
Free
Basic daily market-cap table. Top 100 assets by market cap, refreshed every 30 minutes. Same payload that powers the homepage's first paint. Available to every API key including the free tier.
curl -H "X-API-Key: YOUR_API_KEY" \ "https://assetmarketcap.com/API/daily"
import requests r = requests.get( "https://assetmarketcap.com/API/daily", headers={"X-API-Key": "YOUR_API_KEY"}, timeout=15, ) r.raise_for_status() data = r.json() # Top 5 by market cap for row in data["data"][:5]: print(row["Rank"], row["Name"], row["MarketCap"])
const resp = await fetch("https://assetmarketcap.com/API/daily", { headers: { "X-API-Key": "YOUR_API_KEY" }, }); if (!resp.ok) throw new Error("HTTP " + resp.status); const data = await resp.json(); console.log(data.data.slice(0, 5));
{
"metadata": {
"asOf": "2026-05-28T14:30:00Z",
"goldUsdPerOz": 4695.6,
"silverUsdPerOz": 88.38,
"btcUsd": 79426.0,
"marketCapTotal": 1156015937021427.0,
"totalAssets": 100
},
"data": [
{
"Rank": 1, "Ticker": "real-estate", "Name": "Real Estate",
"AssetType": "Commodity", "MarketCap": 634900000000000.0,
"Price": 302353.57, "24HrChange": null,
"CirculatingSupply": 2099859454.0
},
...
]
}
/API/tickers
Paid + Pro
List every ticker symbol with a corresponding per-asset history file. Useful for caching the ticker universe locally before iterating /API/assets/{ticker} lookups.
curl -H "X-API-Key: YOUR_API_KEY" \ "https://assetmarketcap.com/API/tickers"
import requests r = requests.get( "https://assetmarketcap.com/API/tickers", headers={"X-API-Key": "YOUR_API_KEY"}, ) r.raise_for_status() tickers = r.json()["tickers"] print(len(tickers), "tickers available")
{
"count": 38873,
"tickers": ["AAPL", "MSFT", "GOOG", "BTC-USD", ...]
}
/API/pro/daily
Paid + Pro
Full daily table — ~30,000 assets across stocks, crypto, currencies, and commodities. Same schema as /API/daily but uncapped. Payload is ~20 MB; the response is gzip-compressed automatically.
# --compressed lets curl negotiate gzip curl --compressed -H "X-API-Key: YOUR_API_KEY" \ "https://assetmarketcap.com/API/pro/daily" | jq '.data | length'
import requests, pandas as pd r = requests.get( "https://assetmarketcap.com/API/pro/daily", headers={"X-API-Key": "YOUR_API_KEY"}, timeout=60, ) df = pd.DataFrame(r.json()["data"]) # Top 10 by market cap print(df.nlargest(10, "MarketCap")[["Rank", "Name", "MarketCap"]])
/API/assets/{ticker}
Paid + Pro
Per-asset historical OHLCV + fundamentals. Returns the full price history (daily, going back to 2010 or earlier where available) plus current fundamentals: market cap, shares outstanding, exchange, sector, country.
curl -H "X-API-Key: YOUR_API_KEY" \ "https://assetmarketcap.com/API/assets/AAPL"
import requests, pandas as pd ticker = "AAPL" r = requests.get( f"https://assetmarketcap.com/API/assets/{ticker}", headers={"X-API-Key": "YOUR_API_KEY"}, ) asset = r.json() prices = pd.DataFrame(asset["Prices"]) prices["Date"] = pd.to_datetime(prices["Date"]) print(prices.tail())
{
"Ticker": "AAPL",
"Name": "Apple Inc.",
"AssetType": "Company",
"Fundamentals": {
"MarketCap": 3992100000000,
"SharesOutstanding": 14776353000,
"Sector": "Technology",
"Country": "United States"
},
"Prices": [
{"Date": "2000-01-03", "Open": 0.999, "High": 1.005, "Low": 0.908, "Close": 0.999, "Volume": 535796800},
...
]
}
Access & rate limits
Pay only for what you call.
Every account gets a free key and 1,000 calls a month. Need more? Pick a plan; switch any time.
Endpoint access by tier
| Endpoint | Free | Paid API | Paid API + Pro |
|---|---|---|---|
GET /API/daily | ✓ | ✓ | ✓ |
GET /API/tickers | — | — | ✓ |
GET /API/pro/daily | — | — | ✓ |
GET /API/assets/{ticker} | — | — | ✓ |
Monthly call limits
| Plan | Calls / month | Price |
|---|---|---|
| Free (every account) | 1,000 | $0 |
| Starter | 10,000 | $19.99/mo · $99.99/yr |
| Growth | 100,000 | $49.99/mo · $499.99/yr |
| Scale | 1,000,000 | $99.99/mo · $999.99/yr |
| Enterprise | Custom | Contact us |
When you hit your monthly limit, requests return HTTP 429 with a Retry-After header pointing at the next reset. Counts reset on the first of each calendar month.
Errors
Standard HTTP codes.
All errors return {"detail": "..."} JSON with the appropriate status code.
| Status | Meaning | Common cause |
|---|---|---|
400 | Bad request | Invalid ticker format, malformed query |
401 | Unauthenticated | Missing or unknown API key |
402 | Payment required | Endpoint requires a paid plan you don't have |
404 | Not found | Ticker doesn't have a per-asset file yet |
429 | Rate limited | Monthly call cap reached. See Retry-After |
5xx | Server error | Transient. Retry with exponential backoff. |
Get started
Pick a plan, get a key.
Subscribe in one click via Stripe. Switch plans any time from your account page.
API access
Register for your free API key (top 100 assets included). Subscribe for the full 30k+ dataset, fundamentals, and historical data.
| Feature | Free | Starter | Growth | Scale |
|---|---|---|---|---|
| Top 100 assets | ✓ | ✓ | ✓ | ✓ |
| Full 30k+ asset list | ✗ | ✓ | ✓ | ✓ |
| Fundamentals | ✗ | ✓ | ✓ | ✓ |
| Historical data | ✗ | ✓ | ✓ | ✓ |
| Calls / month | 1,000 | 10k | 100k | 1M |
| Price | Free | $19.99/mo | $49.99/mo | $99.99/mo |
Interactive
Try it in the browser.
Auto-generated from the FastAPI OpenAPI schema. Click "Try it out" on any endpoint, paste your key, and fire a real request — no Postman setup needed.
Not financial advice. API data is provided for informational purposes only.