SEC filings are packed with details about public companies, but finding specific pieces of information can sometimes feel like searching for a needle in a haystack. The FinFeedAPI's /v1/extractor endpoint offers a way to get structured, itemized content directly from these filings, making your analysis more efficient.
This tutorial will guide you through using this endpoint, particularly useful for forms like 8-K (which report significant corporate events) and 10-K (annual reports) where information is organized into specific items.
What You'll Learn:
- How to make requests to the
/v1/extractorendpoint using Python. - The structure of the JSON data returned by the API.
- How to access the content of specific items within a filing (e.g., Item 5.02 from an 8-K or Item 1A from a 10-K).
Prerequisites:
- Python 3.x installed.
- The
requestslibrary is generally useful, but this tutorial will use theapi-bricks-sec-api-restPython library provided for the FinFeedAPI. - Your FinFeedAPI key.
Let's begin.
Step 1: Setup Your Python Environment
First, ensure you have the api-bricks-sec-api-rest library installed. If not, you can install it using pip:
Now, let's import the necessary libraries and configure the API client with your key.
Explanation: This section handles the initial setup. We install the FinFeedAPI client library and then import it along with json for easier viewing of API responses and pandas for potentially structuring lists of items. The api_client is initialized with your personal API key.
Step 2: Obtain an Accession Number
The /v1/extractor endpoint requires an accession_number to identify the specific SEC filing you want to process. An accession number is a unique identifier assigned by the SEC to each filing.
For this tutorial, we'll use a couple of example accession numbers:
- An 8-K filing (e.g., for Microsoft, CIK: 789019):
0000950170-24-058043(This 8-K reports Item 5.02 - Departure of Directors or Certain Officers; Election of Directors; Appointment of Certain Officers; Compensatory Arrangements of Certain Officers). - A 10-K filing (e.g., for Apple, CIK: 320193):
0000320193-23-000106(This is Apple's annual report for the fiscal year ended September 30, 2023).
In a real application, you might get accession numbers by first querying the /v1/filings endpoint based on company CIK, form type, and date ranges.
Explanation: We've defined two example accession numbers. You can replace these with any valid accession number for a filing you're interested in.
Step 3: Using the /v1/extractor Endpoint
The /v1/extractor endpoint is a GET request that takes the accession_number as a query parameter. It retrieves the HTML content of the filing and classifies it into relevant item categories.
Let's make a call to this endpoint for our example 8-K filing.
Explanation: We instantiate ContentExtractionApi and then call the v1_extractor_get method with the accession_number of the 8-K filing. The response, if successful, will be a DTO.FilingExtractResultDto object.
Step 4: Understanding the Extracted Data Structure
The API returns a DTO.FilingExtractResultDto object (represented as filing_extract_result_8k in our code). This object has the following main attributes:
accession_number: The accession number of the processed filing.form_type: The type of the filing (e.g., "8-K", "10-K").items: This is a list where each element is aDTO.FilingItemDtoobject. EachFilingItemDtorepresents a classified section or item from the filing and contains:item_number: The identifier of the item (e.g., "1.01", "5.02" for an 8-K; "1A", "7" for a 10-K).item_title: A descriptive title for the item.content: The HTML content of that specific item.
Let's inspect the items found in our 8-K example:
Explanation: This code iterates through the items list from the API response and prints the item_number, item_title, and a short preview of the HTML content for each item.
Step 5: Practical Example - Accessing Specific Item Content
With the structured data, you can now easily access the content of a specific item you are interested in.
Example 1: Get content of Item 5.02 from the 8-K
Item 5.02 in an 8-K often relates to changes in directors or principal officers.
Example 2: Get content of Item 1A (Risk Factors) from the 10-K
Let's repeat the extraction for our Apple 10-K example and get "Item 1A".
Explanation: These examples show how to loop through the extracted items and select one based on its item_number. The content attribute gives you the HTML for that section. For the 10-K, we search for "1A" or "Item 1A" to be a bit more robust.
Step 6: Tips for Working with Extracted Content
- HTML Parsing: The
contentfield for each item is typically HTML. If you need to extract plain text, specific figures from tables, or further process the structure within an item, you'll need to use an HTML parsing library likeBeautifulSoupin Python. This tutorial focuses on retrieving the itemized HTML; further parsing is a subsequent step. - Item Number Variations: While the API attempts to classify items, be aware that there can sometimes be slight variations in how item numbers are reported in filings (e.g., "1A" vs. "Item 1A"). Your code might need to handle such cases if you are looking for very specific items across many different filings. The
/v1/extractor/itemendpoint (covered in other FinFeedAPI documentation/tutorials) is designed to fetch a single item and might have more normalization for these variations. - Large Content: Some items, like MD&A or full financial statements within an exhibit, can be very large. Be mindful of this when processing or storing the content.
Summary
The FinFeedAPI's /v1/extractor endpoint is a valuable tool for developers needing to programmatically access specific, categorized sections of SEC filings. By providing a structured JSON output with itemized content, it greatly simplifies the task of pinpointing relevant information within these often lengthy and complex documents.
From here, you could:
- Automate the extraction of specific items from a list of filings (obtained via the
/v1/filingsendpoint). - Feed the extracted HTML content into NLP pipelines for textual analysis.
- Build applications that alert users to specific events based on the content of 8-K items.
Ready to Turn SEC Filings Into Actual Insights?
If you’re tired of digging through 200-page filings just to find one item, the FinFeed SEC API will do the heavy lifting for you.
Whether you’re building an AI agent, automating research, or powering an internal dashboard, this is the fastest way to get clean SEC data you can actually use.
Start using the FinFeed SEC API for free — get your API key in seconds.













