OrbTop

SEC Form 13F Holdings Crawler - Institutional Portfolio Data

BUSINESSOTHERLEAD GENERATION

SEC Form 13F Holdings Crawler - Institutional Portfolio Data

Extract every position from SEC Form 13F-HR institutional holdings filings into structured, row-per-holding data. One row per security held, with CUSIP, issuer, shares, USD value, voting authority, and put/call flags.

Every U.S. institutional investment manager with discretion over $100M or more in 13(f) securities must file a Form 13F-HR with the SEC within 45 days of each quarter's end. This actor parses the filed Information Table XML into clean tabular data — no HTML scraping, no anti-bot hoops, no API keys.

Features

  • Four query modes — track a hedge fund (by_filer), see who owns a stock (by_ticker), search by explicit security ID (by_cusip), or sweep every 13F-HR for a quarter (by_period).
  • Row-per-holding output — each dataset record is one position. Pivot, aggregate, or join downstream.
  • Ticker guessing — best-effort CUSIP-to-ticker resolution via SEC's public ticker map (company_tickers.json). Blank when not resolvable.
  • Value normalization — SEC changed the "value" field from thousands-of-dollars to whole-dollars for period-of-report 2022-12-31 onward. This actor normalizes both eras to whole USD.
  • Amendment aware — optionally include 13F-HR/A amendments (off by default, since amendments typically supersede originals for specific positions only).
  • No proxy, no auth — uses documented SEC EDGAR endpoints with a compliant User-Agent. Rate-limited to stay well under SEC's 10-req/sec fair-access policy.

Input

Field Type Default Description
mode string by_filer Query strategy: by_filer, by_ticker, by_cusip, by_period
filerCiks array of string ["0001067983"] 10-digit CIK(s) of fund managers to track. Used with by_filer.
filerNames array of string (empty) Fund manager names to resolve via EDGAR full-text search (fallback when CIK unknown).
tickers array of string (empty) Ticker symbols to search ownership for. Used with by_ticker (full-text search on the ticker).
cusips array of string (empty) 9-character CUSIPs to search ownership for. Used with by_cusip.
quarters array of string (empty) Quarters in YYYYQn format (e.g. 2025Q4). Required for by_period; optional filter for other modes.
includeAmendments boolean false Include 13F-HR/A amendment filings.
maxItems integer 50 Maximum number of holdings rows to return.
proxyConfiguration object { useApifyProxy: false } Optional proxy. Not needed — SEC endpoints work fine without one.

Example Inputs

Track Berkshire Hathaway's most recent holdings:

{
  "mode": "by_filer",
  "filerCiks": ["0001067983"],
  "maxItems": 200
}

Track multiple funds by name:

{
  "mode": "by_filer",
  "filerNames": ["Bridgewater Associates", "Renaissance Technologies"],
  "quarters": ["2025Q4"],
  "maxItems": 500
}

Find who owns Apple:

{
  "mode": "by_cusip",
  "cusips": ["037833100"],
  "quarters": ["2025Q4"],
  "maxItems": 500
}

Sweep all 13F-HR filings for a quarter:

{
  "mode": "by_period",
  "quarters": ["2025Q4"],
  "maxItems": 2000
}

Output

Every record is a single 13F holding.

{
  "accession_number": "0001193125-26-054580",
  "filing_date": "2026-02-17",
  "period_of_report": "2025-12-31",
  "filer_name": "Berkshire Hathaway Inc",
  "filer_cik": "0001067983",
  "filer_type": "13F HOLDINGS REPORT",
  "issuer_name": "APPLE INC",
  "cusip": "037833100",
  "ticker_guess": "AAPL",
  "class_title": "COM",
  "value_usd": 74990132000,
  "shares_or_principal": 300000000,
  "shares_or_principal_type": "SH",
  "put_call": "",
  "investment_discretion": "DFND",
  "voting_authority_sole": 300000000,
  "voting_authority_shared": 0,
  "voting_authority_none": 0,
  "quarter": "2025Q4"
}

Field Reference

Field Description
accession_number SEC accession number (unique filing ID)
filing_date Date the filing was submitted (YYYY-MM-DD)
period_of_report Quarter-end date the filing covers (YYYY-MM-DD)
filer_name Fund manager legal name
filer_cik 10-digit zero-padded CIK
filer_type Filer type from 13F cover page (usually 13F HOLDINGS REPORT)
issuer_name Issuer legal name as reported on the Information Table
cusip 9-character CUSIP identifier
ticker_guess Best-effort ticker from SEC's public ticker map; blank if no confident match
class_title Security class (COM, PREF, WRT, NOTE, etc.)
value_usd Position value in USD, normalized across pre/post-2022 SEC reporting changes
shares_or_principal Shares held (when shares_or_principal_type=SH) or principal amount (PRN)
shares_or_principal_type SH (shares) or PRN (principal)
put_call PUT, CALL, or empty for direct holdings
investment_discretion SOLE, DFND, or OTR
voting_authority_sole Shares with sole voting authority
voting_authority_shared Shares with shared voting authority
voting_authority_none Shares with no voting authority
quarter Reporting quarter (YYYYQn)

Use Cases

  • 13F portfolio cloning — replicate hedge fund positions for your own portfolio
  • Ownership analysis — identify which funds hold a given stock and how concentrations are changing
  • Quarter-over-quarter diffs — detect new positions and exits across managers
  • Fund research — see a manager's full portfolio at any quarter-end since 2013
  • Compliance — audit institutional ownership for regulatory or fund-of-funds research

Data Sources

This actor combines three documented SEC endpoints:

  1. Company submissions APIhttps://data.sec.gov/submissions/CIK{10-digit}.json for per-CIK filing history.
  2. Full-text filing searchhttps://efts.sec.gov/LATEST/search-index for searching by ticker, CUSIP, entity name, or date range.
  3. Filing archivehttps://www.sec.gov/Archives/edgar/data/{cik}/{acc}/ for raw primary_doc.xml and Information Table XML.

No authentication required. Respects SEC's fair-access policy (10 req/sec with a descriptive User-Agent).

Limitations

  • ticker_guess is best-effort — SEC does not publish a free CUSIP-to-ticker database, so ticker resolution is done by fuzzy name matching against company_tickers.json. It is accurate for household-name issuers but blank for bonds, warrants, illiquid securities, and many foreign ADRs.
  • EFTS hard cap of 10,000 hits per query — for by_period sweeps covering an entire quarter of ~9,000 filers, split by date range or use by_filer bucketing.
  • value_usd pre-2023 — filings with period_of_report before 2022-12-31 report values in thousands; this actor multiplies those by 1,000 for consistency. Verify against the raw Information Table if auditing old filings.
  • 13F-HR/A amendments — optional (includeAmendments: true). Amendments often restate only specific rows; combine with originals carefully when doing time-series analysis.

Need More Features?

If you'd like to add new data fields, CUSIP-to-ticker resolution via a paid feed, or custom output formats, please get in touch — we build custom versions on request.