Extractor API extracts and structures data from SEC filings like 10-K, 10-Q, and 8-K reports. It helps applications quickly access filing information, company details, and financial data in an easy-to-use format.
All requests require an API token in the Authorization header.
Authorization: AUTH_TOKEN
| Parameter | Type | Required | Description |
|---|---|---|---|
| formtype | string | Required |
Search type. Supported:
|
| url | string | Required | SEC filing URL to extract data from. |
| item | string | Required | Filing item number to extract data. |
{
'url'=>'https://www.sec.gov/Archives/edgar/data/1760965/000176096526000030/ktb-20260404.htm',
'formtype'=>'10-Q',
'item'=>'2'
}
<?php
$url = "https://api.secfilingdata.com/v1/filings/extractor/";
$auth_token = 'AUTH_TOKEN';
$postData = array(
'url'=>'https://www.sec.gov/Archives/edgar/data/1760965/000176096526000030/ktb-20260404.htm',
'formtype'=>'10-Q',
'item'=>'2'
);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postData));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Authorization: ' . $auth_token,
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
import requests
url = "https://api.secfilingdata.com/v1/filings/extractor/"
headers = {
"Content-Type": "application/json",
"Authorization": "AUTH_TOKEN"
}
payload = {
'url'=>'https://www.sec.gov/Archives/edgar/data/1760965/000176096526000030/ktb-20260404.htm',
'formtype'=>'10-Q',
'item'=>'2'
}
response = requests.post(
url,
headers=headers,
json=payload
)
print(response.json())
const url = "https://api.secfilingdata.com/v1/filings/extractor/";
const payload = {
'url'=>'https://www.sec.gov/Archives/edgar/data/1760965/000176096526000030/ktb-20260404.htm',
'formtype'=>'10-Q',
'item'=>'2'
};
fetch(url, {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "AUTH_TOKEN"
},
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));
const axios = require("axios");
const url = "https://api.secfilingdata.com/v1/filings/extractor/";
const payload = {
'url'=>'https://www.sec.gov/Archives/edgar/data/1760965/000176096526000030/ktb-20260404.htm',
'formtype'=>'10-Q',
'item'=>'2'
};
axios.post(url, payload, {
headers: {
"Content-Type": "application/json",
"Authorization": "AUTH_TOKEN"
}
})
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error);
});
curl --location 'https://api.secfilingdata.com/v1/filings/extractor/' \
--header 'Content-Type: application/json' \
--header 'Authorization: AUTH_TOKEN' \
--data '{
'url'=>'https://www.sec.gov/Archives/edgar/data/1760965/000176096526000030/ktb-20260404.htm',
'formtype'=>'10-Q',
'item'=>'2'
}'
package main
import (
"bytes"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "https://api.secfilingdata.com/v1/filings/extractor/"
payload := []byte(`{
'url'=>'https://www.sec.gov/Archives/edgar/data/1760965/000176096526000030/ktb-20260404.htm',
'formtype'=>'10-Q',
'item'=>'2'
}`)
req, _ := http.NewRequest(
"POST",
url,
bytes.NewBuffer(payload),
)
req.Header.Set(
"Content-Type",
"application/json",
)
req.Header.Set(
"Authorization",
"AUTH_TOKEN",
)
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
public class Main {
public static void main(String[] args)
throws Exception {
URL url = new URL(
"https://api.secfilingdata.com/v1/filings/extractor/"
);
HttpURLConnection conn =
(HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty(
"Content-Type",
"application/json"
);
conn.setRequestProperty(
"Authorization",
"AUTH_TOKEN"
);
conn.setDoOutput(true);
String jsonInputString = "{"
+ "\"url\":\"https://www.sec.gov/Archives/edgar/data/1760965/000176096526000030/ktb-20260404.htm\","
+ "\"formtype\":\"10-Q\","
+ "\"item\":\"2\""
+ "}";
try(OutputStream os =
conn.getOutputStream()) {
byte[] input =
jsonInputString.getBytes("utf-8");
os.write(input, 0, input.length);
}
Scanner scanner =
new Scanner(conn.getInputStream());
while(scanner.hasNext()) {
System.out.println(
scanner.nextLine()
);
}
scanner.close();
}
}
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var client = new HttpClient();
client.DefaultRequestHeaders.Add(
"Authorization",
"AUTH_TOKEN"
);
var json = @"{
""url"": ""https://www.sec.gov/Archives/edgar/data/1760965/000176096526000030/ktb-20260404.htm"",
""formtype"": ""10-Q"",
""item"": ""2""
}";
var content = new StringContent(
json,
Encoding.UTF8,
"application/json"
);
var response = await client.PostAsync(
"https://api.secfilingdata.com/v1/filings/extractor/",
content
);
var result =
await response.Content
.ReadAsStringAsync();
Console.WriteLine(result);
}
}
require 'net/http'
require 'json'
require 'uri'
url = URI(
"https://api.secfilingdata.com/v1/filings/extractor/"
)
http = Net::HTTP.new(
url.host,
url.port
)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] =
"application/json"
request["Authorization"] =
"AUTH_TOKEN"
request.body = {
url: "https://www.sec.gov/Archives/edgar/data/1760965/000176096526000030/ktb-20260404.htm",
formtype: "10-Q",
item: "2"
}.to_json
response = http.request(request)
puts response.body
[
{
"filing_id": "21712441",
"cik": "0001760965",
"accession_number": "000176096526000030",
"form_type": "10-Q",
"filingNumber": null,
"tenQData": {
"items": {
"PART I - ITEM 2": "ITEM 2. MANAGEMENT'S DISCUSSION AND ANALYSIS OF FINANCIAL CONDITION AND RESULTS OF OPERATIONS\nManagement's Discussion and Analysis of Financial Condition and Results of Operations is intended to provide readers of our financial statements with a narrative from management's perspective on our financial condition, results of operations and liquidity as well as certain other factors that may affect our future results. This section should be read in conjunction with the Consolidated Financial Statements and related Notes included in this Quarterly Report on Form 10-Q.\nThe following discussion and analysis includes forward-looking statements. These forward-looking statements are subject to risks, uncertainties and other factors that could cause our actual results to differ materially from those expressed or implied by the forward-looking statements.",
"PART II - ITEM 2": "ITEM 2. UNREGISTERED SALES OF EQUITY SECURITIES AND USE OF PROCEEDS\nFirst quarter fiscal 2026Total number of shares purchasedWeighted average price paid per shareTotal number of shares purchased as part of publicly announced program (1)Dollar value of shares that may yet be purchased under the programJanuary 4 - January 31— $— — $189,979,778 February 1 - February 28— — — 189,979,778 March 1 - April 4324,597 77.02 324,597 164,980,144 Total324,597 $77.02 324,597 \n(1) As of March 2026, the Company has a share repurchase program which authorizes the repurchase of up to $300.0 million of the Company's outstanding Common Stock through open market or privately negotiated transactions. The program does not have an expiration date but may be suspended, modified or terminated at any time without prior notice."
}
}
}
]
application/jsonjson_encode($postData)| Status Code | Description |
|---|---|
| 200 | Successful request |
| 204 | No results found |
| 400 | Invalid request parameters |
| 401 | Unauthorized / Invalid token |
| 500 | Internal server error |