TickerLayer Market Data API avatar

TickerLayer Market Data API

Pricing

from $2.00 / 1,000 price row (snapshot, quote, trade, bar, bond, market status)s

Go to Apify Store
TickerLayer Market Data API

TickerLayer Market Data API

Live quotes, snapshots, OHLCV history, symbol catalogs, market hours, bond yields and stock fundamentals for stocks, forex, crypto, indices, ETFs and commodities. One API key, one schema, no scraping.

Pricing

from $2.00 / 1,000 price row (snapshot, quote, trade, bar, bond, market status)s

Rating

0.0

(0)

Developer

TickerLayer

TickerLayer

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Stop scraping finance sites. This Actor pulls live and historical market data straight from the TickerLayer API: stocks, forex, crypto, indices, ETFs, commodities, government bond yields and stock fundamentals, all through one API key and one consistent schema.

No headless browser, no proxies, no HTML that breaks next week. Every run is a handful of clean JSON calls, and the rows land in your dataset ready for a sheet, a database or the next Actor in your pipeline.

  • Free to start. Every TickerLayer account gets 3,000 REST requests per month with no card. Sign up at tickerlayer.com/signup and copy the key from the dashboard.
  • Seven asset classes. Crypto, forex, stocks, indices, ETFs, commodities and bonds share the same symbol, quote, snapshot and OHLCV shapes.
  • Honest data positioning. TickerLayer serves derived, indicative, non-exchange-sourced market data through its own aggregation layer, with published data quality benchmarks instead of marketing claims.

What you can fetch

OperationWhat comes backTypical use
snapshotLast price, bid/ask, previous close, change and change percent per symbolWatchlists, dashboards, "how is X doing"
quoteLatest bid/ask with sizesSpread monitoring
last_tradeMost recent trade price, size and timeTick-level checks
previous_barPrevious daily bar, or the most recently settled 1m/5m/15m/1h/4h barClosing prices, deterministic bar audits
historyOHLCV bars between two dates at 1m, 5m, 15m, 1h, 4h or 1d, paged automaticallyBacktests, charts, exports
symbolsThe full catalog for one asset classDiscover what is covered before you ask for it
market_statusOpen/closed, current phase, next open and next close for a market or symbol, or a global overviewGating jobs on trading hours
market_sessionsPre-market, primary and post-market windows for one dayScheduling
market_holidaysHoliday calendar for a market and year, one row per holidayCalendar tables
bond_yieldLatest government bond yield with previous observation and change in basis pointsRates dashboards
fundamentalsCompany profile and share structure: float, shares outstanding, short interest, ownership, average volumesScreening US, DE, ES and FR stocks

Symbols

Symbol formats follow the TickerLayer conventions, so the same list works on the API and on this Actor:

Asset classFormatExamples
Cryptoconcatenated pairBTCUSD, ETHUSD, SOLUSD
Forexconcatenated pairEURUSD, GBPJPY, USDTRY
Commoditiesreference codeXAUUSD, XAGUSD, WTIUSD, BRENTUSD, NATGASUSD
Indicesbare code, no market prefixUS500, US100, US30, DE40, JP225, HK33, KOR200
ETFstickerSPY, QQQ, US500ETF
StocksCOUNTRY:TICKER, always with the ISO country prefixUS:KO, US:JNJ, DE:BMW, GB:HSBA, TR:THYAO, SA:2222
BondsCOUNTRY:TENORUS:10Y, US:2Y, US:3M, DE:10Y, UK:10Y

A bare stock ticker like KO is rejected before any request is made. Run the symbols operation, or browse tickerlayer.com/symbols, when you are not sure a symbol is covered.

Two ways to run it

Bring your own key (free on Apify). Put your TickerLayer API key in apiKey. Nothing is charged through Apify; your own TickerLayer plan and quota apply, starting with the free tier of 3,000 requests per month.

No key, pay per event. Leave apiKey empty and the Actor runs through a shared TickerLayer key. You pay from your Apify balance only for what you receive:

EventCharged forPrice
price-rowOne dataset row from snapshot, quote, last_trade, previous_bar, bond_yield, market_status, market_sessions or market_holidays$0.002 per row ($2 per 1,000)
history-requestOne history request, up to 5,000 OHLCV bars$0.01 per request
catalog-requestOne symbols request, the full catalog of an asset class$0.01 per request
fundamentals-rowOne company in a fundamentals result$0.005 per row

Error rows are never charged. Set a maximum total charge on the run and the Actor stops cleanly when it is reached; rows are only charged after they are saved to your dataset. Shared runs use at most 4 parallel requests. For large or recurring workloads your own key is far cheaper: see pricing.

Input

FieldTypeNotes
apiKeystring, secretYour TickerLayer API key. Stored encrypted by Apify and only ever sent to api.tickerlayer.com. Empty means a pay-per-event run through the shared key, see above.
operationenumOne of the operations above. Default snapshot.
assetClassenumcrypto, forex, stocks, indices, etfs, commodities. Default crypto. Ignored by bond_yield and fundamentals.
symbolsstring listOne symbol per line. Leave empty for symbols, for the market calendar operations, or to page a whole fundamentals market.
intervalenumBar size for history and previous_bar. Default 1d.
from, toYYYY-MM-DDUTC date range for history, inclusive. Defaults to the last 30 days.
maxBarsintegerCap on bars per symbol for history. Default 500. Larger ranges are paged 5,000 bars at a time.
sortenumasc (default) or desc for history.
marketstringMarket code for the calendar operations and fundamentals paging: US, DE, GB, JP, SA, or CRYPTO, FOREX, COMMODITIES.
dateYYYY-MM-DDDay for market_sessions. Defaults to today.
yearintegerYear for market_holidays. Defaults to the current year.
maxConcurrencyintegerParallel requests, 1 to 10. Default 4, which stays under the free-tier limit of 10 requests per second. Shared-key runs are capped at 4.
continueOnErrorbooleanDefault true: a symbol that fails becomes an error row and the run continues. Set false to fail the run on the first error.

Example input for a stock watchlist:

{
"apiKey": "px_your_key",
"operation": "snapshot",
"assetClass": "stocks",
"symbols": ["US:KO", "US:JNJ", "US:XOM", "DE:BMW", "GB:HSBA"]
}

Example input for one month of hourly gold bars:

{
"apiKey": "px_your_key",
"operation": "history",
"assetClass": "commodities",
"symbols": ["XAUUSD"],
"interval": "1h",
"from": "2026-08-01",
"to": "2026-08-31",
"maxBars": 1000
}

Output

Every row carries the same envelope, so one dataset can mix operations and still be filtered: operation, asset_class, symbol, fetched_at (ISO 8601, UTC) and source. The response fields follow, exactly as the API returns them, plus a time field with the event timestamp rendered as ISO 8601 where the API gives Unix milliseconds.

Snapshot row:

{
"operation": "snapshot",
"asset_class": "stocks",
"symbol": "US:KO",
"bid": 88.43,
"ask": 88.59,
"bid_size": 100,
"ask_size": 100,
"last_price": 88.52,
"last_size": 191,
"last_timestamp": 1789555131697,
"prev_close": 88.71,
"change": -0.19,
"change_percent": -0.2142,
"time": "2026-09-16T10:38:51.697Z",
"fetched_at": "2026-09-16T10:46:28.883Z",
"source": "tickerlayer"
}

History row (one per bar):

{
"operation": "history",
"asset_class": "forex",
"symbol": "EURUSD",
"interval": "1h",
"o": 1.15942,
"h": 1.15958,
"l": 1.15852,
"c": 1.15865,
"v": null,
"t": 1789344000000,
"time": "2026-09-14T00:00:00.000Z",
"fetched_at": "2026-09-16T10:46:42.995Z",
"source": "tickerlayer"
}

Bond yield row:

{
"operation": "bond_yield",
"asset_class": "bonds",
"symbol": "US:10Y",
"rate": 5,
"unit": "percent",
"date": "2026-09-15",
"prev_rate": 4.97,
"prev_date": "2026-09-14",
"change": 0.03,
"change_bps": 3,
"change_percent": 0.6036,
"time": "2026-09-15T00:00:00.000Z",
"fetched_at": "2026-09-16T10:46:43.581Z",
"source": "tickerlayer"
}

A symbol that fails is written as an error row instead of silently disappearing:

{
"operation": "snapshot",
"asset_class": "stocks",
"symbol": "US:NOPE",
"error_status": 404,
"error_message": "Not found: unknown symbol or route (symbol not available). Run the symbols operation or check https://tickerlayer.com/symbols",
"fetched_at": "2026-09-16T10:46:29.115Z",
"source": "tickerlayer"
}

The run also stores a summary in the key-value store under OUTPUT: job counts, rows written, the API requests used and every error with its status.

Requests and quota

The Actor makes one API request per symbol for the price operations, one per 5,000 bars for history, one per 100 symbols for fundamentals, and one per market or symbol for the calendar operations. The OUTPUT record shows the exact count after each run so you can plan against your monthly quota. Rate limits are respected: a 429 is retried with backoff, and a 403 means the plan does not include that asset class, so the row explains it instead of retrying.

Errors you may see

StatusMeaningWhat to do
401API key missing or invalidCopy the key again from the dashboard. The run stops immediately.
403The plan does not include this asset class or featureSee pricing.
404Unknown symbolCheck the format table above or run symbols.
429Rate limitLower maxConcurrency or upgrade.

Beyond this Actor

Data positioning

TickerLayer provides derived, indicative, non-exchange-sourced market data for informational and technical use. It is not a broker, exchange, trading venue, investment adviser or execution platform, and it does not provide official exchange data. Data may be delayed, estimated or differ from official market prices. You are responsible for checking that the data fits your use case, including licensing and redistribution. See the market data disclaimer.