Get startedDashboard

Price fields

Look up every field a prices row can contain, with its type, unit, nullability and meaning.

View llms.txt

These are the fields of a row returned by Prices, GET /v1/prices/{ticker}. Every row carries five identity fields. Twelve data fields are selectable with fields, and seven companion fields appear alongside the data fields they describe.

Units are the same on every row. Prices are in USD per share, as traded. volume and shares_outstanding are numbers of shares, not millions. market_cap is in USD, not millions. return_daily is a decimal ratio, not a percentage. split_ratio is new shares per old share. Dates are ISO YYYY-MM-DD strings. A value that is not recorded is null, never 0.

Identity fields

Returned on every row, whatever fields says.

fieldtypeunitnullabledescription
entity_idintnonenoSecurity id: one share class of one company. GOOGL is 10030636 and GOOG is 10003590. The same id is used by Resolve, Search, Index membership and Institutional holdings. See Tickers and entities.
tickerstrnoneyesSymbol in force on the row's date. A later symbol is never applied to earlier rows, so Booking Holdings reads PCLN in 2016 and BKNG today. Class shares read in hyphen form, such as BRK-B. null on rows before the security's first recorded symbol, such as IBM before 1962-07-02.
entity_namestrnonenoCurrent name of the security as recorded, such as APPLE INC or WHIRLPOOL CORP — DP SHS SER A. The same on every row of a series.
gics_sectorstrnoneyesGICS sector of the issuer, such as Information Technology. null when the issuer has no GICS classification, such as the ETF GLD.
datestrISO datenoTrading date of the bar.

Price and volume fields

fieldtypeunitnullabledescription
openfloatUSD per shareyesOpening price as traded. null where no opening price is recorded, which includes many older rows, such as IBM in 1973 and Apple in 1980.
highfloatUSD per shareyesHighest price as traded. On a midpoint row, the higher of the two quotes the midpoint is taken from.
lowfloatUSD per shareyesLowest price as traded. On a midpoint row, the lower of the two quotes.
closefloatUSD per shareyesClosing price as traded. Never adjusted: it steps at a split. On a midpoint row, the midpoint of the bid and ask. null on a trading day with no recorded price.
price_basisstrnonenotrade when the close is a traded price, midpoint when it is a bid/ask midpoint. Apple's early closes, from 1980-12-12 to 1982-10-01, are midpoints. Returned when any of open, high, low or close is selected.
adj_closefloatUSD per shareyesClose restated to today's share basis for splits, stock dividends and spin-offs. Not adjusted for cash dividends. Equal to close on the latest bar. meta.adj_close_basis reads split. Removed from every row by adjust=none. null when close is.
volumeintsharesyesShares traded on the day, as traded, not split-adjusted. null where not recorded.
return_dailyfloatdecimal ratioyesTotal return from the previous close, including cash distributions and the value of spin-offs: 0.01 is 1%. Unaffected by splits. null on a security's first bar and on a day with no close.

Listing field

fieldtypeunitnullabledescription
exchange_codestrnoneyesListing exchange on the row's date: NYSE, NASDAQ, AMEX, ARCA, BATS or IEX. null when the security has no recorded listing exchange, such as WHR-PA.

Share count fields

fieldtypeunitnullabledescription
shares_outstandingfloatsharesyesShares outstanding for this share class on the row's date, on the same split basis as close. Taken from the latest observation on or before the date and restated for any split or stock dividend since that observation, so AAPL reads 4275634000 on 2020-08-28 and 17102536000 on 2020-08-31. null before the first observation, and when the latest observation is more than 400 days older than the row.
market_capfloatUSDyesclose × shares_outstanding for the requested share class only. Not millions. Returned only when fields names it. null when either input is. For the whole company across share classes, use Metrics.
shares_as_ofstrISO dateyesDate of the observation behind shares_outstanding. Reported also when the count is withheld as stale. null when there is no observation. Returned with shares_outstanding or market_cap.
shares_sourcestrnoneyesOrigin of the observation: filing, filing_class or archive. null when there is no observation. Returned with shares_outstanding or market_cap.
shares_staleboolnonenotrue when the latest observation is more than 400 days older than the row; shares_outstanding and market_cap are then null. false when there is no observation at all. Returned with shares_outstanding or market_cap.

Corporate action fields

fieldtypeunitnullabledescription
split_ratiofloatratioyesNew shares per old share on the ex-date: 4 for Apple's 4-for-1 split on 2020-08-31, 25 for Booking's 25-for-1 on 2026-04-06, 0.125 for GE's 1-for-8 reverse split on 2021-08-02, 1.05 for Commerce Bancshares' 5% stock dividend on 2025-12-02. null on days without one, and on days where split_ratio_suspect is true. Spin-offs do not set it.
split_ratio_suspectboolnonenotrue when the day carries a capital change recorded as a ratio that is not a plain split, such as Comcast on 2026-01-05. split_ratio is then null, and adj_close and return_daily still reflect the change. Returned with split_ratio.
dividendfloatUSD per shareyesCash distributed per share on the ex-date, on that date's share basis, not split-adjusted. Covers ordinary, special, return-of-capital and capital-gains distributions. When a day has several, dividend is their sum. null on days without one. Cash paid when a security ends, such as merger consideration, is not a dividend: Twitter's last row, 2022-10-27, reads dividend: null, and the cash is reflected in meta.delisting.
dividend_typestrnoneyesKind of distribution in dividend. Several kinds on one day are joined with commas in alphabetical order, such as capital_gains,cash_dividend. null when dividend is. Returned with dividend.
ca_sourcestrnonenoWhich of the two corporate-action records answered split_ratio and dividend on the row: archive or vendor (values below). Returned on every row when split_ratio or dividend is selected.

Values of enumerated fields

price_basis:

  • trade: the close is a traded price.
  • midpoint: no trade is recorded for the close, and the close is the midpoint of the bid and ask.

shares_source:

  • filing: the company's share count from its SEC filings, such as Apple's from 2026.
  • filing_class: a per-class share count from the company's SEC filings, for companies that report share classes separately, such as Alphabet's GOOGL and GOOG.
  • archive: the historical share-count record, such as Apple's in 2025.

dividend_type:

  • cash_dividend: an ordinary cash dividend.
  • special_dividends: a special cash dividend, such as Costco's 15 USD per share on 2023-12-27.
  • return_of_capital: a distribution classed as a return of capital, such as Kimbell Royalty Partners' 0.43 USD per unit on 2024-03-12.
  • capital_gains: a capital-gains distribution, such as the one paid by the closed-end fund Central Securities on 2025-11-14.
  • cash_distribution: a cash distribution on a row whose ca_source is vendor, such as Apple's 0.27 USD per share on 2026-08-10.

ca_source:

  • archive: the historical corporate-action record. Comcast's rows read archive through 2025-12-31.
  • vendor: the corporate-action record kept current with each trading day. Comcast's rows read vendor from 2026-01-02.

exchange_code:

  • NYSE: New York Stock Exchange, such as GM.
  • NASDAQ: Nasdaq, such as AAPL.
  • AMEX: NYSE American, formerly the American Stock Exchange, such as SEB.
  • ARCA: NYSE Arca, such as GLD.
  • BATS: Cboe BZX, formerly BATS, such as CBOE.
  • IEX: Investors Exchange, such as IBKR in 2019.

Default and opt-in fields

With no fields parameter, or fields=all, a row carries the identity fields and these 11 data fields: open, high, low, close, adj_close, volume, return_daily, shares_outstanding, exchange_code, split_ratio and dividend, plus their companions. market_cap is the one opt-in field: it appears only when fields names it.

Companion fields follow the data fields you select:

  • price_basis appears when open, high, low or close is selected.
  • shares_as_of, shares_source and shares_stale appear when shares_outstanding or market_cap is selected.
  • split_ratio_suspect appears when split_ratio is selected.
  • dividend_type appears when dividend is selected.
  • ca_source appears when split_ratio or dividend is selected.

fields=market_cap on its own returns the identity fields, market_cap, shares_as_of, shares_source and shares_stale:

response.json
{
  "data": [
    {"entity_id": 10003635, "ticker": "AAPL", "entity_name": "APPLE INC", "gics_sector": "Information Technology", "date": "2026-09-25", "market_cap": 4977636972600, "shares_as_of": "2026-07-17", "shares_source": "filing", "shares_stale": false}
  ],
  "meta": {
    ...
  }
}

Fields on interval rows

With interval set to 3d, 1w, 1mo, 3mo, 6mo or 1y, each row covers one bucket of trading days and carries the same fields, aggregated as follows. No field exists only on interval rows.

fieldtypeunitnullabledescription
datestrISO datenoFirst trading date in the bucket.
tickerstrnoneyesSymbol in force on the bucket's last trading day.
openfloatUSD per shareyesOpen of the first trading day.
highfloatUSD per shareyesHighest high in the bucket, as traded.
lowfloatUSD per shareyesLowest low in the bucket, as traded. In a bucket that contains a split, high and low can come from opposite sides of it: Apple's August 2020 bar has high 515.14001 and low 126.
closefloatUSD per shareyesClose of the last trading day.
price_basisstrnonenomidpoint when any day in the bucket is a midpoint, otherwise trade.
adj_closefloatUSD per shareyesadj_close of the last trading day.
volumeintsharesyesSum of daily volumes, as traded.
return_dailyfloatdecimal ratioyesTotal return over the bucket, compounded from the daily returns: Apple's 2019 bar reads 0.889662523885143.
exchange_codestrnoneyesListing exchange on the bucket's last trading day.
shares_outstandingfloatsharesyesShare count on the bucket's last trading day.
market_capfloatUSDyesclose × shares_outstanding of the bucket.
shares_as_ofstrISO dateyesObservation date behind the bucket's share count.
shares_sourcestrnoneyesOrigin of that observation.
shares_staleboolnonenoStaleness of that observation on the bucket's last trading day.
split_ratiofloatratioyesProduct of the split ratios in the bucket; 1 when the bucket has no split. Apple's 2020 bar reads 4.
split_ratio_suspectboolnonenotrue when the bucket's product ratio is not a plain split; split_ratio is then null. Comcast's week of 2026-01-05 reads true.
dividendfloatUSD per shareyesSum of the distributions in the bucket, each on its own date's share basis; null when there are none. Apple's 2020 bar reads 2.6149999999999998, which adds three pre-split and one post-split payment.
dividend_typestrnoneyesEvery kind of distribution in the bucket, comma-separated in alphabetical order.
ca_sourcestrnonenoRecord that answered the bucket's last trading day. Comcast's week of 2025-12-29, which runs into 2026, reads vendor.

Series fields in meta

Three meta fields describe the series rather than a row. The rest of meta is on Prices and Response metadata.

fieldtypeunitnullabledescription
meta.entity_id_grainstrnonenoAlways security: entity_id on a row names one share class.
meta.adj_close_basisstrnonenoAlways split: adj_close is restated for splits, stock dividends and spin-offs, not for cash dividends.
meta.delistingdict[str, object]nonenoOmitted when empty. For each security on the page whose last bar is on or before its recorded exit, keyed by security id.
meta.delisting.*.event_datestrISO datenoDate of the exit.
meta.delisting.*.event_typestrnonenoKind of exit, such as merger (Twitter, 2022-10-27), exchange (Raytheon, 2001-05-14), liquidation or dropped (Lehman Brothers, 2008-09-17).
meta.delisting.*.delisting_returnfloatdecimal ratioyesReturn from the last close to the value recorded at the exit: 0.009311 for Twitter, -0.6 for Lehman Brothers.

Adjusting prices yourself

adj_close is adjusted backwards: the latest bar equals close, and every earlier bar is restated onto today's share basis. When a new split, stock dividend or spin-off happens, earlier adj_close values change. close never changes.

To adjust forwards from a start date instead, take close and split_ratio and compound the ratios forward:

forward_adjusted.py
import xfinlink as xfl

xfl.set_api_key("YOUR_API_KEY")

df = xfl.prices("BKNG", start="2026-04-01", end="2026-04-08",
                fields=["close", "split_ratio"], adjust="none")
df = df.sort_values("date")

factor = df["split_ratio"].fillna(1.0).cumprod()
df["forward_adj_close"] = df["close"] * factor
print(df[["date", "ticker", "close", "split_ratio", "forward_adj_close"]].to_string(index=False))
stdout
      date ticker   close  split_ratio  forward_adj_close
2026-04-01   BKNG 4184.56          NaN            4184.56
2026-04-02   BKNG 4194.31          NaN            4194.31
2026-04-06   BKNG  176.19         25.0            4404.75
2026-04-07   BKNG  173.41          NaN            4335.25
2026-04-08   BKNG  181.00          NaN            4525.00

split_ratio covers splits and stock dividends. A spin-off, or a day with split_ratio_suspect: true, leaves split_ratio null, so this forward series does not adjust for it; adj_close and return_daily do.

There is no dividend-adjusted price field. To build one, compound return_daily into a total return index and scale it to the last adj_close:

div_adjusted.py
import xfinlink as xfl

xfl.set_api_key("YOUR_API_KEY")

df = xfl.prices("AAPL", start="2026-08-06", end="2026-08-12",
                fields=["adj_close", "return_daily"])

df["total_return_index"] = (1 + df["return_daily"]).cumprod()
df["div_adj_close"] = (df["adj_close"].iloc[-1] * df["total_return_index"]
                       / df["total_return_index"].iloc[-1])
print(df[["date", "adj_close", "return_daily", "div_adj_close"]].round({"div_adj_close": 4}).to_string(index=False))
stdout
      date  adj_close  return_daily  div_adj_close
2026-08-06     312.41      0.004534       312.1366
2026-08-07     313.33      0.002945       313.0558
2026-08-10     308.26     -0.015319       308.2600
2026-08-11     304.91     -0.010867       304.9100
2026-08-12     302.25     -0.008724       302.2500

Rows before Apple's 0.27 USD dividend on 2026-08-10 are scaled down by it; adj_close is not.

On that ex-date, return_daily is the close plus the dividend over the previous close: (308.26 + 0.27) / 313.33 - 1 = -0.015319. adj_close moves by the price alone: 308.26 / 313.33 - 1 = -0.016181. On a spin-off both fields carry the distribution. On 2024-04-02, when GE distributed GE Vernova, GE's close fell from 175.36 to 136.47 USD per share, while adj_close and return_daily both show a change of -0.022183.

Was this page helpful?