Lucene query syntax for SEC filing search
Every field and operator the SecFeed filing search supports: ticker, cik, formType, filedAt ranges, sic, lists, AND, OR and NOT, with real results.
/v1/filings takes a query string in Lucene style syntax. This page lists the fields and operators, then runs five real queries against the live index.
Fields
| Field | Example | Matches |
|---|---|---|
ticker | ticker:NVDA | Filings by the company with that ticker |
cik | cik:789019 | Filings by a CIK (no leading zeros needed) |
formType | formType:"10-K" | Exact form type; quote values with dashes or spaces |
filedAt | filedAt:[2026-01-01 TO 2026-03-31] | Filing date range, inclusive; * leaves a side open |
companyName | companyName:Tesla | Substring of the filer name |
accessionNo | accessionNo:"0000320193-25-000079" | One filing |
sic | sic:3674 | Industry code of the filer |
state | state:DE | Filer state |
items | items:"1.05" | 8-K item numbers (for item feeds with text, /v1/form-8k is faster) |
periodOfReport | periodOfReport:[2026-06-30 TO 2026-06-30] | 8-K period of report |
Operators
AND,ORandNOTcombine terms; use parentheses to group, for example(formType:"10-K" OR formType:"10-Q") AND filedAt:[2026-10-01 TO 2026-10-09].- Lists use commas inside parentheses:
formType:("10-K", "10-Q")orticker:(AAPL, MSFT). - Ranges use
[from TO to]. - A trailing
is a prefix wildcard:formType:10-Kalso matches10-K/Aand10-KT.
Five real queries
import os
import requests
BASE = "https://secfeedapi.com"
HEADERS = {"Authorization": f"Bearer {os.environ['SECFEED_KEY']}"}
def search(query, size=3):
r = requests.get(f"{BASE}/v1/filings", params={"query": query, "size": size}, headers=HEADERS, timeout=120)
r.raise_for_status()
return r.json()
queries = [
'cik:789019',
'formType:"S-1" AND filedAt:[2026-09-01 TO 2026-09-30]',
'formType:("10-K", "10-Q") AND filedAt:[2026-10-01 TO 2026-10-09]',
'sic:3674 AND filedAt:[2026-10-08 TO 2026-10-09]',
'formType:"8-K" AND filedAt:[2026-10-09 TO 2026-10-09] AND NOT ticker:AAPL',
]
for q in queries:
res = search(q)
print(q, "->", res["total"]["value"], "filings")
for f in res["filings"]:
print(" ", f["filedAt"], f["formType"], f["ticker"] or "-", f["companyName"])
Output:
cik:789019 -> 4525 filings
2026-09-17 4 MSFT MICROSOFT CORP
2026-09-17 4 MSFT MICROSOFT CORP
2026-09-17 4 MSFT MICROSOFT CORP
formType:"S-1" AND filedAt:[2026-09-01 TO 2026-09-30] -> 72 filings
2026-09-30 S-1 BHAI BHAV Acquisition Corp II
2026-09-30 S-1 GENK GEN Restaurant Group, Inc.
2026-09-29 S-1 MNBS MNBS Acquisition Corp.
formType:("10-K", "10-Q") AND filedAt:[2026-10-01 TO 2026-10-09] -> 68 filings
2026-10-09 10-Q GSMT Global-Smart.Tech Inc.
2026-10-09 10-Q QSEA Quartzsea Acquisition Corp
2026-10-09 10-K - alpha-En Corp
sic:3674 AND filedAt:[2026-10-08 TO 2026-10-09] -> 65 filings
2026-10-09 4 SMTC SEMTECH CORP
2026-10-09 4 MRVL Marvell Technology, Inc.
2026-10-09 4 GFS GLOBALFOUNDRIES Inc.
formType:"8-K" AND filedAt:[2026-10-09 TO 2026-10-09] AND NOT ticker:AAPL -> 156 filings
2026-10-09 8-K GLIBA Liberty Capital Corp/NV
2026-10-09 8-K - Sculptor Diversified Real Estate Income Trust, Inc.
2026-10-09 8-K - METROSPACES, INC.
Tips
- Add a
filedAtrange whenever you can. A date range narrows the search the most and keeps responses fast. - Amendments have their own form types (
10-K/A,8-K/A). Add them to a list or use a prefix wildcard when you want both. - Ownership filings are filed under both the company and the insider. A
tickerorcikquery returns them for the company. - Want the results in a spreadsheet? The same query works on
/v1/filings/csv, see Export filing search results to CSV.
Next steps
- EDGAR Filing Query API overview
- Dataset pages for S-1, 8-K and 10-Q filings
- Full parameter list in the docs