Market Price Endpoint: Session-Level Price Data for Stocks

A breakdown of the new market price endpoint: session fields, market state, and USD-normalized data.

A single price field rarely describes where a stock stands. For example, at 8:00 AM ET, AAPL has at least three values that could each be called its current price: the previous regular session’s close, the price at which it is changing hands in pre-market, and the last value from the post-market session the evening before. Reported as one number, none of them indicates which session produced it or when it was set.

To make that distinction visible, FinImpulse now has a dedicated Market Price API that returns a price snapshot for a single symbol, with the full session breakdown.

Why an Asset Can Have More Than One Current Price

On some exchanges, price discovery is not limited to a single window. This structure is standard on US exchanges, where the day is divided into three sessions:

  • Pre-market: 4:00 AM to 9:30 AM ET
  • Regular session: 9:30 AM to 4:00 PM ET
  • Post-market: 4:00 PM to 8:00 PM ET

Extended hours draw fewer participants than the regular session, so a smaller volume is enough to move the price, and a move that appears after the close often looks different once the next regular session opens.

The regular session close is therefore the reference point for most comparisons. It is the value behind official closing prices and the daily figures published by exchanges, while extended-hours prices describe what happens around it.

What Does the Market Price API Return

The Market Price API (/v1/market-price) is a GET endpoint that returns a price snapshot for a single symbol.

The response falls into two parts. General fields identify the asset and describe its context: the ticker and name, the currency it is priced in, market capitalization, the market state, and the FX rate used for USD normalization. The rest of the response is price data, split into four groups: current price, regular market, pre-market, and post-market.

Current Price

The current price is the most recently collected value for the asset, regardless of which session produced it. It is returned in the asset’s own currency and normalized to USD, and it may reflect a delay of up to one hour. The group also returns a timestamp recording the moment the value was collected.

Example:

Regular Market Price

The regular market group covers the main session. During the session, regular_market_price returns the live price; once the session ends, the same field holds the closing price. Alongside it, the group returns the session’s opening price, the previous close, volume, the absolute and percentage change, and the time of the last recorded trade.

Example:

Pre-Market Price and Post-Market Price

The pre-market and post-market groups are structured identically, each returning the price from its own session along with the change and the time of the last recorded trade. Both are applicable to assets listed on exchanges with a three-session structure, most commonly US exchanges.

Pre-Market fields example:

Post-Market fields example:

How to Determine the Active Price

The market price endpoint returns a market_state field that makes the rest of the response readable. It takes four primary values:

  • REGULAR — the regular session is in progress
  • PRE — the pre-market session is in progress
  • POST — the post-market session is in progress
  • CLOSED — no session is active

The field may also hold more granular states, such as PREPRE, POSTPOST, and OVERNIGHT.

The state matters because session fields keep their last value once the session ends. Outside their own hours, each of them returns the price from the most recent session of that type, and returns null only where no such data exists. In practice, during pre-market and post-market hours, regular_market_price returns the closing price of the most recent completed session, and regular_market_time reflects that session’s closing time rather than a live trade.

In the examples above, market_state is PRE. Only current_price and pre_market_price are live, and they hold the same value, since pre-market is the session that produced the most recent price. regular_market_price returns the close of the previous regular session, and post_market_price the last value recorded the evening before.

What the Response Looks Like for Other Listings

On exchanges without a three-session structure, the endpoint returns the regular session price and the current price, while the pre-market and post-market fields return null. market_state narrows accordingly, describing the asset through the regular and closed states.

Prices are returned in the currency in which the asset is priced, so for these assets, it is the local currency of the exchange. This is where usd_rate and current_price_usd become relevant, giving a common base for comparison across markets without a separate conversion step. For assets already priced in dollars, usd_rate is returned as null.

Where to Use the Market Price API

The market price endpoint can be used anywhere prices are shown or processed in real time. For example, live price blocks on asset detail pages, widgets, and watchlists, where the shown value has to match the session in progress; alerting and screening workflows, which need to distinguish an active price from a carried-over one; and cross-market monitoring, where USD-normalized prices give a single base for assets quoted in different currencies.

Because every session is returned in the same response, the same request can support display, comparison, and programmatic checks — each reading a different field without an additional call.