Home / Developers / 13D/13G Stakes API
API reference

13D/13G Stakes API

Search Schedules 13D and 13G, the filings that disclose ownership of more than 5% of a class of a company's stock. Filings in the structured XML format (December 2024 onward) are parsed: every original field, plus flat fields such as issuer, CUSIPs, each reporting person's voting and dispositive power, percent of class and, for 13D, the purpose of the transaction. Product overview →

Endpoints

/v1/form-13d-13g

GEThttps://secfeedapi.com/v1/form-13d-13g

Schedules 13D and 13G: issuer, CUSIPs, each reporting person's voting and dispositive power and percent of class, purpose of transaction.

ParameterTypeDescriptionExample
formTypestringExact form type: SCHEDULE 13D, SCHEDULE 13D/A, SCHEDULE 13G or SCHEDULE 13G/A.SCHEDULE 13D
cikintegerCIK of the filing's EDGAR filer record. A schedule can be listed under the reporting person or the issuer, so for issuer lookups prefer the data or flat filters below.1946703
startDatestringEarliest filing date, YYYY-MM-DD.2026-10-01
endDatestringLatest filing date, YYYY-MM-DD.2026-10-31
flat.<field>string or numberExact match on a flat field, for example flat.issuerName=WEBUY GLOBAL LTD.flat.issuerName=WEBUY GLOBAL LTD
flat.<field>__gte / __ltenumberRange filter on a numeric flat field, for example flat.maxPercentOfClass__gte=10.flat.maxPercentOfClass__gte=10
data.<path>stringExact match on any original field by its dotted path under data, for example data.primary_doc.formData.coverPageHeader.issuerInfo.issuerCik=0000902791.data.primary_doc.headerData.submissionType=SCHEDULE 13G/A
fieldsstringSet to flat to drop the full data object and return only the flat fields.flat
sizeintegerRows per page, maximum 100. Default 20.2
fromintegerOffset for paging. Default 0.20

Request examples

Every response below is real output from the API, trimmed to the first records.

New Schedule 13D filings where someone holds 10% or more

maxPercentOfClass is the largest percent of class among the reporting persons. purposeOfTransaction carries the Item 4 text.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/form-13d-13g?formType=SCHEDULE%252013D&flat.maxPercentOfClass__gte=10&fields=flat&size=2"
import os, requests

r = requests.get(
    "https://secfeedapi.com/v1/form-13d-13g",
    params={'formType': 'SCHEDULE 13D', 'flat.maxPercentOfClass__gte': '10', 'fields': 'flat', 'size': '2'},
    headers={"Authorization": f"Bearer {os.environ['SECFEED_KEY']}"},
    timeout=60,
)
r.raise_for_status()
print(r.json())
{
  "total": 0,
  "filings": []
}

Every 13G or 13G/A about one issuer

Filters on the issuer CIK inside the original XML, zero padded to 10 digits as the schedule reports it.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/form-13d-13g?data.primary_doc.formData.coverPageHeader.issuerInfo.issuerCik=0000902791&fields=flat&size=2"
import os, requests

r = requests.get(
    "https://secfeedapi.com/v1/form-13d-13g",
    params={'data.primary_doc.formData.coverPageHeader.issuerInfo.issuerCik': '0000902791', 'fields': 'flat', 'size': '2'},
    headers={"Authorization": f"Bearer {os.environ['SECFEED_KEY']}"},
    timeout=60,
)
r.raise_for_status()
print(r.json())
{
  "total": 5,
  "filings": [
    {
      "accessionNo": "0000906304-26-000168",
      "formType": "SCHEDULE 13G/A",
      "filedAt": "2026-10-13",
      "cik": 906304,
      "companyName": "ROYCE & ASSOCIATES LP",
      "flat": {
        "submissionType": "SCHEDULE 13G/A",
        "issuerCik": "",
        "issuerName": "Barrett Business Services, Inc.",
        "cusips": [
          "068463108"
        ],
        "securityClass": "Common Stock",
        "dateOfEvent": "09/30/2026",
        "reportingPersons": [],
        "maxPercentOfClass": 0,
        "purposeOfTransaction": null
      }
    },
    {
      "accessionNo": "0001214659-26-012453",
      "formType": "SCHEDULE 13G/A",
      "filedAt": "2026-10-02",
      "cik": 902791,
      "companyName": "BARRETT BUSINESS SERVICES INC",
      "flat": {
        "submissionType": "SCHEDULE 13G/A",
        "issuerCik": "",
        "issuerName": "Barrett Business Services, Inc.",
        "cusips": [
          "068463108"
        ],
        "securityClass": "Common Stock",
        "dateOfEvent": "09/30/2026",
        "reportingPersons": [],
        "maxPercentOfClass": 0,
        "purposeOfTransaction": null
      }
    }
  ]
}

Schedule 13G filings this month

Passive investors file 13G. Combine formType with a date range to follow new positions.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/form-13d-13g?formType=SCHEDULE%252013G&startDate=2026-10-01&fields=flat&size=2"
import os, requests

r = requests.get(
    "https://secfeedapi.com/v1/form-13d-13g",
    params={'formType': 'SCHEDULE 13G', 'startDate': '2026-10-01', 'fields': 'flat', 'size': '2'},
    headers={"Authorization": f"Bearer {os.environ['SECFEED_KEY']}"},
    timeout=60,
)
r.raise_for_status()
print(r.json())
{
  "total": 0,
  "filings": []
}

Response fields

FieldTypeMeaning
totalintegerNumber of matching filings.
filings[].accessionNostringAccession number of the schedule.
filings[].formTypestringSCHEDULE 13D, SCHEDULE 13D/A, SCHEDULE 13G or SCHEDULE 13G/A.
filings[].filedAtstringFiling date, YYYY-MM-DD.
filings[].cikintegerCIK of the EDGAR filer record this row came from (often the reporting person).
filings[].companyNamestringName on that filer record.
filings[].flat.submissionTypestringForm type stated inside the XML.
filings[].flat.issuerCikstringIssuer CIK without leading zeros (13D; empty for 13G for now).
filings[].flat.issuerNamestringCompany whose shares are reported.
filings[].flat.cusips[]array of stringsCUSIPs of the class reported.
filings[].flat.securityClassstringTitle of the class of securities.
filings[].flat.dateOfEventstringDate of the event that required the filing, MM/DD/YYYY as filed.
filings[].flat.reportingPersons[].cikstring or nullReporting person's CIK.
filings[].flat.reportingPersons[].namestringReporting person's name.
filings[].flat.reportingPersons[].citizenshipstringCitizenship or place of organization, as an EDGAR code.
filings[].flat.reportingPersons[].type[]array of stringsType of reporting person codes, for example IN (individual), IA (investment adviser), CO (corporation).
filings[].flat.reportingPersons[].fundSource[]array of stringsSource of funds codes, for example SC (subject company), WC (working capital), OO (other).
filings[].flat.reportingPersons[].soleVoting / sharedVotingnumberShares over which the person has sole or shared voting power.
filings[].flat.reportingPersons[].soleDispositive / sharedDispositivenumberShares over which the person has sole or shared power to dispose.
filings[].flat.reportingPersons[].aggregateOwnednumberAggregate shares beneficially owned.
filings[].flat.reportingPersons[].percentOfClassnumberPercent of the class owned, as filed.
filings[].flat.maxPercentOfClassnumberLargest percentOfClass among the reporting persons (0 when none are parsed).
filings[].flat.purposeOfTransactionstring or nullItem 4 text of a 13D, up to 4,000 characters.
filings[].data.primary_docobjectEvery field of the original XML: headerData (submission type, filer credentials, previous accession) and formData (coverPageHeader with issuerInfo, reporting person blocks, items, exhibitInfo, signatureInformation). Omitted when fields=flat.

Common type of reporting person codes

CodeMeaning
INIndividual
IAInvestment adviser
COCorporation
PNPartnership
OOOther
BDBroker-dealer
HCParent holding company
FINon-U.S. institution

How to

How do I find new activist stakes?

Filter formType=SCHEDULE 13D with a startDate and read purposeOfTransaction for the Item 4 plans.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/form-13d-13g?formType=SCHEDULE%252013D&startDate=2026-10-01&fields=flat"
How do I find positions above a percentage threshold?

Use flat.maxPercentOfClass__gte. It works for Schedule 13D filings.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/form-13d-13g?formType=SCHEDULE%252013D&flat.maxPercentOfClass__gte=20&fields=flat"
How do I list every schedule about one company?

For 13D, match the issuer name exactly with flat.issuerName. For 13G, filter on the issuer CIK inside data, zero padded to 10 digits.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/form-13d-13g?flat.issuerName=WEBUY%2520GLOBAL%2520LTD&fields=flat"
How do I get only amendments?

Set formType to SCHEDULE 13D/A or SCHEDULE 13G/A.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/form-13d-13g?formType=SCHEDULE%252013D/A&fields=flat&size=10"
How do I keep responses small?

Add fields=flat to drop the full XML object.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/form-13d-13g?formType=SCHEDULE%252013G&fields=flat&size=10"
How do I page through many results?

Use size (up to 100) and from as an offset. total tells you how many rows match.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/form-13d-13g?formType=SCHEDULE%252013G&fields=flat&size=100&from=100"
How do I read voting and dispositive power for each holder?

Each entry in flat.reportingPersons has soleVoting, sharedVoting, soleDispositive, sharedDispositive and aggregateOwned.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/form-13d-13g?formType=SCHEDULE%252013D&fields=flat&size=5"
How do I query any original XML field?

Use data.<dotted path>=value. The match is exact, on the value as filed.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/form-13d-13g?data.primary_doc.headerData.submissionType=SCHEDULE%252013G/A&fields=flat"
Where are 13D and 13G filings from before the XML format?

They are in the filing index (formType SC 13D, SC 13G) and full-text search, but not parsed into this endpoint.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/filings?query=formType:%2522SC%252013D%2522&size=5"

Errors

See also the error codes every endpoint shares.

Try it with your own key

500 free calls a month.

Get free API key →