Endpoints
/v1/filings
https://secfeedapi.com/v1/filingsSearch every EDGAR filing since 1993 with a Lucene-style query over ticker, cik, formType, filedAt, companyName, accessionNo, sic, state, items (8-K) and periodOfReport.
| Parameter | Type | Description | Example |
|---|---|---|---|
queryrequired | string | Lucene-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" |
from | integer | Offset for paging. Default 0. | 50 |
size | integer | Results per page, 1 to 200. Default 50. | 50 |
sort | string | asc for oldest first, desc for newest first. Sorted by filing date, then accession number. Default desc. | asc |
- POST accepts the same parameters as a JSON body, which avoids URL encoding of quotes and brackets.
- Value forms: bare (formType:4), quoted (formType:"10-K"), lists in parentheses separated by commas (ticker:(AAPL, MSFT)), ranges in brackets (filedAt:[2026-01-01 TO 2026-03-31], * for an open end) and a trailing * as a prefix wildcard (formType:10-K*).
- Put OR between whole terms, not inside parentheses: formType:("10-K", "10-Q") or (formType:"10-K" OR formType:"10-Q").
- ticker matches every CIK that has ever used that ticker in the SEC ticker file.
- total.value is exact up to 10000; above that it reads 10000 with relation gte.
- items and periodOfReport only match 8-K filings that have been classified (mid 2024 onward while the backfill runs).
- companyName is a substring match over every filing and can take close to a minute; prefer ticker or cik when you know them.
/v1/filings/csv
https://secfeedapi.com/v1/filings/csvFiling search results as CSV (up to 200 rows).
| Parameter | Type | Description | Example |
|---|---|---|---|
queryrequired | string | Same query syntax as /v1/filings. | ticker:NVDA |
size | integer | Rows, at most 200. Default 200. | 100 |
- Returns text/csv with the columns accessionNo, cik, ticker, companyName, formType, filedAt, linkToFilingDetails, linkToTxt.
- Newest first. There is no from parameter; narrow the query with a filedAt range to export more than 200 rows in pieces.
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
| Field | Type | Meaning |
|---|---|---|
total | object | How many filings match the query. |
total.value | integer | Match count, capped at 10000. |
total.relation | string | eq when value is exact, gte when more than 10000 filings match. |
filings[] | array | One entry per filing, newest first unless sort=asc. |
filings[].accessionNo | string | EDGAR accession number, the unique id of the filing. |
filings[].cik | string | Filer CIK without leading zeros. |
filings[].ticker | string | Current ticker for the CIK, empty when the filer has none. |
filings[].companyName | string | Filer name as it appears in the EDGAR index for that filing. |
filings[].formType | string | Form type as filed, for example 10-K, 8-K/A or 4. |
filings[].filedAt | string | Filing date, YYYY-MM-DD. |
filings[].linkToTxt | string | Full submission text file on sec.gov. |
filings[].linkToFilingDetails | string | Filing index page on sec.gov listing every document. |
Query fields
| Field | Matches |
|---|---|
| ticker | Every CIK that has used the ticker |
| cik | Filer CIK, exact |
| formType | Form type as filed, exact or prefix with * |
| filedAt | Filing date, exact or [from TO to] range |
| companyName | Substring of the filer name, slow |
| accessionNo | One filing by accession number |
| sic | SIC industry code of the filer |
| state | State of the filer address |
| items | 8-K item numbers, for example "5.02" |
| periodOfReport | 8-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
- 400 for an unknown field name, with the list of valid fields in the message.
- 400 when the query cannot be parsed, for example a stray character.
- An unbalanced opening parenthesis currently returns 502 instead of 400; close every parenthesis.
See also the error codes every endpoint shares.
Try it with your own key
500 free calls a month.