Home / Developers / Section Extraction API
API reference

Section Extraction API

Pull one item out of a 10-K, 10-Q or 8-K as clean text or simple HTML: risk factors, MD&A, cybersecurity, legal proceedings or any 8-K item. Pass the filing index URL or the main document URL and the item you want. Product overview →

Endpoints

/v1/extractor

GEThttps://secfeedapi.com/v1/extractor

One item of a 10-K (1, 1A, 7...), 10-Q (part1item2, part2item1a...) or 8-K (2-2, 5-2...) as text or html.

ParameterTypeDescriptionExample
urlrequiredstringFiling index page (ending in -index.htm) or the primary document URL. sec.gov/ix?doc= links are accepted.https://www.sec.gov/Archives/edgar/data/1045810/000104581026000021/0001045810-26-000021-index.htm
itemrequiredstringItem id. 10-K: 1, 1A, 1B, 1C, 2, 3, 7, 7A, 8, 9A and so on. 10-Q: part1item2, part2item1a. 8-K: the item number with a dash, 2-2 for 2.02, 5-2 for 5.02.1A
typestringtext for plain text with paragraph breaks, html for the same text wrapped in <p> tags. Default text.html

Request examples

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

Cybersecurity section of a 10-K

Item 1C as plain text, starting with its heading.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/extractor?url=https://www.sec.gov/Archives/edgar/data/1045810/000104581026000021/0001045810-26-000021-index.htm&item=1C"
import os, requests

r = requests.get(
    "https://secfeedapi.com/v1/extractor",
    params={'url': 'https://www.sec.gov/Archives/edgar/data/1045810/000104581026000021/0001045810-26-000021-index.htm', 'item': '1C'},
    headers={"Authorization": f"Bearer {os.environ['SECFEED_KEY']}"},
    timeout=60,
)
r.raise_for_status()
print(r.json())

MD&A from a 10-Q

Part I, Item 2 of a quarterly report.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/extractor?url=https://www.sec.gov/Archives/edgar/data/1045810/000104581026000075/0001045810-26-000075-index.htm&item=part1item2"
import os, requests

r = requests.get(
    "https://secfeedapi.com/v1/extractor",
    params={'url': 'https://www.sec.gov/Archives/edgar/data/1045810/000104581026000075/0001045810-26-000075-index.htm', 'item': 'part1item2'},
    headers={"Authorization": f"Bearer {os.environ['SECFEED_KEY']}"},
    timeout=60,
)
r.raise_for_status()
print(r.json())

MD&A from a 10-K as HTML

Each paragraph comes back in its own <p> tag, ready to render.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/extractor?url=https://www.sec.gov/Archives/edgar/data/1045810/000104581026000021/0001045810-26-000021-index.htm&item=7&type=html"
import os, requests

r = requests.get(
    "https://secfeedapi.com/v1/extractor",
    params={'url': 'https://www.sec.gov/Archives/edgar/data/1045810/000104581026000021/0001045810-26-000021-index.htm', 'item': '7', 'type': 'html'},
    headers={"Authorization": f"Bearer {os.environ['SECFEED_KEY']}"},
    timeout=60,
)
r.raise_for_status()
print(r.json())

Response fields

FieldTypeMeaning
(body)textThe section text. Content-Type is text/plain or text/html with charset utf-8.
headingtextThe body starts with the item heading as written in the filing, for example Item 1C. Cybersecurity.
paragraphstextParagraphs are separated by a blank line in text mode and wrapped in <p> in html mode.
errorstringOn failure the body is JSON with an error message, for example when the item does not exist in the filing.

Item ids by form

FormItem idSection
10-K1Business
10-K1ARisk Factors
10-K1CCybersecurity
10-K3Legal Proceedings
10-K7Management's Discussion and Analysis
10-K7AMarket Risk
10-K8Financial Statements
10-K9AControls and Procedures
10-Qpart1item1Financial Statements
10-Qpart1item2MD&A
10-Qpart1item4Controls and Procedures
10-Qpart2item1Legal Proceedings
10-Qpart2item1aRisk Factors
8-K2-2Item 2.02 Results of Operations
8-K5-2Item 5.02 Director and Officer Changes
8-K7-1Item 7.01 Regulation FD
8-K8-1Item 8.01 Other Events

How to

How do I get risk factors from a 10-K?

Use item=1A with the filing index URL.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/extractor?url=https://www.sec.gov/Archives/edgar/data/789019/000119312526323660/0001193125-26-323660-index.htm&item=1A"
How do I get the business description?

Use item=1.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/extractor?url=https://www.sec.gov/Archives/edgar/data/1045810/000104581026000021/0001045810-26-000021-index.htm&item=1"
How do I get 10-Q risk factor updates?

Use item=part2item1a. Many companies only point back to the 10-K here, so the section can be short.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/extractor?url=https://www.sec.gov/Archives/edgar/data/1045810/000104581026000075/0001045810-26-000075-index.htm&item=part2item1a"
How do I extract an 8-K item?

Write the item number with a dash and no leading zero: 2.02 becomes 2-2.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/extractor?url=https://www.sec.gov/Archives/edgar/data/32604/000003260426000047/0000032604-26-000047-index.htm&item=2-2"
How do I get HTML instead of text?

Add type=html.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/extractor?url=https://www.sec.gov/Archives/edgar/data/1045810/000104581026000021/0001045810-26-000021-index.htm&item=1C&type=html"
Can I pass the main document URL instead of the index page?

Yes, either works.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/extractor?url=https://www.sec.gov/Archives/edgar/data/1045810/000104581026000021/nvda-20260125.htm&item=1C"
How do I find the filing URL to pass?

Use linkToFilingDetails from the Filing Query API.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/filings?query=ticker:MSFT%20AND%20formType:%2210-K%22&size=1"
How do I compare one section across years?

Query the company's 10-K filings, then call the extractor once per filing with the same item.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/filings?query=ticker:NVDA%20AND%20formType:%2210-K%22&size=5"
What happens if the item is not in the filing?

You get a 400 with item ... not found in this 10-K. Smaller reporting companies often omit items such as 7A; this NVIDIA 10-K includes it.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/extractor?url=https://www.sec.gov/Archives/edgar/data/1045810/000104581026000021/0001045810-26-000021-index.htm&item=7A"

Errors

See also the error codes every endpoint shares.

Try it with your own key

500 free calls a month.

Get free API key →