Get the App

Scan with your phone to download. 30,000+ assets in your pocket.

App Store

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.

📊
Daily market caps
Top 100 in the free tier; full 30k+ on paid plans. Same payload that drives the homepage.
📈
Historical OHLCV
Per-ticker daily history going back to 2010 (and earlier where available). Open, high, low, close, volume.
🔑
Simple auth
One API key, two delivery options - X-API-Key header or ?api_key= query param.
🚦
Monthly rate limits
1k - 1M calls/mo across tiers. Soft 429 with a 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).

No account yet?
# 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.

GET /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
    },
    ...
  ]
}
GET /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", ...]
}
GET /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"]])
GET /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

EndpointFreePaid APIPaid API + Pro
GET /API/daily
GET /API/tickers
GET /API/pro/daily
GET /API/assets/{ticker}

Monthly call limits

PlanCalls / monthPrice
Free (every account)1,000$0
Starter10,000$19.99/mo · $99.99/yr
Growth100,000$49.99/mo · $499.99/yr
Scale1,000,000$99.99/mo · $999.99/yr
EnterpriseCustomContact 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.

StatusMeaningCommon cause
400Bad requestInvalid ticker format, malformed query
401UnauthenticatedMissing or unknown API key
402Payment requiredEndpoint requires a paid plan you don't have
404Not foundTicker doesn't have a per-asset file yet
429Rate limitedMonthly call cap reached. See Retry-After
5xxServer errorTransient. 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 / month1,00010k100k1M
Price Free $19.99/mo $49.99/mo $99.99/mo
Register for your Free API Key
View API documentation →

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.