# 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 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 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

Download the OpenAPI definition: https://api.apify.com/v2/actors/2KVNSPvcchSskXhwM/builds/cUm7PuCg1wXWosysG/openapi.json
