Skip to content
/api/v1/nport/latest

Most recent N-PORT filings across all funds

List the most recently filed N-PORT portfolio reports, newest first, with optional registrant / series / ticker / form-type filters.

5 tokensoffset paginationSince 3.139.0

Why use this

Monitor new fund disclosures as they are parsed. Each row is a compact filing summary: registrant, series, reporting month (as_of), net assets and total assets, filed_at, and the accession number to drill into detail or holdings.

Common use case

Watching for a fund family's newest monthly reports (cik=...), polling everything new since the last check, or listing an ETF's filings by ticker without first resolving its SEC series id.

The listing entry-point of the N-PORT surface. Every SEC-registered investment company (mutual funds and ETFs; money-market funds and SBICs excepted) reports its complete monthly portfolio on Form N-PORT, and this endpoint lists those reports newest-first as they are parsed.

Four composable filters: cik narrows to a registrant trust (one trust files for many series), series_id to one fund, ticker resolves a fund/class ticker to its series server-side (the same resolution the AUM endpoint uses — see meta.resolution in the response for exactly how it resolved), and form_type splits originals from amendments.

Amendment semantics: an NPORT-P/A supersedes the original for the same series and month AT INGEST, so listings never show two live rows for one month — the amendment row (is_amendment=true) is the served truth. Rows loaded from the SEC's historical quarterly datasets (source: "dera") carry no EDGAR acceptance timestamp (filed_at null) and sort by reporting month.

For the full filing body use GET /api/v1/nport/{accession}; for the position table use GET /api/v1/nport/{accession}/holdings; for a fund's whole monthly AUM series in one call use GET /api/v1/nport/funds/{ticker}/aum-history.

Parameters

NameInRequiredDefaultAllowedDescriptionExample
cikqueryoptionalRegistrant (trust) CIK, bare or zero-padded. Filters to that registrant's filings.1100663
series_idqueryoptionalSEC series identifier (S + 9 digits). Filters to one fund series.S000004310
tickerqueryoptionalFund/class ticker. Resolved server-side to its series via the class-ticker join (source precedence: filing header > N-CEN > SEC mutual-fund ticker file > registrant CIK for single-fund trusts). Unknown tickers return 404 UNKNOWN_TICKER.IVV
form_typequeryoptionalNPORT-P, NPORT-P/ARestrict to originals (NPORT-P) or amendments (NPORT-P/A). Note amendments supersede their original at ingest, so the default (both) never double-counts a month.NPORT-P
limitqueryoptional100Rows per page (1-500).100
offsetqueryoptional0Pagination offset.0

Response schema

FieldTypeNullableDescription
data[]arraynoFiling summary rows, newest first (filed_at, then reporting month; backfilled rows without a filed timestamp sort by reporting month).
data[].accession_numberstringnoSEC accession number in canonical dashed format (e.g. 0001752724-26-002544). Pass to GET /api/v1/nport/{accession} or /{accession}/holdings.
data[].submission_typestringnoNPORT-P (original) or NPORT-P/A (amendment).
data[].is_amendmentbooleannoTrue when the row is an NPORT-P/A. The amended original is no longer served (state supersession at ingest).
data[].reg_cikstringnoRegistrant (trust) CIK, 10-char zero-padded. One registrant files for many series — e.g. one iShares trust CIK covers hundreds of ETF series.
data[].reg_namestringyesRegistrant name as filed.
data[].series_idstringyesSEC series id of the fund the report covers. Null on whole-trust filings from single-fund registrants (e.g. unit investment trusts like SPY).
data[].series_namestringyesSeries (fund) name as filed.
data[].as_ofstringyesThe reporting month end (ISO date) — the date the portfolio snapshot is 'as of'. N-PORT is a monthly report; this is the row's natural time key.
data[].rep_pd_endstringyesThe fund's fiscal period end for the report, as filed. Distinct from as_of: as_of is the month, rep_pd_end is the fiscal year-end anchor.
data[].net_assetsnumberyesPart B net assets in USD — the fund's AUM for the month, and the ETF market-cap concept. As filed, full precision.
data[].tot_assetsnumberyesPart B total assets in USD, as filed.
data[].filed_atstringyesEDGAR acceptance timestamp for live-ingested filings. Null on rows loaded from the SEC's historical quarterly datasets.
data[].sourcestringno'live' (parsed from the filing XML on arrival) or 'dera' (loaded from the SEC's official quarterly N-PORT datasets). Both converge to one row shape.
meta.paginationobjectno{ total, limit, offset, has_more }. total is null on this wide listing (has_more is derived from an extra-row fetch); page forward with offset while has_more is true.
meta.resolutionobjectyesPresent only when ticker= was passed: { ticker, matches: [{class_id, series_id, reg_cik, source}] } — exactly how the ticker resolved, including which source (sgml/ncen/mf/cik) won per class.

Sample response

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

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/latest?api_Token=YOUR_API_KEY&cik=1100663&series_id=S000004310&ticker=IVV&form_type=NPORT-P&limit=100&offset=0" \
  -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).