Get SEC filings
curl --request GET \
--url https://api.financialdatasets.ai/filings \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.financialdatasets.ai/filings"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://api.financialdatasets.ai/filings', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.financialdatasets.ai/filings",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.financialdatasets.ai/filings"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.financialdatasets.ai/filings")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.financialdatasets.ai/filings")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"filings": [
{
"cik": 123,
"accession_number": "<string>",
"filing_type": "<string>",
"report_date": "2023-12-25",
"filing_date": "2023-12-25",
"ticker": "<string>",
"url": "<string>"
}
],
"next_page_url": "<string>"
}{
"error": "Bad Request",
"message": "Invalid request parameters"
}{
"error": "Unauthorized",
"message": "Invalid API key provided"
}{
"error": "Payment Required",
"message": "This endpoint requires a paid subscription. Please upgrade your plan."
}{
"error": "Not Found",
"message": "Ticker XXXX not found"
}SEC Filings
Filings
Search SEC filings (10-K, 10-Q, 8-K) for any US public company by stock ticker.
GET
/
filings
Get SEC filings
curl --request GET \
--url https://api.financialdatasets.ai/filings \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.financialdatasets.ai/filings"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://api.financialdatasets.ai/filings', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.financialdatasets.ai/filings",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.financialdatasets.ai/filings"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.financialdatasets.ai/filings")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.financialdatasets.ai/filings")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"filings": [
{
"cik": 123,
"accession_number": "<string>",
"filing_type": "<string>",
"report_date": "2023-12-25",
"filing_date": "2023-12-25",
"ticker": "<string>",
"url": "<string>"
}
],
"next_page_url": "<string>"
}{
"error": "Bad Request",
"message": "Invalid request parameters"
}{
"error": "Unauthorized",
"message": "Invalid API key provided"
}{
"error": "Payment Required",
"message": "This endpoint requires a paid subscription. Please upgrade your plan."
}{
"error": "Not Found",
"message": "Ticker XXXX not found"
}Overview
The Filings endpoint allows you to fetch a list of filings for a given company. The endpoint returns all of the filings that the company has filed with the SEC. This includes 10-Ks, 10-Qs, 8-Ks, and more. We have SEC filings for 10,000+ public companies. To get started, please create an account and grab your API key at financialdatasets.ai. You will use the API key to authenticate your API requests.Coverage
| Tickers | Years of Coverage | Updated |
|---|---|---|
| 22,000+ | 30+ years | Real-time |
Available Tickers
You can fetch a list of available tickers with aGET request to:
https://api.financialdatasets.ai/filings/tickers/
Available Filing Types
You can fetch a list of valid filing types with aGET request to:
https://api.financialdatasets.ai/filings/types/
Getting Started
There are only 3 steps for making a successful API call:- Add your API key to the header of the request as
X-API-KEY. - Add query params like
tickerto filter the data. - Execute the API request.
ticker in your query params.
Example
Filings
import requests
# add your API key to the headers
headers = {
"X-API-KEY": "your_api_key_here"
}
# set your query params
ticker = 'AAPL'
limit = 10
# create the URL
url = (
f'https://api.financialdatasets.ai/filings'
f'?ticker={ticker}'
f'&limit={limit}'
)
# make API request
response = requests.get(url, headers=headers)
# parse filings from the response
filings = response.json().get('filings')
Filtering by Filing Type
Use thefiling_type query param to filter filings.
- Single type:
?ticker=AAPL&filing_type=10-K - Multiple types: repeat the param (same pattern as multi-
itemfiltering), e.g.?ticker=AAPL&filing_type=10-Q&filing_type=10-K
FilingsWithMultipleTypes
import requests
headers = {"X-API-KEY": "your_api_key_here"}
url = "https://api.financialdatasets.ai/filings"
params = [
("ticker", "AAPL"),
("filing_type", "10-Q"),
("filing_type", "10-K"),
]
response = requests.get(url, headers=headers, params=params)
filings = response.json().get("filings")
Authorizations
API key for authentication.
Query Parameters
The Central Index Key (CIK) of the company.
The ticker symbol.
Filter by one or more filing types. Repeat the query parameter to pass multiple values (e.g. filing_type=10-Q&filing_type=10-K).
Available options:
10-K, 10-Q, 8-K, 20-F, 6-K The maximum number of filings to return (default: 10). This is the total across all pages, not a page size: each page holds up to 10 records, linked by next_page_url.
Required range:
x >= 1Opaque pagination cursor from a previous response's next_page_url. When provided, all other query parameters are ignored: the cursor carries the original request's filters. Treat it as opaque; do not construct or modify it.