Intraday Stock Data API
Pull intraday 1-minute OHLCV bars for US-listed equities and ETFs — the session-level resolution you need for intraday strategy development, event studies around earnings and news, and minute-by-minute charting. Each bar covers a single trading minute and carries the same six-field OHLCV shape as the end-of-day series, so the parsing code you already wrote keeps working. Request one ticker or many in a single call, bound the window with period or explicit dates, and page through a full session with the pagination block returned in every response. The API is free to use.
https://data.businessquant.com/quotes?ticker={ticker}&mode=minute-bars&api_key={api_key}
Related endpoints: For multi-year daily history, use the EOD Stock Price API. To receive prices as trades happen rather than polling for bars, connect to the Real-Time Quotes WebSocket API. Use the Corporate Actions API to detect splits that break an intraday series.
Intraday Stock Data API Capabilities
Intraday bars come off the same /quotes endpoint and the same response contract as the end-of-day series — one mode value is the only difference. That means a single parser handles both resolutions, and you can move a backtest from daily to minute granularity without rewriting the data layer.
1-Minute OHLCV Bars
Each record covers a single trading minute with open, high, low, close and volume. Bars are returned newest-first, so data[0] is always the most recent minute in the window.
Session-Level Granularity
A full regular US session is roughly 390 one-minute bars per ticker. Enough resolution to study the open, the close, and the reaction window around a scheduled release.
Multi-Ticker Support
Request several tickers at once with ticker=AAPL,MSFT. The response is a dictionary keyed by ticker, each with its own isolated metadata and data blocks — never a mixed flat array.
Session Pagination
Every response carries metadata.pagination with current_page, limit, total_records and total_pages — so walking a full session, or several, is a deterministic loop.
Flexible Time Filters
Bound the window with a relative period (1d, 5d) or explicit from_date/till_date in YYYY-MM-DD — the same filter grammar the end-of-day modes use.
Continuously Refreshed
Bars are written throughout the session, so the newest minute appears shortly after it closes. For push-based updates instead of polling, use the WebSocket API.
How Intraday Bars Are Returned
Two details of the intraday payload differ from what most bar APIs return. Both are easy to handle once you know about them, and both will silently corrupt a strategy if you don't.
Volume is cumulative for the session, not per-bar
The volume field on a minute bar is the running total of shares traded in that session up to and including that minute — it is not the volume traded within the single minute. Values therefore increase monotonically as the session progresses. To get true per-minute volume, sort ascending by date and take the first difference between consecutive bars.
Bars are newest-first
The data array is ordered by timestamp descending, so data[0] is the latest minute in the requested window and the last element is the earliest. Charting libraries and rolling-window indicators almost always expect ascending order — reverse the array before feeding it in.
1. Request Parameters
Intraday requests use the same query-parameter grammar as the end-of-day modes, with mode=minute-bars selecting 1-minute resolution. Because a single session is already several hundred bars per ticker, limit and page matter more here than they do on the daily series.
| 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=AAPLMulti:
ticker=AAPL,MSFT |
| mode |
Required
Must be minute-bars to receive intraday 1-minute OHLCV data. The endpoint defaults to daily, so omitting this returns end-of-day records instead.
Value:
mode=minute-bars |
| period |
Conditional
Relative lookback from today. Determinants: d (days), w (weeks), mo (months), y (years). Use this or explicit dates — not both. Keep the window tight for intraday: each session is several hundred bars per ticker.
Examples:
period=1d · period=5d |
| from_date |
Conditional
Start date for an explicit intraday range. Use with till_date; cannot be combined with period.
Format:
from_date=2026-08-31 |
| till_date |
Conditional
End date for an explicit intraday range. Use with from_date; cannot be combined with period.
Format:
till_date=2026-08-31 |
| page |
Optional
Page number for walking a session in chunks. Default is 1.
Format:
page=1 |
| limit |
Optional
Maximum bars per page. A full regular session is roughly 390 bars, so limit=500 retrieves one day in a single request.
Format:
limit=500 |
curl -X GET "https://data.businessquant.com/quotes?ticker=AAPL&mode=minute-bars&period=1d&limit=500&api_key=YOUR_API_KEY"
import requests, pandas as pd
r = requests.get(
"https://data.businessquant.com/quotes",
params={
"ticker": "AAPL",
"mode": "minute-bars",
"period": "1d",
"limit": 500,
"api_key": "YOUR_API_KEY",
},
).json()
df = pd.DataFrame(r["data"])
df["date"] = pd.to_datetime(df["date"])
# Bars arrive newest-first; charting wants oldest-first.
df = df.sort_values("date").reset_index(drop=True)
# volume is cumulative for the session -- difference it.
df["minute_volume"] = df["volume"].diff().fillna(df["volume"])
print(df[["date", "close", "volume", "minute_volume"]].tail())
2. Coverage & Data Details
Scope, field definitions, depth and update cadence for the intraday 1-minute series.
Instruments & Markets
Intraday 1-minute bars 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.
Bar Fields
Every record contains six fields: date (the bar timestamp, YYYY-MM-DD HH:MM:SS), open, high, low, close (all in the trading currency), and volume (cumulative session volume through that bar — see the note above). Prices are returned at full stored precision rather than rounded to cents, so round at your display layer.
Intraday Depth
Minute bars cover a rolling recent window rather than the multi-year depth of the end-of-day series. Use this endpoint for recent-session analysis, and the EOD Stock Price API for long historical lookbacks. Check metadata.from_date and metadata.till_date on any response to see the window actually served.
Update Cadence
Bars are written continuously during market hours, so the most recent completed minute becomes available shortly after it closes. If you need price updates pushed as trades happen rather than polling this endpoint on a timer, use the Real-Time Quotes WebSocket API instead.
3. Endpoint Variations
Copy any of the requests below directly into your application, replacing YOUR_API_KEY with your credentials.
https://data.businessquant.com/quotes?ticker=AAPL&mode=minute-bars&period=1d&limit=500&api_key=YOUR_API_KEY
https://data.businessquant.com/quotes?ticker=AAPL,MSFT&mode=minute-bars&period=1d&limit=500&api_key=YOUR_API_KEY
https://data.businessquant.com/quotes?ticker=AAPL&mode=minute-bars&from_date=2026-08-28&till_date=2026-08-31&limit=500&api_key=YOUR_API_KEY
https://data.businessquant.com/quotes?ticker=AAPL&mode=minute-bars&period=1d&limit=120&page=2&api_key=YOUR_API_KEY
4. Sample Response
Apple's 1-minute bars for a single trading session, capped at 120 per page. Note the pagination block — total_records reports every bar in the window while data holds only the current page. Switch to JSON to inspect the full response structure.
Apple — Intraday 1-Minute Bars
Ticker: AAPL •
Mode: minute-bars •
2026-08-31 to 2026-08-31 •
120 bars on this page
| Bar Timestamp | Open | High | Low | Close | Volume (cum.) |
|---|---|---|---|---|---|
| 2026-08-31 15:09:00 | 315.55 | 315.58 | 315.58 | 315.65 | 40,170,826 |
| 2026-08-31 15:08:00 | 315.57 | 315.57 | 315.57 | 315.55 | 40,106,462 |
| 2026-08-31 15:07:00 | 315.55 | 315.55 | 315.55 | 315.57 | 40,046,548 |
| 2026-08-31 15:06:00 | 315.60 | 315.58 | 315.58 | 315.55 | 40,002,066 |
| 2026-08-31 15:05:00 | 315.61 | 315.58 | 315.58 | 315.60 | 39,967,032 |
| 2026-08-31 15:04:00 | 315.55 | 315.54 | 315.54 | 315.61 | 39,916,398 |
| 2026-08-31 15:03:00 | 315.54 | 315.54 | 315.54 | 315.55 | 39,821,886 |
| 2026-08-31 15:02:00 | 315.47 | 315.47 | 315.47 | 315.54 | 39,756,444 |
| 2026-08-31 15:01:00 | 315.45 | 315.47 | 315.47 | 315.47 | 39,653,034 |
| 2026-08-31 15:00:00 | 315.39 | 315.41 | 315.41 | 315.45 | 39,603,770 |
| 2026-08-31 14:59:00 | 315.39 | 315.39 | 315.39 | 315.39 | 39,532,444 |
| 2026-08-31 14:58:00 | 315.36 | 315.33 | 315.33 | 315.39 | 39,472,966 |
| 2026-08-31 14:57:00 | 315.30 | 315.32 | 315.32 | 315.36 | 39,429,698 |
| 2026-08-31 14:56:00 | 315.28 | 315.28 | 315.28 | 315.30 | 39,381,234 |
| 2026-08-31 14:55:00 | 315.40 | 315.39 | 315.39 | 315.28 | 39,311,966 |
| 2026-08-31 14:54:00 | 315.36 | 315.33 | 315.33 | 315.40 | 39,237,102 |
| 2026-08-31 14:53:00 | 315.40 | 315.39 | 315.39 | 315.36 | 39,198,080 |
| 2026-08-31 14:52:00 | 315.42 | 315.42 | 315.42 | 315.40 | 39,137,822 |
| 2026-08-31 14:51:00 | 315.39 | 315.39 | 315.39 | 315.42 | 39,097,238 |
| 2026-08-31 14:50:00 | 315.29 | 315.27 | 315.27 | 315.39 | 39,058,806 |
| 2026-08-31 14:49:00 | 315.43 | 315.45 | 315.45 | 315.29 | 39,002,412 |
| 2026-08-31 14:48:00 | 315.46 | 315.43 | 315.43 | 315.43 | 38,949,282 |
| 2026-08-31 14:47:00 | 315.38 | 315.39 | 315.39 | 315.46 | 38,890,372 |
| 2026-08-31 14:46:00 | 315.27 | 315.25 | 315.25 | 315.38 | 38,847,354 |
| 2026-08-31 14:45:00 | 315.28 | 315.27 | 315.27 | 315.27 | 38,792,450 |
| 2026-08-31 14:44:00 | 315.13 | 315.15 | 315.15 | 315.28 | 38,732,526 |
| 2026-08-31 14:43:00 | 315.17 | 315.17 | 315.17 | 315.13 | 38,665,804 |
| 2026-08-31 14:42:00 | 315.39 | 315.36 | 315.36 | 315.17 | 38,573,934 |
| 2026-08-31 14:41:00 | 315.41 | 315.40 | 315.40 | 315.39 | 38,498,474 |
| 2026-08-31 14:40:00 | 315.29 | 315.29 | 315.29 | 315.41 | 38,424,766 |
| 2026-08-31 14:39:00 | 315.36 | 315.36 | 315.36 | 315.29 | 38,351,522 |
| 2026-08-31 14:38:00 | 315.60 | 315.61 | 315.61 | 315.36 | 38,290,602 |
| 2026-08-31 14:37:00 | 315.60 | 315.58 | 315.58 | 315.60 | 38,186,772 |
| 2026-08-31 14:36:00 | 315.76 | 315.77 | 315.77 | 315.60 | 38,131,558 |
| 2026-08-31 14:35:00 | 315.84 | 315.83 | 315.83 | 315.76 | 38,055,264 |
| 2026-08-31 14:34:00 | 315.83 | 315.83 | 315.83 | 315.84 | 37,997,294 |
| 2026-08-31 14:33:00 | 315.83 | 315.84 | 315.84 | 315.83 | 37,935,910 |
| 2026-08-31 14:32:00 | 315.80 | 315.78 | 315.78 | 315.83 | 37,876,410 |
| 2026-08-31 14:31:00 | 315.77 | 315.75 | 315.75 | 315.80 | 37,832,098 |
| 2026-08-31 14:30:00 | 315.68 | 315.68 | 315.68 | 315.77 | 37,729,046 |
| 2026-08-31 14:29:00 | 315.80 | 315.81 | 315.81 | 315.68 | 37,665,610 |
| 2026-08-31 14:28:00 | 315.81 | 315.81 | 315.81 | 315.80 | 37,613,874 |
| 2026-08-31 14:27:00 | 315.62 | 315.63 | 315.63 | 315.81 | 37,534,918 |
| 2026-08-31 14:26:00 | 315.70 | 315.70 | 315.70 | 315.62 | 37,429,540 |
| 2026-08-31 14:25:00 | 315.81 | 315.82 | 315.82 | 315.70 | 37,314,086 |
| 2026-08-31 14:24:00 | 315.91 | 315.90 | 315.90 | 315.81 | 37,206,062 |
| 2026-08-31 14:23:00 | 315.58 | 315.58 | 315.58 | 315.91 | 37,051,942 |
| 2026-08-31 14:22:00 | 315.51 | 315.52 | 315.52 | 315.58 | 36,887,266 |
| 2026-08-31 14:21:00 | 315.55 | 315.55 | 315.55 | 315.51 | 36,810,642 |
| 2026-08-31 14:20:00 | 315.43 | 315.45 | 315.45 | 315.55 | 36,732,628 |
| 2026-08-31 14:19:00 | 315.30 | 315.27 | 315.27 | 315.43 | 36,663,124 |
| 2026-08-31 14:18:00 | 315.31 | 315.30 | 315.30 | 315.30 | 36,585,338 |
| 2026-08-31 14:17:00 | 315.30 | 315.31 | 315.31 | 315.31 | 36,540,224 |
| 2026-08-31 14:16:00 | 315.27 | 315.25 | 315.25 | 315.30 | 36,473,198 |
| 2026-08-31 14:15:00 | 315.36 | 315.36 | 315.36 | 315.27 | 36,389,432 |
| 2026-08-31 14:14:00 | 315.34 | 315.33 | 315.33 | 315.36 | 36,332,330 |
| 2026-08-31 14:13:00 | 315.57 | 315.57 | 315.57 | 315.34 | 36,257,946 |
| 2026-08-31 14:12:00 | 315.59 | 315.61 | 315.61 | 315.57 | 36,152,426 |
| 2026-08-31 14:11:00 | 315.57 | 315.57 | 315.57 | 315.59 | 35,998,448 |
| 2026-08-31 14:10:00 | 315.58 | 315.61 | 315.61 | 315.57 | 35,914,412 |
| 2026-08-31 14:09:00 | 315.49 | 315.50 | 315.50 | 315.58 | 35,802,158 |
| 2026-08-31 14:08:00 | 315.33 | 315.34 | 315.34 | 315.49 | 35,573,298 |
| 2026-08-31 14:07:00 | 315.33 | 315.34 | 315.34 | 315.33 | 35,459,482 |
| 2026-08-31 14:06:00 | 315.17 | 315.19 | 315.19 | 315.33 | 35,380,304 |
| 2026-08-31 14:05:00 | 315.16 | 315.14 | 315.14 | 315.17 | 35,287,748 |
| 2026-08-31 14:04:00 | 315.08 | 315.09 | 315.09 | 315.16 | 35,211,698 |
| 2026-08-31 14:03:00 | 314.92 | 314.95 | 314.95 | 315.08 | 35,145,050 |
| 2026-08-31 14:02:00 | 314.93 | 314.95 | 314.95 | 314.92 | 35,075,306 |
| 2026-08-31 14:01:00 | 315.05 | 315.04 | 315.04 | 314.93 | 34,982,046 |
| 2026-08-31 14:00:00 | 315.07 | 315.10 | 315.10 | 315.05 | 34,890,310 |
| 2026-08-31 13:59:00 | 315.01 | 315.01 | 315.01 | 315.07 | 34,813,646 |
| 2026-08-31 13:58:00 | 314.94 | 314.95 | 314.95 | 315.01 | 34,765,200 |
| 2026-08-31 13:57:00 | 315.03 | 314.97 | 314.97 | 314.94 | 34,694,748 |
| 2026-08-31 13:56:00 | 315.03 | 315.03 | 315.03 | 315.03 | 34,606,496 |
| 2026-08-31 13:55:00 | 315.10 | 315.11 | 315.11 | 315.03 | 34,479,122 |
| 2026-08-31 13:54:00 | 314.83 | 314.83 | 314.83 | 315.10 | 34,315,964 |
| 2026-08-31 13:53:00 | 314.80 | 314.81 | 314.81 | 314.83 | 34,161,824 |
| 2026-08-31 13:52:00 | 314.69 | 314.65 | 314.65 | 314.80 | 34,095,692 |
| 2026-08-31 13:51:00 | 314.53 | 314.53 | 314.53 | 314.69 | 34,004,394 |
| 2026-08-31 13:50:00 | 314.42 | 314.43 | 314.43 | 314.53 | 33,908,292 |
| 2026-08-31 13:49:00 | 314.37 | 314.38 | 314.38 | 314.42 | 33,836,526 |
| 2026-08-31 13:48:00 | 314.32 | 314.33 | 314.33 | 314.37 | 33,763,074 |
| 2026-08-31 13:47:00 | 314.23 | 314.26 | 314.26 | 314.32 | 33,704,884 |
| 2026-08-31 13:46:00 | 314.26 | 314.27 | 314.27 | 314.23 | 33,643,196 |
| 2026-08-31 13:45:00 | 314.17 | 314.17 | 314.17 | 314.26 | 33,560,344 |
| 2026-08-31 13:44:00 | 314.13 | 314.12 | 314.12 | 314.17 | 33,466,082 |
| 2026-08-31 13:43:00 | 314.07 | 314.05 | 314.05 | 314.13 | 33,418,052 |
| 2026-08-31 13:42:00 | 314.20 | 314.19 | 314.19 | 314.07 | 33,357,652 |
| 2026-08-31 13:41:00 | 314.14 | 314.14 | 314.14 | 314.20 | 33,274,718 |
| 2026-08-31 13:40:00 | 314.10 | 314.13 | 314.13 | 314.14 | 33,193,698 |
| 2026-08-31 13:39:00 | 313.94 | 313.93 | 313.93 | 314.10 | 33,094,264 |
| 2026-08-31 13:38:00 | 313.99 | 313.96 | 313.96 | 313.94 | 33,032,652 |
| 2026-08-31 13:37:00 | 313.78 | 313.77 | 313.77 | 313.99 | 32,981,262 |
| 2026-08-31 13:36:00 | 313.58 | 313.60 | 313.60 | 313.78 | 32,837,924 |
| 2026-08-31 13:35:00 | 313.41 | 313.39 | 313.39 | 313.58 | 32,732,512 |
| 2026-08-31 13:34:00 | 313.70 | 313.71 | 313.71 | 313.41 | 32,554,476 |
| 2026-08-31 13:33:00 | 313.71 | 313.70 | 313.70 | 313.70 | 32,473,442 |
| 2026-08-31 13:32:00 | 313.64 | 313.67 | 313.67 | 313.71 | 32,447,842 |
| 2026-08-31 13:31:00 | 313.71 | 313.72 | 313.72 | 313.64 | 32,379,570 |
| 2026-08-31 13:30:00 | 313.89 | 313.85 | 313.85 | 313.71 | 32,329,684 |
| 2026-08-31 13:29:00 | 313.85 | 313.85 | 313.85 | 313.89 | 32,276,596 |
| 2026-08-31 13:28:00 | 313.85 | 313.86 | 313.86 | 313.85 | 32,213,028 |
| 2026-08-31 13:27:00 | 314.00 | 313.97 | 313.97 | 313.85 | 32,156,670 |
| 2026-08-31 13:26:00 | 314.00 | 313.99 | 313.99 | 314.00 | 32,107,464 |
| 2026-08-31 13:25:00 | 314.15 | 314.14 | 314.14 | 314.00 | 32,039,962 |
| 2026-08-31 13:24:00 | 314.20 | 314.19 | 314.19 | 314.15 | 31,956,724 |
| 2026-08-31 13:23:00 | 314.16 | 314.16 | 314.16 | 314.20 | 31,912,750 |
| 2026-08-31 13:22:00 | 314.13 | 314.13 | 314.13 | 314.16 | 31,663,800 |
| 2026-08-31 13:21:00 | 314.07 | 314.06 | 314.06 | 314.13 | 31,586,626 |
| 2026-08-31 13:20:00 | 314.07 | 314.07 | 314.07 | 314.07 | 31,515,812 |
| 2026-08-31 13:19:00 | 314.05 | 314.06 | 314.06 | 314.07 | 31,436,350 |
| 2026-08-31 13:18:00 | 313.95 | 313.94 | 313.94 | 314.05 | 31,365,348 |
| 2026-08-31 13:17:00 | 313.91 | 313.93 | 313.93 | 313.95 | 31,317,194 |
| 2026-08-31 13:16:00 | 313.88 | 313.87 | 313.87 | 313.91 | 31,186,928 |
| 2026-08-31 13:15:00 | 314.04 | 314.05 | 314.05 | 313.88 | 31,149,268 |
| 2026-08-31 13:14:00 | 313.81 | 313.81 | 313.81 | 314.04 | 31,059,082 |
| 2026-08-31 13:13:00 | 313.76 | 313.77 | 313.77 | 313.81 | 30,935,968 |
| 2026-08-31 13:12:00 | 313.70 | 313.69 | 313.69 | 313.76 | 30,861,232 |
| 2026-08-31 13:11:00 | 313.63 | 313.63 | 313.63 | 313.70 | 30,792,150 |
| 2026-08-31 13:10:00 | 313.62 | 313.62 | 313.62 | 313.63 | 30,733,254 |
Frequently Asked Questions
What interval do the intraday bars use?
Bars are 1-minute OHLCV intervals. Each record covers a single trading minute and carries date (the bar timestamp), open, high, low, close and volume.
Why does volume keep increasing through the session?
Because volume on a minute bar is the cumulative session total through that minute, not the shares traded within it. Sort ascending by date and take the first difference between consecutive bars to recover true per-minute volume — there is a worked Python example in section 1.
How much intraday history is available?
Intraday 1-minute bars cover a rolling recent window rather than the full multi-year depth of the end-of-day series. For long historical lookbacks use the separate EOD Stock Price API.
Can I request intraday bars for multiple tickers in one call?
Yes. Pass a comma-separated list (e.g., ticker=AAPL,MSFT). The response returns a dictionary keyed by ticker, each with its own metadata and data blocks, rather than a mixed flat array.
How do I paginate through a full trading session?
A full regular session is roughly 390 one-minute bars per ticker. Use limit and page together and iterate using metadata.pagination.total_pages to know when to stop — or set limit=500 to pull the whole session in one request.
Is the Intraday Stock Data API free to use?
Yes, the Intraday Stock Data API is free to use. Sign up for an API key to start pulling 1-minute OHLCV bars immediately.