sec-api.ioSEC API by D2V
PricingSandboxDocs
Log inGet Free API Key
API Documentation
Introduction

Filing Query API
EDGAR Index APIs
Full-Text Search API
Stream API
Download & PDF Generator API
XBRL-to-JSON Converter 
Extractor API 
Bulk Datasets

Form ADV API - Investment Advisers

Form 3/4/5 API - Insider Trading
Form 144 API - Restricted Sales
Form 13F API - Institut. Holdings
Form 13D/13G API - Activist Invst.
Overview
Example: Python
Form N-PORT API - Mutual Funds

Form N-CEN API - Annual Reports
Form N-PX API - Proxy Voting

Form S-1/424B4 API - IPOs, Notes
Form C API - Crowdfunding
Form D API - Private Sec. Offerings
Form 1-A/1-K/1-Z - Reg A Offerings

Form 8-K API - Item 4.01
Form 8-K API - Item 4.02
Form 8-K API - Item 5.02

Executive Compensation API
Directors & Board Members
Audit Reports (Fin. Stat. & ICFR)
Audit Fees API
Company Subsidiaries
Outstanding Shares & Public Float

SEC Enforcement Actions
SEC Litigation Releases
SEC Administrative Proceedings
AAER Database API
SRO Filings Database

CIK, CUSIP, Ticker Mapping API
EDGAR Entities Database

Financial Statements

Analyzing SEC Form 13D and 13G Filings with Python

Open In Colab   View on GitHub

On this page:
  • Regulatory Background
    • Who Must File
      • Schedule 13D vs. Schedule 13G
        • Filing Deadlines (Post-2024 Amendments)
          • Structured Data & Other 2023 Changes
          • Environment Setup
            • Querying 13D/13G Filings
              • Understanding the Response Structure
              • Filtering by Owner Name and Ownership Percentage
                • Searching by CUSIP
                  • Comparing 13D and 13G Filings
                    • Filtering by Filing Date
                      • Pagination: Retrieving Large Result Sets
                        • Aggregation and Statistics
                          • Analyzing Individual Owners
                            • Visualizations
                              • Voting Power vs. Dispositive Power
                                • Exporting Results
                                  • Further Reading

                                    When an investor acquires more than 5% of a publicly traded company's equity securities, they must disclose that position to the SEC by filing a Schedule 13D or Schedule 13G. These filings are among the most closely watched documents in financial markets — they reveal which major investors are building stakes, how large those stakes are, and (in the case of Schedule 13D) what the investor intends to do with their position.

                                    This notebook shows how to use the sec-api.io Form 13D/13G API to query, filter, and analyze beneficial ownership data. We will cover querying filings by owner name, CUSIP, form type, and date range; normalizing the nested JSON responses into pandas DataFrames; computing summary statistics; and visualizing ownership patterns. The API provides coverage from 1994 to the present with real-time updates as new filings hit EDGAR.

                                    By the end of this tutorial you will be able to programmatically retrieve 13D/13G data, identify large block holders in any public company, and build analytical workflows around beneficial ownership disclosures.

                                    Regulatory Background

                                    Who Must File

                                    Sections 13(d) and 13(g) of the Securities Exchange Act of 1934 (15 U.S.C. §§ 78m(d), 78m(g)) require any person or group that acquires beneficial ownership of more than 5% of a class of equity securities registered under Section 12 to file a disclosure statement with the SEC. Under Rule 13d-3 (17 CFR § 240.13d-3), "beneficial ownership" means having voting power (the power to vote or direct the voting of the security) or investment power (the power to dispose of or direct the disposition of the security). This includes shares held through trusts, by family members in the same household, and shares acquirable within 60 days through options, warrants, or conversion rights.

                                    Schedule 13D vs. Schedule 13G

                                    Schedule 13D is the "long form" disclosure required of any beneficial owner above the 5% threshold who does not qualify for the short form. It requires detailed disclosure of the investor's identity, source of funds, purpose of the transaction, and any plans that could result in corporate changes (mergers, board changes, etc.).

                                    Schedule 13G is a streamlined alternative available to three categories of investors:

                                    • Qualified Institutional Investors (QIIs) under Rule 13d-1(b): broker-dealers, banks, insurance companies, registered investment companies, and registered investment advisers that acquired shares in the ordinary course of business without a control purpose.
                                    • Passive investors under Rule 13d-1(c): any person who beneficially owns more than 5% but less than 20% and did not acquire with the purpose or effect of changing or influencing control.
                                    • Exempt investors under Rule 13d-1(d): persons who held more than 5% before the class was registered under Section 12.

                                    Filing Deadlines (Post-2024 Amendments)

                                    In October 2023, the SEC adopted Release No. 33-11253, modernizing beneficial ownership reporting. Key deadline changes (compliance dates: September 30, 2024 for deadlines; December 18, 2024 for structured data):

                                    FilingOld DeadlineNew Deadline
                                    13D initial10 calendar days5 business days
                                    13D amendment"Promptly"2 business days
                                    13G QII/exempt initial45 days after year-end45 days after quarter-end
                                    13G passive initial10 calendar days5 business days
                                    13G QII amendment (>10%)10 days after month-end5 business days after month-end

                                    Structured Data & Other 2023 Changes

                                    The 2023 amendments also required all Schedule 13D and 13G filings to be submitted in structured XML format (effective December 18, 2024), mandated disclosure of cash-settled derivative securities (including total return swaps) in Item 6 of Schedule 13D, and extended the EDGAR filing window from 5:30 p.m. ET to 10:00 p.m. ET.

                                    Environment Setup

                                    Install the sec-api package and import the libraries we will use throughout this notebook. You will need an API key from sec-api.io.

                                    %pip install sec-api -q
                                    from sec_api import Form13DGApi
                                    import pandas as pd
                                    import json
                                    import matplotlib.pyplot as plt

                                    pd.options.display.float_format = lambda v: f"{v:,.2f}"
                                    pd.options.display.max_columns = 50
                                    pd.options.display.width = 200

                                    API_KEY = "YOUR_API_KEY"
                                    form13DGApi = Form13DGApi(API_KEY)

                                    Querying 13D/13G Filings

                                    The Form 13D/13G API accepts a JSON query object with four parameters:

                                    • query — a Lucene query string that filters filings by any combination of fields (e.g., formType, owners.name, cusip, filedAt).
                                    • from — the starting offset for pagination (zero-based).
                                    • size — the number of results to return per request (maximum 50).
                                    • sort — an array of field/order pairs controlling result ordering.

                                    The API returns an object with total (the count of matching filings) and filings (the array of results for this page). Let's start with a simple query that retrieves the 50 most recent Schedule 13D filings.

                                    query = {
                                        "query": 'formType:"SC 13D"',
                                        "from": "0",
                                        "size": "50",
                                        "sort": [{"filedAt": {"order": "desc"}}]
                                    }

                                    response = form13DGApi.get_data(query)

                                    print(f"Total matching filings: {response['total']}")
                                    print(f"Filings returned: {len(response['filings'])}")
                                    print()
                                    print("First filing (sample):")
                                    print(json.dumps(response["filings"][0], indent=2))
                                    Total matching filings: {'value': 10000, 'relation': 'gte'}
                                    Filings returned: 50

                                    First filing (sample):
                                    {
                                      "id": "8237e891c3308cd3ae3ec74553516edf",
                                      "accessionNo": "0000950103-26-005722",
                                      "formType": "SC 13D/A",
                                      "filedAt": "2026-04-15T06:19:05-04:00",
                                      "filers": [
                                        {
                                          "cik": "1014763",
                                          "name": "Ainos, Inc. (Subject)"
                                        },
                                        {
                                          "cik": "1122411",
                                          "name": "ASE Technology Holding Co., Ltd. (Filed by)"
                                        }
                                      ],
                                      "nameOfIssuer": "Ainos, Inc.",
                                      "titleOfSecurities": "Common Stock, par value $0.01 per share",
                                      "cusip": [],
                                      "eventDate": "2026-04-12",
                                      "amendmentNo": "2",
                                      "schedule13GFiledPreviously": false,
                                      "owners": [
                                        {
                                          "name": [
                                            "ASE Technology Holding Co., Ltd."
                                          ],
                                          "memberOfGroup": {
                                            "a": false,
                                            "b": false
                                          },
                                          "sourceOfFunds": "WC",
                                          "legalProceedingsDisclosureRequired": false,
                                          "place": "F5",
                                          "soleVotingPower": 0,
                                          "sharedVotingPower": 667085,
                                          "soleDispositivePower": 0,
                                          "sharedDispositivePower": 667085,
                                          "aggregateAmountOwned": 667085,
                                          "isAggregateExcludeShares": false,
                                          "amountAsPercent": 8.4,
                                          "typeOfReportingPerson": [
                                            "CO"
                                          ]
                                        },
                                        {
                                          "name": [
                                            "ASE Test, Inc."
                                          ],
                                          "memberOfGroup": {
                                            "a": false,
                                            "b": false
                                          },
                                          "sourceOfFunds": "WC",
                                          "legalProceedingsDisclosureRequired": false,
                                          "place": "F5",
                                          "soleVotingPower": 0,
                                          "sharedVotingPower": 667085,
                                          "soleDispositivePower": 0,
                                          "sharedDispositivePower": 667085,
                                          "aggregateAmountOwned": 667085,
                                          "isAggregateExcludeShares": false,
                                          "amountAsPercent": 8.4,
                                          "typeOfReportingPerson": [
                                            "CO"
                                          ]
                                        }
                                      ],
                                      "item1": {
                                        "securityTitle": "Common Stock, par value $0.01 per share",
                                        "issuerName": "Ainos, Inc.",
                                        "issuerPrincipalAddress": {
                                          "street1": "3050 POST OAK BLVD,",
                                          "street2": "SUITE 510-T80",
                                          "city": "Houston",
                                          "stateOrCountry": "TX",
                                          "zipCode": "77056"
                                        },
                                        "commentText": "This Schedule 13D amendment is being filed to reflect the accrual of interest pursuant to the Convertible Promissory Note Purchase Agreement the Issuer entered into with ASE Test Taiwan (as defined below) on March 13, 2023 (the "2023 Agreement") according to which ASE Test Taiwan committed to pay a total aggregate amount of $2,000,000 to the Issuer in exchange for convertible promissory note(s). The 2023 Agreement has been amended by a supplementary agreement entered into between the Issuer and ASE Test Taiwan on March 10, 2025 (the "2023 Agreement Amendment"). The note bears 6% compound interest and matures on March 12, 2027. The note will be convertible into shares of Common Stock at a conversion price equal to the lower of (a) $37.50 per share and (b) the higher of (x) the average closing price per share for the period of thirty (30) trading days prior to the day when ASE Test Taiwan exercises the conversion right or (y) $22.50 per share (or 105,868 shares), subject to anti-dilutive adjustment as set forth in the note. This Schedule 13D amendment is also being filed to reflect the accrual of interest pursuant to the Convertible Note and Warrant Purchase Agreement the Issuer entered into with ASE Test Taiwan (as defined below) on May 3, 2024 (the "2024 Agreement"), according to which ASE Test Taiwan committed to pay a total aggregate amount of $9,000,000 to the Issuer in exchange for convertible note(s). The note bears 6% compound interest and matures on May 15, 2027. The note bears 6% compound interest and has a three-year term. The note will be convertible into shares of Common Stock at a conversion price of $22.50 per share (or 449,440 shares), subject to customary anti-dilution adjustments.

                                    This statement on Schedule 13D (this "Statement") relates to the Common Stock, par value $0.01 per share of the Issuer. The address of the principal executive corporate offices of the Issuer is 3050 Post Oak Blvd, Suite 510-T80, Houston, TX 77056."
                                      },
                                      "item2": {
                                        "filingPersonName": "This Schedule 13D is being filed by (i) ASE Technology Holding Co., Ltd. ("ASX") and (ii) its indirect wholly-owned subsidiary, ASE Test, Inc. ("ASE Test Taiwan") (ASX and ASE Test Taiwan, collectively, the "Reporting Persons"). ASE Test Taiwan is directly wholly-owned by Advanced Semiconductor Engineering, Inc., a Taiwan company, which is itself directly held by ASX. For disclosure relating to the directors and executive officers of ASX and ASE Test Taiwan, see Schedule A filed as an exhibit hereto.",
                                        "principalBusinessAddress": "ASE Technology Holding Co., Ltd. is a Taiwanese corporation ("ASX"), with a principal executive office at 26, Chin 3rd Rd., Nanzih Dist., Kaohsiung, 811, Taiwan, Republic of China. ASE Test, Inc., is a Taiwanese corporation ("ASE Test Taiwan"), with a principal executive office at 10, West 5th Street, Nanzih Dist., Kaohsiung, 811, Taiwan.",
                                        "principalJob": "The principal business of ASX includes semiconductor packaging, design and production of interconnect materials, front-end engineering testing, wafer probing, and final testing services, as well as electronic manufacturing services. The principal business of ASE Test Taiwan is providing semiconductor testing services.",
                                        "hasBeenConvicted": "During the last five years, none of the Reporting Persons nor any director or executive officer of the Reporting Persons have been convicted in a criminal proceeding.",
                                        "convictionDescription": "During the last five years, none of the Reporting Persons nor any director or executive officer of Reporting Persons was a party to a civil proceeding of a judicial or administrative body of competent jurisdiction and as a result of such proceeding was or is subject to a judgment, decree or final order enjoining future violations of, or prohibiting or mandating activities subject to, federal or state securities laws or finding any violation with respect to such laws.",
                                        "citizenship": "The Reporting Persons are organized in Taiwan, Republic of China."
                                      },
                                      "item3": {
                                        "fundsSource": "All of the conversion price and share number information below gives effect to the June 2025 Reverse Split.

                                    On March 10, 2025, ASE Test Taiwan entered into the 2023 Agreement Amendment with the Issuer, which amended and modified the 2023 Agreement pursuant to which ASE Test Taiwan committed to pay a total aggregate amount of $2,000,000 to the Issuer in exchange for convertible promissory note(s). The 2023 Agreement Amendment amended and modified the term and conversion price of the 2023 Agreement. Following the amendment, the note bears 6% compound interest and matures on March 12, 2027. The note will be convertible into shares of Common Stock at a conversion price equal to the lower of (a) $37.50 per share and (b) the higher of (x) the average closing price per share for the period of thirty (30) trading days prior to the day when ASE Test Taiwan exercises the conversion right or (y) $22.50 per share (or 105,868 shares), subject to anti-dilutive adjustment as set forth in the note.

                                    On May 3, 2024, ASE Test Taiwan entered into the 2024 Agreement pursuant to which ASE Test Taiwan purchased from the Issuer a Convertible Note in the aggregate principal amount of $9,000,000. The note bears 6% compound interest and has a three-year term. The note will be convertible into shares of Common Stock at a conversion price of $22.50 per share (or 449,440 shares), subject to customary anti-dilution adjustments. As part of the 2024 Agreement, ASE Test Taiwan received a five-year common stock purchase warrant which vested and became exercisable following a six-month period from the date of issue. The warrant may be exercised for up to 100,000 shares of Common Stock at a price of $22.50 per share, customary to anti-dilution adjustments.

                                    The purchase of the Convertible Note was funded by ASE Test Taiwan with cash on hand."
                                      },
                                      "item4": {
                                        "transactionPurpose": "The purpose of the acquisition was to make a financial investment in the Issuer.

                                    The Reporting Persons may engage in discussions with management, the board of directors of the Issuer (the "Board"), other shareholders of the Issuer and other relevant parties concerning the business, assets, capitalization, financial condition, operations, management, strategy, potential business combinations and strategic alternatives, and future plans of the Issuer. The Reporting Persons also may consider, formulate, discuss and seek to cause the Issuer to implement various plans or proposals intended to protect, preserve or enhance stockholder value or protect, preserve or enhance the value of the Issuer's assets, including plans or proposals that may involve extraordinary matters relating to the Issuer. Any such actions or transactions may be taken, advocated by, or involve the Reporting Persons alone or in conjunction with other shareholders, financing sources and/or other third parties, and could include proposing or considering one or more of the actions described in subsections (a) through (j) of Item 4 of Schedule 13D.

                                    The Reporting Persons intend to review their investments in the Issuer on a continuing basis. Depending on various factors, including, without limitation, the Issuer's financial position and strategic direction, actions taken by the Board, price levels of shares of the Common Stock, other investment opportunities available to the Reporting Persons, concentration of positions in the portfolios managed by the Reporting Persons, market conditions and general economic and industry conditions, the Reporting Persons may take such actions with respect to their investment in the Issuer as they deem appropriate, including, without limitation, purchasing additional shares of the Common Stock or other financial instruments related to the Issuer or the Common Stock or selling some or all of the Common Stock, engaging in hedging or similar transactions involving securities relating to the Issuer or the Common Stock and/or otherwise changing their intention with respect to any and all matters referred to in subsections (a) through (j) of Item 4 of Schedule 13D."
                                      },
                                      "item5": {
                                        "percentageOfClassSecurities": "The responses of each of the Reporting Persons with respect to Rows 11 and 13 of the cover pages of this Schedule 13D that relate to the aggregate number and percentage of Ordinary Shares are incorporated herein by reference.

                                    The responses of each of the Reporting Persons with respect to Rows 7, 8, 9 and 10 of the cover pages of this Schedule 13D that relate to the number of Ordinary Shares as to which such Reporting Persons have sole or shared power to vote, or to direct the vote, and sole or shared power to dispose of, or to direct the disposition, are incorporated herein by reference.",
                                        "numberOfShares": "See (a).",
                                        "transactionDescription": "Except as reported in Item 3 above, the Reporting Persons have not affected any transactions in the shares of Common Stock in the sixty days prior to the date hereof.",
                                        "listOfShareholders": "The information in Item 2 is incorporated by reference into this Item 5(d).",
                                        "date5PercentOwnership": "Not applicable."
                                      },
                                      "item6": {
                                        "contractDescription": "The Reporting Persons' responses to Items 3 - 5 are incorporated by reference into this Item 6.

                                    All of the conversion price and share number information below gives effect to the June 2025 Reverse Split.

                                    ASE Test Taiwan directly holds 11,777 shares of Common Stock.

                                    On March 13, 2023, the Issuer entered into the 2023 Agreement with ASE Test Taiwan pursuant to which ASE Test Taiwan committed to pay a total aggregate amount of $2,000,000 to the Issuer in exchange for convertible promissory note(s) in three tranches in the amounts of $1,000,000 (the "First Tranche"), $500,000 (the "Second Tranche"), and $500,000 (the "Third Tranche") conditioned, among other things, on the Issuer achieving certain business milestones. ASE Test Taiwan provided $1,500,000 on as April 12, 2023 and the remaining $500,000 on September 12, 2023. The convertible note(s) issued under the 2023 Agreement were originally set to mature on March 13, 2025. On March 10, 2025, the Issuer and ASE Test Taiwan entered the 2023 Agreement Amendment, which amended and superseded the term and conversion price of the 2023 Agreement. Accordingly, ASE Test Taiwan holds a convertible note that will mature on March 12, 2027 and bears interest at the rate of 6% compounded interest per annum. At any time after the issuance and before the maturity date, the note is convertible into the Issuer's Common Stock at a conversion price equal to the lower of (a) $37.50 per share and (b) the higher of (x) the average closing price per share for the period of thirty (30) trading days prior to the day when ASE Test Taiwan exercises the conversion right or (y) $22.50 per share (or 105,868 shares), subject to anti-dilutive adjustment as set forth in the note.

                                    On May 3, 2024, ASE Test Taiwan entered into a Convertible Note and Warrant Purchase Agreement with the Issuer (the "2024 Agreement") pursuant to which ASE Test Taiwan purchased from the Issuer a Convertible Note in the aggregate principal amount of $9,000,000. The note bears 6% compound interest and has a three-year term. The note will be convertible into shares of Common Stock at a conversion price of $22.50 per share (or 449,440 shares), subject to customary anti-dilution adjustments. As part of the 2024 Agreement, ASE Test Taiwan received a five-year common stock purchase warrant which vested and became exercisable following a six-month period from the date of issue. The warrant may be exercised for up to 100,000 shares of Common Stock at a price of $22.50 per share, customary to anti-dilution adjustments.

                                    Effective May 3, 2024, Ainos Inc., a Cayman Islands corporation ("Ainos KY") and ASE Test Taiwan entered into a voting agreement with respect to the voting stock of the Issuer (the "Voting Agreement"). Pursuant to the Voting Agreement, ASE Test Taiwan has agreed to vote all of its current or future acquired voting stock of the Issuer in the manner determined by Ainos KY in its sole discretion. The Voting Agreement continued in effect until May 3, 2025 and was subsequently automatically renewed for an additional one-year period until May 3, 2026; thereafter, it will automatically renew for additional one-year periods unless ASE Test Taiwan provides prior notice of termination. As part of the Voting Agreement, ASE Test Taiwan agreed that, without Ainos KY's written consent, it would not sell or transfer more than 20% of its shares of the Issuer in any calendar year period through the fifth anniversary of the date of the Voting Agreement. If, in any calendar year, ASE Test Taiwan does not sell the full 20% allocation, the remaining percentage will be added to and increase the following year's allocation. The transfer restrictions will terminate upon the termination of the Voting Agreement.

                                    Except as set forth herein, neither of the Reporting Persons has any contracts, arrangements, understandings or relationships (legal or otherwise) with any person with respect to any securities of the Issuer, including but not limited to any contracts, arrangements, understandings or relationships concerning the transfer or voting of such securities, finder's fees, joint ventures, loan or option arrangements, puts or calls, guarantees of profits, division of profits or losses, or the giving or withholding of proxies."
                                      },
                                      "item7": {
                                        "filedExhibits": "1 Joint Filing Agreement dated as of April 15, 2026 by and among the Reporting Persons.
                                    2.1 Convertible Promissory Note Purchase Agreement, dated March 13, 2023, by and between the Issuer and ASE Test Taiwan in the principal amount of $2,000,000 (incorporated by reference to Exhibit 2.1 to the Schedule 13D filed by ASE Test Taiwan on May 8, 2024).

                                    2.2 Convertible Promissory Note, dated May 3, 2024, issued by the Issuer in favor of ASE Test Taiwan in the principal amount of $9,000,000 (incorporated by reference to Exhibit 4.2 to the Issuer's Current Report on Form 8-K filed on May 7, 2024).

                                    2.3 Common Stock Warrant, dated May 3, 2024, issued by the Issuer to ASE Test Taiwan (incorporated by reference to Exhibit 4.3 to the Issuer's Current Report on Form 8-K filed on May 7, 2024).

                                    2.4 Convertible Note and Warrant Purchase Agreement, dated May 3, 2024, by and between the Issuer and ASE Test Taiwan (incorporated by reference to Exhibit 10.1 to the Issuer's Current Report on Form 8-K on May 7, 2024).

                                    2.5 Voting Agreement, dated May 3, 2024, by and between Ainos KY and ASE Test Taiwan (incorporated by reference to Exhibit 4.1 to the Issuer's Current Report on Form 8-K on May 7, 2024).

                                    2.6 Amendment to Convertible Promissory Note, dated March 10, 2025, by and between the Issuer and ASE Test Taiwan (incorporated by reference to Exhibit 10.1 to the Issuer's Current Report on Form 8-K on March 11, 2025).

                                    99.A Schedule A"
                                      }
                                    }

                                    Understanding the Response Structure

                                    Each filing in the filings array contains a rich set of fields organized into several groups:

                                    Core fields: id (unique identifier), accessionNo (SEC accession number), formType (one of "SC 13D", "SC 13D/A", "SC 13G", "SC 13G/A"), filedAt (timestamp), and filers (array with CIK and name for both the Subject company and the Filing entity).

                                    Issuer fields: nameOfIssuer, titleOfSecurities, cusip (array of CUSIP identifiers), and eventDate (the date of the event triggering the filing).

                                    Owners array: Each element in the owners array represents a reporting person and includes:

                                    • name, place — identity and jurisdiction
                                    • sourceOfFunds — array of fund-source codes: AF (Affiliate), BK (Bank), OO (Other), PF (Personal Funds), SC (Subject Company), WC (Working Capital)
                                    • soleVotingPower, sharedVotingPower, soleDispositivePower, sharedDispositivePower — the breakdown of voting and investment power over the securities
                                    • aggregateAmountOwned, amountAsPercent — total shares and percentage of class owned
                                    • typeOfReportingPerson — array of codes: BD (Broker-Dealer), BK (Bank), IC (Insurance Company), IV (Investment Company), IA (Investment Adviser), IN (Individual), PN (Partnership), HC (Holding Company), OO (Other)
                                    • memberOfGroup — whether the reporting person is part of a 13D group (sub-fields a and b)

                                    Item-level structured data (Schedule 13D): Fields item1 through item7 map to the items on the Schedule 13D form. Notable examples include item4.transactionPurpose (the filer's stated purpose — critical for activism analysis) and item6.contractDescription (derivative securities arrangements).

                                    Item-level structured data (Schedule 13G): Includes applicableRule.13d-1b, applicableRule.13d-1c, and applicableRule.13d-1d — boolean fields identifying which regulatory category the filer claims (QII, passive, or exempt, respectively). Fields item1 through item10 provide the structured schedule data.

                                    Note on array fields: Fields like cusip, sourceOfFunds, and typeOfReportingPerson are arrays. Lucene queries match against any element in the array, so owners.typeOfReportingPerson:IC will match filings where at least one owner has type IC.

                                    # Flatten the nested JSON into a tabular format
                                    df_recent = pd.json_normalize(response["filings"], sep="_")

                                    # Select key columns for display
                                    display_cols = [
                                        "accessionNo", "formType", "filedAt", "nameOfIssuer",
                                        "titleOfSecurities"
                                    ]
                                    available_cols = [c for c in display_cols if c in df_recent.columns]
                                    df_recent[available_cols].head(10)
                                    Out[3]:
                                    accessionNoformTypefiledAtnameOfIssuertitleOfSecurities
                                    00000950103-26-005722SC 13D/A2026-04-15T06:19:05-04:00Ainos, Inc.Common Stock, par value $0.01 per share
                                    10000899140-26-000385SC 13D2026-04-14T21:54:52-04:00Third Point Private Capital PartnersClass I Common Shares, par value $0.001 per share
                                    20001104659-26-043404SC 13D/A2026-04-14T21:47:19-04:00Getaround, IncCommon Stock, par value $0.0001 per share
                                    30001104659-26-043389SC 13D/A2026-04-14T21:00:08-04:00Absci CorporationCommon Stock, $0.0001 par value per share
                                    40001062993-26-001986SC 13D/A2026-04-14T19:59:57-04:00Highland Opportunities and Income FundCommon Shares, $0.001 par value
                                    50001193125-26-155387SC 13D/A2026-04-14T19:58:27-04:00GeoPark LimitedCommon Shares, par value $0.001 per share
                                    60000921895-26-000986SC 13D/A2026-04-14T18:01:39-04:00FOSTER L B COCommon Stock, par value $0.01 per share
                                    70001193125-26-155180SC 13D/A2026-04-14T17:45:02-04:00lululemon athletica inc.Common Stock
                                    80001062993-26-001981SC 13D/A2026-04-14T17:35:25-04:00The New Germany Fund, Inc.Common Shares, $0.001 par value
                                    90001437749-26-012268SC 13D/A2026-04-14T17:19:06-04:00PRIMEENERGY RESOURCES CORPCommon Stock, $0.10 par value

                                    Filtering by Owner Name and Ownership Percentage

                                    You can search for filings by a specific owner using the owners.name field in the Lucene query. Combine this with a range query on owners.amountAsPercent to find only filings where the owner holds a significant stake. Range queries use the syntax [lower TO upper], where * represents an unbounded end.

                                    # Find filings where Point72 entities own 10% or more
                                    query = {
                                        "query": "owners.name:Point72 AND owners.amountAsPercent:[10 TO *]",
                                        "from": "0",
                                        "size": "50",
                                        "sort": [{"filedAt": {"order": "desc"}}]
                                    }

                                    response_point72 = form13DGApi.get_data(query)
                                    print(f"Total matching filings: {response_point72['total']}")

                                    df_point72 = pd.json_normalize(response_point72["filings"], sep="_")
                                    point72_cols = ["accessionNo", "formType", "filedAt", "nameOfIssuer"]
                                    available_cols = [c for c in point72_cols if c in df_point72.columns]
                                    df_point72[available_cols]
                                    Total matching filings: {'value': 8, 'relation': 'eq'}
                                    Out[4]:
                                    accessionNoformTypefiledAtnameOfIssuer
                                    00000902664-22-005029SC 13D2022-12-05T16:00:20-05:00Tempo Automation Holdings, Inc.
                                    10000899140-21-000280SC 13G/A2021-02-16T15:09:09-05:00
                                    20000899140-18-000352SC 13D/A2018-04-25T17:21:29-04:00LAUREATE EDUCATION, INC.
                                    30000899140-18-000308SC 13D2018-03-20T16:54:27-04:00BUILD-A-BEAR WORKSHOP, INC.
                                    40000899140-18-000223SC 13G/A2018-02-14T14:58:57-05:00
                                    50000899140-18-000028SC 13D/A2018-01-05T17:22:57-05:00LAUREATE EDUCATION INC.
                                    60001193125-17-057741SC 13G2017-02-27T09:02:05-05:00BUILD-A-BEAR WORKSHOP, INC.
                                    70000899140-17-000275SC 13D2017-02-16T17:07:52-05:00LAUREATE EDUCATION INC.

                                    Searching by CUSIP

                                    The cusip field lets you track all beneficial ownership filings for a specific security, regardless of issuer name changes or ticker symbol changes. CUSIP (Committee on Uniform Securities Identification Procedures) is a 9-character alphanumeric code that uniquely identifies a security. This is especially useful for tracking ownership history over time.

                                    # Search for 13D/13G filings related to Apple Inc. (CUSIP: 037833100)
                                    query = {
                                        "query": "cusip:037833100",
                                        "from": "0",
                                        "size": "50",
                                        "sort": [{"filedAt": {"order": "desc"}}]
                                    }

                                    response_cusip = form13DGApi.get_data(query)
                                    print(f"Total filings for CUSIP 037833100 (Apple Inc.): {response_cusip['total']}")

                                    df_cusip = pd.json_normalize(response_cusip["filings"], sep="_")
                                    cusip_cols = ["accessionNo", "formType", "filedAt", "nameOfIssuer"]
                                    available_cols = [c for c in cusip_cols if c in df_cusip.columns]
                                    df_cusip[available_cols].head(10)
                                    Total filings for CUSIP 037833100 (Apple Inc.): {'value': 69, 'relation': 'eq'}
                                    Out[5]:
                                    accessionNoformTypefiledAtnameOfIssuer
                                    00000932471-25-000778SC 13G/A2025-07-29T11:22:01-04:00Apple Inc
                                    10001193125-24-036431SC 13G/A2024-02-14T16:47:05-05:00APPLE INC.
                                    20001104659-24-020009SC 13G/A2024-02-13T16:55:49-05:00Apple Inc
                                    30001086364-24-006980SC 13G/A2024-02-12T16:17:19-05:00APPLE INC
                                    40001193125-23-038262SC 13G/A2023-02-14T12:47:31-05:00APPLE INC.
                                    50001104659-23-015055SC 13G/A2023-02-09T10:54:46-05:00Apple Inc.
                                    60001306550-23-008266SC 13G/A2023-02-07T14:10:46-05:00APPLE INC
                                    70001104659-22-016224SC 13G/A2022-02-09T15:16:02-05:00Apple Inc.
                                    80000834237-22-004076SC 13G/A2022-01-31T17:59:30-05:00APPLE INC
                                    90001193125-21-044816SC 13G/A2021-02-16T16:02:01-05:00APPLE INC.

                                    Comparing 13D and 13G Filings

                                    You can filter filings by formType to focus on a specific schedule or its amendments. The four form type values are "SC 13D", "SC 13D/A" (amendment), "SC 13G", and "SC 13G/A" (amendment).

                                    Several fields in the response are arrays — for example, typeOfReportingPerson, cusip, and sourceOfFunds. When you query an array field, Lucene matches against any element in the array. So owners.typeOfReportingPerson:IC returns filings where at least one reporting person is an insurance company, even if other owners on the same filing have different types.

                                    Schedule 13G filings also include the applicableRule boolean fields: applicableRule.13d-1b (Qualified Institutional Investor), applicableRule.13d-1c (passive investor), and applicableRule.13d-1d (exempt investor). These correspond to the three regulatory categories described in the background section and let you filter 13G filings by the category the filer claims.

                                    # Find Schedule 13G filings where at least one owner is an insurance company (IC)
                                    query = {
                                        "query": 'formType:"SC 13G" AND owners.typeOfReportingPerson:IC',
                                        "from": "0",
                                        "size": "50",
                                        "sort": [{"filedAt": {"order": "desc"}}]
                                    }

                                    response_ic = form13DGApi.get_data(query)
                                    print(f"Total 13G filings with insurance company owners: {response_ic['total']}")

                                    df_ic = pd.json_normalize(response_ic["filings"], sep="_")
                                    ic_cols = ["accessionNo", "formType", "filedAt", "nameOfIssuer"]
                                    available_cols = [c for c in ic_cols if c in df_ic.columns]
                                    df_ic[available_cols].head(10)
                                    Total 13G filings with insurance company owners: {'value': 10000, 'relation': 'gte'}
                                    Out[6]:
                                    accessionNoformTypefiledAtnameOfIssuer
                                    00001193125-26-138205SC 13G2026-04-01T17:13:12-04:00Sound Point Direct Lending BDC
                                    10001193125-26-137792SC 13G/A2026-04-01T15:47:07-04:00Willow Tree Capital Corporation
                                    20001104659-26-038248SC 13G/A2026-04-01T08:33:24-04:00HYPERION DEFI, INC.
                                    30000903939-26-000020SC 13G/A2026-03-31T15:00:30-04:00Privacore VPC Asset Backed Credit Fund
                                    40001193125-26-123358SC 13G2026-03-25T12:15:42-04:00Carlyle Tactical Private Credit Fund
                                    50001193125-26-096046SC 13G/A2026-03-06T14:00:02-05:00ICON plc
                                    60001140361-26-008176SC 13G/A2026-03-06T08:39:52-05:00FS Credit Opportunities Corp.
                                    70001104659-26-022459SC 13G/A2026-03-03T06:00:30-05:00HYPERION DEFI, INC.
                                    80000903939-26-000013SC 13G/A2026-03-02T16:11:09-05:00Privacore VPC Asset Backed Credit Fund
                                    90001193125-26-054685SC 13G2026-02-17T16:15:24-05:00LIBERTY LIVE HOLDINGS, INC.
                                    # Find Schedule 13G filings by Qualified Institutional Investors (Rule 13d-1(b))
                                    query = {
                                        "query": 'formType:"SC 13G" AND applicableRule.13d-1b:true',
                                        "from": "0",
                                        "size": "50",
                                        "sort": [{"filedAt": {"order": "desc"}}]
                                    }

                                    response_qii = form13DGApi.get_data(query)
                                    print(f"Total 13G filings by QIIs (Rule 13d-1(b)): {response_qii['total']}")

                                    df_qii = pd.json_normalize(response_qii["filings"], sep="_")
                                    qii_cols = ["accessionNo", "formType", "nameOfIssuer"]
                                    available_cols = [c for c in qii_cols if c in df_qii.columns]
                                    df_qii[available_cols].head(10)
                                    Total 13G filings by QIIs (Rule 13d-1(b)): {'value': 10000, 'relation': 'gte'}
                                    Out[7]:
                                    accessionNoformTypenameOfIssuer
                                    00001442181-26-000008SC 13G/ASanara MedTech Inc.
                                    10000898358-26-000004SC 13G/ALANDMARK BANCORP INC
                                    20000810972-26-000028SC 13GT. Rowe Price Exchange-Traded Funds, Inc.
                                    30001019432-26-000007SC 13G/AMaris Tech Ltd.
                                    40001890906-26-000039SC 13G/ATotal Return Securities Fund
                                    50001890906-26-000038SC 13G/AStewart Information Services C
                                    60001890906-26-000037SC 13G/AQuanex Building Products Corp
                                    70001890906-26-000036SC 13G/APursuit Attractions and Hospit
                                    80001890906-26-000035SC 13G/AGates Industrial Corp PLC
                                    90001890906-26-000034SC 13G/AEuropean Equity Fund Inc/The

                                    Filtering by Filing Date

                                    Use a range query on the filedAt field to retrieve filings within a specific date range. The Lucene date-range syntax is filedAt:[YYYY-MM-DD TO YYYY-MM-DD]. This is useful for analyzing filing activity during a particular period — for example, filings submitted after the September 30, 2024 compliance date for the modernized Schedule 13G deadlines.

                                    # Retrieve Schedule 13D filings from 2024
                                    query = {
                                        "query": 'formType:"SC 13D" AND filedAt:[2024-01-01 TO 2024-12-31]',
                                        "from": "0",
                                        "size": "50",
                                        "sort": [{"filedAt": {"order": "desc"}}]
                                    }

                                    response_2024 = form13DGApi.get_data(query)
                                    print(f"Total 13D filings in 2024: {response_2024['total']}")

                                    df_2024 = pd.json_normalize(response_2024["filings"], sep="_")
                                    date_cols = ["accessionNo", "formType", "filedAt", "nameOfIssuer"]
                                    available_cols = [c for c in date_cols if c in df_2024.columns]
                                    df_2024[available_cols].head(10)
                                    Total 13D filings in 2024: {'value': 6022, 'relation': 'eq'}
                                    Out[8]:
                                    accessionNoformTypefiledAtnameOfIssuer
                                    00001104659-24-132991SC 13D/A2024-12-31T21:42:00-05:00AMC Networks Inc.
                                    10001104659-24-132989SC 13D/A2024-12-31T21:26:00-05:00Madison Square Garden Sports Corp.
                                    20001104659-24-132988SC 13D/A2024-12-31T21:13:54-05:00Madison Square Garden Entertainment Corp.
                                    30001104659-24-132987SC 13D/A2024-12-31T21:12:48-05:00Sphere Entertainment Co.
                                    40000950170-24-141714SC 13D2024-12-31T21:12:20-05:00FREYR Battery, Inc.
                                    50001213900-24-114227SC 13D/A2024-12-31T21:12:17-05:00Bolt Projects Holdings, Inc.
                                    60000950170-24-141713SC 13D/A2024-12-31T21:00:14-05:00ProFrac Holding Corp.
                                    70001140361-24-050720SC 13D/A2024-12-31T20:30:05-05:00Quantum-Si Inc
                                    80000950142-24-003049SC 13D/A2024-12-31T18:49:03-05:00TERAWULF INC.
                                    90001104659-24-132953SC 13D/A2024-12-31T18:48:20-05:00Southland Holdings, Inc.

                                    Pagination: Retrieving Large Result Sets

                                    The API returns a maximum of 50 filings per request. To retrieve more results, increment the from parameter in a loop. The total field in the response tells you how many filings match your query, so you know when to stop.

                                    def fetch_all_filings(query_str, max_filings=200):
                                    """Fetch up to max_filings by paginating through the API."""
                                        all_filings = []
                                        page_size = 50
                                        offset = 0

                                        while offset < max_filings:
                                            query = {
                                                "query": query_str,
                                                "from": str(offset),
                                                "size": str(page_size),
                                                "sort": [{"filedAt": {"order": "desc"}}]
                                            }
                                            response = form13DGApi.get_data(query)
                                            filings = response.get("filings", [])

                                            if not filings:
                                                break

                                            all_filings.extend(filings)
                                            offset += page_size

                                            total = response["total"]["value"] if isinstance(response["total"], dict) else response["total"]
                                            if offset >= total:
                                                break

                                        print(f"Fetched {len(all_filings)} filings (query: {query_str[:60]}...)")
                                        return all_filings

                                    Aggregation and Statistics

                                    With a larger dataset we can compute meaningful statistics: how filings break down across form types, which issuers attract the most ownership disclosures, and how ownership percentages are distributed. Let's use the pagination helper to fetch a broad sample of recent 13D and 13G filings.

                                    # Fetch up to 200 recent filings across all 13D/13G form types
                                    all_filings = fetch_all_filings(
                                        'formType:("SC 13D" OR "SC 13G" OR "SC 13D/A" OR "SC 13G/A")',
                                        max_filings=200
                                    )

                                    df = pd.json_normalize(all_filings, sep="_")
                                    print(f"DataFrame shape: {df.shape}")
                                    print(f"Columns: {list(df.columns[:15])}...")
                                    df.head(5)
                                    Fetched 200 filings (query: formType:("SC 13D" OR "SC 13G" OR "SC 13D/A" OR "SC 13G/A")...)
                                    DataFrame shape: (200, 61)
                                    Columns: ['id', 'accessionNo', 'formType', 'filedAt', 'filers', 'nameOfIssuer', 'titleOfSecurities', 'cusip', 'eventDate', 'amendmentNo', 'owners', 'applicableRule_13d-1b', 'applicableRule_13d-1c', 'applicableRule_13d-1d', 'item1_issuerName']...
                                    Out[10]:
                                    idaccessionNoformTypefiledAtfilersnameOfIssuertitleOfSecuritiescusipeventDateamendmentNoownersapplicableRule_13d-1bapplicableRule_13d-1capplicableRule_13d-1ditem1_issuerNameitem1_issuerPrincipalExecutiveOfficeAddressitem2_filingPersonNameitem2_principalBusinessOfficeOrResidenceAddressitem2_citizenshipitem3_notApplicableitem3_typeOfPersonFilingitem3_otherTypeOfPersonFilingitem4_amountBeneficiallyOwneditem4_classPercentitem4_numberOfSharesPersonHas_solePowerOrDirectToVote...item9_notApplicableitem9_groupDissolutionNoticeitem10_notApplicableitem10_certificationsschedule13GFiledPreviouslyitem1_securityTitleitem1_issuerPrincipalAddress_street1item1_issuerPrincipalAddress_street2item1_issuerPrincipalAddress_cityitem1_issuerPrincipalAddress_stateOrCountryitem1_issuerPrincipalAddress_zipCodeitem1_commentTextitem2_principalBusinessAddressitem2_principalJobitem2_hasBeenConvicteditem2_convictionDescriptionitem3_fundsSourceitem4_transactionPurposeitem5_percentageOfClassSecuritiesitem5_numberOfSharesitem5_transactionDescriptionitem5_listOfShareholdersitem5_date5PercentOwnershipitem6_contractDescriptionitem7_filedExhibits
                                    04f6c53c123e3d8f4a3c619fc64acafb80001493152-26-016690SC 13G/A2026-04-15T08:08:31-04:00[{'cik': '1493318', 'name': 'eToro Group Ltd. ...eToro Group Ltd.Class A common shares, no par value per share[]2026-03-311[{'name': 'BRM Group Ltd.', 'memberOfGroup': {...FalseFalseTrueeToro Group Ltd.30 SHESHET HAYAMIN STREET, BNEI BRAK, ISRAEL, ...BRM Group Ltd., a limited company formed under...10 Nissim Aloni Street, Tel Aviv, Israel 6291924L3False5,782,212.008.260.00...TrueTrueNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
                                    18237e891c3308cd3ae3ec74553516edf0000950103-26-005722SC 13D/A2026-04-15T06:19:05-04:00[{'cik': '1014763', 'name': 'Ainos, Inc. (Subj...Ainos, Inc.Common Stock, par value $0.01 per share[]2026-04-122[{'name': ['ASE Technology Holding Co., Ltd.']...NaNNaNNaNAinos, Inc.NaNThis Schedule 13D is being filed by (i) ASE Te...NaNThe Reporting Persons are organized in Taiwan,...NaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNFalseCommon Stock, par value $0.01 per share3050 POST OAK BLVD,SUITE 510-T80HoustonTX77056This Schedule 13D amendment is being filed to ...ASE Technology Holding Co., Ltd. is a Taiwanes...The principal business of ASX includes semicon...During the last five years, none of the Report...During the last five years, none of the Report...All of the conversion price and share number i...The purpose of the acquisition was to make a f...The responses of each of the Reporting Persons...See (a).Except as reported in Item 3 above, the Report...The information in Item 2 is incorporated by r...Not applicable.The Reporting Persons' responses to Items 3 - ...1 Joint Filing Agreement dated as of April 15,...
                                    26f87efa7deb68a023c1ee95034ea21080001213900-26-043748SC 13G2026-04-15T06:03:15-04:00[{'cik': '1997201', 'name': 'PS International ...PS International Group Ltd.Ordinary Shares, par value US$0.0008 per share[]2026-02-03[{'name': 'Chuanbiao Liao', 'memberOfGroup': {...FalseTrueFalsePS International Group Ltd.Unit 1002, 10/F, Join-in Hang Sing Centre, New...Chuanbiao LiaoNo. 00-11, Team 23, Lexi Management Area, Hong...ChinaTrue0.000.000.00...TrueFalseBy signing below I certify that, to the best o...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
                                    3c985e6bea4a50081dc5ce312c3eb03090000899140-26-000385SC 13D2026-04-14T21:54:52-04:00[{'cik': '1040273', 'name': 'Third Point LLC (...Third Point Private Capital PartnersClass I Common Shares, par value $0.001 per share[]2026-04-07[{'name': ['Third Point LLC'], 'memberOfGroup'...NaNNaNNaNThird Point Private Capital PartnersNaNThis Schedule 13D is being filed by Third Poin...NaNThe Management Company is organized as a limit...NaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNFalseClass I Common Shares, par value $0.001 per share55 Hudson Yards51st FloorNew YorkNY10001This Statement on Schedule 13D (this "Schedule...The principal business address of the Reportin...The principal business of the Management Compa...During the last five years, none of the Report...During the last five years, none of the Report...The information set forth in Items 4 and 6 are...Delticus acquired the securities reported here...The information set forth in the cover pages o...Each of the Reporting Persons shares voting an...Except as set forth in this Schedule 13D, none...Other than Delticus and the Advisor, each of w...Not applicable.The information set forth in or incorporated b...99.1 Joint Filing Agreement, dated April 14, 2...
                                    412febf1c553983dffeda8c7ed930ea4f0001104659-26-043404SC 13D/A2026-04-14T21:47:19-04:00[{'cik': '1655183', 'name': 'Mudrick Capital M...Getaround, IncCommon Stock, par value $0.0001 per share[]2026-04-0911[{'name': ['Mudrick Capital Management, L.P.']...NaNNaNNaNGetaround, IncNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNFalseCommon Stock, par value $0.0001 per share55 Green StreetSan FranciscoCA94111This Amendment No. 11 ("Amendment No. 11") ame...The information set forth in Item 6 of this Am...This Item 5(a) of the Schedule 13D is amended ...This Item 5(b) of the Schedule 13D is amended ...This Item 5(c) of the Schedule 13D is amended ...This Item 5(d) of the Schedule 13D is amended ...N/AItem 6 of the Schedule 13D is hereby amended a...

                                    5 rows × 61 columns

                                    # Count filings by form type
                                    form_type_counts = df["formType"].value_counts()
                                    print("Filing counts by form type:")
                                    print(form_type_counts)
                                    print(f"\nTotal filings: {len(df)}")
                                    Filing counts by form type:
                                    formType
                                    SC 13G/A 89
                                    SC 13D/A 50
                                    SC 13G 47
                                    SC 13D 14
                                    Name: count, dtype: int64

                                    Total filings: 200
                                    # Top 10 issuers by number of 13D/13G filings
                                    top_issuers = df["nameOfIssuer"].value_counts().head(10)
                                    print("Top 10 issuers by filing count:")
                                    print(top_issuers)
                                    Top 10 issuers by filing count:
                                    nameOfIssuer
                                    First Trust Exchange-Traded Fund VIII 5
                                    PAVmed Inc. 3
                                    The New Germany Fund, Inc. 2
                                    K-TECH SOLUTIONS CO LTD 2
                                    SEMRUSH HOLDINGS, INC. 2
                                    First Trust Exchange-Traded Fund IV 2
                                    BiomX Inc. 2
                                    Adicet Bio, Inc. 2
                                    Playboy, Inc. 2
                                    Calamos Aksia Hedged Strategies Fund 2
                                    Name: count, dtype: int64

                                    Analyzing Individual Owners

                                    Each 13D/13G filing can list multiple beneficial owners (for example, an investment fund and its controlling person). To analyze ownership at the individual level, we need to "explode" the owners array so that each owner gets their own row. This lets us compute per-owner statistics like the distribution of ownership percentages and the relationship between voting power and dispositive power.

                                    # Explode the owners array into one row per owner
                                    owners_df = pd.json_normalize(
                                        all_filings,
                                        record_path="owners",
                                        meta=["accessionNo", "formType", "nameOfIssuer", "filedAt"],
                                        sep="_",
                                        errors="ignore"
                                    )

                                    print(f"Owner-level DataFrame shape: {owners_df.shape}")
                                    owners_df.head(10)
                                    Owner-level DataFrame shape: (513, 19)
                                    Out[13]:
                                    nameplacesoleVotingPowersharedVotingPowersoleDispositivePowersharedDispositivePoweraggregateAmountOwnedamountExcludesCertainSharesamountAsPercenttypeOfReportingPersonmemberOfGroup_amemberOfGroup_bsourceOfFundslegalProceedingsDisclosureRequiredisAggregateExcludeSharesaccessionNoformTypenameOfIssuerfiledAt
                                    0BRM Group Ltd.L30.005,782,212.000.005,782,212.005,782,212.00False8.26[CO]FalseFalseNaNNaNNaN0001493152-26-016690SC 13G/AeToro Group Ltd.2026-04-15T08:08:31-04:00
                                    1A B Y Finance (eToro) 21 LPL30.005,782,212.000.005,782,212.005,782,212.00False8.26[PN]FalseFalseNaNNaNNaN0001493152-26-016690SC 13G/AeToro Group Ltd.2026-04-15T08:08:31-04:00
                                    2Eli Barkat LTDL30.005,782,212.000.005,782,212.005,782,212.00False8.26[CO]FalseFalseNaNNaNNaN0001493152-26-016690SC 13G/AeToro Group Ltd.2026-04-15T08:08:31-04:00
                                    3Yuval Rakavi LTDL30.005,782,212.000.005,782,212.005,782,212.00False8.26[CO]FalseFalseNaNNaNNaN0001493152-26-016690SC 13G/AeToro Group Ltd.2026-04-15T08:08:31-04:00
                                    4[ASE Technology Holding Co., Ltd.]F50.00667,085.000.00667,085.00667,085.00NaN8.40[CO]FalseFalseWCFalseFalse0000950103-26-005722SC 13D/AAinos, Inc.2026-04-15T06:19:05-04:00
                                    5[ASE Test, Inc.]F50.00667,085.000.00667,085.00667,085.00NaN8.40[CO]FalseFalseWCFalseFalse0000950103-26-005722SC 13D/AAinos, Inc.2026-04-15T06:19:05-04:00
                                    6Chuanbiao LiaoF41,234,005.000.001,234,005.000.001,234,005.00False8.03[IN]FalseTrueNaNNaNNaN0001213900-26-043748SC 13GPS International Group Ltd.2026-04-15T06:03:15-04:00
                                    7[Third Point LLC]DE0.001,601,000.000.001,601,000.001,601,000.00NaN76.60[OO]FalseFalseAFFalseFalse0000899140-26-000385SC 13DThird Point Private Capital Partners2026-04-14T21:54:52-04:00
                                    8[Daniel S. Loeb]X10.001,601,000.000.001,601,000.001,601,000.00NaN76.60[IN]FalseFalseAFFalseFalse0000899140-26-000385SC 13DThird Point Private Capital Partners2026-04-14T21:54:52-04:00
                                    9[Mudrick Capital Management, L.P.]DE0.00933,642,288.000.00933,642,288.00933,642,288.00NaN90.60[PN]FalseFalseOOFalseFalse0001104659-26-043404SC 13D/AGetaround, Inc2026-04-14T21:47:19-04:00
                                    # Summary statistics for ownership percentages
                                    print("Ownership percentage distribution:")
                                    print(owners_df["amountAsPercent"].describe())
                                    Ownership percentage distribution:
                                    count 513.00
                                    mean 12.50
                                    std 16.68
                                    min 0.00
                                    25% 5.00
                                    50% 8.10
                                    75% 13.50
                                    max 100.00
                                    Name: amountAsPercent, dtype: float64

                                    Visualizations

                                    The charts below illustrate key patterns in the dataset: how ownership percentages are distributed, which form types are most common, and which issuers attract the most filings.

                                    # Distribution of ownership percentages
                                    fig, ax = plt.subplots(figsize=(10, 5))

                                    pct_data = owners_df["amountAsPercent"].dropna()
                                    pct_data = pct_data[(pct_data > 0) & (pct_data <= 100)]

                                    ax.hist(pct_data, bins=40, edgecolor="white", color="#2563eb", alpha=0.85)
                                    ax.set_xlabel("Ownership Percentage (%)")
                                    ax.set_ylabel("Number of Owners")
                                    ax.set_title("Distribution of Beneficial Ownership Percentages")
                                    ax.axvline(x=5, color="red", linestyle="--", linewidth=1, label="5% filing threshold")
                                    ax.legend()
                                    plt.tight_layout()
                                    plt.show()
                                    # Filing counts by form type
                                    fig, ax = plt.subplots(figsize=(8, 4))

                                    form_type_counts_sorted = form_type_counts.sort_values()
                                    form_type_counts_sorted.plot(kind="barh", ax=ax, color="#2563eb", edgecolor="white")
                                    ax.set_xlabel("Number of Filings")
                                    ax.set_ylabel("Form Type")
                                    ax.set_title("Filing Counts by Form Type")
                                    plt.tight_layout()
                                    plt.show()
                                    # Top 10 issuers by filing count
                                    fig, ax = plt.subplots(figsize=(10, 5))

                                    top_issuers_sorted = top_issuers.sort_values()
                                    top_issuers_sorted.plot(kind="barh", ax=ax, color="#2563eb", edgecolor="white")
                                    ax.set_xlabel("Number of Filings")
                                    ax.set_ylabel("Issuer Name")
                                    ax.set_title("Top 10 Issuers by 13D/13G Filing Count")
                                    plt.tight_layout()
                                    plt.show()

                                    Voting Power vs. Dispositive Power

                                    A key feature of 13D/13G filings is the breakdown of voting power and dispositive (investment) power. Voting power is the right to vote or direct the voting of shares. Dispositive power is the right to sell, transfer, or otherwise dispose of shares. An owner can hold sole or shared variants of each.

                                    In most cases, voting and dispositive power are equal — the owner who can sell the shares can also vote them. However, divergences reveal situations where voting rights have been separated from economic ownership, such as voting agreements, proxy arrangements, or securities lending. The scatter plot below highlights these patterns.

                                    # Scatter plot: sole voting power vs. sole dispositive power
                                    fig, ax = plt.subplots(figsize=(8, 8))

                                    # Convert to numeric and filter out zero-value pairs
                                    scatter_df = owners_df[["soleVotingPower", "soleDispositivePower"]].copy()
                                    scatter_df["soleVotingPower"] = pd.to_numeric(scatter_df["soleVotingPower"], errors="coerce")
                                    scatter_df["soleDispositivePower"] = pd.to_numeric(scatter_df["soleDispositivePower"], errors="coerce")
                                    scatter_df = scatter_df.dropna()
                                    scatter_df = scatter_df[(scatter_df["soleVotingPower"] > 0) | (scatter_df["soleDispositivePower"] > 0)]

                                    ax.scatter(
                                        scatter_df["soleVotingPower"],
                                        scatter_df["soleDispositivePower"],
                                        alpha=0.4,
                                        s=20,
                                        color="#2563eb"
                                    )

                                    # Add diagonal reference line
                                    max_val = max(scatter_df["soleVotingPower"].max(), scatter_df["soleDispositivePower"].max())
                                    ax.plot([0, max_val], [0, max_val], color="red", linestyle="--", linewidth=1, label="Equal power line")

                                    ax.set_xlabel("Sole Voting Power (shares)")
                                    ax.set_ylabel("Sole Dispositive Power (shares)")
                                    ax.set_title("Sole Voting Power vs. Sole Dispositive Power")
                                    ax.legend()
                                    plt.tight_layout()
                                    plt.show()

                                    Exporting Results

                                    Save the filing-level and owner-level DataFrames to CSV files for further analysis in other tools or for building downstream models.

                                    df.to_csv("form_13d_13g_filings.csv", index=False)
                                    owners_df.to_csv("form_13d_13g_owners.csv", index=False)

                                    print(f"Exported {len(df)} filings to form_13d_13g_filings.csv")
                                    print(f"Exported {len(owners_df)} owner records to form_13d_13g_owners.csv")
                                    Exported 200 filings to form_13d_13g_filings.csv
                                    Exported 513 owner records to form_13d_13g_owners.csv

                                    Further Reading

                                    • SEC Investor.gov: Schedules 13D and 13G
                                    • SEC Release No. 33-11253 — 2023 Modernization of Beneficial Ownership Reporting
                                    • sec-api.io Form 13D/13G API Documentation
                                    • sec-api.io Python Examples
                                    • SEC C&DI: Regulation 13D-G Beneficial Ownership Reporting

                                    Footer

                                    Products

                                    • EDGAR Filing Search API
                                    • Full-Text Search API
                                    • Real-Time Filing Stream API
                                    • Filing Download & PDF Generator API
                                    • XBRL-to-JSON Converter
                                    • 10-K/10-Q/8-K Item Extractor
                                    • Investment Adviser & Form ADV API
                                    • Insider Trading Data - Form 3, 4, 5
                                    • Restricted Sales Notifications - Form 144
                                    • Institutional Holdings - Form 13F
                                    • Form N-PORT API - Investment Company Holdings
                                    • Form N-CEN API - Annual Reports by Investment Companies
                                    • Form N-PX API - Proxy Voting Records
                                    • Form 13D/13G API
                                    • Form S-1/424B4 - IPOs, Debt & Rights Offerings
                                    • Form C - Crowdfunding Offerings
                                    • Form D - Private Placements & Exempt Offerings
                                    • Regulation A Offering Statements API
                                    • Changes in Auditors & Accountants
                                    • Non-Reliance on Prior Financial Statements
                                    • Executive Compensation Data API
                                    • Audit Fees Data API
                                    • Directors & Board Members Data
                                    • Company Subsidiaries Database
                                    • Outstanding Shares & Public Float
                                    • SEC Enforcement Actions
                                    • Accounting & Auditing Enforcement Releases (AAERs)
                                    • SRO Filings
                                    • CIK, CUSIP, Ticker Mapping
                                    • Bulk Datasets

                                    General

                                    • Pricing
                                    • APIs
                                    • Datasets
                                    • Features
                                    • Supported Filings
                                    • EDGAR Filing Statistics

                                    Account

                                    • Sign Up - Start Free Trial
                                    • Log In
                                    • Forgot Password

                                    Developers

                                    • API Sandbox
                                    • Documentation
                                    • Resources & Tutorials
                                    • Python API SDK
                                    • Node.js API SDK
                                    • Cookbook

                                    Legal

                                    • Terms of Service
                                    • Privacy Policy

                                    Legal

                                    • Terms of Service
                                    • Privacy Policy

                                    SEC API

                                    © 2026 sec-api.io by Data2Value GmbH. All rights reserved.

                                    SEC® and EDGAR® are registered trademarks of the U.S. Securities and Exchange Commission (SEC).

                                    EDGAR is the Electronic Data Gathering, Analysis, and Retrieval system operated by the SEC.

                                    sec-api.io and Data2Value GmbH are independent of, and not affiliated with, sponsored by, or endorsed by the U.S. Securities and Exchange Commission.

                                    sec-api.io is classified under SIC code 7375 (Information Retrieval Services), providing on-demand access to structured data and online information services.