For SPY, the nav values in Massive's ETF Global Fund Flows dataset match the NAV history State Street publishes for the fund, to the precision stored, on every date the dataset holds, back to its start on 3 April 2017. So you can reconcile nav against the issuer's own figures. What an ETF Global record cannot tell you is when, during the day, it first appeared in the API.
Applies to
- Plans: ETF Global Fund Flows and ETF Global Fund Flows Business, the plans the fund flows documentation lists.
- Endpoints or feeds: /etf-global/v1/fund-flows
- Asset classes: US-listed ETFs
How to compare nav with the issuer's NAV
- Request the fund's ETF Global Fund Flows record for one effective date.
- Open the issuer's NAV history for the same fund. For SPY it is the NAV History download on State Street's SPY page.
- Compare nav with the issuer's NAV for that date.
curl -X GET "https://api.massive.com/etf-global/v1/fund-flows?composite_ticker=SPY&effective_date=2026-10-05&apiKey=YOUR_API_KEY"
Response, trimmed:
{
"status": "OK",
"results": [
{
"processed_date": "2026-10-05",
"effective_date": "2026-10-05",
"composite_ticker": "SPY",
"nav": 774.554839
}
]
}
State Street's NAV history for SPY lists a NAV of 774.554839 for 5 October 2026, the same figure to six decimal places. Some SPY records, mostly from 2017 to 2019, are stored to fewer decimal places, so they agree with State Street's figure to within $0.002 rather than exactly: the ETF Global nav for 3 April 2017 is 235.353, against State Street's 235.352823.
Is the ETF Global NAV history adjusted for splits?
The nav history in Massive's ETF Global Fund Flows data is not adjusted for splits after the fact: each record keeps the NAV per share as it stood on its effective date. SCHD split 3-for-1 with an execution date of 11 October 2024, as /stocks/v1/splits?ticker=SCHD lists, and its nav drops by about two thirds across that date:
curl -X GET "https://api.massive.com/etf-global/v1/fund-flows?composite_ticker=SCHD&effective_date.gte=2024-10-10&effective_date.lte=2024-10-11&sort=processed_date.asc&apiKey=YOUR_API_KEY"
Response, trimmed:
{
"status": "OK",
"results": [
{
"processed_date": "2024-10-10",
"effective_date": "2024-10-10",
"composite_ticker": "SCHD",
"nav": 84.578678
},
{
"processed_date": "2024-10-11",
"effective_date": "2024-10-11",
"composite_ticker": "SCHD",
"nav": 28.531308
}
]
}
A split-adjusted history would show the 10 October 2024 value near 28.19, one third of 84.58. Distributions are not taken out of the history either: SPY's nav for 3 April 2017, 235.353, sits beside that day's SPY closing price of 235.33.
To put an ETF Global NAV history on today's share basis, use the splits endpoint the way the splits documentation describes for prices: for a nav on date D, find the first split whose execution_date is after D and multiply the nav by that split's historical_adjustment_factor.
When is the ETF Global data updated?
Massive's documentation lists ETF Global Fund Flows as updated daily, with records back to 3 April 2017, and does not publish a time of day. Each ETF Global Fund Flows record carries two dates and no time:
- effective_date: the date the information was accurate or valid.
- processed_date: the date ETF Global received and processed the data.
Both fields are yyyy-mm-dd dates. Some issuers, such as Vanguard, release their data on a delay, so the documentation notes that effective_date can be several weeks earlier than processed_date.
Because neither date field holds a time, an ETF Global Fund Flows record cannot tell you what time of day it first became available, and the response has no field for a revision or an earlier version of a value. If your research needs the values as they stood on a given morning, store each day's pull yourself.
If you see an error
Invalid query parameter: 'sort'. Expected one of [composite_ticker, processed_date], but found: 'effective_date'. with HTTP 400 means the fund flows endpoint cannot sort by effective_date. Fix: sort by processed_date, or filter with effective_date.gte and effective_date.lte and order the rows yourself.

