ESC to close

Stock Quotes API

Last updated:

Access historical end-of-day (EOD) stock prices, intraday 1-minute OHLCV bars, and live-merged daily data through a single API endpoint — where most providers require three or more separate endpoints and manual data stitching. The daily mode automatically injects the latest live trading bar into your historical series during market hours, eliminating the glue code other APIs force you to write. Query one or many tickers at once — multi-ticker responses return a dictionary keyed by ticker, each with isolated metadata and data blocks, not a mixed flat array. The API is free to use.

Three data modes in one endpoint:

daily EOD + Live Merge eod Strictly Historical minute-bars Intraday 1-Min
GET https://data.businessquant.com/quotes?ticker={ticker}&mode={mode}&api_key={api_key}

Related endpoints: Use the Stock Screener API to build a filtered universe, then pull price history here. Pair with the Financial Statements API for fundamental + price analysis. Add the Dividends API for yield-adjusted returns.

Stock Price API Capabilities

Most stock price APIs split EOD, intraday, and live data across separate endpoints — often three or more. This endpoint unifies all three behind a single mode parameter, returning the same clean OHLCV structure regardless of resolution, paginated and filterable by date.

Historical EOD Prices

Clean, historical end-of-day OHLCV data spanning multiple years — suitable for backtesting trading rules, factor strategies, and historical performance analysis across long time horizons.

Intraday 1-Minute Bars

High-resolution intraday price series at 1-minute intervals via mode=minute-bars. Use for intraday strategy development, event-driven analysis, and session-level monitoring.

Smart Daily Mode

mode=daily returns historical EOD data and, during active market hours, automatically appends the latest live bar at the top — one endpoint for both historical and current-day data.

Multi-Ticker Support

Request multiple tickers in a single call with ticker=AAPL,MSFT. The response is a dictionary keyed by ticker — each with its own isolated metadata and data blocks — instead of a mixed flat array.

Flexible Time Filters

Use relative period strings (1d, 1mo, 1y) or explicit from_date/till_date in YYYY-MM-DD format to define the historical window for any resolution mode.

Robust Pagination

Every response's metadata.pagination object includes current_page, limit, total_records, and total_pages so you can reliably iterate through large historical price series.

EOD, Daily & Intraday Data Modes

The mode parameter controls the resolution and live-data behavior of the response. All three modes use the same endpoint URL and return the same OHLCV field structure — no need to learn separate APIs or parse different response schemas.

daily Default

Smart Daily

Returns historical end-of-day prices. During active market hours, automatically injects the current live trading bar at index 0 — merging historical and real-time data into one seamless series. Ideal for dashboards and monitoring.

eod

Strictly Historical EOD

Returns only fully completed, confirmed end-of-day closing prices. No live market data is ever appended. Use this mode for backtesting, factor models, and any workflow that requires a clean, immutable historical price series.

minute-bars

Intraday 1-Minute Bars

High-resolution 1-minute interval OHLCV bars for intraday granularity. Each bar covers a single trading minute. Use for intraday strategy development, session-level charting, and high-frequency event analysis.

1. Request Parameters

The Quotes endpoint uses URL query parameters to define the target securities, the data resolution (EOD vs intraday), and the historical horizon. Query one or many tickers, choose between smart daily, strictly historical EOD closes, or intraday 1-minute bars, and control how much history you retrieve using period or explicit from_date/till_date bounds.

Parameter Description
api_key
Required
Your unique API key for authentication.
ticker
Required String
A single stock ticker or a comma-separated list of tickers for a multi-ticker request.
Single: ticker=AAPL
Multi: ticker=AAPL,MSFT
mode
Optional
Data resolution and live-data behavior. Valid values: daily (default — historical EOD + live merge), eod (strictly historical closes only), minute-bars (intraday 1-minute OHLCV bars).
Default: mode=daily
period
Conditional
Relative lookback from today. Determinants: d (days), w (weeks), mo (months), y (years). Use this or explicit dates — not both.
Examples: period=1mo  ·  period=1y  ·  period=5y
from_date
Conditional
Start date for an explicit historical range. Use with till_date; cannot be combined with period.
Format: from_date=2020-01-01
till_date
Conditional
End date for an explicit historical range. Use with from_date; cannot be combined with period.
Format: till_date=2023-12-31
page
Optional
Page number for paginating through large historical series. Default is 1.
Format: page=1
limit
Optional
Maximum records per page. Use with page to iterate through long price histories.
Format: limit=100
Example cURL Request (Single Ticker)
curl -X GET "https://data.businessquant.com/quotes?ticker=AAPL&mode=daily&period=1mo&limit=100&api_key=YOUR_API_KEY"
Sample Response (Single Ticker)
{
    "metadata": {
        "cik": 320193,
        "ticker": "AAPL",
        "companyname": "Apple Inc.",
        "companyname_short": "Apple",
        "from_date": "2023-11-20",
        "till_date": "2023-12-20",
        "mode": "daily",
        "pagination": {
            "current_page": 1,
            "limit": 100,
            "total_records": 22,
            "total_pages": 1
        }
    },
    "data": [
        {
            "date": "2023-12-20 16:00:00",
            "open": 196.90,
            "high": 197.68,
            "low": 194.83,
            "close": 194.83,
            "volume": 52242815
        },
        {
            "date": "2023-12-19 16:00:00",
            "open": 196.16,
            "high": 196.95,
            "low": 195.89,
            "close": 196.94,
            "volume": 40714051
        },
        {
            "date": "2023-12-18 16:00:00",
            "open": 196.09,
            "high": 196.63,
            "low": 194.39,
            "close": 195.89,
            "volume": 55751861
        },
        {
            "date": "2023-12-15 16:00:00",
            "open": 197.53,
            "high": 198.40,
            "low": 197.00,
            "close": 197.57,
            "volume": 128256749
        },
        {
            "date": "2023-12-14 16:00:00",
            "open": 198.02,
            "high": 199.62,
            "low": 196.16,
            "close": 198.11,
            "volume": 66831581
        }
    ]
}

2. Architecture: Multi-Ticker & Smart Daily Merging

Two behaviors of this endpoint distinguish it from a standard price feed — multi-ticker dictionary wrapping and automatic live-bar injection in daily mode. Understanding both prevents integration surprises when parsing responses.

1. Multi-Ticker Output Structure

When querying multiple tickers (e.g., ticker=AAPL,MSFT), the API returns a dictionary object keyed by ticker — each containing its own isolated metadata and data blocks. This avoids mixing price series from different companies into a flat array and makes per-ticker access O(1) by key.

Multi-Ticker Response Structure
{
  "AAPL": {
    "metadata": { ... },
    "data": [ ... ]
  },
  "MSFT": {
    "metadata": { ... },
    "data": [ ... ]
  }
}

2. Real-Time Interim Merging (Daily Mode)

When fetching daily data during active market hours, the API queries the Interim Real-Time Engine and injects the current live trading bar at index 0 of the data array — merging historical EOD and live data into one continuous stream without a separate endpoint.

Smart EOD Lock-in

If the market has closed but EOD processing hasn't completed, the live bar locks in at 16:00:00. This guarantees you always have the latest daily close without polling a separate real-time endpoint or waiting for batch finalization.

3. Coverage & Data Details

Scope, field definitions, and update cadence for both the historical EOD and intraday 1-minute price series.

Instruments & Markets

Historical EOD and intraday 1-minute prices for US-listed equities and ETFs. Use a valid exchange ticker symbol as the identifier — the same symbol accepted by the Company Profile API and Stock Screener API.

OHLCV Fields

Every record in the data array contains six fields: date (timestamp for the period), open, high, low, close (all in the trading currency), and volume (shares traded during the interval). For EOD records the timestamp resolves to 16:00:00; for intraday minute bars it reflects the bar open time.

Historical Depth

End-of-day price history extends back many years for actively traded large-caps and ETFs — use period=all or set wide explicit dates to retrieve the full available range. Intraday 1-minute bars cover a rolling recent window; use mode=eod or mode=daily for long historical lookbacks and mode=minute-bars for high-frequency recent sessions.

Update Cadence

Intraday bars are refreshed continuously during market hours. The live bar injected by mode=daily reflects the most recent trading activity. EOD records are finalized after market close once official end-of-day processing completes — typically within minutes of the 16:00 ET session close.

Pagination for Long Histories

When pulling multi-year historical series, use limit and page together and iterate using metadata.pagination.total_pages to know when to stop. Each page is guaranteed to be consistent — the total_records count does not change between pages for the same query.

4. Endpoint Variations

Copy any of the requests below directly into your application, replacing YOUR_API_KEY with your credentials.

1. Intraday 1-Minute Bars
https://data.businessquant.com/quotes?ticker=AAPL&mode=minute-bars&period=1d&limit=500&api_key=YOUR_API_KEY
2. Strictly Historical EOD (No Live Data)
https://data.businessquant.com/quotes?ticker=AAPL&mode=eod&period=1mo&limit=100&api_key=YOUR_API_KEY
3. Custom Date Range — Multi-Ticker (Historical)
https://data.businessquant.com/quotes?ticker=AAPL,MSFT&mode=daily&from_date=2020-01-01&till_date=2023-12-31&api_key=YOUR_API_KEY
4. Long EOD History with Pagination
https://data.businessquant.com/quotes?ticker=AAPL&mode=eod&period=10y&limit=500&page=1&api_key=YOUR_API_KEY

5. Sample Response

Apple's daily OHLCV data for the past month. The first row shows the most recent trading session. Switch to JSON to inspect the full response structure including the pagination metadata.

Response data not loaded.
File not found: templates/api-responses/quotes-daily.json

Frequently Asked Questions

What data modes does the Stock Quotes API support?

Three modes: daily returns historical EOD prices and, during active market hours, automatically injects the latest live trading bar at index 0. eod returns only confirmed end-of-day closes with no live data — ideal for backtesting. minute-bars returns intraday 1-minute OHLCV bars.

Can I request prices for multiple tickers in one API call?

Yes. Pass a comma-separated list (e.g., ticker=AAPL,MSFT,GOOGL). The response returns a dictionary keyed by ticker, each with its own metadata and data blocks, rather than a mixed flat array.

How does the daily mode differ from eod mode?

The eod mode returns only completed, confirmed end-of-day closing prices — ideal for backtesting and factor models. The daily mode returns the same historical data but, during active market hours, automatically injects the latest live trading bar at index 0, merging historical and current-day data into one seamless series.

What time periods can I query?

Use relative period strings (1d, 1w, 1mo, 3mo, 1y, 5y) or explicit from_date/till_date in YYYY-MM-DD format. Results are paginated with total_records and total_pages in the metadata.

Is the Stock Quotes API free to use?

Yes, the Stock Quotes API is free to use. Sign up for an API key to start pulling EOD prices, intraday bars, and live daily data immediately.