---
title: "ETF flows, the day's summary"
method: GET
path: "/flows.json"
---

# ETF flows, the day's summary

`GET /flows.json`

## Request

- Base URL: `https://tickerinside.com/api/v1`
- URL: `https://tickerinside.com/api/v1/flows.json`
- Auth: none required

What the US ETFs read daily from their issuers' files bought and sold, security by security, from the change in shares held between each fund's previous file and its file of date, each file placed at the market close it reflects: the largest net additions and reductions by value, in percent and beyond the funds' own growth, the securities that entered or exited funds tracking the same index, the corporate actions, and each of the last 20 closes. Its CSV twin, /api/v1/flows.csv, lists every security moved on date. A change in shares held mixes the creations and redemptions of a fund's own shares with its rebalancing: read beyond_growth for the second. Only the funds read daily from their issuers are counted, never the funds known from SEC filings, and only common shares: futures, options and short positions are left out. A split, a bonus issue or a stock dividend, a count in other units, a line a file dropped for a day, a change of ticker and the lines a merger or a spin-off moved are left out as no trade. A sum is published only when three or more funds make it and no one fund more than 80% of it; withheld says why one is null. Feeds: /feeds/flows.xml, /feeds/fund/{ticker}.xml, /feeds/stock/{ticker}.xml (RSS 2.0). Not under CC BY 4.0: the history terms apply. A feed reader may poll the feeds; fetching the shards or many securities' answers on a schedule to keep them is systematic extraction.

## Response `200`

The file. The example is a real answer, shortened: long lists and maps keep their first entries.

- FlowsSummary
  - `date` string, nullable, required: The market close of the figures: the newest close that nine in ten of the funds counted have a file of. Each file is placed at the close it reflects (Invesco dates a Friday's file on the Saturday), and each fund's change runs from its previous file to its file of this close.
  - `newest_file` string, nullable, required: The newest close a file read reflects. A close is published once every fund still publishing has a file of it or of a later close, so date can be older.
  - `first_date` string, nullable, required: The first close with a counted change: the first files carrying share counts in today's keys.
  - `method` string, required: The method of the figures, ti-flows/1.
  - `coverage` object, required: Which funds are counted; its fields are described below.
    - `funds_read_daily` integer, required: The funds read from their issuers' files every business day.
    - `funds_counted` integer, required: How many of them have a step to date that is counted.
    - `issuers` string[], required: The issuers of the funds counted.
    - `net_assets_usd` integer, nullable, required: The counted funds' net assets, as their issuers' files state them.
    - `share_of_stock_etf_assets_pct` number, nullable, required: The counted funds' share of the assets of the covered US stock ETFs, measured as the universe's share of assets is; null when not measured.
    - `not_counted` object, required: How many funds of the archive are not counted, by reason, not_daily for a fund whose issuer publishes monthly.
  - `added_by_value` object[], required: The ten securities with the largest net additions in dollars on date, the securities in not_ranked left out; a row is described below.
    - `ticker` string, required: The security's key: a US ticker, or a local code and market for a line listed abroad (7203.JP).
    - `name` string, nullable, required: Its name, where known.
    - `funds_adding` integer, required: How many funds hold more shares of it than in their previous file.
    - `funds_trimming` integer, required: How many hold fewer.
    - `funds_entered` integer, required: How many of those adding did not hold it before.
    - `funds_exited` integer, required: How many of those trimming hold none now.
    - `net_shares` integer, nullable, required: The change in shares held, summed over the funds. Null when fewer than three funds moved it or one fund makes more than 80% of it, as withheld says: a fund's share count is never published.
    - `net_shares_pct` number, nullable, required: net_shares in percent of the shares the funds held before; null when fewer than three funds held it before or after, or one fund held more than 80% of it.
    - `net_shares_beyond_growth` integer, nullable, required: The same change less the part in proportion to each fund's own growth across its step (b minus k times a, k the fund's median ratio of share counts).
    - `net_value_usd` integer, nullable, required: net_shares valued at each file's own price per share: market value over shares, or weight times the fund's stated net assets over shares. Never an outside price.
    - `net_value_beyond_growth_usd` integer, nullable, required: net_shares_beyond_growth valued the same way.
    - `withheld` object, nullable, required: Why each null sum is null, as {field: reason}, or null: fewer_than_3_funds, one_fund_dominant (one fund makes more than 80% of the sum, or of the difference two published sums give, such as net_shares less net_shares_beyond_growth), gives_back_a_fund_count (the sums as printed, taken as one or two funds' own or compared with the figures published before for the same close, would give back a fund's share count) or not_all_valued.
  - `reduced_by_value` object[], required: The ten with the largest net reductions in dollars.
    - `ticker` string, required: The security's key: a US ticker, or a local code and market for a line listed abroad (7203.JP).
    - `name` string, nullable, required: Its name, where known.
    - `funds_adding` integer, required: How many funds hold more shares of it than in their previous file.
    - `funds_trimming` integer, required: How many hold fewer.
    - `funds_entered` integer, required: How many of those adding did not hold it before.
    - `funds_exited` integer, required: How many of those trimming hold none now.
    - `net_shares` integer, nullable, required: The change in shares held, summed over the funds. Null when fewer than three funds moved it or one fund makes more than 80% of it, as withheld says: a fund's share count is never published.
    - `net_shares_pct` number, nullable, required: net_shares in percent of the shares the funds held before; null when fewer than three funds held it before or after, or one fund held more than 80% of it.
    - `net_shares_beyond_growth` integer, nullable, required: The same change less the part in proportion to each fund's own growth across its step (b minus k times a, k the fund's median ratio of share counts).
    - `net_value_usd` integer, nullable, required: net_shares valued at each file's own price per share: market value over shares, or weight times the fund's stated net assets over shares. Never an outside price.
    - `net_value_beyond_growth_usd` integer, nullable, required: net_shares_beyond_growth valued the same way.
    - `withheld` object, nullable, required: Why each null sum is null, as {field: reason}, or null: fewer_than_3_funds, one_fund_dominant (one fund makes more than 80% of the sum, or of the difference two published sums give, such as net_shares less net_shares_beyond_growth), gives_back_a_fund_count (the sums as printed, taken as one or two funds' own or compared with the figures published before for the same close, would give back a fund's share count) or not_all_valued.
  - `added_by_shares_pct` object[], required: The ten largest net additions in percent of the shares the funds held before.
    - `ticker` string, required: The security's key: a US ticker, or a local code and market for a line listed abroad (7203.JP).
    - `name` string, nullable, required: Its name, where known.
    - `funds_adding` integer, required: How many funds hold more shares of it than in their previous file.
    - `funds_trimming` integer, required: How many hold fewer.
    - `funds_entered` integer, required: How many of those adding did not hold it before.
    - `funds_exited` integer, required: How many of those trimming hold none now.
    - `net_shares` integer, nullable, required: The change in shares held, summed over the funds. Null when fewer than three funds moved it or one fund makes more than 80% of it, as withheld says: a fund's share count is never published.
    - `net_shares_pct` number, nullable, required: net_shares in percent of the shares the funds held before; null when fewer than three funds held it before or after, or one fund held more than 80% of it.
    - `net_shares_beyond_growth` integer, nullable, required: The same change less the part in proportion to each fund's own growth across its step (b minus k times a, k the fund's median ratio of share counts).
    - `net_value_usd` integer, nullable, required: net_shares valued at each file's own price per share: market value over shares, or weight times the fund's stated net assets over shares. Never an outside price.
    - `net_value_beyond_growth_usd` integer, nullable, required: net_shares_beyond_growth valued the same way.
    - `withheld` object, nullable, required: Why each null sum is null, as {field: reason}, or null: fewer_than_3_funds, one_fund_dominant (one fund makes more than 80% of the sum, or of the difference two published sums give, such as net_shares less net_shares_beyond_growth), gives_back_a_fund_count (the sums as printed, taken as one or two funds' own or compared with the figures published before for the same close, would give back a fund's share count) or not_all_valued.
  - `reduced_by_shares_pct` object[], required: The ten largest net reductions in percent.
    - `ticker` string, required: The security's key: a US ticker, or a local code and market for a line listed abroad (7203.JP).
    - `name` string, nullable, required: Its name, where known.
    - `funds_adding` integer, required: How many funds hold more shares of it than in their previous file.
    - `funds_trimming` integer, required: How many hold fewer.
    - `funds_entered` integer, required: How many of those adding did not hold it before.
    - `funds_exited` integer, required: How many of those trimming hold none now.
    - `net_shares` integer, nullable, required: The change in shares held, summed over the funds. Null when fewer than three funds moved it or one fund makes more than 80% of it, as withheld says: a fund's share count is never published.
    - `net_shares_pct` number, nullable, required: net_shares in percent of the shares the funds held before; null when fewer than three funds held it before or after, or one fund held more than 80% of it.
    - `net_shares_beyond_growth` integer, nullable, required: The same change less the part in proportion to each fund's own growth across its step (b minus k times a, k the fund's median ratio of share counts).
    - `net_value_usd` integer, nullable, required: net_shares valued at each file's own price per share: market value over shares, or weight times the fund's stated net assets over shares. Never an outside price.
    - `net_value_beyond_growth_usd` integer, nullable, required: net_shares_beyond_growth valued the same way.
    - `withheld` object, nullable, required: Why each null sum is null, as {field: reason}, or null: fewer_than_3_funds, one_fund_dominant (one fund makes more than 80% of the sum, or of the difference two published sums give, such as net_shares less net_shares_beyond_growth), gives_back_a_fund_count (the sums as printed, taken as one or two funds' own or compared with the figures published before for the same close, would give back a fund's share count) or not_all_valued.
  - `added_beyond_growth_by_value` object[], required: The ten largest net additions beyond the funds' own growth, in dollars: rebalancing and index changes rather than the creations of the funds' shares.
    - `ticker` string, required: The security's key: a US ticker, or a local code and market for a line listed abroad (7203.JP).
    - `name` string, nullable, required: Its name, where known.
    - `funds_adding` integer, required: How many funds hold more shares of it than in their previous file.
    - `funds_trimming` integer, required: How many hold fewer.
    - `funds_entered` integer, required: How many of those adding did not hold it before.
    - `funds_exited` integer, required: How many of those trimming hold none now.
    - `net_shares` integer, nullable, required: The change in shares held, summed over the funds. Null when fewer than three funds moved it or one fund makes more than 80% of it, as withheld says: a fund's share count is never published.
    - `net_shares_pct` number, nullable, required: net_shares in percent of the shares the funds held before; null when fewer than three funds held it before or after, or one fund held more than 80% of it.
    - `net_shares_beyond_growth` integer, nullable, required: The same change less the part in proportion to each fund's own growth across its step (b minus k times a, k the fund's median ratio of share counts).
    - `net_value_usd` integer, nullable, required: net_shares valued at each file's own price per share: market value over shares, or weight times the fund's stated net assets over shares. Never an outside price.
    - `net_value_beyond_growth_usd` integer, nullable, required: net_shares_beyond_growth valued the same way.
    - `withheld` object, nullable, required: Why each null sum is null, as {field: reason}, or null: fewer_than_3_funds, one_fund_dominant (one fund makes more than 80% of the sum, or of the difference two published sums give, such as net_shares less net_shares_beyond_growth), gives_back_a_fund_count (the sums as printed, taken as one or two funds' own or compared with the figures published before for the same close, would give back a fund's share count) or not_all_valued.
  - `reduced_beyond_growth_by_value` object[], required: The ten largest net reductions beyond the funds' own growth.
    - `ticker` string, required: The security's key: a US ticker, or a local code and market for a line listed abroad (7203.JP).
    - `name` string, nullable, required: Its name, where known.
    - `funds_adding` integer, required: How many funds hold more shares of it than in their previous file.
    - `funds_trimming` integer, required: How many hold fewer.
    - `funds_entered` integer, required: How many of those adding did not hold it before.
    - `funds_exited` integer, required: How many of those trimming hold none now.
    - `net_shares` integer, nullable, required: The change in shares held, summed over the funds. Null when fewer than three funds moved it or one fund makes more than 80% of it, as withheld says: a fund's share count is never published.
    - `net_shares_pct` number, nullable, required: net_shares in percent of the shares the funds held before; null when fewer than three funds held it before or after, or one fund held more than 80% of it.
    - `net_shares_beyond_growth` integer, nullable, required: The same change less the part in proportion to each fund's own growth across its step (b minus k times a, k the fund's median ratio of share counts).
    - `net_value_usd` integer, nullable, required: net_shares valued at each file's own price per share: market value over shares, or weight times the fund's stated net assets over shares. Never an outside price.
    - `net_value_beyond_growth_usd` integer, nullable, required: net_shares_beyond_growth valued the same way.
    - `withheld` object, nullable, required: Why each null sum is null, as {field: reason}, or null: fewer_than_3_funds, one_fund_dominant (one fund makes more than 80% of the sum, or of the difference two published sums give, such as net_shares less net_shares_beyond_growth), gives_back_a_fund_count (the sums as printed, taken as one or two funds' own or compared with the figures published before for the same close, would give back a fund's share count) or not_all_valued.
  - `index_events` object[], required: Securities that entered or exited two or more funds tracking the same index on the same close, in the last 20 trading days, newest first; described below.
    - `date` string, required: The close.
    - `ticker` string, required: The security.
    - `change` 'entered' | 'exited', required: entered or exited.
    - `funds` string[], required: The funds of the group it entered or exited on that close.
    - `same_index_as` string, required: The group's largest fund. Two funds track the same index when they overlap by 98% or more by weight on their latest files.
    - `group_funds` integer, required: How many funds the group has.
    - `text` string, required: The event in words, to quote.
  - `corporate_actions` object[], required: Mergers, spin-offs, takeovers, splits and uniform changes the files show in the last 20 trading days, newest first: no trades, so the lines a merger, a spin-off or a split moved are left out of the sums. Described below.
    - `date` string, required: The first close the funds show it on; funds that book it later show it a close or two after.
    - `kind` 'converted' | 'distribution' | 'acquired_or_delisted' | 'split' | 'uniform_change', required: converted (a merger paid in shares: from exited while to rose, or entered, by the same ratio in funds of three or more indexes), distribution (a spin-off: to entered at the same ratio of from in funds of three or more indexes), acquired_or_delisted (from left the funds of two or more issuers with nothing replacing it, and half its holders left it or its price per share stood still), split (three quarters or more of the funds holding from changed their counts by one ratio within three closes, while its price per share in the files moved by the inverse ratio: a split, a reverse split, a bonus issue or a stock dividend) or uniform_change (the same ratio with no price move to match: named and not ranked, its lines kept in the sums).
    - `from` string, required: The security converted, the parent of a distribution, the security taken over or delisted, or the security split or changed.
    - `to` string, nullable, required: The security received: from itself for a split; null for acquired_or_delisted and uniform_change.
    - `ratio` number, nullable, required: Shares of to per share of from, as the funds' counts show it (1.2 for a 6-for-5 bonus issue, 0.5 for a 1-for-2 reverse split); null for acquired_or_delisted.
    - `text` string, required: The action in words, to quote.
  - `not_ranked` object[], required: The securities moved on date that the six lists leave out, each with its reason: converted (both securities of a merger paid in shares), acquired_or_delisted, distribution, split or uniform_change (within three closes of a corporate action, or on a close where a line of theirs is left out for one), or fund_shares (the shares of a fund the site covers, held by another fund).
    - `ticker` string, required: The security.
    - `reason` 'fund_shares' | 'converted' | 'distribution' | 'acquired_or_delisted' | 'split' | 'uniform_change', required: converted, acquired_or_delisted, distribution, split, uniform_change or fund_shares.
  - `funds_most_changed` object[], required: The ten funds whose step to date entered or exited the most lines; described below.
    - `fund` string, required: The fund's ticker.
    - `name` string, nullable, required: Its name.
    - `previous` string, required: The date its issuer gives the file its step is compared with.
    - `date` string, required: The date its issuer gives its file, which can be a day after the close it reflects.
    - `entered` integer, required: Lines that entered.
    - `exited` integer, required: Lines that exited.
    - `increased` integer, required: Lines whose share count rose.
    - `decreased` integer, required: Lines whose share count fell.
    - `growth_pct` number, required: The fund's own growth across the step, in percent: the median change of its share counts, mostly creations and redemptions of its shares.
    - `not_trusted` integer, required: Lines left out of every sum, as no trade (see not_trusted in one security's flows).
  - `days` object[], required: Each close of the last 20, newest first: how many funds have a step to it, whether nine in ten do (complete), how many securities moved, and its five largest net additions and reductions as [ticker, dollars, shares], the securities not ranked left out.
    - `date` string, required: The close.
    - `funds` integer, required: How many funds have a counted step to it.
    - `complete` boolean, required: true when nine in ten of the funds counted on date do.
    - `securities_changed` integer, required: How many securities a fund moved on it.
    - `added_by_value` array[], required: Its five largest net additions, as [ticker, dollars, shares].
      - union[]
        - union
          - string
          - integer
    - `reduced_by_value` array[], required: Its five largest net reductions.
      - union[]
        - union
          - string
          - integer
  - `not_counted` object[], required: The funds read daily that are not counted on date, each with its reason and its last file: fund_of_funds, whole_fund_counts (a file that counts every share class of a fund with mutual fund classes), no_share_counts, no_file_for_date, restated (a change of keys), no_previous_file or unreadable_file.
    - `fund` string, required: The fund's ticker.
    - `reason` 'fund_of_funds' | 'whole_fund_counts' | 'not_daily' | 'no_share_counts' | 'no_longer_read' | 'no_file_for_date' | 'restated' | 'no_previous_file' | 'unreadable_file', required: Why it is not counted on date.
    - `last_file` string, required: The date of its newest file.
    - `restated_reason` string: With restated: engine's reason for the step, such as key_scheme_2.
  - `file_gaps` integer, required: How many lines the window leaves out because an issuer's file dropped them for a day and they came back with the same count.
  - `security` string, required: The address of one security's flows, with {ticker} to fill.
  - `csv` string, required: Every security moved on date, one row each, largest net value first.
  - `feed` string, required: This summary as an RSS feed, one item per complete close.
  - `feed_fund` string, required: One fund's holdings changes as an RSS feed, from its history, with {ticker} to fill.
  - `feed_stock` string, required: One security's flows as an RSS feed, with {ticker} to fill.
  - `note` string, required: How to read the figures.
  - `cite_as` string, required: A citation line: the close and this file's address.
  - `cite_html` string, required: The credit as HTML: a link to this file, then its address.
  - `docs` string, required: Where the file is documented.
  - `license` string, required: The terms the flows are published under: TickerInside's history terms, not CC BY 4.0, as they are computed from the archive.
  - `terms` string, required: The terms in full, on the legal notice.
  - `attribution` string, required: How to credit it, then what the history terms allow.

## Other responses

- `304`: Not modified: the ETag of your copy, sent in If-None-Match, is still current. Files are cached five minutes.
- `503`: The file could not be served just then: retry after a minute. uptime says whether the site fails its own checks.

---

[API](https://skmtc.dev/tickerinside/apis/tickerinside-api.md) · [All operations](https://skmtc.dev/tickerinside/apis/tickerinside-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tickerinside/apis/tickerinside-api/revisions/4dae3d8c4119?raw)
