Home / Developers / Bulk Exports
API reference

Bulk Exports

Download a whole month of a dataset in one file instead of paging through the search APIs. Each export is gzipped JSON Lines: one JSON object per line, built from the same tables the APIs read, with blocked filers removed. Product overview →

Endpoints

/v1/bulk

GEThttps://secfeedapi.com/v1/bulk

Catalog of bulk datasets and months.

/v1/bulk/download

GEThttps://secfeedapi.com/v1/bulk/download

A dataset month as gzipped JSON Lines.

ParameterTypeDescriptionExample
datasetrequiredstringDataset name from /v1/bulk: filings, insider-transactions, 13f-holdings, 8-k-events, form-144, form-13d-13g, form-13f, form-d, form-c, reg-a, n-port, n-cen, n-px, x-17a-5.form-d
monthrequiredstringMonth in YYYY-MM form. Records are selected by their filing date within that month.2026-09
formTypestringOnly for dataset=filings: keep one exact form type.S-1

Request examples

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

List datasets and available months

Pick a dataset name and a month from this list, then call /v1/bulk/download.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/bulk"
import os, requests

r = requests.get(
    "https://secfeedapi.com/v1/bulk",
    headers={"Authorization": f"Bearer {os.environ['SECFEED_KEY']}"},
    timeout=60,
)
r.raise_for_status()
print(r.json())
{
  "datasets": [
    "13f-holdings",
    "8-k-events"
  ],
  "months": [
    "2026-10",
    "2026-09"
  ],
  "download": "/v1/bulk/download?dataset=<dataset>&month=<YYYY-MM>[&formType=10-K]"
}

Every S-1 filed in September 2026

Returns a .jsonl.gz file. Each line is one filing index row: accession, cik, company, form, filed and path.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/bulk/download?dataset=filings&month=2026-09&formType=S-1"
import os, requests

r = requests.get(
    "https://secfeedapi.com/v1/bulk/download",
    params={'dataset': 'filings', 'month': '2026-09', 'formType': 'S-1'},
    headers={"Authorization": f"Bearer {os.environ['SECFEED_KEY']}"},
    timeout=60,
)
r.raise_for_status()
print(r.json())

A month of Form D private placements

About 5,700 Form D filings for September 2026, each line with the full parsed XML under data.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/bulk/download?dataset=form-d&month=2026-09"
import os, requests

r = requests.get(
    "https://secfeedapi.com/v1/bulk/download",
    params={'dataset': 'form-d', 'month': '2026-09'},
    headers={"Authorization": f"Bearer {os.environ['SECFEED_KEY']}"},
    timeout=60,
)
r.raise_for_status()
print(r.json())

Response fields

FieldTypeMeaning
datasetsarray of strings/v1/bulk: dataset names accepted by /v1/bulk/download.
monthsarray of strings/v1/bulk: every YYYY-MM with filings in the index, newest first.
downloadstring/v1/bulk: URL pattern for downloads.
(filings line).accessionstringAccession number.
(filings line).cikintegerFiler CIK.
(filings line).companystringFiler name as listed in the EDGAR index.
(filings line).formstringForm type.
(filings line).filedstringFiling date, YYYY-MM-DD.
(filings line).pathstringPath of the full submission text file under https://www.sec.gov/Archives/.
(XML form line).accession, form, filed, cik, companymixedIdentity of the filing, same meaning as above.
(XML form line).dataobjectThe full parsed XML of the filing, the same object the family's search endpoint returns under data.

Datasets

datasetWhat each line is
filingsOne EDGAR index row (any form type; filter with formType)
insider-transactionsOne Form 3, 4 or 5 transaction or holding row joined with its filing
13f-holdingsOne 13F information table row
8-k-eventsOne 8-K with its item list
form-144, form-13d-13g, form-13f, form-d, form-c, reg-a, n-port, n-cen, n-px, x-17a-5One parsed XML filing of that family

How to

Which months can I download?

Call /v1/bulk. The months array runs from the latest month back to 1993.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/bulk"
How do I get every 10-K filed in a month?

Use dataset=filings with formType=10-K. formType is an exact match, so request 10-K/A separately.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/bulk/download?dataset=filings&month=2026-09&formType=10-K"
How do I read the file in Python?

Open it with gzip in text mode and json.loads each line. Stream it line by line rather than loading it all for large months.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/bulk/download?dataset=filings&month=2026-09&formType=S-1"
How do I download a month of insider transactions for a backtest?

Use dataset=insider-transactions. Each line is one transaction row with the filing's form, date, issuer and owners.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/bulk/download?dataset=insider-transactions&month=2026-09"
How do I get all Form D filings for a month with every original field?

Use dataset=form-d. The data object on each line holds the complete parsed XML.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/bulk/download?dataset=form-d&month=2026-09"
How do I download 8-K item data in bulk?

Use dataset=8-k-events. Each line lists the 8-K's items; item history currently starts in mid 2024 while the backfill runs.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/bulk/download?dataset=8-k-events&month=2026-09"
Can I filter a bulk file by company?

No. Bulk files are whole months. Filter while you read the file, or use the search APIs for a single company.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/bulk/download?dataset=form-144&month=2026-09"
Does formType work for datasets other than filings?

No. It is applied only to dataset=filings and ignored elsewhere.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/bulk/download?dataset=filings&month=2026-08&formType=8-K"
Why is the first download of a month slower?

Archives are built from the database on the first request and cached for later requests.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/bulk/download?dataset=filings&month=2026-07&formType=S-1"

Errors

See also the error codes every endpoint shares.

Try it with your own key

500 free calls a month.

Get free API key →