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
  1. Pre-market and after-hours trading times
  2. Why extended-hours prices behave differently
  3. Extended hours do not set the official price
  4. How extended-hours prints show up in market data
  5. Reading an after-hours move without fooling yourself
  6. Questions

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

Pre-market4:00 to 9:30 am ETPre-market
Regular9:30 am to 4:00 pm ETRegular session
After-hours4:00 to 8:00 pm ETAfter-hours
OvernightData add-on, Sun to ThuOvernight

Hours in UTC

March 8 to October 31, 2026. In winter every span starts one hour later in UTC. The overnight row is a TickerLayer data add-on, not a regular exchange session.
SessionEasternCentralPacificOn early-close days
Pre-market4:00 to 9:30 am3:00 to 8:30 am1:00 to 6:30 amUnchanged
After-hours4:00 to 8:00 pm3:00 to 7:00 pm1:00 to 5:00 pm1:00 to 5:00 pm ET
The full extended windows. Brokers often offer less; a pre-market that starts at 7:00 or 8:00 a.m. ET is common.

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)

Illustrative shape for a large, liquid US stock, hours in ET. Not a measurement: spreads vary by stock and by day.

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
}
  1. last_priceThe latest trade, here a pre-market print.
  2. 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.
  3. prev_closeFriday's official close from the closing auction.
  4. change_percentLatest trade against prev_close, so +0.49% is a pre-market move, not a settled one.
  5. bidThe pre-market bid and ask: 19 cents apart at this moment.
GET /stocks/snapshot/US:KO, captured at about 6:25 a.m. ET on Monday, September 28, 2026.

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

SurfaceDuring pre-market and after-hours
GET /stocks/quote/US:KOThe latest bid and ask, whatever the session
GET /stocks/snapshot/US:KOlast_price is the latest extended-hours trade; prev_close stays the official close
stocks.quotes, stocks.tradesExtended-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, intradayRegular 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
US stocks. Quote and trade frames carry numbers as strings; stocks.agg bars and REST responses use JSON numbers.

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.

Subscribe to extended-hours barsJSON
{
  "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:

extended_move.pyPython
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")
Output (6:57 a.m. ET, September 28, 2026)
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 provisional

Reading 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.

Keep reading

Ready to integrate?

Start with the free tier, explore the docs, and connect via REST or WebSocket in minutes.