Explainer
After-hours and pre-market trading: times, risks and data
The stock market does not stop at the closing bell: it just empties out. Extended hours are where earnings land, where spreads widen, and where a price on your screen may not survive the open.
On this page
Key takeaways
- After-hours trading runs from 4:00 to 8:00 p.m. ET and pre-market trading from 4:00 to 9:30 a.m. ET; together they are called extended-hours trading.
- Fewer participants mean wider spreads and bigger moves on small volume: a US:KO pre-market quote on September 28, 2026 was about 22 basis points wide at 6:21 a.m. ET.
- Extended-hours trades never set the official open or close; the 9:30 a.m. and 4:00 p.m. auctions do.
- Earnings reports usually land just after 4:00 p.m. or before 9:30 a.m. ET, which is why extended sessions move most on those days.
- In market data, extended-hours prints appear in quotes, trades and snapshots, but default intraday bars cover only 9:30 a.m. to the close.
After-hours trading is the buying and selling of US stocks after the regular session closes at 4:00 p.m. Eastern Time, until 8:00 p.m. ET. Pre-market trading is the same thing before the open, from 4:00 to 9:30 a.m. ET. Together they are called extended-hours trading. Far fewer people are trading, so spreads are wider and a single order can move the price.
This explainer covers the times, why extended-hours prices behave differently, and how those prints appear in a quote feed. For the full schedule in every time zone, with holidays and early closes, start with the guide to stock market hours. For pulling the prices into your own code, see the stock API guide.
Pre-market and after-hours trading times
One US trading day in UTC, daylight time
Hours in UTC
| Session | Eastern | Central | Pacific | On early-close days |
|---|---|---|---|---|
| Pre-market | 4:00 to 9:30 am | 3:00 to 8:30 am | 1:00 to 6:30 am | Unchanged |
| After-hours | 4:00 to 8:00 pm | 3:00 to 7:00 pm | 1:00 to 5:00 pm | 1:00 to 5:00 pm ET |
On the two early-close days of 2026, November 27 and December 24, the regular session ends at 1:00 p.m. ET and after-hours runs from 1:00 to 5:00 p.m. instead of 4:00 to 8:00 p.m. Pre-market hours do not change.
Why extended-hours prices behave differently
During the regular session, market makers, index funds, brokers routing retail orders and every flavour of algorithm meet at once, and the opening and closing auctions concentrate volume into single prices. Outside those hours most of them are gone. What remains is a thinner electronic market in which each order matters more.
- Wider spreadsFewer quotes compete at each price, so the gap between bid and ask opens up and crossing it costs more.
- Big moves on small volumeA few thousand shares can move a price that would absorb a million during the day.
- News lands hereCompanies usually report earnings just after 4:00 p.m. or before 9:30 a.m. ET, so the biggest repricings happen when liquidity is lowest.
- Limit orders, usuallyMany brokers accept only limit orders in extended hours, because a market order could fill far from the last price.
You can watch the effect in real quotes. On Monday, September 28, 2026 at 6:21 a.m. ET, US:KO quoted 88.11 bid and 88.30 ask: a 19-cent spread, about 22 basis points. Shortly before 7:00 a.m. it quoted 88.15 / 88.20, about 6 basis points, as more participants arrived. In the regular session a large, liquid stock like this usually trades a cent or two wide. The bid-ask spread explainer shows how to measure that yourself.
Spread through a US trading day (shape)
Extended hours do not set the official price
The official open comes from the 9:30 a.m. opening auction and the official close from the 4:00 p.m. closing auction. A stock can rally 5% after hours on earnings and still show yesterday's close as its close until the next session ends. That is why a change figure in pre-market compares the latest trade with the previous official close, not with the last after-hours print.
A US stock snapshot during pre-market
{
"symbol": "US:KO",
"bid": 88.11,5
"ask": 88.3,
"bid_size": 400,
"ask_size": 200,
"last_price": 88.24,1
"last_timestamp": 1790589160160,2
"prev_close": 87.81,3
"change": 0.43,
"change_percent": 0.4897,4
"last_size": 150
}
last_priceThe latest trade, here a pre-market print.last_timestamp09:52:40 UTC, or 5:52 a.m. ET. The trade was half an hour old when captured: pre-market trading in this name was sparse.prev_closeFriday's official close from the closing auction.change_percentLatest trade against prev_close, so +0.49% is a pre-market move, not a settled one.bidThe pre-market bid and ask: 19 cents apart at this moment.
The same rule shows up in bars. Daily bars carry the official open and close. Intraday bars from GET /stocks/agg cover 9:30 a.m. to the close, so a chart built from them has no pre-market candles and no after-hours spike. That is usually what you want for indicators, and exactly what you do not want for an earnings-night dashboard.
How extended-hours prints show up in market data
| Surface | During pre-market and after-hours |
|---|---|
GET /stocks/quote/US:KO | The latest bid and ask, whatever the session |
GET /stocks/snapshot/US:KO | last_price is the latest extended-hours trade; prev_close stays the official close |
stocks.quotes, stocks.trades | Extended-hours quotes and trades stream as they happen |
stocks.agg with "session": "extended" | 1m, 5m and 15m bars from 4:00 a.m. to 8:00 p.m. ET, each tagged pre, regular or post |
GET /stocks/agg, intraday | Regular session only, 9:30 a.m. to the close |
overnight.quotes (add-on) | Derived reference quotes, Sunday to Thursday, 8:00 p.m. to 4:00 a.m. ET |
To stream extended-hours bars, add session to a stocks.agg subscription. Each frame carries its part of the day, so you can shade pre-market candles or drop them before computing a regular-session indicator. The stock streaming docs list the intervals.
{
"action": "subscribe",
"channels": ["stocks.agg"],
"symbols": ["US:KO"],
"interval": ["1m", "5m"],
"session": "extended"
}Two more details matter in thin hours. First, snapshot-on-subscribe for US stocks replays a last-known quote only if it is recent (about two minutes), so in a sleepy pre-market you can subscribe and hear nothing until the next tick. Call GET /stocks/snapshot/{symbol} first, or subscribe with "snapshot": "always". Second, between 8:00 p.m. and 4:00 a.m. ET the listing markets are closed; the US overnight session add-on covers the most traded US stocks and ETFs on those nights with a derived reference quote aggregated from several sources. Its dispersion_bps field says how far those sources disagree, which is the number to watch on a thin night.
Here is a short script that reports where a stock stands in extended hours and flags that the move is provisional:
import os
import requests
BASE_URL = "https://api.tickerlayer.com"
HEADERS = {"x-api-key": os.environ["TICKERLAYER_API_KEY"]}
def get(path, **params):
resp = requests.get(BASE_URL + path, params=params, headers=HEADERS, timeout=10)
resp.raise_for_status()
return resp.json()
status = get("/markets/status", asset="stocks", market="US")
snap = get("/stocks/snapshot/US:KO")
bid, ask = snap["bid"], snap["ask"]
spread_bps = (ask - bid) / ((ask + bid) / 2) * 10_000
print(f"phase {status['phase']}")
print(f"last {snap['last_price']} ({snap['change_percent']:+.2f}% vs close {snap['prev_close']})")
print(f"bid / ask {bid} / {ask} spread {spread_bps:.1f} bps")
if status["phase"] in ("pre_market", "post_market"):
print("extended hours: thin book, treat the move as provisional")phase pre_market
last 88.151 (+0.39% vs close 87.81)
bid / ask 88.15 / 88.2 spread 5.7 bps
extended hours: thin book, treat the move as provisionalReading an after-hours move without fooling yourself
- Check the volume behind the move. A 4% jump on 3,000 shares is a data point, not a verdict.
- Look at the spread before the price. If it is ten times its daytime width, the mid is a guess.
- Compare with the previous official close, not with the last after-hours trade.
- Expect the opening auction to reprice it: that is when the missing volume arrives.
- On news days, watch for halts. A stock can stay halted into the open; see trading halts.
- Keep extended-hours prints out of daily OHLC unless you label them.
Questions
What time is after-hours trading?
From 4:00 to 8:00 p.m. Eastern Time on regular trading days, which is 1:00 to 5:00 p.m. Pacific. On early-close days it runs from 1:00 to 5:00 p.m. ET.
What are pre-market trading hours?
Pre-market runs from 4:00 to 9:30 a.m. ET. Many brokers open their pre-market later, often at 7:00 or 8:00 a.m. ET, so check what yours offers.
Can anyone trade after hours?
Most US brokers offer extended-hours trading to retail clients, usually with limit orders only and sometimes a shorter window. You may need to enable it or mark each order as eligible for extended hours.
Why is after-hours trading riskier?
Fewer participants mean wider spreads, less depth and sharper moves on small orders, and news such as earnings often lands in these hours. Prices can change a lot at the next regular open.
Does after-hours trading change the closing price?
No. The official close comes from the 4:00 p.m. closing auction. After-hours trades move the last price, not the close.
Is there overnight trading for US stocks?
Some venues now run overnight sessions. TickerLayer carries a derived overnight reference quote for the most traded US stocks and ETFs, Sunday to Thursday from 8:00 p.m. to 4:00 a.m. ET, as a data add-on.