Hourly historical stock data
Hourly (1-hour) OHLCV bars for 6,924 US stocks back to January 2000, built from our 1-minute record and included in every history bundle.
What hourly bars look like
| Time | Open | High | Low | Close | Volume |
|---|---|---|---|---|---|
| 09:00 | 341.57 | 344.90 | 340.00 | 344.64 | 4,023,103 |
| 10:00 | 344.63 | 346.00 | 343.64 | 343.99 | 3,584,034 |
| 11:00 | 343.96 | 344.04 | 341.90 | 341.96 | 2,690,468 |
| 12:00 | 341.98 | 342.35 | 341.15 | 341.79 | 1,879,356 |
| 13:00 | 341.79 | 343.17 | 341.61 | 342.89 | 1,488,605 |
7 hourly bars cover a regular session; AAPL had 16 on October 19, 2026 counting pre-market and after-hours. A year of regular-session hourly bars is about 1,764 rows per stock. Download a free sample file.
Get hourly bars in Python
import finzdata as yf
# yfinance-style
df = yf.Ticker("AAPL").history(start="2015-01-01", end="2015-02-01", interval="1h")
# or the client, with split- and dividend-adjusted prices
c = yf.Client()
bars = c.minutes("AAPL", start="2015-01-02", end="2015-01-31", interval="1hour", adjust="all")Or call the REST API directly:
curl -H "X-API-Key: $FINZDATA_API_KEY" "https://data.finzdata.com/v1/prices/minute?symbol=AAPL&start=2024-01-02&end=2024-01-05&interval=1hour&format=csv"What hourly bars are used for
Swing trading research
Hourly bars show intraday structure for trades held one to several days, at a fraction of the data size.
Overnight and pre-market moves
Hours from 4:00 a.m. to 8:00 p.m. Eastern show where the gap formed before the open and after the close.
Volatility by hour of day
Measure realized volatility for each hour across years to size positions and time execution.
A first step into intraday data
Hourly bars come with every bundle, so you can start intraday research before moving to minute bars.
Coverage
6,924 US stocks listed on the NYSE and Nasdaq have intraday history. How many start by each year:
| Intraday history starting by | US stocks |
|---|---|
| 2000 | 1,070 |
| 2005 | 1,528 |
| 2010 | 2,393 |
| 2015 | 3,103 |
| 2020 | 4,320 |
| Today | 6,924 |
Daily bars go further: every one of 16,000+ US stocks since 2000, delisted names included. See historical stock data.
How the bars are built
Every intraday bar is built from FinzData's 1-minute record. Bars are aligned to the clock and stamped at the start of the interval in US Eastern time. Open is the first minute's open, close the last minute's close, high and low the extremes, volume the sum. Minutes with no trades are left out, never forward-filled. Sessions: pre-market 4:00 to 9:30, regular 9:30 to 4:00, after-hours 4:00 to 8:00 p.m. Prices are stored as traded; ask for split- and dividend-adjusted prices with adjust="all".
Plans
Hourly bars are included in every history bundle, from 5 years for $195, and for a single stock from $19 in the shop. Tick-level trades come with Institutional.
Frequently asked questions
How many hourly bars are there per day?
Up to 16 from 4:00 a.m. to 8:00 p.m. Eastern. Bars are aligned to the clock, so the 9:00 bar holds 9:00 to 9:59, which includes pre-market minutes before the 9:30 open.
Which plan includes hourly bars?
Every history bundle, from 5 years for $195, or a single stock from $19 in the shop.
How far back does hourly data go?
To January 2000 for 1,070 stocks, 2010 for 2,393 and 2020 for 4,320.
How do I get hourly bars in Python?
yf.Ticker("AAPL").history(interval="1h", start="2015-01-01"), or Client().minutes("AAPL", interval="1hour").
Other bar sizes
1-Minute bars · 5-Minute bars · 15-Minute bars · 30-Minute bars · Daily bars · Tick data