# 13F Portfolio Tracker (`zinin/thirteen-f-tracker`) Actor

Track institutional managers (hedge funds, family offices) by SEC CIK or name and get their recent 13F-HR quarterly filings — form, filing date, accession number and an EDGAR link. Official SEC data, free, no API key or login.

- **URL**: https://apify.com/zinin/thirteen-f-tracker.md
- **Developed by:** [Tim Zinin](https://apify.com/zinin) (community)
- **Categories:** News, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.25 / 1,000 holding founds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## 13F Portfolio Tracker — New Filings by Institutional Manager

**Did a hedge fund or family office just file their quarterly 13F?** Point this Actor at a list of institutional managers — by SEC CIK or by name — and get back every 13F-HR filing that landed in your lookback window, straight from official SEC EDGAR data. No API key, no browser, no login.

### Who is this for

- **Investors & analysts** — an alert-ready feed of 13F-HR filings for a watchlist of managers, without babysitting the EDGAR full-text search UI.
- **Journalists & researchers** — track when a specific fund last disclosed its quarterly holdings.
- **Fintech builders** — a clean, structured 13F filings feed to wire into a bot, dashboard or n8n workflow.
- **Allocators & LPs** — monitor filing cadence for managers you track or invest alongside.

### What you get

- **A structured filings feed** — resolved company name, filing count in your window, and the filings themselves (form, filing date, accession number, EDGAR link) — no scraping, no rendering.
- **A confident name→CIK match, not a guess.** A manager name only resolves to a filer when the name similarity clears a 0.85 bar; below that, you get a short list of the closest candidates with their scores instead of a silently wrong company's holdings.
- **CIK input skips resolution entirely** — a 10-digit CIK is unambiguous and goes straight to the filing history.
- **Match evidence on every resolved row** — `matchConfidence` and `matchBasis` tell you whether the row came from an exact CIK or a scored name match, and how confident that match was.
- Runs on Apify: schedule it, monitor it, call it from the API or the MCP server, export to JSON/CSV/Excel, or push straight into your own pipeline.

### Why it matters

13F-HR is the SEC form that discloses an institutional investment manager's U.S. equity holdings each quarter — the primary public source for "what did this fund buy/sell." EDGAR's own UI has no manager-list mode and no API key/quota system to build on top of — you either poll the website by hand or write your own name→CIK resolver and pagination logic. This Actor does that resolution once per run and hands back one row per manager, ready to filter, alert on, or pipe into a dataset.

### How to run it

1. Click **Try for free** — no card needed on the free plan.
2. Paste managers into **Managers**, one per row — a 10-digit SEC CIK (most reliable) or a manager name.
3. Press **Start** and read the results from the dataset — UI, API or webhook.

### Pricing

Pay-per-event: **$0.005 per run start + $0.005 per result**. 100 managers cost about **$0.51**; 1,000 managers about **$5.01**.

A manager that could not be resolved to a single filer — a bad CIK, no name match, or a name that matches several filers too closely to call — is still returned so you can see why, and it is **not** charged for. You pay for an identified filer's filings, not for an attempt.

### 简体中文说明

输入一批机构投资者（10 位 SEC `CIK` 编号，或机构名称），此 Actor 会直接读取官方 SEC EDGAR 数据，返回该机构在你设定窗口内提交的每一份 13F-HR 季度持仓披露：表格类型、提交日期、`accessionNumber` 和 EDGAR 链接。13F-HR 是机构投资管理人按季度披露其美股持仓的 SEC 表格，是了解"这只基金买了/卖了什么"最主要的公开信息来源。

用机构名称查询时，只有名称相似度达到 0.85 以上才会被判定为匹配成功（`matchConfidence`/`matchBasis`）；相似度不够时不会强行返回一个可能是错误机构的结果，而是给出候选机构列表（`candidates`），附带各自的相似度分数——直接用 `CIK` 编号可以完全跳过名称匹配这一步。

**当前版本（v0.1）不解析每份 13F-HR 内部的具体持仓明细**（股票、股数），只列出备案本身；`url` 指向该机构在 EDGAR 上的备案列表，需要具体持仓明细的话，点进去查看对应备案的信息表。

计费为按事件付费：每次运行 $0.005，每条成功解析的结果 $0.005。无法解析为唯一机构的输入（`CIK` 有误、名称无匹配、或名称同时匹配多个机构）仍会返回原因说明，**不计费**。100 个机构约 $0.51，1000 个约 $5.01。**本 Actor 不构成投资建议**，v0.1 也不解析基金的实际持仓明细——它只告诉你某份 13F-HR 何时由谁提交，并给出链接。

### Input

| Field | Type | Description |
|-------|------|-------------|
| `managers` | array of strings | Institutional managers to watch — a 10-digit SEC CIK (e.g. `0001067983`, used as-is) or a manager name resolved against EDGAR's filer index (e.g. `Bridgewater Associates`). A name that matches several filers too closely to call returns the shortlist with similarity scores instead of picking one — use the CIK, or the filer's full name, for anything generic like `Capital Management`. Required. |
| `sinceDays` | integer | Only include 13F filings from the last N days. Default 365, max 3650 (10 years). |
| `maxConcurrency` | integer | Parallelism (1–10, default 5). SEC EDGAR's documented rate limit is 10 requests/second. |

```json
{
    "managers": ["0001067983", "0001350694", "Renaissance Technologies"],
    "sinceDays": 365
}
```

### Output

One item per manager. This is a real row from a real run, trimmed only where a list repeats:

```json
{
    "manager": "0001350694",
    "cik": "0001350694",
    "companyName": "Bridgewater Associates, LP",
    "found": true,
    "matchConfidence": 1,
    "matchBasis": "cik",
    "candidates": [],
    "filingsCount": 8,
    "recentFilings": [
        {
            "form": "13F-HR",
            "filedAt": "2026-05-15",
            "accessionNumber": "0001350694-26-000002",
            "url": "https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=0001350694&type=13F"
        },
        {
            "form": "13F-HR",
            "filedAt": "2026-02-13",
            "accessionNumber": "0001350694-26-000001",
            "url": "https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=0001350694&type=13F"
        },
        "…"
    ],
    "summary": "Bridgewater Associates, LP (CIK 0001350694) — 8 13F filings in the last 730 day(s), most recent 13F-HR on 2026-05-15. Resolved from the CIK given, exact.",
    "checkedAt": "2026-08-01T05:14:14.542Z"
}
```

| Field | Description |
|-------|-------------|
| `manager` | The CIK or name you passed |
| `cik` / `companyName` | The resolved filer's CIK and name on EDGAR |
| `found` | Whether this manager resolved to exactly one filer |
| `matchConfidence` | `1` for a CIK given outright; the name-similarity score (0–1) for a name match |
| `matchBasis` | `cik`, `name`, or `ambiguous` (see below) |
| `candidates` | Empty on a confident match. On an ambiguous name, the shortlist of closest filers instead — `cik`, `name`, `score` for each |
| `filingsCount` / `recentFilings` | How many 13F-HR filings landed in `sinceDays`, and the filings themselves |
| `summary` | Human-readable recap, including how the manager was matched |
| `error` | Present only when `found: false` — why (bad CIK, no name match, or ambiguous — see FAQ) |

An unresolvable manager (bad CIK, no name match, or a name matching several filers below the 0.85 confidence bar) returns `found: false` with an `error` explaining why — never a guessed or partial row.

### API

Start a run with a bearer token and explicit JSON input:

```bash
curl -sS -X POST 'https://api.apify.com/v2/acts/zinin~thirteen-f-tracker/runs?waitForFinish=60' \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H 'Content-Type: application/json' \
  --data '{"managers":["0001067983","0001350694","Renaissance Technologies"],"sinceDays":365}'
```

Read Dataset rows using the returned `defaultDatasetId`:

```bash
curl -sS "https://api.apify.com/v2/datasets/$DEFAULT_DATASET_ID/items?clean=true&format=json" \
  -H "Authorization: Bearer $APIFY_TOKEN"
```

### MCP

For an Apify MCP client exposing the standard `call-actor` tool, send this exact payload:

```json
{
  "name": "call-actor",
  "arguments": {
    "actor": "zinin/thirteen-f-tracker",
    "input": {
      "managers": ["0001067983", "0001350694", "Renaissance Technologies"],
      "sinceDays": 365
    }
  }
}
```

#### Related tools

Related tools for adjacent workflows in financial signals and markets.

| Actor | What it does |
|---|---|
| [Funding Round Tracker](https://apify.com/zinin/funding-round-tracker) | Pair it in the financial signals and markets workflow: Track recent SEC Form D filings by company name or sector keyword — the notice a company files when it... |
| [Insider Trading Tracker](https://apify.com/zinin/insider-trading-tracker) | Pair it in the financial signals and markets workflow: Track insider stock trades — SEC Form 3/4/5 filings — for any list of tickers |
| [SEC Filing Watcher](https://apify.com/zinin/sec-edgar-watcher) | Pair it in the financial signals and markets workflow: Watch stock tickers for new SEC filings — 10-K, 10-Q, 8-K, S-1 and more |
| [Patent Filing Monitor](https://apify.com/zinin/patent-monitor) | Pair it in the financial signals and markets workflow: Watch keywords or technologies for newly granted US patents |
| [Clinical Trials Monitor](https://apify.com/zinin/clinical-trials-monitor) | Pair it in the financial signals and markets workflow: Watch conditions, drugs or sponsors for new and updated clinical trials |

### FAQ / Limitations

**Does it need an API key or login?** No — EDGAR full-text search and `submissions/CIK*.json` are public SEC EDGAR endpoints.

**Does this parse the actual holdings (stocks, share counts)?** Not in v0.1 — this Actor lists the 13F-HR *filings themselves* (form, date, accession number, EDGAR link), not the parsed information-table holdings inside each filing. Use the `url` to open the manager's filing list on EDGAR and drill into a specific filing's information table.

**Why is the `url` the same for every filing of a manager?** A 13F-HR's payload is an XML information table, not a single readable primary document — so v0.1 links to the manager's own filing list on EDGAR (`browse-edgar?...&type=13F`) rather than guessing at a per-filing document path.

**Can I look up a manager by name instead of CIK?** Yes — a name resolves to a filer only when EDGAR's own similarity score against that filer's name clears 0.85. Below that bar, you get `found: false` with a `candidates` shortlist of the closest filers and their scores, instead of a confident-looking row for the wrong fund. A generic name like "Capital Management" is exactly the case this guards against — for an unambiguous result, give the CIK, or the filer's full legal name.

**What happens when a name is ambiguous?** The row returns `found: false`, `matchBasis: "ambiguous"`, and `candidates` — each with `cik`, `name` and its similarity `score` — so you can re-run with whichever CIK is the right one, or with the filer's full name.

**How fresh is the data?** As fresh as EDGAR itself — filings usually appear within minutes of acceptance.

**Can I call it from an AI agent?** Yes — it's a standard Apify Actor, callable via the Apify API or the Apify MCP server.

**What this is NOT.** Not investment advice, and not a parser of a fund's actual stock positions in v0.1 — it tells you a 13F-HR was filed, when, and by whom, and links you to it.

Found a wrong result, or need a doubtful match resolved differently? Open an issue on this Actor's page.

***

Built by [zinin](https://apify.com/zinin). Questions? Telegram [@timzinin](https://t.me/timzinin).

# Actor input Schema

## `managers` (type: `array`):

Institutional managers to watch — each entry is either a 10-digit SEC CIK (e.g. `0001067983` for Berkshire Hathaway, used as-is) or a manager name resolved against EDGAR's filer index (e.g. `Bridgewater Associates`). A name that matches several filers returns the shortlist with similarity scores instead of picking one, so use the CIK or the full filer name for anything generic like `Capital Management`.

## `sinceDays` (type: `integer`):

Only include 13F filings from the last N days.

## `maxConcurrency` (type: `integer`):

How many managers to process in parallel. SEC EDGAR's documented rate limit is 10 requests/second — keep this at or below 10.

## Actor input object example

```json
{
  "managers": [
    "0001067983",
    "0001350694",
    "Renaissance Technologies"
  ],
  "sinceDays": 365,
  "maxConcurrency": 5
}
```

# Actor output Schema

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

API URL for the default dataset items produced by this run.

# 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 = {
    "managers": [
        "0001067983",
        "0001350694",
        "Renaissance Technologies"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("zinin/thirteen-f-tracker").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 = { "managers": [
        "0001067983",
        "0001350694",
        "Renaissance Technologies",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("zinin/thirteen-f-tracker").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 '{
  "managers": [
    "0001067983",
    "0001350694",
    "Renaissance Technologies"
  ]
}' |
apify call zinin/thirteen-f-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=zinin/thirteen-f-tracker",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

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