SEC 13F Manager Quarterly Report Scraper avatar

SEC 13F Manager Quarterly Report Scraper

Pricing

Pay per event

Go to Apify Store
SEC 13F Manager Quarterly Report Scraper

SEC 13F Manager Quarterly Report Scraper

Extract SEC 13F manager holdings rows with CUSIP, value, shares, voting authority, filing dates, and source XML URLs.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Extract institutional investment manager holdings from public SEC 13F-HR and 13F-HR/A filings.

What does this SEC 13F scraper do?

This actor downloads SEC EDGAR submissions JSON, finds quarterly 13F filings, locates the filing information-table XML, and saves one dataset row per holding.

It is built for structured holdings data, not raw filing archiving.

Who is it for?

  • Financial analysts tracking hedge-fund and institutional positions
  • Investor-relations teams monitoring peer ownership
  • Fintech data teams enriching securities datasets
  • Compliance teams reviewing reported 13F positions
  • Journalists and researchers following manager portfolio changes

Why use it?

SEC 13F filings are public but awkward to normalize at scale.

This scraper turns XML filings into export-ready rows with manager, filing, issuer, CUSIP, value, share amount, discretion, and voting authority fields.

How does it work?

  1. You provide SEC CIKs or resolvable manager/ticker queries.
  2. The actor requests data.sec.gov/submissions/CIK##########.json.
  3. It filters recent filings for 13F-HR and optionally 13F-HR/A.
  4. It opens each SEC archive index.json.
  5. It chooses the information-table XML document.
  6. It parses every infoTable holding.
  7. It saves normalized rows to the default dataset.

Data you can extract

FieldDescription
managerCikSEC manager CIK
managerNameSEC registrant/manager name
formType13F-HR or 13F-HR/A
filingDateSEC filing date
reportDatePeriod/report date from submissions metadata
accessionNumberSEC accession number
issuerNameReported issuer name
titleOfClassSecurity class
cusipCUSIP
reportedValueRaw SEC information-table value
sharesOrPrincipalAmountShares/principal amount
sharesOrPrincipalTypeSH or PRN
putCallPut/call marker when reported
investmentDiscretionInvestment discretion
votingSoleSole voting authority
votingSharedShared voting authority
votingNoneNo voting authority
informationTableUrlSource XML URL

How much does it cost to scrape SEC 13F holdings?

The actor uses pay-per-event pricing.

You pay a small run start fee and a per-holding-row fee.

Because the actor uses public SEC HTTP endpoints and no browser, typical compute costs are low.

Input: manager CIKs

Use ciks for the most reliable workflow.

Examples:

{
"ciks": ["0001067983"],
"maxFilings": 2,
"maxItems": 150
}

Input: manager names or tickers

Use managerQueries when you only know a ticker or exact SEC directory name.

CIKs are still recommended because many 13F managers are not operating-company tickers.

Input: date range

Use fromDate and toDate to limit filing dates.

Example:

{
"ciks": ["0001067983"],
"fromDate": "2025-01-01",
"toDate": "2026-12-31"
}

Input: amendments

Set includeAmendments to true to include 13F-HR/A filings.

Set it to false if your workflow only wants original filings.

Input: limits

Use maxFilings to control how many filings are processed.

Use maxItems to cap dataset rows.

Small first runs are recommended while testing a new manager list.

Output example

{
"managerCik": "0001067983",
"managerName": "BERKSHIRE HATHAWAY INC",
"formType": "13F-HR",
"filingDate": "2026-05-15",
"reportDate": "2026-03-31",
"issuerName": "ALLY FINL INC",
"cusip": "02005N100",
"reportedValue": 498992850,
"sharesOrPrincipalAmount": 12719675,
"investmentDiscretion": "DFND",
"votingSole": 12719675
}

Tips for best results

  • Prefer CIKs over names.
  • Start with maxFilings: 1 for a smoke test.
  • Keep a real contact in the SEC User-Agent field.
  • Use date filters for repeat quarterly jobs.
  • Export CSV for spreadsheets and BI tools.

Common use cases

  • Monitor a manager's latest quarterly holdings
  • Build a 13F holdings history database
  • Compare reported positions across managers
  • Enrich securities records by CUSIP
  • Feed compliance or due-diligence workflows

Integrations

Use the Apify API to run this actor on a schedule after quarterly 13F filing deadlines.

Export results to:

  • Google Sheets
  • Snowflake
  • BigQuery
  • PostgreSQL
  • S3
  • Internal dashboards

API usage with Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/sec-13f-manager-quarterly-report-scraper').call({
ciks: ['0001067983'],
maxFilings: 2,
maxItems: 150,
});
console.log(run.defaultDatasetId);

API usage with Python

from apify_client import ApifyClient
import os
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/sec-13f-manager-quarterly-report-scraper').call(run_input={
'ciks': ['0001067983'],
'maxFilings': 2,
'maxItems': 150,
})
print(run['defaultDatasetId'])

API usage with cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~sec-13f-manager-quarterly-report-scraper/runs?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"ciks":["0001067983"],"maxFilings":2,"maxItems":150}'

MCP: use with Claude Desktop and Claude Code

Connect Apify MCP and enable this actor:

$claude mcp add apify-sec-13f https://mcp.apify.com/?tools=automation-lab/sec-13f-manager-quarterly-report-scraper

Claude Desktop JSON configuration:

{
"mcpServers": {
"apify-sec-13f": {
"url": "https://mcp.apify.com/?tools=automation-lab/sec-13f-manager-quarterly-report-scraper"
}
}
}

Example prompts:

  • "Run the SEC 13F scraper for Berkshire Hathaway and summarize the top holdings."
  • "Compare the latest two 13F filings for this CIK."
  • "Export these 13F holdings to CSV."

Scheduling

Create an Apify task with your manager CIK list.

Schedule it quarterly or monthly depending on your monitoring workflow.

SEC fair-access notes

The actor uses public SEC endpoints.

It sends a descriptive User-Agent and processes filings conservatively.

Do not remove the contact string if you run at larger scale.

Data freshness

The actor reads current SEC submissions metadata at run time.

New filings become available when SEC publishes them through EDGAR.

Limitations

  • Name resolution is best-effort through the SEC ticker directory.
  • CIK input is recommended for institutional managers.
  • The actor does not calculate quarter-over-quarter position changes by itself.
  • The actor does not enrich CUSIPs with market prices.

Troubleshooting

If you get no rows, check that the CIK files 13F-HR reports in the selected date range.

If a manager name does not resolve, provide the CIK directly.

If SEC returns throttling responses, lower the filing limit and keep a descriptive User-Agent.

Legality

SEC EDGAR filings are public records.

You are responsible for using the data in compliance with SEC terms, fair-access guidance, and your local laws.

FAQ

Why did my run return no holdings?

The CIK may not have a 13F-HR filing in your selected filing-date range. Expand the date range or verify the manager CIK on SEC EDGAR.

Why should I use CIKs instead of names?

SEC manager names can vary and many 13F filers are not ticker-listed operating companies. CIKs are exact and avoid ambiguity.

Support

If you need a missing 13F XML variant handled, open an issue with the CIK, accession number, and expected output.

Changelog

Initial version extracts SEC 13F-HR and 13F-HR/A holdings from public EDGAR information tables.