SEC Schedule 13G Passive Ownership Scraper avatar

SEC Schedule 13G Passive Ownership Scraper

Pricing

Pay per event

Go to Apify Store
SEC Schedule 13G Passive Ownership Scraper

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

Stas Persiianenko

Maintained by Community

Actor 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:

  1. Provide exact SEC filing or primary-document URLs.
  2. 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?

FieldDescription
accessionNumberUnique SEC filing accession
formTypeSchedule 13G or 13G/A form label
filingDateDate the filing entered EDGAR
eventDateDate of event requiring the statement
amendmentWhether the filing is an amendment
amendmentNumberReported amendment sequence
issuerNameIssuer legal name
issuerCikIssuer Central Index Key
cusipSecurity CUSIP when disclosed
securityClassClass or title of securities
filingRulesApplicable 13d-1 filing rule designations
reportingPersonsNested normalized beneficial owners
commentsReporting-person explanatory comments
signaturesSigner, title, person, and date details
filingIndexUrlCanonical accession directory
documentUrlParsed primary or submission document
submissionUrlFull SEC submission text URL
rawMetadataUseful source-format and filing metadata
scrapedAtExtraction timestamp

Reporting-person fields

Each object in reportingPersons can contain:

  • name
  • cik
  • type
  • citizenshipOrOrganization
  • soleVotingPower
  • sharedVotingPower
  • soleDispositivePower
  • sharedDispositivePower
  • aggregateBeneficialShares
  • percentOfClass
  • excludesCertainShares
  • comments

Numeric shares and percentages are returned as numbers when the filing exposes numeric values.

How to scrape SEC Schedule 13G filings

  1. Open the Actor input page.
  2. Keep the sample filing URL for a one-filing extraction, or remove it for a quarterly scan.
  3. Enter quarters in YYYY/QTRN format, such as 2026/QTR3.
  4. Optionally add issuer CIKs or a filing-date range.
  5. Choose whether to include 13G/A amendments.
  6. Set a low maxItems for a first run.
  7. Click Start.
  8. Open the dataset and export it in your preferred format.

Quarterly results are considered newest-first before the maximum is applied.

Input options

InputTypeDefaultPurpose
filingUrlsarraysample URLExact SEC accession or document URLs
quartersarraycurrent sample quarterEDGAR index periods in YYYY/QTRN format
issuerCiksarrayemptyRestrict quarterly discovery to issuers
startDatestringemptyInclusive YYYY-MM-DD lower boundary
endDatestringemptyInclusive YYYY-MM-DD upper boundary
includeAmendmentsbooleantrueInclude Schedule 13G/A records
maxItemsinteger10Maximum unique filings saved
userAgentstringsuppliedSEC-compliant organization/contact header
requestDelayMillisinteger200Delay 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 tierPrice 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:

  1. Scan the current quarter with a bounded maximum.
  2. Store accession numbers as unique keys.
  3. Ignore accessions already seen.
  4. Compare each reporting person's percentage and shares with the prior filing.
  5. Send an alert when a new holder or material amendment appears.
  6. 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:

  1. Split the desired range into EDGAR quarters.
  2. Run a moderate number of quarters per job.
  3. Filter issuer CIKs when researching a defined watchlist.
  4. Merge exports by accessionNumber.
  5. Sort by filing date or event date.
  6. 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 os
from apify_client import ApifyClient
client = 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().items
print(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.

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.