Finnhub Market Data
Quotes, price history, company fundamentals, ETF holdings, earnings, analyst ratings, insider transactions, dividends, splits and news — from Finnhub.
Built from Finnhub's own OpenAPI document (finnhub.io/static/swagger.json, 116 paths, fetched
2026-08-17). Every operation and every required parameter below is transcribed from that spec.
Get a key
- Sign up at https://finnhub.io/dashboard — the free tier allows 60 calls/minute.
- Store it once: Credentials → New → API Key, name it (e.g.
Finnhub), paste the key. - Name that credential on the task:
"credentialName": "Finnhub".
There is no apiKey input. The key lives in the vault and is sent as the X-Finnhub-Token header,
so it never appears in a URL, a workflow, an export or the activity log.
Operations
| operation | returns | required |
|---|---|---|
quote |
current price, change, day range | symbol |
candles |
OHLCV history | symbol, from, to (+ resolution) |
profile |
company profile: industry, market cap, exchange | symbol |
metrics |
fundamentals — margins, ratios, per-share figures | symbol |
etf_profile |
ETF facts: expense ratio, AUM, category | symbol |
etf_holdings |
what the ETF actually holds, with weights | symbol |
earnings |
reported vs estimated EPS by quarter | symbol |
recommendations |
analyst buy/hold/sell counts over time | symbol |
price_target |
analyst target high/low/mean | symbol |
insider_transactions |
insider buys and sells | symbol |
dividends |
dividend history | symbol, from, to |
splits |
split history | symbol, from, to |
company_news |
news for one company | symbol, from, to |
market_news |
market-wide headlines | category |
search |
find a symbol by name | q |
symbols |
every symbol on an exchange | exchange |
raw |
any of the other ~100 endpoints | path |
candles takes UNIX timestamps for from/to; the news and corporate-action operations take
YYYY-MM-DD. That difference is Finnhub's, not this tool's.
Examples
What an ETF holds:
{"name":"holdings","tool":"finnhub","credentialName":"Finnhub",
"properties":{"operation":"etf_holdings","symbol":"SPY"}}
A quote, and a year of daily candles:
{"properties":{"operation":"quote","symbol":"AAPL"}}
{"properties":{"operation":"candles","symbol":"AAPL","resolution":"D","from":"1754006400","to":"1785542400"}}
Output
result— Finnhub's JSON response, verbatimstatus— the HTTP status code
401 means the key is wrong, 403 means the endpoint is not in your plan, 429 means you passed
60 calls/minute. Finnhub's own message is passed through, not swallowed.
Notes
- Intraday resolutions, institutional data and several international exchanges are paid tiers.
- Free-tier fundamentals cover US listings; for European and Asian symbols use the
eodhdtool. - Verified: validation and auth wiring tested live (a bogus key returns
401 Invalid API key.). No 200-level response has been recorded — that needs a real key.
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: quote, candles, profile, metrics, company_news, market_news, earnings, etf_profile, etf_holdings, dividends, splits, recommendations, price_target, insider_transactions, search, symbols, raw |
symbol |
string | no | — | Ticker: AAPL, SPY (ETF), BMW.DE (international). Required by most operations. |
from |
string | no | — | Start of the range. candles: a UNIX timestamp; news/dividends/splits: YYYY-MM-DD. |
to |
string | no | — | End of the range, same format as from. |
resolution |
string | no | D |
candles only: 1, 5, 15, 30, 60, D, W, M. Intraday resolutions need a paid plan. |
metric |
string | no | all |
metrics only: Finnhub accepts all, which is the default. |
category |
string | no | general |
market_news only: general, forex, crypto or merger. |
q |
string | no | — | search only: the text to look up. |
exchange |
string | no | — | symbols: the exchange code (US, L, DE …). search: optional filter. |
limit |
string | no | — | Row cap where the endpoint supports one. |
query |
string | no | — | Any extra query parameters as a JSON object string, e.g. {"skip": 20}. |
path |
string | no | — | raw only: a path from Finnhub's docs, e.g. /crypto/candle. The escape hatch for the 100 endpoints this tool does not name. |