# SEC Form 13F Holdings Scraper - Institutional Portfolio API (`pink_comic/sec-form-13f-institutional-holdings`) Actor

Track hedge fund, RIA, and institutional investment holdings from official SEC EDGAR Form 13F filings. Search managers, issuers, CUSIPs, shares, reported value, put/call positions, discretion, filing dates, and states with source-linked portfolio evidence.

- **URL**: https://apify.com/pink\_comic/sec-form-13f-institutional-holdings.md
- **Developed by:** [Ava Torres](https://apify.com/pink_comic) (community)
- **Categories:** Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 form 13f holding rows

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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use 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 Form 13F Holdings Scraper — Institutional Portfolio API

Track hedge fund, RIA, bank, insurance-company, and other institutional investment-manager positions from official SEC EDGAR Form 13F filings.

The actor searches current SEC filing metadata, fetches the official filing cover and information-table XML, and returns one stable, source-linked row per reported holding. Use it for institutional portfolio research, hedge-fund tracking, manager screening, issuer ownership research, finance leads, and investment-data workflows. No API key, login, browser, or proxy is required.

### Fast start

The default fetches Berkshire Hathaway's latest filing in a rolling 180-day window and returns 25 holdings:

```json
{
  "managerCik": "1067983",
  "daysBack": 180,
  "sortBy": "value_desc",
  "maxResults": 25,
  "maxFilingsScanned": 1
}
````

Search a manager by name:

```json
{
  "managerQuery": "Berkshire Hathaway",
  "managerCik": "",
  "daysBack": 365,
  "maxResults": 100
}
```

Find a manager's Apple positions and sort by reported value:

```json
{
  "managerCik": "1067983",
  "issuerQuery": "Apple",
  "daysBack": 365,
  "sortBy": "value_desc",
  "maxResults": 25
}
```

Inspect one exact filing:

```json
{
  "accessionNumber": "0001193125-26-226661",
  "managerCik": "",
  "maxResults": 100
}
```

### Search and filters

- investment-manager name or filing keyword
- exact manager CIK or filing accession number
- explicit filing dates or a rolling 1–3,650 day window
- manager business-address states
- portfolio-company / issuer name or security-class keyword
- exact CUSIPs
- ordinary rows, puts, or calls
- investment-discretion keyword
- minimum reported position value in USD
- minimum shares or principal amount
- latest, value, shares, or issuer-name sorting
- 1–1,000 total holding-row cap

All filters are combined. CUSIP and state arrays use **OR within the field** and **AND across fields**.

### Output

Each found holding exposes 45 stable keys, including:

- filing date, report quarter, form/amendment status, accession, and official filing links
- investment-manager CIK, name, reported address, Form 13F file number, CRD number, and SEC file number
- report type, table entry count, total reported portfolio value, and confidential-omission flag
- issuer name, security class, CUSIP, and FIGI when reported
- reported position value and normalized USD value
- shares or principal amount and its unit
- put/call designation, investment discretion, other-manager code, and voting authority
- signature name, title, and date
- total SEC filing hits, filings scanned, scan-limit status, and interpretation caveats

No-match runs return an explicit `NO_MATCHES` evidence item. Temporary SEC source failures return `SOURCE_UNAVAILABLE` instead of an ambiguous empty dataset.

#### Reported value units

SEC Form 13F filings submitted on or after January 3, 2023 report values rounded to the nearest dollar. Earlier filings reported values in thousands of dollars. The actor preserves the raw `reportedValue`, labels `reportedValueUnit`, and normalizes `reportedValueUsd` and `tableValueTotalUsd` for filtering and comparison.

### Bounded scan behavior

Holding-level fields live in each filing's information-table document, so the actor must fetch filing documents to evaluate issuer, CUSIP, value, shares, put/call, and discretion filters. `maxFilingsScanned` bounds cost and runtime.

Every found row reports `searchTotalFilings`, `filingsScanned`, and `scanLimitApplied`. If `scanLimitApplied` is true, results cover the newest disclosed scan window—not every filing in the full date range.

### Important interpretation limits

Form 13F is filed by qualifying institutional investment managers, normally within 45 days after quarter end. It is **not** a live portfolio, SEC verification, proof of beneficial ownership, investment advice, or a complete view of every asset a manager owns.

The filing covers only securities on the SEC's official Section 13(f) list. It omits many non-reportable assets and short positions. Managers can request confidential treatment, amendments can revise earlier reports, and holdings can change materially before publication. Options are reported as put/call positions, but short positions are not reported.

Use this actor for research and screening. Confirm material investment, trading, credit, legal, or diligence decisions against the linked official filing and other current sources.

### Official sources

- [SEC EDGAR full-text search](https://www.sec.gov/edgar/search/)
- [SEC Form 13F data sets and guidance](https://www.sec.gov/data-research/sec-markets-data/form-13f-data-sets)
- [SEC Form 13F frequently asked questions](https://www.sec.gov/divisions/investment/13ffaq)

# Actor input Schema

## `managerQuery` (type: `string`):

SEC full-text search for an investment manager or filing keyword. Leave empty when using an exact manager CIK.

## `managerCik` (type: `string`):

Exact 1-10 digit SEC CIK. The default is Berkshire Hathaway for a fast, deterministic first run.

## `accessionNumber` (type: `string`):

Exact SEC accession in 0000000000-00-000000 format. Bypasses broad filing search.

## `startDate` (type: `string`):

Optional inclusive YYYY-MM-DD filing date. When omitted, daysBack defines the rolling window.

## `endDate` (type: `string`):

Optional inclusive YYYY-MM-DD filing date. Defaults to today.

## `daysBack` (type: `integer`):

Used when startDate is omitted. 180 days normally includes at least one quarterly report.

## `managerStates` (type: `array`):

Optional two-letter manager business-address states.

## `issuerQuery` (type: `string`):

Case-insensitive issuer-name or security-class substring, such as Apple, NVIDIA, or common stock.

## `cusips` (type: `array`):

Optional exact CUSIP identifiers. Any selected CUSIP can match.

## `putCall` (type: `string`):

Include all holdings, ordinary non-option rows, puts, or calls.

## `investmentDiscretion` (type: `string`):

Case-insensitive substring such as SOLE, SHARED, or DEFINED.

## `minReportedValueUsd` (type: `integer`):

Minimum normalized reported position value. Filing values are manager-reported and can be amended.

## `minShares` (type: `integer`):

Minimum reported shares or principal amount.

## `sortBy` (type: `string`):

Latest filing order, highest reported value, highest shares/principal, or issuer name.

## `maxResults` (type: `integer`):

Total output cap after all filters and sorting.

## `maxFilingsScanned` (type: `integer`):

Bounds SEC filing and information-table requests for holding-level filters. Output discloses when the scan limit applies.

## Actor input object example

```json
{
  "managerQuery": "",
  "managerCik": "1067983",
  "daysBack": 180,
  "managerStates": [],
  "issuerQuery": "",
  "cusips": [],
  "putCall": "any",
  "investmentDiscretion": "",
  "minReportedValueUsd": 0,
  "minShares": 0,
  "sortBy": "value_desc",
  "maxResults": 25,
  "maxFilingsScanned": 1
}
```

# 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 = {
    "managerQuery": "",
    "managerCik": "1067983",
    "daysBack": 180,
    "maxResults": 25,
    "maxFilingsScanned": 1
};

// Run the Actor and wait for it to finish
const run = await client.actor("pink_comic/sec-form-13f-institutional-holdings").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 = {
    "managerQuery": "",
    "managerCik": "1067983",
    "daysBack": 180,
    "maxResults": 25,
    "maxFilingsScanned": 1,
}

# Run the Actor and wait for it to finish
run = client.actor("pink_comic/sec-form-13f-institutional-holdings").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "managerQuery": "",
  "managerCik": "1067983",
  "daysBack": 180,
  "maxResults": 25,
  "maxFilingsScanned": 1
}' |
apify call pink_comic/sec-form-13f-institutional-holdings --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=pink_comic/sec-form-13f-institutional-holdings",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "SEC Form 13F Holdings Scraper - Institutional Portfolio API",
        "description": "Track hedge fund, RIA, and institutional investment holdings from official SEC EDGAR Form 13F filings. Search managers, issuers, CUSIPs, shares, reported value, put/call positions, discretion, filing dates, and states with source-linked portfolio evidence.",
        "version": "0.1",
        "x-build-id": "cUm7PuCg1wXWosysG"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/pink_comic~sec-form-13f-institutional-holdings/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-pink_comic-sec-form-13f-institutional-holdings",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/pink_comic~sec-form-13f-institutional-holdings/runs": {
            "post": {
                "operationId": "runs-sync-pink_comic-sec-form-13f-institutional-holdings",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/pink_comic~sec-form-13f-institutional-holdings/run-sync": {
            "post": {
                "operationId": "run-sync-pink_comic-sec-form-13f-institutional-holdings",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "managerQuery": {
                        "title": "Investment Manager or Filing Keyword",
                        "type": "string",
                        "description": "SEC full-text search for an investment manager or filing keyword. Leave empty when using an exact manager CIK.",
                        "default": ""
                    },
                    "managerCik": {
                        "title": "Exact Investment Manager CIK",
                        "pattern": "^[0-9]{0,10}$",
                        "type": "string",
                        "description": "Exact 1-10 digit SEC CIK. The default is Berkshire Hathaway for a fast, deterministic first run.",
                        "default": "1067983"
                    },
                    "accessionNumber": {
                        "title": "Exact Filing Accession Number",
                        "pattern": "^$|^[0-9]{10}-[0-9]{2}-[0-9]{6}$",
                        "type": "string",
                        "description": "Exact SEC accession in 0000000000-00-000000 format. Bypasses broad filing search."
                    },
                    "startDate": {
                        "title": "Filing Start Date",
                        "pattern": "^$|^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
                        "type": "string",
                        "description": "Optional inclusive YYYY-MM-DD filing date. When omitted, daysBack defines the rolling window."
                    },
                    "endDate": {
                        "title": "Filing End Date",
                        "pattern": "^$|^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
                        "type": "string",
                        "description": "Optional inclusive YYYY-MM-DD filing date. Defaults to today."
                    },
                    "daysBack": {
                        "title": "Rolling Filing Window (Days)",
                        "minimum": 1,
                        "maximum": 3650,
                        "type": "integer",
                        "description": "Used when startDate is omitted. 180 days normally includes at least one quarterly report.",
                        "default": 180
                    },
                    "managerStates": {
                        "title": "Manager States",
                        "type": "array",
                        "description": "Optional two-letter manager business-address states.",
                        "items": {
                            "type": "string",
                            "pattern": "^[A-Za-z]{2}$"
                        },
                        "default": []
                    },
                    "issuerQuery": {
                        "title": "Portfolio Company or Security",
                        "type": "string",
                        "description": "Case-insensitive issuer-name or security-class substring, such as Apple, NVIDIA, or common stock.",
                        "default": ""
                    },
                    "cusips": {
                        "title": "Exact CUSIPs",
                        "type": "array",
                        "description": "Optional exact CUSIP identifiers. Any selected CUSIP can match.",
                        "items": {
                            "type": "string"
                        },
                        "default": []
                    },
                    "putCall": {
                        "title": "Put / Call Filter",
                        "enum": [
                            "any",
                            "none",
                            "PUT",
                            "CALL"
                        ],
                        "type": "string",
                        "description": "Include all holdings, ordinary non-option rows, puts, or calls.",
                        "default": "any"
                    },
                    "investmentDiscretion": {
                        "title": "Investment Discretion",
                        "type": "string",
                        "description": "Case-insensitive substring such as SOLE, SHARED, or DEFINED.",
                        "default": ""
                    },
                    "minReportedValueUsd": {
                        "title": "Minimum Reported Position Value (USD)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum normalized reported position value. Filing values are manager-reported and can be amended.",
                        "default": 0
                    },
                    "minShares": {
                        "title": "Minimum Shares or Principal Amount",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum reported shares or principal amount.",
                        "default": 0
                    },
                    "sortBy": {
                        "title": "Sort Holdings",
                        "enum": [
                            "latest",
                            "value_desc",
                            "shares_desc",
                            "issuer_asc"
                        ],
                        "type": "string",
                        "description": "Latest filing order, highest reported value, highest shares/principal, or issuer name.",
                        "default": "value_desc"
                    },
                    "maxResults": {
                        "title": "Maximum Holding Rows",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Total output cap after all filters and sorting.",
                        "default": 25
                    },
                    "maxFilingsScanned": {
                        "title": "Maximum Newest Filings to Scan",
                        "minimum": 1,
                        "maximum": 250,
                        "type": "integer",
                        "description": "Bounds SEC filing and information-table requests for holding-level filters. Output discloses when the scan limit applies.",
                        "default": 1
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
