SEC 13F Manager Quarterly Report Scraper
Pricing
Pay per event
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
Maintained by CommunityActor 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?
- You provide SEC CIKs or resolvable manager/ticker queries.
- The actor requests
data.sec.gov/submissions/CIK##########.json. - It filters recent filings for
13F-HRand optionally13F-HR/A. - It opens each SEC archive
index.json. - It chooses the information-table XML document.
- It parses every
infoTableholding. - It saves normalized rows to the default dataset.
Data you can extract
| Field | Description |
|---|---|
| managerCik | SEC manager CIK |
| managerName | SEC registrant/manager name |
| formType | 13F-HR or 13F-HR/A |
| filingDate | SEC filing date |
| reportDate | Period/report date from submissions metadata |
| accessionNumber | SEC accession number |
| issuerName | Reported issuer name |
| titleOfClass | Security class |
| cusip | CUSIP |
| reportedValue | Raw SEC information-table value |
| sharesOrPrincipalAmount | Shares/principal amount |
| sharesOrPrincipalType | SH or PRN |
| putCall | Put/call marker when reported |
| investmentDiscretion | Investment discretion |
| votingSole | Sole voting authority |
| votingShared | Shared voting authority |
| votingNone | No voting authority |
| informationTableUrl | Source 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: 1for 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 ApifyClientimport osclient = 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.
Related scrapers
- https://apify.com/automation-lab/sec-form-nport-mutual-fund-holdings-scraper
- https://apify.com/automation-lab/sec-investment-adviser-public-disclosure-scraper
- https://apify.com/automation-lab/sec-form-adv-filing-monitor
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.