# SEC 13F Holdings Scraper — Institutional Portfolios (`hipersoft/sec-13f-scraper`) Actor

Scrape any institutional manager's Form 13F holdings from SEC EDGAR: issuer, CUSIP, market value, shares, put/call, voting authority, filing & report dates and portfolio total. Bulk managers. Official data, no key.

- **URL**: https://apify.com/hipersoft/sec-13f-scraper.md
- **Developed by:** [hiper soft](https://apify.com/hipersoft) (community)
- **Categories:** Other, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.0005 / holding scraped

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## SEC 13F Holdings Scraper — Institutional Portfolios, CUSIP, Shares & Value

Scrape any institutional investment manager's **Form 13F holdings** straight from **SEC EDGAR** — issuer, CUSIP, market value, shares, put/call, investment discretion and voting authority, plus filing and report dates and the portfolio total — into clean JSON, CSV or Excel. Pass one or many managers by CIK. Uses the **official SEC data**, no key, no login. Fast and reliable.

![SEC 13F Holdings Scraper input — CIKs, max filings and amendments in the Apify Console](https://api.apify.com/v2/key-value-stores/SUfvnaFLd9z9eBCtV/records/sec-13f-scraper-input.png?v=2)

Great for **13F tracking, whale-watching, portfolio analysis, quant research and investor dashboards**.

### What does SEC 13F Holdings Scraper do?

It reads a manager's 13F-HR filings from SEC EDGAR and returns one clean record per holding — issuer, CUSIP, value, shares and voting authority — with the portfolio total and filing metadata attached to every row. Pass many managers by CIK and pull recent quarters in bulk.

### What you get

![SEC 13F Holdings Scraper output example — one structured JSON row per holding](https://api.apify.com/v2/key-value-stores/SUfvnaFLd9z9eBCtV/records/sec-13f-scraper-output.png?v=2)

- 🏦 **Full holdings** — every position in a manager's 13F: issuer, CUSIP, value, shares, share type
- 🧮 **Portfolio context** — total portfolio value and position count on every row
- 📅 **Filing metadata** — accession, filing date, report quarter, form type
- 🔁 **Bulk & history** — many managers, and up to 50 recent quarters each
- ⚖️ **Official source** — direct from SEC EDGAR

#### Output schema

| Field | Type | Description |
|-------|------|-------------|
| `manager` | string | Name of the institutional investment manager. |
| `cik` | string | SEC Central Index Key of the manager. |
| `accession` | string | SEC accession number of the filing. |
| `filingDate` | string | Date the 13F was filed. |
| `reportDate` | string | Report period (quarter-end) date. |
| `form` | string | Form type (e.g. 13F-HR). |
| `portfolioValue` | integer | Total reported portfolio value. |
| `positions` | integer | Number of positions in the filing. |
| `nameOfIssuer` | string | Name of the security's issuer. |
| `titleOfClass` | string | Class of the security (e.g. COM). |
| `cusip` | string | CUSIP identifier of the security. |
| `value` | integer | Reported market value of the holding. |
| `shares` | integer | Number of shares or principal amount held. |
| `sharesType` | string | Share/principal type (e.g. SH, PRN). |
| `putCall` | string | Put or call designation, if any. |
| `investmentDiscretion` | string | Investment discretion code (e.g. SOLE, DFND). |
| `votingSole` | integer | Shares with sole voting authority. |
| `votingShared` | string | Shares with shared voting authority. |
| `votingNone` | string | Shares with no voting authority. |

### Use cases

- **13F tracking** — monitor what a fund bought and sold quarter over quarter.
- **Whale-watching** — follow the positions of large, well-known managers.
- **Portfolio analysis** — reconstruct any manager's full portfolio by CUSIP and value.
- **Quant research** — build datasets of institutional holdings across many managers.
- **Investor dashboards** — feed 13F data into a BI tool or spreadsheet.
- **Lead and market research** — see which issuers institutions are concentrating in.

### How to scrape SEC 13F data

1. Add the **SEC 13F Holdings Scraper** to your Apify account.
2. Find each manager on [SEC EDGAR](https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany\&type=13F) and copy its CIK.
3. Add the CIKs to `ciks`, set `maxFilingsPerManager` and choose whether to include amendments.
4. Click **Run**.
5. Export the results as JSON, CSV or Excel, or pull them via the Apify API.

### Input

```json
{
  "ciks": ["1067983", "1350694"],
  "maxFilingsPerManager": 1,
  "includeAmendments": false
}
```

`ciks` are SEC CIK numbers. Find a manager on SEC EDGAR and copy its CIK.

| Field | Description |
|-------|-------------|
| `ciks` | Manager CIK numbers. |
| `maxFilingsPerManager` | Recent 13F-HR filings per manager (1 = latest). |
| `includeAmendments` | Also include 13F-HR/A amendments. |

### Output

```json
{
  "manager": "BERKSHIRE HATHAWAY INC",
  "cik": "0001067983",
  "reportDate": "2026-03-31",
  "filingDate": "2026-05-15",
  "portfolioValue": 259000000000,
  "positions": 90,
  "nameOfIssuer": "APPLE INC",
  "titleOfClass": "COM",
  "cusip": "037833100",
  "value": 66000000000,
  "shares": 300000000,
  "sharesType": "SH",
  "putCall": null,
  "investmentDiscretion": "DFND",
  "votingSole": 300000000,
  "votingShared": 0,
  "votingNone": 0
}
```

### Need more financial data?

- [SEC EDGAR Scraper](https://apify.com/hipersoft/sec-edgar-scraper) — filings across all form types
- [Yahoo Finance Scraper](https://apify.com/hipersoft/yahoo-finance-scraper) — quotes and fundamentals
- [Finviz Stock Screener Scraper](https://apify.com/hipersoft/finviz-scraper) — screener data

### FAQ

**Where do I find a manager's CIK?**
Search the fund on SEC EDGAR; the CIK is in the URL / filer profile. Berkshire Hathaway = 1067983.

**How many filings can I pull?**
Set `maxFilingsPerManager` to control how many recent quarters per manager (up to 50).

**Are values in dollars or thousands?**
As reported on the filing — 13F values are reported in whole US dollars for recent filings.

**What export formats are supported?**
JSON, CSV, Excel and XML, plus the Apify API.

**Can I integrate it with other tools?**
The SEC 13F Holdings Scraper can be connected with almost any cloud service or web app thanks to [integrations on the Apify platform](https://apify.com/integrations). It works with [Make](https://apify.com/integrations/make), [Zapier](https://apify.com/integrations/zapier), [Slack](https://docs.apify.com/platform/integrations/slack), [Airbyte](https://docs.apify.com/platform/integrations/airbyte), [GitHub](https://docs.apify.com/platform/integrations/github), [Google Drive](https://docs.apify.com/platform/integrations/drive) and [many more](https://apify.com/integrations), plus the [Apify API](https://docs.apify.com/api/v2), JavaScript/Python clients and MCP. Or use [webhooks](https://docs.apify.com/platform/integrations/webhooks) to trigger an action whenever a run finishes.

**How does billing work?**
You pay only per item you get — cheap per holding, cheapest in its class.

**Is the data public?**
Yes. 13F filings are public records filed with the SEC.

### Related Actors

- [SEC EDGAR Scraper](https://apify.com/hipersoft/sec-edgar-scraper) — filings across all form types
- [Yahoo Finance Scraper](https://apify.com/hipersoft/yahoo-finance-scraper) — quotes and fundamentals
- [Finviz Stock Screener Scraper](https://apify.com/hipersoft/finviz-scraper) — screener data

### Notes

Original clean-room implementation using SEC EDGAR's official public data. You are responsible for how you use the data. Not affiliated with or endorsed by the SEC.

# Actor input Schema

## `ciks` (type: `array`):

SEC CIK numbers of institutional managers (find a manager on sec.gov EDGAR full-text search). E.g. 1067983 = Berkshire Hathaway, 1350694 = Bridgewater.

## `maxFilingsPerManager` (type: `integer`):

How many recent 13F-HR filings to scrape per manager (1 = latest quarter).

## `includeAmendments` (type: `boolean`):

Also include 13F-HR/A amended filings.

## Actor input object example

```json
{
  "ciks": [
    "1067983",
    "1350694"
  ],
  "maxFilingsPerManager": 1,
  "includeAmendments": false
}
```

# Actor output Schema

## `results` (type: `string`):

The scraped results as dataset items.

# 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 = {
    "ciks": [
        "1067983"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("hipersoft/sec-13f-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 = { "ciks": ["1067983"] }

# Run the Actor and wait for it to finish
run = client.actor("hipersoft/sec-13f-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 '{
  "ciks": [
    "1067983"
  ]
}' |
apify call hipersoft/sec-13f-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,hipersoft/sec-13f-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/N7h41I3PlDSTq48Qj/builds/RMEv6n4wAnWWGNjBL/openapi.json
