Skip to main content
SEC Form N-PORT · REST API · MCP

ETF holdings API and MCP server for SEC N-PORT portfolios

See what an ETF owns: every position from its latest SEC Form N-PORT report, ranked by value with balance, market value and weight, plus the fund's assets, allocation and concentration. Query by ticker over the REST API, or ask Claude, ChatGPT or any MCP client which stocks a fund holds.

Using ChatGPT or Claude? Add this data to your AI — no code needed.

Free: 100 requests a day, no credit card. One account works with REST and MCP.

Works with Claude ChatGPT Gemini MCP

What the API and the MCP tools cover

Both surfaces read the same store the Equibles pages render, so a figure on the site and a figure in your code agree.

Holdings from N-PORT

Every position the fund reported, ranked by value, with a coverage flag that says whether the full reported portfolio is stored.

Search and profiles

Find a fund by ticker, name, sponsor or ISIN, then read its net and total assets, asset and country allocation, concentration and ten largest holdings.

Funds listed outside the US

Exchange-traded funds on other exchanges, named MIC:TICKER, return the fund's published portfolio file with weights where one is stored.

REST endpoints and MCP tools

Every endpoint below is a GET under the api.equibles.com/v1 base URL, authenticated with an API key. Each MCP tool answers the same question in plain English from Claude, ChatGPT or any connected client.

  • GET /v1/etfs
  • GET /v1/etfs/{ticker}
  • GET /v1/etfs/{ticker}/holdings
SearchEtfs GetEtfProfile GetEtfHoldings

The same question, three ways

One free key covers the MCP server and the REST API; the browser needs no key at all.

REST
curl "https://api.equibles.com/v1/etfs/SPY/holdings?limit=10" -H "Authorization: Bearer eq_YOUR_KEY"
MCP, in Claude or ChatGPT

“Using Equibles, list SPY's ten largest holdings with their weights and the report date.”

Name Equibles in the prompt so the model calls the tool instead of answering from memory. Connection guides

Read the report correctly

Holdings are as of the report's period date, which every response states. A fund trades between reports, so read that date before treating a weight as current.

Check holdingsCoverage: fullPortfolio means every reported position is stored, trackedEquitiesOnly means only the US equities Equibles tracks, and unknown means the counts are missing or inconsistent.

Source: SEC Form N-PORT filings on EDGAR.

What the API preserves

  • The report date, assets and holding counts from one selected filing
  • Stored and reported holding counts, with an explicit coverage flag
  • Each position as filed, ranked by value
  • A dedicated ETF identity, so SPY, VOO and IVV are never treated as operating companies
  • Paging over large portfolios, every page drawn from the same filing

Use the data in code, AI, or the browser

Choose the interface that fits the work; all three read the same store.

Frequently asked questions

What is an ETF holdings API?

It returns the positions an exchange-traded fund reports, each security with its balance, market value and weight, plus the fund's profile, so code or an AI model can see what a fund owns and how concentrated it is.

Where do the holdings come from?

For US ETFs, the fund's latest SEC Form N-PORT report, the portfolio report registered funds file with the SEC. For a fund listed on another exchange, the portfolio file the fund publishes, where one is stored.

How current are the holdings?

As current as the latest stored report, whose period date every response states. A fund trades between reports, so treat each weight as of that date.

Can I find which funds hold a stock?

Yes. GET /v1/stocks/{ticker}/fund-owners over REST, or GetFundsHoldingStock over MCP, lists the registered funds and ETFs whose latest N-PORT report holds that stock.

Can I read ETF holdings in Claude or ChatGPT?

Yes. Connect the Equibles MCP server and ask what a fund holds; GetEtfHoldings returns the positions by ticker, GetEtfProfile the assets and allocation, and SearchEtfs finds a fund by name, sponsor or ISIN. The REST API returns the same data as JSON.

Is there a free ETF holdings API?

Yes. The Equibles free tier includes 100 requests a day, shared across the REST API and MCP server, with no credit card. Paid plans raise the limit.

Start reading fund portfolios as data.

One free key for ETF holdings, profiles and search, over REST and MCP.