ChimeraMiND Data
Home / Guides / Stock, Crypto & FX Quotes
Market data

One call for stock, crypto and FX prices — no API key, no brokerage account

Get latest price, daily change, day range, volume and optional daily history for stocks, ETFs, indices, crypto pairs and currency pairs from one mixed watchlist — as clean JSON rows.

A real watchlist is never one asset class. You hold a few stocks, an index ETF, some Bitcoin and you care about EUR/USD — and every data source covers only one of those, each with its own API key, symbol format and rate limit. This guide shows how to pull all of them in one call and get one consistently typed row per symbol, for $1 per 1,000 Quotes.

What you get

Give the tool a mixed list such as AAPL, ^GSPC, BTC-USD, ETH and EUR/USD. It detects each symbol's type, reads it from the right public source and returns the same fields for every row. A real row from a recorded run:

Archived example · 15 days old. This is a snapshot, not current data.run 1Icx9NCNAupKGjkNf · 2026-10-03
{
  "symbol": "AAPL",
  "resolvedSymbol": "AAPL",
  "assetType": "stock",
  "name": "Apple Inc.",
  "price": 333.69,
  "currency": "USD",
  "previousClose": 324.96,
  "changeAbs": 8.730000000000018,
  "changePct": 1.02,
  "dayHigh": 334.54,
  "dayLow": 330.61,
  "volume": 31878433,
  "marketState": null,
  "exchange": "NasdaqGS",
  "asOf": "2026-10-02T20:00:01.000Z",
  "source": "yahoo",
  "history": null,
  "error": null,
  "scrapedAt": "2026-10-03T15:06:55.200Z"
}
Field Meaning
price, currency Latest price and its currency
previousClose, changeAbs, changePct Prior close and the move since then
dayHigh, dayLow, volume Intraday range and volume (not published for FX)
assetType, source stock / crypto / fx, and which source answered
exchange, marketState, asOf Exchange name, session state and the quote's own timestamp
history Daily {date, close} points when Include price history is on

Where the numbers come from

Asset Source Freshness
Stocks, ETFs, indices (AAPL, ^GSPC, BRK-B) Yahoo Finance public chart data Typically 15–20 minutes delayed for US equities
Crypto (BTC, BTC-USD, ETHUSDT) Binance public market data, CoinGecko as fallback Close to live exchange price
FX (EUR/USD, USDJPY=X) Frankfurter (European Central Bank reference rates) Once per weekday — a reference rate, not a tradable quote

All sources are free, public and unauthenticated, which is why you don't need an account or key anywhere.

Step-by-step

  1. Open the tool and put one symbol per line in Symbols — stocks, crypto and FX can be mixed.
  2. Keep Asset type on auto. It treats EUR/USD, EURUSD and =X symbols as FX; -USD/USDT pairs and well-known coin tickers as crypto; everything else as a stock or index.
  3. Turn on Include price history and set History days (up to 365) if you need daily closes for a chart or a backtest.
  4. Click Start, then export to JSON, CSV or Excel — or schedule the run to snapshot your watchlist every day.

Run Stock, Crypto & FX Quotes on Apify →

Call it from code

import json
import os
from apify_client import ApifyClient

client = ApifyClient(os.environ["APIFY_TOKEN"]) run = client.actor("webdatatools/market-quotes").call(run_input=json.loads("{\n "symbols": [\n "AAPL",\n "BTC-USD",\n "EUR/USD"\n ],\n "assetType": "auto",\n "includeHistory": false\n}"))

for item in client.dataset(run["defaultDatasetId"]).iterate_items(): print(item)

import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN }); const run = await client.actor('webdatatools/market-quotes').call({ "symbols": [ "AAPL", "BTC-USD", "EUR/USD" ], "assetType": "auto", "includeHistory": false }); const { items } = await client.dataset(run.defaultDatasetId).listItems(); console.log(items);

curl -X POST "https://api.apify.com/v2/acts/webdatatools~market-quotes/run-sync-get-dataset-items" 
-H "Authorization: Bearer $APIFY_TOKEN"
-H "Content-Type: application/json"
-d '{"symbols":["AAPL","BTC-USD","EUR/USD"],"assetType":"auto","includeHistory":false}'

Recipes

Daily portfolio snapshot into a spreadsheet

Create a schedule in Apify that runs the tool every weekday after the US close, and connect the Google Sheets integration to the run's dataset. Each day appends one row per holding with price and daily change — a free, always-updating portfolio log.

Price alerts

Run it every 15 minutes on a schedule and attach a webhook. Your endpoint receives the dataset, compares changePct or price against your thresholds and sends the alert. Because the tool returns error instead of a wrong price when a symbol can't be resolved, a broken ticker never triggers a false alarm.

Feeding a trading model or an AI agent

history gives daily closes in a ready-to-use list. For an AI assistant, the tool is callable through the Apify MCP server: ask "how did my watchlist move today?" and the agent can run it and read the rows itself.

How much does it cost?

Apify planPer QuotePer 1,000
Free plan$0.001$1
Starter$0.0008$0.80
Scale$0.0007$0.70
Business$0.0006$0.60
Enterprise$0.0006$0.60
Enterprise+$0.0006$0.60

Primary event rates from a catalog snapshot; this is not the total price of a run. Additional charge events and Actor Start fees may apply; start fees can scale with memory. Check the Actor's Pricing tab on Apify for all events, conditions and current plan-specific rates, and set a maximum run budget before starting.

A 50-symbol watchlist is 50 results. Even refreshed hourly during US market hours, a month of snapshots stays in the low single dollars.

FAQ

Do I need a Yahoo Finance, Binance or CoinGecko API key?

No. Every source the tool reads is a free, public, unauthenticated endpoint. You only need an Apify account, and the free plan's monthly credit covers small watchlists.

Is the stock price real time?

No. US equity quotes from Yahoo Finance are typically delayed 15–20 minutes. Crypto prices come from Binance and are close to live. FX rows are the ECB's daily reference rates. Use a broker feed for anything you execute trades on.

Why are dayHigh, dayLow and volume empty for currency pairs?

The ECB reference-rate source publishes one rate per day per pair — there is no intraday range or volume to report, so those fields are null by design.

What if a coin isn't found?

Binance doesn't list every coin against USDT. The tool falls back to CoinGecko for a curated set of popular coins; anything outside both returns a clear error row instead of a guess.

Is this investment advice?

No. It retrieves publicly available market data for information only and does not recommend any trade.

Related tools

Workflows