AAPL and an ETF can sit next to each other in the same watchlist. Their price fields may look similar, but the information needed to understand them is different. A company has a business to report on. A fund has a portfolio, an investment objective and its own distribution policy.
A US stock and ETF data API supplies the prices and history for that screen. The application still needs to distinguish a current price from a fund's asset value, and a price change from an investor's return.
This guide explains those distinctions and shows where the SiftingIO US Stocks API fits. It includes real-time data, 25+ years of historical US stock data for supported series, and ETF coverage. The depth available for an individual stock or fund depends on its own history and the available dataset.
What stocks and ETFs share, and what they do not#
A stock represents an ownership interest in a company. An ETF represents an interest in a fund portfolio, which may hold stocks, bonds or other assets. Both can have a market price, trading volume and an OHLCV chart: open, high, low, close and volume.
Those shared fields do not make the instruments interchangeable. For example, a company's revenue belongs on a company analysis page. A fund's investment objective and portfolio belong on a fund analysis page. An ETF is also not automatically a broad, diversified fund; its strategy and holdings determine what it owns. The Investor.gov guide to fund characteristics explains the distinction.
| Data or question | Individual stock | ETF | Application decision |
|---|---|---|---|
| Current market price | Price of the company's shares | Price of the fund's shares | Display the instrument and the price timestamp together |
| Historical OHLCV | Trading history of the stock | Trading history of the fund's shares | Confirm the requested symbol, period and adjustment policy |
| Business or fund context | Company reports and reported financials | Fund objective, prospectus and portfolio information | Use a different information panel for each security type |
| Net asset value, or NAV | Not the same concept as a stock price | Per-share value of the fund's assets after liabilities | Do not relabel a market-price response as NAV |
| Performance | Depends on prices, distributions and share changes | Depends on prices, fund distributions and the calculation method | Label a price-only comparison as price return |
SiftingIO's stock product covers real-time prices and historical bars for supported stocks and ETFs. It also offers SEC filings and reported company financials for relevant issuers. ETF price coverage does not, by itself, promise a fund-holdings feed, a NAV feed or the same financial fields used for an operating company.
An ETF's market price is not its NAV#
NAV per share is a fund valuation: assets minus liabilities, divided by the number of fund shares. A market price is the price at which the fund's shares trade. They can differ. A price above NAV is described as a premium; a price below NAV is a discount.
This matters when naming fields in an app. If an API returns a market price, call it a market price. Do not put that value into a box labeled "NAV" because the selected instrument happens to be an ETF.
The same care applies to a premium or discount calculation. Comparing a current price with a NAV from a different valuation time can produce a number, but it does not produce a comparison for a common moment. Retain the valuation date, price timestamp and source of each input. If the NAV input is missing, show it as unavailable rather than inferring it from the price.
For a first ETF screen, a clearly labelled market price and historical chart are useful on their own. Add fund valuations or holdings only when you have the appropriate datasets and can explain their timing.
Why a lower chart price is not the whole return#
When the share units are comparable, a close-to-close calculation measures price return:
price return = (ending price / starting price) - 1
It does not automatically account for cash distributions or a change in the number of shares held.
Consider a hypothetical fund share priced at $100. It distributes $2 in cash, and its price then stands at $98. Assume no other price movement, fees or taxes. A price chart shows a 2% decline. The holder has a $98 share and $2 cash, for the same $100 combined value in this simplified example.
| Item | Before the distribution | After the distribution |
|---|---|---|
| Value of one fund share | $100 | $98 |
| Cash received from the distribution | $0 | $2 |
| Combined share value and cash | $100 | $100 |
These are teaching values, not observations from a particular fund. Actual market movements can occur at the same time. The Investor.gov bulletin on fund distributions explains why a distribution can reduce a fund's NAV and typically its market price while transferring value to the holder.
For longer periods, a total-return calculation needs a defined policy for distributions and reinvestment. Share splits require consistent treatment of prices and share counts as well. Do not apply a second adjustment to a series that has already been adjusted.
SiftingIO's historical stocks endpoint returns OHLCV bars and documents no price adjustment: there is no split- or dividend-adjustment parameter and no adjustment field in the response. Do not assume the series has been adjusted for you. Treat a percentage change between two closes as a raw price comparison rather than a ready-made total-return series, and if the period includes a share split or a distribution, account for it before reading that comparison as a return.
What 25+ years of history means for a stock or ETF#
Long history lets an application move beyond a recent chart. It can support multi-year price comparisons, rolling calculations and research over different market conditions.
SiftingIO provides 25+ years of historical US stock data for supported series. This is dataset depth, not a promise that every instrument has traded for 25 years. A fund launched five years ago cannot have 25 years of its own traded-share history. An older stock may also have ticker changes or other events that matter when building a long series.
Before comparing two instruments, establish the usable date range for both. Start the comparison where both have observations. Do not fill the earlier part of a newer fund's chart with an unrelated series and present it as that fund's own trading history.
Historical depth is separate from API capacity. SiftingIO includes full available history on every tier, including Free; monthly request quotas, request rates and WebSocket capacity vary by plan. The pricing page lists those limits. A large download may require several paginated requests even when the entire date range is included in the plan.
Request a price and a short historical sample#
The following examples use AAPL to demonstrate request construction. They are not an investment recommendation or captured market observations. Keep your API key in a server environment or a private local terminal.
For the latest available price:
curl --fail-with-body --silent --show-error \
-H "X-API-Key: ${SIFTING_API_KEY:?Set SIFTING_API_KEY first}" \
"https://api.sifting.io/v1/last/trade/stocks/AAPL"
The last-trade response includes s for the symbol, p for price, P for size and t for a Unix timestamp in milliseconds. Price and size are strings. Keep t beside the displayed price; a response fetched now may contain a price from an earlier trading session.
For a small historical sample:
curl --fail-with-body --silent --show-error --compressed --get \
-H "X-API-Key: ${SIFTING_API_KEY:?Set SIFTING_API_KEY first}" \
-H "Accept-Encoding: gzip" \
--data-urlencode "start=2025-01-01" \
--data-urlencode "end=2025-01-31" \
--data-urlencode "interval=1d" \
--data-urlencode "limit=1000" \
"https://api.sifting.io/v1/hist/stocks/AAPL/bars"
Each row in data contains t, o, h, l, c and v: bar opening time in Unix milliseconds, open, high, low, close and volume. Historical stock bars cover regular sessions. A day without a trading session should not become a zero-price candle.
For a larger range, pass meta.next_cursor as the next request's cursor parameter, keeping the same filters, until the requested range is complete. The same stock-bars route is used for supported ETF symbols; check the symbol catalog and the requested dataset's actual availability first. A catalog entry alone does not guarantee every dataset for that instrument.
Use REST to retrieve history and the initial current values. Use WebSocket updates when the screen needs continuous real-time data. A live price update does not replace the chart's historical bars or change the meaning of its returns.
Start with a screen you can explain#
For a stock, show the company, current price, timestamp and price history, then add relevant company reports. For an ETF, show the fund, current price, timestamp and price history, then add verified fund information separately. Give a return calculation its own clear definition.
You can create a free SiftingIO account to get an API key and evaluate stock and ETF data within the plan's access and usage limits. If you prefer a worksheet, the market data export tool provides CSV and Excel downloads. Check the plan's display rights and applicable conditions before publishing data in a customer-facing product.
SiftingIO also provides real-time and historical data for forex, commodities and crypto. That gives a multi-asset application room to grow while keeping each instrument's history, units and market calendar explicit.



