Massive (formerly Polygon.io)
Massive (formerly Polygon.io)
REST and WebSocket APIs for stocks, options, forex, and crypto with fundamentals and market news.
Coverage
US stocks (all US exchanges, dark pools and OTC; data since 2003), options (since 2014), indices (S&P, Dow Jones, FTSE and more; since 2023), forex and crypto pairs (since 2009) and futures (CME, CBOT, NYMEX, COMEX; since 2017). Free Stocks Basic: all US stock tickers, end-of-day data and minute aggregates, 2 years of history, 5 calls/min, individual use. Paid stock plans add 5 to 20+ years of history, delayed or real-time data, and financials & ratios (Stocks Advanced).
Verdict
Free Stocks Basic (5 calls/min, 2 years, end-of-day and minute aggregates, individual use) is enough to try the API and run small US-stock backtests. Tick-level data, longer history and real-time need a paid plan.
Get the free weekly email
Free weekly email of newly verified free data. Unsubscribe by emailing us.
By entering your email and clicking Subscribe, you agree to receive the Signal Lab weekly email from Quantum Data Technologies Ltd., 3200-650 West Georgia Street, Vancouver, BC V6B 4P7, Canada (signal-lab@qdt.ai). You can unsubscribe at any time: reply "unsubscribe" to any email or write to signal-lab@qdt.ai. See our Privacy Policy.
Use in your agent
Load Massive (formerly Polygon.io) daily bars into pandas and Parquet. Checked against the provider's documentation on Oct 29, 2026.
Access
- Sign up or log in at massive.com and copy your API key from the Dashboard (the free plan is Stocks Basic).
- Send the key as Authorization: Bearer <key> or as ?apiKey=<key>. Keep it out of code; the snippet reads MASSIVE_API_KEY.
Request
curl -H "Authorization: Bearer $MASSIVE_API_KEY" 'https://api.massive.com/v2/aggs/ticker/AAPL/range/1/day/2026-09-29/2026-10-28?adjusted=true&sort=asc&limit=120'Format
JSON: ticker, adjusted, queryCount, resultsCount, status, results (o, h, l, c, v, vw, n, t) and next_url when there is another page. t is the Unix millisecond start of the bar.
Load into pandas and Parquet
Needs Python 3 with requests, pandas and pyarrow.
"""Massive (formerly Polygon.io) daily bars for one stock -> pandas -> Parquet. Free key required."""
import os
import requests
import pandas as pd
session = requests.Session()
session.headers["Authorization"] = f"Bearer {os.environ['MASSIVE_API_KEY']}" # key from your Massive dashboard
url = "https://api.massive.com/v2/aggs/ticker/AAPL/range/1/day/2025-01-01/2026-10-28"
params = {"adjusted": "true", "sort": "asc", "limit": 50000}
rows = []
while url:
r = session.get(url, params=params, timeout=30)
r.raise_for_status()
body = r.json()
rows += body.get("results", [])
url, params = body.get("next_url"), None # next_url already carries the query; the header carries the key
df = pd.DataFrame(rows).rename(columns={"o": "open", "h": "high", "l": "low", "c": "close",
"v": "volume", "vw": "vwap", "n": "transactions"})
df["date"] = pd.to_datetime(df.pop("t"), unit="ms", utc=True) # t = start of the bar, Unix milliseconds
df.to_parquet("massive_aapl_daily.parquet", index=False)
print(len(df), "rows", df["date"].min(), "to", df["date"].max())Not run: it needs a personal API key.
Limits
- Free Stocks Basic: 5 API calls a minute, 2 years of history, end-of-day data.
Quirks
- Results are split-adjusted by default; pass adjusted=false for raw prices.
- limit caps the base aggregates used to build the bars (default 5,000, maximum 50,000); follow next_url for more.
- Without a key the API answers HTTP 401 "API Key was not provided" (observed 2026-10-29).
Terms and attribution
- Stocks Basic is a personal-license plan. Massive's Individuals terms cover personal, individual and non-business use of products labeled Individual Use; business or commercial use falls under its Businesses terms and plans.
Sources
- https://massive.com/docs/rest/quickstart: โVisit your Dashboard to find your API key.โ
- https://massive.com/pricing: โ5 API Calls / Minuteโ
- https://massive.com/pricing: โ2 Years Historical Dataโ
- https://massive.com/pricing: โEnd of Day Dataโ
- https://massive.com/legal/terms: โThe Massive for Individuals Terms of Service apply to your personal, individual, and non-business use of any service or product labeled for "Individual Use".โ
- https://massive.com/docs/rest/stocks/aggregates/custom-bars: โMax 50000 and Default 5000.โ
- https://massive.com/docs/rest/stocks/aggregates/custom-bars: โThe Unix millisecond timestamp for the start of the aggregate window.โ
Information and education only. Not financial, investment, legal or tax advice. Listings can be inaccurate, incomplete or out of date and are provided "as is". Free tiers, limits and licenses belong to each provider and can change, so check the provider's own terms before you rely on them. Terms & Disclaimer