Skip to content
/api/v1/nport/funds/{ticker}/aum-history

Monthly AUM series — the ETF market-cap history

A fund's monthly net-assets (AUM) time series from its N-PORT reports, newest first, cursor-paginated. For an ETF, net assets IS the market-cap concept.

10 tokenscursor paginationSince 3.139.0

Why use this

One call returns the chartable monthly series: as_of month, net_assets, tot_assets, tot_liabs, and the source accession per row. N-PORT's netAssets is mandatory in every report, so coverage is complete for every month a fund filed.

Common use case

Charting an ETF's AUM history, computing month-over-month asset growth, or joining fund size onto a screener — the disclosed-AUM alternative to price-times-shares market cap, sourced from the fund's own SEC reports.

The headline series of the N-PORT surface: a fund's assets under management, month by month, exactly as the fund itself reported to the SEC. Part B netAssets is a mandatory item in every N-PORT report, so for any month a fund filed, the value exists — no estimation, no interpolation, and each row cites the accession it came from.

Why it matters for ETFs: an ETF's net assets is its market-capitalization concept (shares outstanding × NAV ≈ net assets). No SEC fund form discloses a usable share count, but AUM is disclosed monthly — making this series the SEC-sourced way to size and rank ETFs.

The series is CURSOR-paginated (newest first): take meta.pagination.next_cursor and pass it back to continue into older months; a malformed cursor is a 400, never a silent restart at page one. Ticker resolution is identical to GET /api/v1/nport/by-ticker/{ticker}, including the registrant-CIK fallback for single-fund trusts (SPY-class UITs), and is reported in meta.resolution on every response.

Timing note: N-PORT reports for a fiscal quarter's months become public on a delay set by SEC rule (the third month's report is filed within 60 days of quarter end, at which point the quarter's monthly values are public). The series serves everything published.

Parameters

NameInRequiredDefaultAllowedDescriptionExample
tickerpathrequiredFund/class ticker, case-insensitive — resolved to its series exactly like /by-ticker/{ticker} (meta.resolution reports the winning claims). Unknown tickers return 404 UNKNOWN_TICKER.IVV
limitqueryoptional100Rows (months) per page (1-500).100
cursorqueryoptionalOpaque resume cursor — pass back meta.pagination.next_cursor verbatim to fetch the next (older) page. A malformed cursor returns 400 rather than silently serving page one.bnAxOnsiZCI6IjIwMjYtMDUtMzEifQ==

Response schema

FieldTypeNullableDescription
data[]arraynoMonthly rows, newest reporting month first. One published row per month per series (amendments supersede at ingest).
data[].as_ofstringnoThe reporting month end (ISO date) the values are 'as of'.
data[].series_idstringyesThe series the row belongs to (null for whole-trust filings of single-fund registrants). If a ticker resolves to multiple series, every matching series' months are served, labeled by this field.
data[].net_assetsnumberyesPart B net assets in USD — the fund's AUM for the month (the ETF market-cap concept). As filed, full precision.
data[].tot_assetsnumberyesPart B total assets in USD.
data[].tot_liabsnumberyesPart B total liabilities in USD.
data[].accession_numberstringnoThe filing each month's values came from — the audit trail back to EDGAR.
data[].sourcestringno'live' or 'dera' (SEC quarterly-dataset backfill) — both serve identical value semantics.
meta.paginationobjectno{ limit, has_more, next_cursor }: cursor pagination (no offset). Fetch older months by passing next_cursor back until has_more is false.
meta.resolutionobjectnoHow the ticker resolved: { ticker, matches: [{class_id, series_id, reg_cik, source}] }.

Sample response

·
  • "status": "success"
  • "data":
    ]
  • "meta":
    • "pagination":
    • "resolution":
    }
}

Errors

StatusLabelDescription
200OKRequest succeeded.
400Bad RequestInvalid query, body, or path parameter.
401UnauthorizedMissing or invalid Authorization header / api_Token.
402Payment RequiredInsufficient token balance for this call. Top up
429Too Many RequestsRate limit exceeded for your tier (see /pricing for tier limits). Tier limits
500Server ErrorUnexpected server-side failure. Retry with backoff; report if persistent.

Code samples

curl "https://api.finradar.ai/api/v1/nport/funds/IVV/aum-history?api_Token=YOUR_API_KEY&limit=100&cursor=bnAxOnsiZCI6IjIwMjYtMDUtMzEifQ%3D%3D" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"

Generate an API key in /account/credentials to run live queries (literal YOUR_API_KEY placeholder shown until then).