ParseForge Scrapers

SEC 13F Holdings Scraper

parseforge/sec-13f-holdings-scraper

AutomationDeveloper toolsOther

Scrape institutional investment holdings from SEC 13F filings by CIK or fund name. Returns each holding with issuer, CUSIP, shares, value, and put/call flags.

Run this scraper See the API call
Total users
1
Monthly active
0
Total runs
176
Bookmarked
0
Rating
Not rated yet
Last modified
12 days ago

Overview

ParseForge

SEC 13F Holdings Scraper

Scrape SEC 13F holdings from any institutional filer, by CIK or name, up to a million records per run. Every holding comes with the filer name, report period, security name, class, put/call flag, shares, and value. No API key. Export to CSV, JSON, Excel, or XML.

Tracking institutional investment moves from SEC 13F filings normally means downloading PDFs or XML manually, filing by filing. This scraper reads the public EDGAR index, matches filings by CIK or institution name, and parses each holding into a flat row. Date filters and form-type selection let you narrow the run to exactly the filings you need.

Who uses it What they scrape SEC EDGAR for
Investment analysts Track which stocks the largest funds are buying or selling each quarter.
Hedge fund researchers Monitor competitor or peer fund portfolios from public 13F filings.
Financial data vendors Build a database of institutional holdings for quantitative models.
Individual investors See what famous investors like Berkshire Hathaway or Renaissance Technologies hold.

What it does

This Actor collects SEC 13F holdings from institutional investment manager filings on EDGAR, returning each holding as a structured record with filer, security, and value details.

  • ๐Ÿ” CIK or name search: Enter a SEC Central Index Key for exact matching, or an institution name for fuzzy lookup.
  • ๐Ÿ“… Date range filters: Set filing start and end dates, or a specific report period, to limit results to a quarter or year.
  • ๐Ÿ“„ Form-type selection: Choose 13F-HR, 13F-HR/A, or both to include amended filings.
  • โฑ Per-filing limits: Cap holdings per filing to avoid oversized datasets from large filers.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

What you can do with SEC EDGAR data

๐Ÿ“ˆ Monitor institutional portfolio changes.

An analyst runs the scraper quarterly by CIK for the top 50 hedge funds to detect new positions and exits.

๐Ÿ” Research competitor fund strategies.

A fund manager inputs competitor CIKs and compares sector allocations across recent 13F filings.

๐Ÿ“Š Build a holdings database for backtesting.

A quant developer collects all 13F filings from 2010 to present by iterating CIKs and date ranges.

๐Ÿ“‹ Automate compliance reporting.

A compliance officer pulls their own firm's 13F filings to verify reported holdings match internal records.

Why choose this scraper

What you get
Filer identity SEC CIK, institution name, and filing date for every holding.
Security details Issuer name, security class, CUSIP, put/call flag, and option type.
Valuation Shares held, market value in USD, and value change from prior filing.
Raw data Direct access to the original XML filing text for audit or custom parsing.

How it compares

No other Store actor targets SEC EDGAR the same way, so the honest comparison is with the alternatives teams actually weigh.

SEC 13F Holdings Scraper Build it in-house By hand
Setup Run it now, zero config Days of engineering None, but hours per pull
When SEC EDGAR changes Maintained for you You fix it You re-learn the page
Proxies, retries, anti-bot Built in Your problem Browser only
Output Fixed JSON schema, CSV/Excel export Whatever you build Copy-paste
Cost Pay per result Engineering time Analyst hours

Configure the run

Drive the Actor from a CIK or institution name, alone or together, and apply date and form-type filters so only the filings you need are parsed. The Input tab lists every parameter.

A first run with the defaults:

{
  "maxItems": 10,
  "cik": "1067983",
  "formTypes": [
    "13F-HR"
  ],
  "maxFilings": 5
}

A larger pull:

{
  "maxItems": 200,
  "cik": "1067983",
  "formTypes": [
    "13F-HR"
  ],
  "maxFilings": 5
}

Pricing

Pay-per-result: $0.01599 per result collected. You pay only for the results written to your dataset.

Results collected Approximate cost
100 results $1.60
1,000 results $15.99
10,000 results $159.90

New Apify accounts start with $5 in free credit.

Free users

Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.

Run it

  1. Create a free Apify account with $5 in credit.
  2. Open the SEC 13F Holdings Scraper.
  3. Set your inputs and any filters, then click Start.
  4. Export the results as CSV, Excel, JSON, or XML from the Dataset tab.

Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.

Use with AI agents (MCP)

Give an AI agent live access to SEC EDGAR through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/sec-13f-holdings-scraper"

Then prompt it in plain language to run the scraper and read back the results.

Troubleshooting

Why am I getting no results?

Check that the CIK or institution name is correct. For name searches, try a shorter or more common variant. Also verify the date range includes filings that exist.

The run returns fewer holdings than expected.

Increase maxFilings or maxHoldingsPerFiling. Some large filers like Berkshire Hathaway have thousands of holdings per filing.

Can I scrape all filers at once?

Leave CIK and institutionName empty, set a report period, and increase maxFilings. The scraper will iterate all filers that filed on that date.

The scraper is slow for large runs.

Reduce maxFilings or set a narrower date range. Each filing requires a separate HTTP request to EDGAR.

What does 'No filings found' mean?

The CIK or name may not have filed a 13F in the selected period. Try expanding the date range or checking the CIK on EDGAR directly.

FAQ

Question Answer
What is a CIK and where do I find it? A CIK is the SEC's Central Index Key, a unique 10-digit number assigned to every filer. You can look it up on EDGAR's search page or use the institution name field instead.
Can I scrape all 13F filings from a single quarter? Yes. Set the report period to the quarter end date (e.g., 2024-09-30) and leave CIK empty to get all filers. Use maxFilings to control volume.
Does this include amended filings (13F-HR/A)? Yes, if you include '13F-HR/A' in the formTypes array. By default only 13F-HR is collected.
What data does each holding record contain? Each record includes filer CIK and name, filing date, report period, issuer name, security class, CUSIP, put/call flag, shares, market value, and the raw XML snippet.
How many holdings can I scrape in one run? Up to 1,000,000 holdings total, with a configurable maxFilings (up to 1,000) and maxHoldingsPerFiling limit.
Is an API key or login required? No. All data is from public SEC EDGAR filings. No registration or authentication needed.
Can I scrape by fund name instead of CIK? Yes. Use the institutionName field. The scraper will search EDGAR for matching filers. CIK is recommended for precision.
What if a filing has no holdings? The scraper skips filings that contain no holdings data (e.g., cover pages only). No empty records are returned.
How are put/call options represented? The putCall field contains 'Put' or 'Call' when applicable, and is empty for common stock or other equity holdings.
Can I export to Excel or CSV? Yes. The Actor supports CSV, JSON, Excel, XML, and HTML table export formats from the Apify dataset.

Related actors

Browse the full ParseForge collection for more scrapers.

๐Ÿ†˜ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.

โš ๏ธ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by U.S. Securities and Exchange Commission. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

Input

FieldTypeWhat it doesDefault
maxItems integer Maximum holdings records to return in this run. 10
cik string SEC CIK of the filer. Recommended for stable and precise matching. 1067983
institutionName string Institution or fund name to search on SEC EDGAR. Used only when CIK is empty. not set
formTypes array 13F form types to include, for example 13F-HR and 13F-HR/A. ["13F-HR"]
startDate string Include filings on or after this date. not set
endDate string Include filings on or before this date. not set
reportPeriod string Filter by report period date. not set
maxFilings integer Maximum number of filings to process. 5
maxHoldingsPerFiling integer Optional per filing limit. Leave empty to collect all holdings from each filing. not set

Pricing

from $11.99 per 1,000 results

Charged forWhat it isPrice each
Actor Start Charged once when the run starts. $0.005
Result Item Charged once per result collected. $0.01199 to $0.01599

Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.

API

One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.

POST ยท run and get results
curl -X POST "https://api.apify.com/v2/acts/parseforge~sec-13f-holdings-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "helloWorld": 123
  }'

Examples

Input that runs as-is.

input.json
{
  "helloWorld": 123
}

Reviews

No reviews yet. Be the first.

Issues

We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.

Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.

Related scrapers

Run SEC 13F Holdings Scraper on Apify All scrapers