SEC N-PORT filings explained for developers
Most US mutual funds and ETFs disclose their full portfolios to the SEC on Form N-PORT. If you want reliable holdings data, it helps to understand where it comes from — and why a clean API saves you weeks of filing-parsing work.
What is Form N-PORT?
N-PORT is the monthly portfolio report that registered funds file with the SEC. It contains every position the fund held at month-end: the security, its identifiers, quantity, market value, and percentage of net assets, plus fund-level totals like net assets and currency.
Funds file N-PORT every month, but the reports become public on a delayed, quarterly basis — the filings for each quarter are released after a lag. That cadence matters: it means a fund's public holdings history is a series of point-in-time snapshots, not a live feed.
Why the raw filings are painful
The data is technically free on SEC EDGAR, but in practice:
- It's XML, not JSON, and the schema is verbose.
- Security identifiers are inconsistent across filers (CUSIP, ISIN, ticker, or none).
- You have to stitch thousands of individual filings together to build a time series.
- Share-class tickers don't always map cleanly to the filing entity.
This is exactly the normalization layer FundLens provides: one schema, consistent identifiers, and dollar values across every fund and every snapshot.
Working with point-in-time snapshots
Because each filing is a snapshot, the right mental model is "list the available dates, then pull the one you want." The history endpoint enumerates every filing FundLens has for a fund:
curl "https://api.fundlens.io/v1/funds/VTI/holdings/history" \
-H "x-api-key: YOUR_API_KEY"
Then pull any specific snapshot by passing its date to the holdings endpoint with as_of. This avoids look-ahead bias: you're always working with what was actually disclosed as of that date.
Where to go next
- For the step-by-step request flow, see how to get mutual fund and ETF holdings via API.
- To roll holdings up into sector and country weights, see ETF sector and country exposure from holdings.
- Endpoint reference lives in the API documentation.