Home / Developers / Filing Search API
API reference

Filing Search API

Search the full EDGAR filing index, every form from every filer since 1993, with one Lucene-style query string. Use it to list filings for a company, a form type, a date range, an industry or a state, then follow the links to the documents. Product overview →

Endpoints

/v1/filings

GET or POSThttps://secfeedapi.com/v1/filings

Search every EDGAR filing since 1993 with a Lucene-style query over ticker, cik, formType, filedAt, companyName, accessionNo, sic, state, items (8-K) and periodOfReport.

ParameterTypeDescriptionExample
queryrequiredstringLucene-style query over ticker, cik, formType, filedAt, companyName, accessionNo, sic, state, items and periodOfReport. Combine terms with AND, OR, NOT and parentheses; adjacent terms default to AND. Empty query matches everything.ticker:AAPL AND formType:"10-K"
fromintegerOffset for paging. Default 0.50
sizeintegerResults per page, 1 to 200. Default 50.50
sortstringasc for oldest first, desc for newest first. Sorted by filing date, then accession number. Default desc.asc

/v1/filings/csv

GEThttps://secfeedapi.com/v1/filings/csv

Filing search results as CSV (up to 200 rows).

ParameterTypeDescriptionExample
queryrequiredstringSame query syntax as /v1/filings.ticker:NVDA
sizeintegerRows, at most 200. Default 200.100

Request examples

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

Every 10-K a company has filed

Combines a form filter with a ticker. total.value tells you how many 10-K filings exist; page through them with from.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/filings?query=formType:%2210-K%22%20AND%20ticker:AAPL&size=2"
import os, requests

r = requests.get(
    "https://secfeedapi.com/v1/filings",
    params={'query': 'formType:"10-K" AND ticker:AAPL', 'size': '2'},
    headers={"Authorization": f"Bearer {os.environ['SECFEED_KEY']}"},
    timeout=60,
)
r.raise_for_status()
print(r.json())
{
  "total": {
    "value": 30,
    "relation": "eq"
  },
  "filings": [
    {
      "accessionNo": "0000320193-25-000079",
      "cik": "320193",
      "ticker": "AAPL",
      "companyName": "Apple Inc.",
      "formType": "10-K",
      "filedAt": "2025-10-31",
      "linkToTxt": "https://www.sec.gov/Archives/edgar/data/320193/0000320193-25-000079.txt",
      "linkToFilingDetails": "https://www.sec.gov/Archives/edgar/data/320193/000032019325000079/0000320193-25-000079-index.htm"
    },
    {
      "accessionNo": "0000320193-24-000123",
      "cik": "320193",
      "ticker": "AAPL",
      "companyName": "Apple Inc.",
      "formType": "10-K",
      "filedAt": "2024-11-01",
      "linkToTxt": "https://www.sec.gov/Archives/edgar/data/320193/0000320193-24-000123.txt",
      "linkToFilingDetails": "https://www.sec.gov/Archives/edgar/data/320193/000032019324000123/0000320193-24-000123-index.htm"
    }
  ]
}

New S-1 registrations in a date range

A filedAt range plus a form type is the fastest way to watch new filings of one kind. The ticker field is empty for companies not yet listed.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/filings?query=formType:%22S-1%22%20AND%20filedAt:[2026-10-01%20TO%202026-10-09]&size=2"
import os, requests

r = requests.get(
    "https://secfeedapi.com/v1/filings",
    params={'query': 'formType:"S-1" AND filedAt:[2026-10-01 TO 2026-10-09]', 'size': '2'},
    headers={"Authorization": f"Bearer {os.environ['SECFEED_KEY']}"},
    timeout=60,
)
r.raise_for_status()
print(r.json())
{
  "total": {
    "value": 30,
    "relation": "eq"
  },
  "filings": [
    {
      "accessionNo": "0001628280-26-065557",
      "cik": "2044950",
      "ticker": "",
      "companyName": "Bambusa Therapeutics, Inc.",
      "formType": "S-1",
      "filedAt": "2026-10-09",
      "linkToTxt": "https://www.sec.gov/Archives/edgar/data/2044950/0001628280-26-065557.txt",
      "linkToFilingDetails": "https://www.sec.gov/Archives/edgar/data/2044950/000162828026065557/0001628280-26-065557-index.htm"
    },
    {
      "accessionNo": "0001520138-26-000418",
      "cik": "1840102",
      "ticker": "SPTY",
      "companyName": "SPECIFICITY, INC.",
      "formType": "S-1",
      "filedAt": "2026-10-09",
      "linkToTxt": "https://www.sec.gov/Archives/edgar/data/1840102/0001520138-26-000418.txt",
      "linkToFilingDetails": "https://www.sec.gov/Archives/edgar/data/1840102/000152013826000418/0001520138-26-000418-index.htm"
    }
  ]
}

8-K filings that report a cybersecurity incident

items filters 8-K filings by the item numbers they report. Follow linkToFilingDetails to read the filing.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/filings?query=formType:%228-K%22%20AND%20items:%221.05%22&size=2"
import os, requests

r = requests.get(
    "https://secfeedapi.com/v1/filings",
    params={'query': 'formType:"8-K" AND items:"1.05"', 'size': '2'},
    headers={"Authorization": f"Bearer {os.environ['SECFEED_KEY']}"},
    timeout=60,
)
r.raise_for_status()
print(r.json())
{
  "total": {
    "value": 59,
    "relation": "eq"
  },
  "filings": [
    {
      "accessionNo": "0001104659-26-109813",
      "cik": "1083446",
      "ticker": "ASTH",
      "companyName": "Astrana Health, Inc.",
      "formType": "8-K",
      "filedAt": "2026-09-23",
      "linkToTxt": "https://www.sec.gov/Archives/edgar/data/1083446/0001104659-26-109813.txt",
      "linkToFilingDetails": "https://www.sec.gov/Archives/edgar/data/1083446/000110465926109813/0001104659-26-109813-index.htm"
    },
    {
      "accessionNo": "0000885725-26-000059",
      "cik": "885725",
      "ticker": "BSX",
      "companyName": "BOSTON SCIENTIFIC CORP",
      "formType": "8-K",
      "filedAt": "2026-09-08",
      "linkToTxt": "https://www.sec.gov/Archives/edgar/data/885725/0000885725-26-000059.txt",
      "linkToFilingDetails": "https://www.sec.gov/Archives/edgar/data/885725/000088572526000059/0000885725-26-000059-index.htm"
    }
  ]
}

Response fields

FieldTypeMeaning
totalobjectHow many filings match the query.
total.valueintegerMatch count, capped at 10000.
total.relationstringeq when value is exact, gte when more than 10000 filings match.
filings[]arrayOne entry per filing, newest first unless sort=asc.
filings[].accessionNostringEDGAR accession number, the unique id of the filing.
filings[].cikstringFiler CIK without leading zeros.
filings[].tickerstringCurrent ticker for the CIK, empty when the filer has none.
filings[].companyNamestringFiler name as it appears in the EDGAR index for that filing.
filings[].formTypestringForm type as filed, for example 10-K, 8-K/A or 4.
filings[].filedAtstringFiling date, YYYY-MM-DD.
filings[].linkToTxtstringFull submission text file on sec.gov.
filings[].linkToFilingDetailsstringFiling index page on sec.gov listing every document.

Query fields

FieldMatches
tickerEvery CIK that has used the ticker
cikFiler CIK, exact
formTypeForm type as filed, exact or prefix with *
filedAtFiling date, exact or [from TO to] range
companyNameSubstring of the filer name, slow
accessionNoOne filing by accession number
sicSIC industry code of the filer
stateState of the filer address
items8-K item numbers, for example "5.02"
periodOfReport8-K period of report, YYYY-MM-DD

How to

How do I get a company's 10-K and 10-Q filings in one call?

Use a comma list inside parentheses for the form types and add the ticker.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/filings?query=formType:%28%2210-K%22,%20%2210-Q%22%29%20AND%20ticker:MSFT&size=2"
How do I search several companies at once?

Put the tickers in a comma list. sort=asc returns the oldest filings first.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/filings?query=ticker:%28AAPL,%20MSFT%29%20AND%20formType:%228-K%22&size=2&sort=asc"
How do I exclude a form type?

Prefix the term with NOT. This drops insider Form 4 filings from a company's history.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/filings?query=NOT%20formType:4%20AND%20ticker:NVDA&size=2"
How do I find filings from one industry?

Filter on the filer's SIC code. 3674 is semiconductors.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/filings?query=sic:3674%20AND%20formType:%2210-K%22%20AND%20filedAt:[2026-01-01%20TO%202026-03-31]&size=2"
How do I limit results to companies based in one state?

Use state with the two-letter code of the filer's address.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/filings?query=state:DE%20AND%20formType:%22S-1%22%20AND%20filedAt:[2026-09-01%20TO%202026-09-30]&size=2"
How do I include amendments and variants of a form?

Add a trailing * to match every form type that starts with the prefix, such as 10-K, 10-K/A and 10-K405.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/filings?query=formType:10-K%2A&size=2"
How do I look up one filing when I already have its accession number?

Query accessionNo directly; the response has the filer, form and links.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/filings?query=accessionNo:0000320193-26-000020"
How do I get results as a spreadsheet?

Call the CSV variant with the same query. It returns up to 200 rows as text/csv.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/filings/csv?query=ticker:NVDA&size=3"
How do I page through more than 200 results?

Keep the query and size, and raise from by size on each call until you reach total.value.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/filings?query=formType:%2210-K%22%20AND%20ticker:AAPL&size=2&from=2"
Why does total say 10000 with relation gte?

Counts stop at 10000 to keep broad queries fast. Narrow the query, for example with a filedAt range, to get an exact count.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/filings?query=formType:10-K%2A&size=2"

Errors

See also the error codes every endpoint shares.

Try it with your own key

500 free calls a month.

Get free API key →