SEC Schedule 13G Passive Ownership Scraper
Pricing
Pay per event
SEC Schedule 13G Passive Ownership Scraper
π Extract normalized passive beneficial-ownership holders, positions, voting powers, amendments, and source links from public SEC Schedule 13G filings.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Extract normalized passive beneficial-ownership positions from public SEC EDGAR Schedule 13G and 13G/A filings.
Turn filing XML and submission documents into analysis-ready JSON with issuer identifiers, CUSIPs, reporting persons, ownership percentages, share counts, voting powers, comments, signatures, and canonical source links.
- π¦ Monitor passive holders crossing or amending significant ownership positions
- π Build quarterly ownership histories without manually reading filings
- π Schedule recurring runs for compliance and investment-research alerts
- π Export to JSON, CSV, Excel, APIs, webhooks, databases, and AI workflows
Run SEC Schedule 13G Passive Ownership Scraper
What does SEC Schedule 13G Passive Ownership Scraper do?
The Actor discovers and parses public SEC filings whose form type is Schedule 13G or Schedule 13G/A.
It supports two workflows:
- Provide exact SEC filing or primary-document URLs.
- Scan one or more EDGAR quarterly master indexes and apply optional issuer/date filters.
Each dataset row represents one unique filing accession. Repeated reporting persons and signatures remain nested inside the filing record so ownership details stay connected to their source.
Who is it for?
Funds and investment analysts
Track passive or qualified beneficial owners, compare position amendments, and feed ownership screens.
RIAs and compliance teams
Review reportable holdings, filing dates, amendment status, signers, and SEC evidence in repeatable exports.
Financial-data engineers
Build normalized Schedule 13G feeds without maintaining XML variants, accession discovery, retries, and deduplication.
Investor-research products
Power alerts, holder profiles, issuer timelines, and ownership-change dashboards with source-linked data.
AI and automation teams
Give agents structured filing records instead of long SEC documents that require repeated interpretation.
Why use this Actor?
- β 13G-specific output β focused on passive and qualified ownership rather than mixing 13D activist filings into one dataset
- β Person-level normalization β captures each reporting person's shares, percentage, type, citizenship, and voting/dispositive powers
- β Historical discovery β scans deterministic EDGAR quarterly indexes
- β Direct lookup β extracts a known accession or primary document immediately
- β Source evidence β preserves filing, document, and submission URLs
- β Fair-access design β sequential requests, identifying User-Agent, conservative delay, and bounded retries
- β No login required β the source is public SEC EDGAR data
What Schedule 13G data can I extract?
| Field | Description |
|---|---|
accessionNumber | Unique SEC filing accession |
formType | Schedule 13G or 13G/A form label |
filingDate | Date the filing entered EDGAR |
eventDate | Date of event requiring the statement |
amendment | Whether the filing is an amendment |
amendmentNumber | Reported amendment sequence |
issuerName | Issuer legal name |
issuerCik | Issuer Central Index Key |
cusip | Security CUSIP when disclosed |
securityClass | Class or title of securities |
filingRules | Applicable 13d-1 filing rule designations |
reportingPersons | Nested normalized beneficial owners |
comments | Reporting-person explanatory comments |
signatures | Signer, title, person, and date details |
filingIndexUrl | Canonical accession directory |
documentUrl | Parsed primary or submission document |
submissionUrl | Full SEC submission text URL |
rawMetadata | Useful source-format and filing metadata |
scrapedAt | Extraction timestamp |
Reporting-person fields
Each object in reportingPersons can contain:
nameciktypecitizenshipOrOrganizationsoleVotingPowersharedVotingPowersoleDispositivePowersharedDispositivePoweraggregateBeneficialSharespercentOfClassexcludesCertainSharescomments
Numeric shares and percentages are returned as numbers when the filing exposes numeric values.
How to scrape SEC Schedule 13G filings
- Open the Actor input page.
- Keep the sample filing URL for a one-filing extraction, or remove it for a quarterly scan.
- Enter quarters in
YYYY/QTRNformat, such as2026/QTR3. - Optionally add issuer CIKs or a filing-date range.
- Choose whether to include 13G/A amendments.
- Set a low
maxItemsfor a first run. - Click Start.
- Open the dataset and export it in your preferred format.
Quarterly results are considered newest-first before the maximum is applied.
Input options
| Input | Type | Default | Purpose |
|---|---|---|---|
filingUrls | array | sample URL | Exact SEC accession or document URLs |
quarters | array | current sample quarter | EDGAR index periods in YYYY/QTRN format |
issuerCiks | array | empty | Restrict quarterly discovery to issuers |
startDate | string | empty | Inclusive YYYY-MM-DD lower boundary |
endDate | string | empty | Inclusive YYYY-MM-DD upper boundary |
includeAmendments | boolean | true | Include Schedule 13G/A records |
maxItems | integer | 10 | Maximum unique filings saved |
userAgent | string | supplied | SEC-compliant organization/contact header |
requestDelayMillis | integer | 200 | Delay between filing extractions |
At least one valid filing URL or quarter must be supplied.
Example input: exact filing
{"filingUrls": [{"url": "https://www.sec.gov/Archives/edgar/data/2014982/000121390026018524/primary_doc.xml"}],"quarters": [],"maxItems": 1}
Use this mode to enrich an accession already found by another system.
Example input: quarterly monitor
{"filingUrls": [],"quarters": ["2026/QTR3"],"includeAmendments": true,"maxItems": 25,"requestDelayMillis": 200}
Schedule this input daily to retrieve the newest filings in the selected quarter.
Example input: issuer history
{"filingUrls": [],"quarters": ["2025/QTR4", "2026/QTR1", "2026/QTR2"],"issuerCiks": ["2014982"],"startDate": "2025-10-01","endDate": "2026-06-30","maxItems": 100}
This pattern creates a bounded issuer-specific history across several quarters.
Example output
{"accessionNumber": "0001213900-26-018524","formType": "SCHEDULE 13G/A","eventDate": "01/28/2026","amendment": true,"amendmentNumber": 1,"issuerName": "SIM ACQUISITION CORP. I","issuerCik": "2014982","cusip": "G8431T101","securityClass": "Class A Ordinary Shares, par value $0.0001 per share","filingRules": ["Rule 13d-1(d)"],"reportingPersons": [{"name": "SIM Sponsor 1 LLC","type": "OO","citizenshipOrOrganization": "DE","soleVotingPower": 7526669,"aggregateBeneficialShares": 7526669,"percentOfClass": 24.7}],"documentUrl": "https://www.sec.gov/Archives/edgar/data/2014982/000121390026018524/primary_doc.xml"}
Fields absent from a source document are omitted rather than invented.
How much does it cost to extract SEC Schedule 13G filings?
This Actor uses pay-per-event pricing: a $0.005 run-start fee plus one result event for each unique filing saved.
| Apify plan tier | Price per filing |
|---|---|
| Free | $0.0005984 |
| Bronze | $0.00052035 |
| Silver | $0.00040587 |
| Gold | $0.00031221 |
| Platinum | $0.00020814 |
| Diamond | $0.0001457 |
The run-start fee is added once per run. You can preview the estimated charge in Console before starting.
For cost control:
- begin with
maxItems: 5 - use exact filing URLs for one-off enrichment
- filter by CIK and date for targeted histories
- avoid rescanning quarters you have already checkpointed in your own workflow
Daily monitoring workflow
A practical ownership-monitor pipeline is:
- Scan the current quarter with a bounded maximum.
- Store accession numbers as unique keys.
- Ignore accessions already seen.
- Compare each reporting person's percentage and shares with the prior filing.
- Send an alert when a new holder or material amendment appears.
- Retain SEC source links for analyst review.
Apify schedules and webhooks can automate the first and last steps.
Historical backfill workflow
For a historical dataset:
- Split the desired range into EDGAR quarters.
- Run a moderate number of quarters per job.
- Filter issuer CIKs when researching a defined watchlist.
- Merge exports by
accessionNumber. - Sort by filing date or event date.
- Preserve amendment numbers to reconstruct position changes.
The SEC quarterly indexes are finite, making backfills reproducible.
Integrations
Google Sheets and Excel
Export CSV or XLSX for review, watchlists, and ownership models.
Webhooks and Slack
Send completed-run webhooks to an alert service and post selected holder changes to Slack.
PostgreSQL, Snowflake, and BigQuery
Use accession number as the filing key and store nested persons as JSON or normalize them into a child table.
Zapier and Make
Trigger downstream compliance tickets, emails, or CRM records after scheduled runs.
Apify API and SDK
Start jobs from data pipelines and consume dataset items programmatically.
API usage in JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/sec-schedule-13g-passive-ownership-scraper').call({quarters: ['2026/QTR3'],maxItems: 10,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Use with the Apify API in Python
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/sec-schedule-13g-passive-ownership-scraper').call(run_input={'quarters': ['2026/QTR3'], 'maxItems': 10})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
Use with cURL
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~sec-schedule-13g-passive-ownership-scraper/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"quarters":["2026/QTR3"],"maxItems":10}'
Poll the returned run ID, then download items from its default dataset.
Use with MCP and AI agents
Connect the Actor through the Apify MCP server.
Claude Code setup
$claude mcp add --transport http apify "https://mcp.apify.com/?tools=automation-lab/sec-schedule-13g-passive-ownership-scraper"
Then ask:
Extract the newest ten Schedule 13G filings and summarize holders above 10%.
Claude Desktop setup
Add this entry to the Claude Desktop MCP configuration:
{"mcpServers": {"apify-sec-13g": {"url": "https://mcp.apify.com/?tools=automation-lab/sec-schedule-13g-passive-ownership-scraper"}}}
Cursor setup
Use the same mcpServers JSON in Cursor's MCP settings and enable apify-sec-13g for the workspace.
VS Code setup
Open the VS Code MCP configuration, add the same HTTP server URL, and start the server before opening Copilot Chat.
Example prompts:
Find amendments for issuer CIK 2014982 and compare ownership percentages by reporting person.
Build a table of reporting persons, beneficial shares, class percentages, and SEC source URLs from the latest quarter.
MCP keeps source extraction deterministic while the model handles analysis and narrative.
Data quality and deduplication
- Accessions are deduplicated before extraction and billing.
- Modern SEC XML is preferred for normalized ownership fields.
- Filing index metadata resolves the primary Schedule 13G document.
- Full submission text provides a fallback for older accession layouts.
- Malformed individual filings are logged and skipped while the batch continues.
- Canonical document URLs make every result auditable.
A reporting person's CIK is omitted when the filing does not provide one in that person's block.
Tips for reliable results
- Use a descriptive User-Agent containing an organization and contact.
- Keep the request delay at or above the provided default for routine work.
- Use exact filing URLs when validating a specific document.
- Choose the quarter containing your date range.
- Include 13G/A when building ownership histories.
- Exclude amendments when you only need initial position disclosures.
- Treat CUSIPs as filing-provided identifiers and preserve leading zeros.
Fair access and rate limits
SEC EDGAR is public, but automated clients should identify themselves and request data responsibly.
The Actor uses sequential filing extraction, a conservative delay, and bounded retry/backoff for transient responses. Do not reduce pacing to create an aggressive high-frequency crawler.
The Actor does not use a browser or proxy in its normal route.
Legality
SEC filings are public government records. This Actor retrieves public EDGAR documents without bypassing authentication or access controls.
You remain responsible for:
- complying with SEC fair-access guidance
- using the data lawfully
- validating investment or compliance conclusions
- respecting any obligations that apply to your organization
The output is data extraction, not legal, investment, or compliance advice.
FAQ
Does this Actor extract Schedule 13D?
No. This product is intentionally limited to Schedule 13G and 13G/A passive or qualified ownership filings. Use SEC Schedule 13D Ownership Scraper for activist Schedule 13D filings.
Can I extract one known filing?
Yes. Provide an SEC accession directory, filing index, full submission, XML, or HTML document URL in filingUrls.
Can I monitor only one issuer?
Yes. Add its CIK to issuerCiks and scan the relevant current quarter.
Why is a field missing?
SEC filing formats and disclosed values vary. The Actor omits unavailable values instead of fabricating them.
Why did my run find no filings?
Check that the quarter uses YYYY/QTRN, the date filter overlaps that quarter, the CIK belongs to the issuer, and amendments are not unintentionally excluded.
Why was one filing skipped?
Inspect run warnings. A temporary SEC response or unusual legacy document can prevent one accession from parsing while other records still succeed.
Are results investment advice?
No. They are normalized public filing data and source links for further analysis.
Related SEC scrapers
- SEC Schedule 13D Ownership Scraper β activist beneficial-ownership filings
- SEC EDGAR Company Filings Scraper β broader company filing discovery
- SEC Form 4 Insider Trading Scraper β officer, director, and owner transactions
Use separate form-specific Actors when you need normalized fields rather than one generic filing blob.
Support
If a valid public Schedule 13G filing does not parse correctly, open an Actor issue and include:
- the SEC filing URL
- the run URL
- expected fields
- observed output or warning
That evidence helps reproduce format-specific edge cases quickly.