# SEC Form N-PORT Mutual Fund & ETF Portfolio Holdings API (`mehdad-datalabs/sec-nport-etf-mutual-fund-holdings-xml-scraper`) Actor

Extract official SEC EDGAR Form N-PORT-P Mutual Fund & ETF portfolio holdings XML into clean JSON/CSV. Get stock & bond positions, CUSIPs, ISINs, exact share counts, USD market values & net asset weights % across Vanguard, Fidelity & BlackRock funds. Ready for n8n & MCP AI agents.

- **URL**: https://apify.com/mehdad-datalabs/sec-nport-etf-mutual-fund-holdings-xml-scraper.md
- **Developed by:** [Mehdad Sharifi](https://apify.com/mehdad-datalabs) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 extracted n-port fund holdings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## SEC Form N-PORT Mutual Fund & ETF Portfolio Holdings API — SEC N-PORT Data Scraper

Extract official **SEC EDGAR Form N-PORT-P (`NPORT-P`) Mutual Fund and ETF portfolio holdings data** directly from raw SEC XML filings into clean **JSON, CSV, or Excel** datasets. Track every position held by **Vanguard, BlackRock (iShares), Fidelity, State Street (SPDR), Invesco, and Schwab ETFs**—including **Issuer Name, Security Title, CUSIP, ISIN, Exact Share Balance, USD Market Value (`valUSD`), Net Asset Weight (`pctVal`), Asset Category, and Country**.

Built for **ETF & mutual fund analysts, quantitative researchers, wealth managers, n8n/Make automation workflows, Python algotrading pipelines, and AI agents (Claude MCP / Cursor)**.

***

### Why Use This SEC Form N-PORT ETF & Mutual Fund Holdings API?

| Feature | What You Get |
| :--- | :--- |
| Complete ETF & Mutual Fund XML Parser | Automatically locates and parses official SEC Form N-PORT-P (`<invstOrSecur>`) and institutional fund XML tables into flat, structured JSON rows. |
| CUSIP, ISIN & Exact Portfolio Weight (%) | Extracts 9-digit CUSIPs, 12-character ISINs, exact share/principal balances, USD market values, and each position's exact percentage of fund net assets (`pctOfNetAssets`). |
| Covers Stocks, Bonds & Derivatives | Unlike Form 13F (which only covers US equities at the firm level), Form N-PORT reveals fund-specific holdings across US & international equities (`EC`), corporate/government debt (`DBT`), and derivatives (`DER`). |
| Sorted by Largest Positions First | Automatically ranks every ETF or mutual fund's holdings from largest USD market value to smallest so you immediately see top conviction positions. |
| AI Agent & MCP Server Ready | Native Model Context Protocol (MCP) support—connect directly to \*\*Claude Desktop, Cursor, LangChain, n8n, Make, or Zapier. |

***

### Sample JSON Output (SEC N-PORT Data Set)

```
{
  "fundOrTrustName": "VANGUARD INDEX FUNDS",
  "seriesName": "Vanguard 500 Index Fund",
  "cik": "0000036405",
  "filingDate": "2026-10-28",
  "reportPeriodDate": "2026-08-31",
  "issuerName": "APPLE INC",
  "titleOfSecurity": "APPLE INC COM",
  "cusip": "037833100",
  "isin": "US0378331005",
  "balanceSharesOrPrincipal": 224850120.0,
  "valueUsd": 51490677480.0,
  "pctOfNetAssets": 7.1425,
  "assetCategory": "EC",
  "country": "US",
  "accessionNumber": "0001752724-26-194812",
  "rawXmlUrl": "https://www.sec.gov/Archives/edgar/data/36405/000175272426194812/primary_doc.xml"
}
```

***

### Supported ETF & Mutual Fund Families (Examples)

- Vanguard ETFs & Mutual Funds: `Vanguard` (`CIK 0000036405`, `0000102909`) — VOO, VTI, VXUS, VUG
- BlackRock / iShares ETFs: `BlackRock` or `iShares` (`CIK 0001100663`, `0001364742`) — IVV, IWM, SOXX, IBIT
- Fidelity Mutual Funds & ETFs: `Fidelity` (`CIK 0000035315`, `0000315066`) — FXAIX, FCNTX, FBGRX
- State Street SPDR ETFs: `SPDR` (`CIK 0001064641`, `0000093751`) — SPY, XLK, XLF, XLV
- Invesco & Schwab ETFs: `Invesco` (`CIK 0001418144`) / `Schwab` (`CIK 0001454889`) — QQQ, SCHD, SCHG

***

### Transparent Pay-Per-Event Pricing

- Actor Startup (`apify-actor-start`): `$0.01` per run.
- Extracted Fund Holding (`nport-holding-extracted`): `$0.005` per parsed ETF/Mutual Fund holding ($5.00 per 1,000 holdings).
- Free Tier Friendly: With Apify's free $5.00 monthly credit, you can extract nearly 1,000 ETF & mutual fund portfolio holdings every month for free.

***

### Frequently Asked Questions (FAQ)

#### What is SEC Form N-PORT (NPORT-P)?

Form N-PORT is the mandatory SEC filing submitted by registered management investment companies (Mutual Funds and Exchange-Traded Funds / ETFs) reporting their complete monthly portfolio holdings, risk metrics, CUSIPs, ISINs, market values, and net asset percentages. Public N-PORT filings are designated as `NPORT-P` on SEC EDGAR.

#### What is the difference between SEC Form N-PORT and Form 13F?

Form 13F aggregates all US equity holdings across an entire investment management firm (like all of BlackRock combined) and excludes bonds, international stocks, and short positions. Form N-PORT provides granular, fund-by-fund portfolio holdings (including stocks, bonds, international ISINs, and exact portfolio weight percentages) for specific ETFs and mutual funds.

#### How can I pull SEC Form N-PORT data into Python, Google Sheets, or n8n?

You can call this Actor via the Apify REST API, the `apify-client` Python/Node.js SDK, or the official Apify node inside n8n, Make, or Zapier to export clean JSON or CSV tables directly into Google Sheets, PostgreSQL, or your trading model.

***

### Explore Our Complete SEC EDGAR & Financial Intelligence API Suite

- [SEC Form 4 Insider Trading Scraper & XML Parser API](https://apify.com/mehdad-datalabs/sec-form-4-insider-trading-scraper-xml-parser-api) — Track real-time CEO, CFO & Director stock buys and sales.
- [SEC Form 13F Institutional Holdings & Hedge Fund Whale Scraper](https://apify.com/mehdad-datalabs/sec-13f-institutional-holdings-hedge-fund-whale-scraper) — Track Warren Buffett (Berkshire Hathaway), Michael Burry & hedge fund portfolios.
- [SEC Form 8-K Corporate Events, M\&A & Executive Change Scraper](https://apify.com/mehdad-datalabs/sec-8k-corporate-events-ma-executive-change-scraper) — Real-time M\&A deals, earnings releases & Item 5.02 CEO changes.
- [SEC 10-K & 10-Q XBRL Financial Statements & Earnings API](https://apify.com/mehdad-datalabs/sec-10k-10q-xbrl-financial-statements-earnings-api) — Standardized quarterly & annual Revenue, Net Income, EPS, Cash & Balance Sheets.
- [SEC Schedule 13D & 13G Activist Investor & 5%+ Ownership API](https://apify.com/mehdad-datalabs/sec-schedule-13d-13g-activist-investor-ownership-api) — Track hostile takeovers and 5%+ activist hedge fund stakes.
- [SEC Form S-1 IPO Pipeline & Form 144 Insider Sale Notice API](https://apify.com/mehdad-datalabs/sec-ipo-s1-form144-insider-sale-scraper) — Track S-1 IPO registrations and Rule 144 restricted stock dumps.

# Actor input Schema

## `searchQueries` (type: `array`):

Enter ETF/Mutual Fund keywords or company names to find recent SEC Form N-PORT-P portfolio filings.

## `maxHoldingsPerFund` (type: `integer`):

Maximum number of top portfolio positions (sorted by largest USD market value) to extract per N-PORT filing.

## `maxTotalResults` (type: `integer`):

Maximum total number of fund holding rows to extract across all matched filings.

## Actor input object example

```json
{
  "searchQueries": [
    "Vanguard",
    "Fidelity",
    "Technology"
  ],
  "maxHoldingsPerFund": 25,
  "maxTotalResults": 50
}
```

# Actor output Schema

## `dataset` (type: `string`):

Clean table of parsed SEC Form N-PORT-P mutual fund and ETF holdings, CUSIPs, market values, and portfolio weights

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("mehdad-datalabs/sec-nport-etf-mutual-fund-holdings-xml-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("mehdad-datalabs/sec-nport-etf-mutual-fund-holdings-xml-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call mehdad-datalabs/sec-nport-etf-mutual-fund-holdings-xml-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,mehdad-datalabs/sec-nport-etf-mutual-fund-holdings-xml-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/fu2fUWKbUoYvmxMSO/builds/B0sO9EulSMIhQQlGk/openapi.json
