Add extended, exchange-compliant quote snapshots for US stocks to your product with a single request. For each requested symbol the API returns the last trade with its event time, full bid and ask with sizes and timestamps, intraday change, rolling averages, 52-week extremes, extended-hours data, and reference fields such as market cap, P/E, dividends, and issuer details. Several symbols can be requested in one call.
- 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.
API Endpoint
GET https://eodhd.com/api/us-quote-delayed
The endpoint returns a delayed quote for one or more US stock symbols. The response is always JSON: a top-level object with meta, data (a per-symbol object), and links.
Parameters
api_token
string
required
s
string
required
fields
string
optional
Unknown or unsupported symbols are silently skipped: they do not appear in data, and meta.count reflects only the symbols that resolved. If none resolve, data is an empty array and meta.count is 0.
Request Example
https://eodhd.com/api/us-quote-delayed?s=AAPL.US&api_token=YOUR_API_TOKEN
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)
Response Format
The response is a JSON object with three top-level members: meta (result metadata), data (an object keyed by requested symbol), and links (reserved for pagination; currently always null). Each requested symbol is a key inside data, mapping to that symbol’s quote object.
{
"meta": { "count": 2 },
"data": {
"AAPL.US": {
"symbol": "AAPL.US",
"exchange": "XNAS",
"type": "STOCK",
"name": "Apple",
"open": 317.615,
"high": 328.73,
"low": 317.32,
"lastTradePrice": 327.5,
"lastTradeTime": 1784147349117,
"bidPrice": 327.43,
"bidSize": 520,
"bidTime": 1784147337000,
"askPrice": 327.5,
"askSize": 320,
"askTime": 1784147349000,
"volume": 60673507,
"change": 0,
"changePercent": null,
"previousClosePrice": null,
"previousCloseDate": "2026-07-14 17:00:00",
"marketCap": 4808073350000,
"pe": 38.118644,
"dividendYield": 0.0034,
"currency": "USD",
"timestamp": 1784161740
},
"MSFT.US": { "symbol": "MSFT.US", "exchange": "XNAS", "lastTradePrice": 512.09, "currency": "USD" }
},
"links": { "next": null }
}
meta and links
| Field | Type | Description |
|---|---|---|
| meta.count | integer | Number of symbols returned |
| links.next | string or null | Reserved for pagination; currently always null |
Per-symbol fields (data)
Each key inside data is a requested symbol. The value is the quote object below. Fields are grouped for readability; expand each section to see its fields.
Identification and classification
| Field | Type | Description |
|---|---|---|
| symbol | string | Instrument code, for example AAPL.US |
| exchange | string | Exchange MIC code, for example XNAS |
| isoExchange | string | ISO exchange identifier |
| bzExchange | string | Human-readable exchange name, for example NASDAQ |
| otcMarket | string | OTC market name; empty if not applicable |
| otcTier | string | OTC market tier; empty if not applicable |
| type | string | Instrument type, for example STOCK |
| name | string | Company name |
| companyStandardName | string | Standardized issuer name |
| description | string | Instrument description |
| sector | string | Sector classification |
| industry | string | Industry classification |
| currency | string | Trading currency, ISO 4217 |
| issuerName | string | Issuer name |
| issuerShortName | string | Short issuer name |
| shortDescription | string | Short instrument description |
| primary | boolean | Whether this is the primary listing |
Price and session
| Field | Type | Description |
|---|---|---|
| open | number | Session open price |
| high | number | Session high price |
| low | number | Session low price |
| lastTradePrice | number | Last trade price |
| lastTradeTime | integer | Last trade timestamp, Unix milliseconds |
| size | integer | Last trade size |
| volume | integer | Cumulative session volume |
| change | number | Absolute change versus previous close |
| changePercent | number or null | Percent change versus previous close |
| previousClosePrice | number or null | Previous close price |
| previousCloseDate | string | Previous close date and time, UTC, YYYY-MM-DD HH:MM:SS |
Bid and ask
| Field | Type | Description |
|---|---|---|
| bidPrice | number | Best bid price |
| bidSize | integer | Best bid size |
| bidTime | integer | Best bid timestamp, Unix milliseconds |
| askPrice | number | Best ask price |
| askSize | integer | Best ask size |
| askTime | integer | Best ask timestamp, Unix milliseconds |
Extended hours
| Field | Type | Description |
|---|---|---|
| ethPrice | number | Extended-hours last price |
| ethVolume | integer | Extended-hours volume |
| ethTime | integer | Extended-hours last trade timestamp, Unix milliseconds |
Averages and 52-week range
| Field | Type | Description |
|---|---|---|
| fiftyDayAveragePrice | number | 50-day moving average price |
| hundredDayAveragePrice | number | 100-day moving average price |
| twoHundredDayAveragePrice | number | 200-day moving average price |
| averageVolume | integer | Average daily volume |
| fiftyTwoWeekHigh | number | 52-week high price |
| fiftyTwoWeekLow | number | 52-week low price |
Fundamentals
| Field | Type | Description |
|---|---|---|
| marketCap | integer | Market capitalization |
| sharesOutstanding | integer | Shares outstanding |
| sharesFloat | integer | Free-float shares |
| pe | number | Trailing price-to-earnings ratio |
| forwardPE | number | Forward price-to-earnings ratio |
| dividendYield | number | Dividend yield as a decimal fraction, for example 0.0034 means 0.34 percent |
| dividend | number | Dividend per share |
| payoutRatio | number | Dividend payout ratio as a decimal fraction |
Snapshot
| Field | Type | Description |
|---|---|---|
| timestamp | integer | Snapshot timestamp, Unix seconds |
Response Codes
| Code | Meaning |
|---|---|
| 200 | Success; quote data returned |
| 400 | Invalid request parameters |
| 401 | Unauthorized; missing or invalid API token |
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 and ask with sizes and their event times, plus richer context such as rolling averages, 52-week high and low, market cap, P/E, dividends, and issuer fields. It is focused on US equities and suits quote tiles, watchlists, and any UI that needs bid, ask, and timing detail.
Live v1 (Live OHLCV Stock Prices API) gives you the latest one-minute OHLCV bar, refreshed each minute. It does not include bid, ask, or trade event timestamps. It is 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 detail (bid, ask, last trade times, richer fundamentals) for US stocks; choose Live v1 when you need minute bars across multiple asset classes and do not need quote microstructure.