Extractor API

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.

POST https://api.secfilingdata.com/v1/filings/extractor/

Authentication

All requests require an API token in the Authorization header.

Authorization: AUTH_TOKEN

Request Parameters

Parameter Type Required Description
formtype string Required Search type. Supported:
  • 10-K
  • 10-Q
  • 8-K
url string Required SEC filing URL to extract data from.
item string Required Filing item number to extract data.

Request Example

{
    'url'=>'https://www.sec.gov/Archives/edgar/data/1760965/000176096526000030/ktb-20260404.htm',
    'formtype'=>'10-Q',
    'item'=>'2'
}

Response

<?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

Response Example

[
  {
    "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."
      }
    }
  }
]

Important:
Requests must use: Content-Type:application/json
POST body must be JSON encoded using:json_encode($postData)

HTTP Status Codes

Status Code Description
200 Successful request
204 No results found
400 Invalid request parameters
401 Unauthorized / Invalid token
500 Internal server error