Polygon.io Market Data
Market data from Polygon.io — price history, latest prices, company facts, news, corporate actions, fundamentals and market hours — for stocks, options, forex and crypto.
Every operation below was checked against Polygon's live OpenAPI spec and then actually called. Results as of 2026-08-17 on a free-tier key are in the last column.
Get a key
- Sign up at https://polygon.io and copy your key from https://polygon.io/dashboard/api-keys.
- Store it once: Credentials → New → API Key, name it (e.g.
Polygon), paste the key. - Name that credential on every polygon task:
"credentialName": "Polygon".
There is no apiKey input. This tool cannot work without a key, and a key typed into a
workflow travels into its exports, its activity log, and any repository the workflow is committed
to. The credential is the only way in, and the vault hands the key to the tool at execution.
A task with no credential is rejected when the workflow is validated — before it can run and fail.
The free tier covers historical data with a 5 calls/minute limit. Real-time endpoints
(snapshot, last_trade, last_quote) need a paid plan and answer 403 NOT_AUTHORIZED without one.
Operations
| operation | what it returns | required | free tier |
|---|---|---|---|
bars |
OHLCV price bars over a date range | ticker, from, to (+ timespan, multiplier) |
✅ 200 |
previous_close |
previous trading day's open/high/low/close | ticker |
✅ 200 |
daily_open_close |
one day's open, close, high, low, after-hours | ticker, date |
✅ 200 |
grouped_daily |
every US stock's daily bar for one date | date |
✅ 200 (12,500 rows) |
snapshot |
current price snapshot for one ticker | ticker |
🔒 paid |
snapshot_all |
snapshot across all US tickers | — | 🔒 paid |
last_trade |
most recent trade | ticker |
🔒 paid |
last_quote |
most recent NBBO quote | ticker |
🔒 paid |
ticker_details |
company profile: name, market cap, SIC, address | ticker |
✅ 200 |
search_tickers |
find symbols by name or text | ticker (as search text) |
✅ 200 |
news |
recent articles, optionally filtered by ticker | — | ✅ 200 |
dividends |
declared/ex/pay dates and amounts | — | ✅ 200 |
splits |
historical and announced splits | — | ✅ 200 |
financials |
fundamentals from company filings | — | ✅ 200 |
market_status |
whether the market is open right now | — | ✅ 200 |
market_holidays |
upcoming market holidays and half-days | — | ✅ 200 |
raw |
any other Polygon path (~130 more endpoints) | path |
✅ 200 |
Tickers
AAPL (stock) · X:BTCUSD (crypto) · C:EURUSD (forex) · O:SPY251219C00650000 (option) ·
I:SPX (index). The colon-prefixed forms are passed through unchanged.
Other inputs
timespan—minute,hour,day,week,month,quarter,year(defaultday)multiplier— bar size multiplier, e.g.5withtimespan=minute(default1)limit— row cap;barsallows up to 50,000, reference endpoints default to 10query— any extra query parameters as a JSON object string, e.g.{"sort":"asc","adjusted":"true"}path—rawonly: a path from Polygon's docs, e.g./v3/snapshot/options/AAPL
Examples
Ten days of daily bars:
{"name":"prices","tool":"polygon","credentialName":"Polygon",
"properties":{"operation":"bars","ticker":"AAPL","from":"2026-08-03","to":"2026-08-14"}}
credentialName is a field on the TASK — not a property, and never a {{...}} variable. The
workflow holds the credential's NAME; the vault holds the key; the two meet inside the running task.
Five-minute bars for one session:
{"properties":{"operation":"bars","ticker":"TSLA","multiplier":"5","timespan":"minute",
"from":"2026-08-14","to":"2026-08-14","limit":"200"}}
Three latest headlines for a ticker:
{"properties":{"operation":"news","ticker":"AAPL","limit":"3"}}
Bitcoin's previous close, via the escape hatch:
{"properties":{"operation":"raw","path":"/v2/aggs/ticker/X:BTCUSD/prev"}}
Output
result— the API's JSON response, verbatimstatus— the HTTP status code
Errors carry Polygon's own message plus a hint: 401 → check the key, 403 → not in your plan,
429 → rate limit (5/min on free). The response body is passed through rather than swallowed, so
the reason is in the log instead of a bare status number.
Notes
- The key is sent as
Authorization: Bearer, not?apiKey=, so it stays out of URLs and proxy logs. Polygon accepts both. api.polygon.ioandapi.massive.comare the same service (Polygon rebranded to Massive); this tool usesapi.polygon.io, which remains live.- Free-tier data is end-of-day; intraday
barsare available but delayed. - Rate limit: at 5 calls/minute a loop over many tickers needs a delay between steps.
Version history
- 3.0.0 — the key comes from an API Key credential only; the
apiKeyinput is gone. 2.0.0 declaredcredentialBased: falsewhile its executor read the credential, so the vault could never reach it and the key had to be written into the workflow. - 2.0.0 — rewritten against the live spec. The 1.0.0 tool was generated from a decade-old
Polygon spec: 5 of its 6 operations no longer existed (
/v1/companiesanswered a bare 404), so it could not succeed. Adds credential support, header auth, 16 checked operations andraw.
Publishes
The keys a later task may reference as {{taskName.key}}. Referencing anything not listed here resolves to nothing at run time.
resultstatus
Input Properties
Every property this tool accepts, from its own tool.iml.
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
operation |
string | yes | — | One of: bars, previous_close, daily_open_close, grouped_daily, snapshot, snapshot_all, last_trade, last_quote, ticker_details, search_tickers, news, dividends, splits, financials, market_status, market_holidays, raw |
ticker |
string | no | — | Symbol: AAPL (stock), X:BTCUSD (crypto), C:EURUSD (forex), O:SPY251219C00650000 (option). On news/dividends/splits/financials it filters by ticker; on search_tickers it is the search text. |
multiplier |
string | no | 1 |
bars: size of the timespan multiplier, e.g. 5 with timespan=minute for 5-minute bars. |
timespan |
string | no | day |
bars: minute, hour, day, week, month, quarter or year. |
from |
string | no | — | bars: start date YYYY-MM-DD (or epoch millis). |
to |
string | no | — | bars: end date YYYY-MM-DD (or epoch millis). |
date |
string | no | — | daily_open_close / grouped_daily: the trading date, YYYY-MM-DD. |
limit |
string | no | — | Max rows to return (bars allows up to 50000; most reference endpoints default to 10). |
query |
string | no | — | Any extra query parameters as a JSON object string, e.g. {"sort":"asc","adjusted":"true"}. |
path |
string | no | — | raw only: an API path from Polygon's docs, e.g. /v3/snapshot/options/AAPL. The escape hatch for the ~130 endpoints this tool does not name. |