Add real-time-style quote snapshots for US stocks to your product with a single request. This API returns a delayed (exchange-compliant) quote for each requested symbol, including last trade, bid/ask with sizes and timestamps, intraday change, rolling averages, 52-week extremes, market cap, and other reference fields.
API Endpoint
GET https://eodhd.com/api/us-quote-delayed
Description
The API returns delayed quote data for one or more US stock symbols. Batch requests are supported via a comma-separated list of tickers. Pagination is available for large lists. Responses are delivered in JSON by default, with CSV supported as well. The top-level JSON contains meta, data (a per-symbol object), and links for pagination. Field names and types are listed in the tables below.
- You can start with “DEMO” API key to test the data for a few tickers only: AAPL.US, TSLA.US, VTI.US, AMZN.US, BTC-USD.CC and EURUSD.FOREX. For these tickers, all of our types of data (APIs), including Real-Time Data, are available without limitations.
- Register for the free plan to receive your API key (limited to 20 API calls per day) with access to End-Of-Day Historical Stock Market Data API for any ticker, but within the past year only. Plus a List of tickers per Exchange is available.
- We recommend to explore our plans, starting from $19.99, to access the necessary type of data without limitations.
Request Example
https://eodhd.com/api/us-quote-delayed?s=AAPL.US&api_token=YOUR_API_TOKEN&fmt=json
curl --location "https://eodhd.com/api/us-quote-delayed?s=AAPL.US&api_token=YOUR_API_TOKEN&fmt=json"
$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => 'https://eodhd.com/api/us-quote-delayed?s=AAPL.US&api_token=YOUR_API_TOKEN&fmt=json', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', )); $data = curl_exec($curl); curl_close($curl); try { $data = json_decode($data, true, 512, JSON_THROW_ON_ERROR); var_dump($data); } catch (Exception $e) { echo 'Error. '.$e->getMessage(); }
import requests url = f'https://eodhd.com/api/us-quote-delayed?s=AAPL.US&api_token=YOUR_API_TOKEN&fmt=json' data = requests.get(url).json() print(data)
library(httr) library(jsonlite) url <- 'https://eodhd.com/api/us-quote-delayed?s=AAPL.US&api_token=YOUR_API_TOKEN&fmt=json' response <- GET(url) if (http_type(response) == "application/json") { content <- content(response, "text", encoding = "UTF-8") cat(content) } else { cat("Error while receiving data\n") }
Try it now (it's free)!
How to use it (YouTube)
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
api_token | Yes | string | Your API access token |
s | Yes | string | One or more symbols separated by commas |
page[limit] | No | integer | Number of symbols per page (defaults apply; max 100) |
page[offset] | No | integer | Offset for pagination |
Output Format
Field | Type | Description |
---|---|---|
meta.count | integer | Number of returned symbols |
data | object | A per-symbol object keyed by requested symbols |
links.next | string or null | URL to the next page of results, if available |
Output fields per symbol (data[symbol]):
Field | Type | Description |
---|---|---|
symbol | string | Instrument code, for example AAPL.US |
exchange | string | Exchange MIC code, for example XNAS |
isoExchange | string | ISO-style exchange identifier |
bzExchange | string | Human-readable exchange name |
otcMarket | string or null | OTC market name if applicable |
otcTier | string or null | OTC market tier if applicable |
type | integer | Instrument type code |
name | string | Company name |
companyStandardName | string | Standardized issuer name |
description | string | Short description of the instrument |
sector | string | GICS or internal sector mapping |
industry | string | GICS or internal industry mapping |
open | float | Session open |
high | float | Session high |
low | float | Session low |
bidPrice | float | Best bid price |
bidSize | integer | Best bid size |
bidTime | integer (ms) | Timestamp of last bid update (Unix ms) |
askPrice | float | Best ask price |
askSize | integer | Best ask size |
askTime | integer (ms) | Timestamp of last ask update (Unix ms) |
size | integer | Last trade size (if provided) |
lastTradePrice | float | Last trade price |
lastTradeTime | integer (ms) | Timestamp of last trade (Unix ms) |
volume | float | Cumulative session volume |
change | float | Absolute day change vs previous close |
changePercent | float | Percent day change vs previous close |
previousClosePrice | float | Previous close price |
previousCloseDate | string (YYYY-MM-DD HH:MM:SS) | Previous close date and time (UTC) |
fiftyDayAveragePrice | float | 50-day moving average price |
hundredDayAveragePrice | float | 100-day moving average price |
twoHundredDayAveragePrice | float | 200-day moving average price |
averageVolume | integer | Average daily volume |
fiftyTwoWeekHigh | float | 52-week high price |
fiftyTwoWeekLow | float | 52-week low price |
marketCap | integer | Market capitalization |
sharesOutstanding | integer | Shares outstanding |
sharesFloat | integer | Free float shares |
pe | float | Trailing price-to-earnings |
forwardPE | float | Forward price-to-earnings |
dividendYield | float | Dividend yield, percent |
dividend | float | Dividend per share (ttm or latest) |
payoutRatio | float | Dividend payout ratio, percent |
ethPrice | float | Extended hours last price (if available) |
ethVolume | integer | Extended hours volume |
ethTime | integer (ms) | Extended hours last trade time (Unix ms) |
currency | string | Trading currency (ISO alpha-3) |
issuerName | string | Issuer name |
primary | boolean | Whether this is the primary listing |
shortDescription | string | Short instrument description |
issuerShortName | string | Short issuer name |
timestamp | integer (s) | Snapshot timestamp (Unix seconds) |
Output Response Example
{
"meta": { "count": 2 },
"data": {
"AAPL.US": {
"symbol": "AAPL.US",
"exchange": "XNAS",
"name": "Apple Inc",
"open": 204.505,
"high": 207.88,
"low": 201.675,
"lastTradePrice": 203.32,
"lastTradeTime": 1754339340000,
"bidPrice": 203.28,
"bidSize": 4,
"bidTime": 1754339351000,
"askPrice": 203.32,
"askSize": 1,
"askTime": 1754339341000,
"volume": 73006032,
"change": 0.94,
"changePercent": 0.46,
"previousClosePrice": 202.38,
"fiftyDayAveragePrice": 205.28,
"hundredDayAveragePrice": 206.37,
"twoHundredDayAveragePrice": 221.53,
"fiftyTwoWeekHigh": 260.1,
"fiftyTwoWeekLow": 169.2101,
"marketCap": 3054287882360,
"pe": 30.710167,
"forwardPE": 25.974,
"dividendYield": 0.51,
"currency": "USD",
"timestamp": 1754339340
},
"TSLA.US": {
"symbol": "TSLA.US",
"exchange": "XNAS",
"name": "Tesla Inc",
"lastTradePrice": 245.11,
"lastTradeTime": 1754339340000,
"bidPrice": 245.09,
"askPrice": 245.12,
"volume": 51234567,
"change": -1.22,
"changePercent": -0.49,
"currency": "USD",
"timestamp": 1754339340
}
},
"links": { "next": null }
}
Live v2 vs Live v1
Live v2 for US Stocks gives you an extended quote snapshot per symbol: last trade (with event time), full bid/ask with sizes and their event times, plus richer context like rolling averages, 52-week high/low, market cap, P/E, dividends, and issuer fields. It’s focused on US equities and is ideal for quote tiles, watchlists, and any UI that needs bid/ask and timing detail.
Live v1 (“Live OHLCV Stock Prices API”) gives you the latest 1-minute OHLCV bar (open/high/low/close/volume) refreshed each minute. It doesn’t include bid/ask or trade event timestamps. It’s multi-asset (US and global stocks, Forex, crypto) and best when you only need the “last bar” for simple intraday charts or cross-asset tickers.
In short: choose Live v2 when you need quote-level details (bid/ask, last trade times, richer fundamentals) for US stocks; choose Live v1 when you need minute bars across multiple asset classes and don’t need quote microstructure.