API Documentation

Query API

Insider Transactions API

Form D API

Download and PDF Generator API

XBRL to JSON Converter API

Mapping API

Form 3, 4, 5 Parse API

Form 144 API - Restricted Sales

Nport - API

SRO Filings Database API

Retrieve SEC Self-Regulatory Organization (SRO) filings using the API.

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

Authentication

All requests require an API token in the Authorization header.

Authorization: AUTH_TOKEN

Request Body Parameters

Parameter Type Required Description
query_type string Yes Search type.

Supported:
  • releaseNumber
  • srNumber
  • organization
  • year
  • publishDate
query_value string Yes Search value based on query_type
from integer No Pagination starting offset
size integer No Number of records to return (Maximum:100)
sort_order string No ASC or DESC

Request Example

{
  "query_type": "srNumber",
  "query_value": "SR-TXSE-2025-003",
  "from": 0,
  "size": 10,
  "sort_order": "DESC"
}

Code Examples

<?php

$url = "https://api.secfilingdata.com/v1/filings/sro/";

$auth_token = 'AUTH_TOKEN';

$postData = array(
    'query_type' => 'srNumber',
    'query_value' => 'SR-TXSE-2025-003',
    'from' => 0,
    'size' => 10,
    'sort_order' => 'DESC'
);

$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/sro/"

headers = {
    "Content-Type": "application/json",
    "Authorization": "AUTH_TOKEN"
}

payload = {
    "query_type": "srNumber",
    "query_value": "SR-TXSE-2025-003",
    "from": 0,
    "size": 10,
    "sort_order": "DESC"
}

response = requests.post(
    url,
    headers=headers,
    json=payload
)

print(response.json())
const url = "https://api.secfilingdata.com/v1/filings/sro/";

const payload = {
    query_type: "srNumber",
    query_value: "SR-TXSE-2025-003",
    from: 0,
    size: 10,
    sort_order: "DESC"
};

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/sro/";

const payload = {
    query_type: "srNumber",
    query_value: "SR-TXSE-2025-003",
    from: 0,
    size: 10,
    sort_order: "DESC"
};

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/sro/' \
--header 'Content-Type: application/json' \
--header 'Authorization: AUTH_TOKEN' \
--data '{
    "query_type":"srNumber",
    "query_value":"SR-TXSE-2025-003",
    "from":0,
    "size":10,
    "sort_order":"DESC"
}'
package main

import (
    "bytes"
    "fmt"
    "io/ioutil"
    "net/http"
)

func main() {

    url := "https://api.secfilingdata.com/v1/filings/sro/"

    payload := []byte(`{
        "query_type":"srNumber",
        "query_value":"SR-TXSE-2025-003",
        "from":0,
        "size":10,
        "sort_order":"DESC"
    }`)

    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/sro/"
        );

        HttpURLConnection conn =
            (HttpURLConnection) url.openConnection();

        conn.setRequestMethod("POST");

        conn.setRequestProperty(
            "Content-Type",
            "application/json"
        );

        conn.setRequestProperty(
            "Authorization",
            "AUTH_TOKEN"
        );

        conn.setDoOutput(true);

        String jsonInputString = "{"
                + "\"query_type\":\"srNumber\","
                + "\"query_value\":\"SR-TXSE-2025-003\","
                + "\"from\":0,"
                + "\"size\":10,"
                + "\"sort_order\":\"DESC\""
                + "}";

        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 = @"{
            ""query_type"": ""srNumber"",
            ""query_value"": ""SR-TXSE-2025-003"",
            ""from"": 0,
            ""size"": 10,
            ""sort_order"": ""DESC""
        }";

        var content = new StringContent(
            json,
            Encoding.UTF8,
            "application/json"
        );

        var response = await client.PostAsync(
            "https://api.secfilingdata.com/v1/filings/sro/",
            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/sro/"
)

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 = {
  query_type: "srNumber",
  query_value: "SR-TXSE-2025-003",
  from: 0,
  size: 10,
  sort_order: "DESC"
}.to_json

response = http.request(request)

puts response.body

Response Example

{
    "total": 1,
    "from": 0,
    "size": 10,
    "data": [
        {
            "release_number": "34-104530",
            "sr_number": "SR-TXSE-2025-003",
            "publish_date": "2025-12-31",
            "sro_organization": "Texas Stock Exchange LLC (TXSE)",
            "detail": "Notice of Filing and Immediate Effectiveness of a Proposed Rule Change to Amend the Second Amended and Restated Limited Liability Company Agreement of Texas Stock Exchange Related to the Timing of its First Annual Meeting",
            "release_number_url": "https://www.sec.gov/files/rules/sro/txse/2025/34-104530.pdf",
            "urls": [
                {
                    "title": "Exhibit 5",
                    "url": "https://www.sec.gov/files/rules/sro/txse/2025/34-104530-ex5.pdf"
                }
            ],
            "view_comments_url": null,
            "comments_due": [
                {
                    "type": "Comments Due",
                    "value": "January 27, 2026"
                }
            ]
        }
    ]
}
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
400 Invalid request parameters
401 Unauthorized / Invalid token
500 Internal server error

Bulk Download SRO API

Download the complete dataset of SRO filings and SEC releases in a single JSON file, including all metadata such as release details, organizations, dates, and document URLs. This endpoint is designed for bulk data access and full database synchronization.

GET https://api.secfilingdata.com/v1/filings/sro/metadata/all.json
<?php

$url = "https://api.secfilingdata.com/v1/filings/sro/metadata/all.json";

$auth_token = 'AUTH_TOKEN';

$saveTo = __DIR__ . '/sro-metadata-all.json';

$fp = fopen($saveTo, 'w');

$ch = curl_init($url);

curl_setopt_array($ch, [
    CURLOPT_FILE => $fp,
    CURLOPT_HTTPHEADER => [
        'Authorization: ' . $auth_token,
        'Accept: application/json'
    ],
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_TIMEOUT => 0,
]);

curl_exec($ch);

$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$curl_error = curl_error($ch);

curl_close($ch);
fclose($fp);

/*
|--------------------------------------------------------------------------
| VALIDATION
|--------------------------------------------------------------------------
*/

if ($curl_error) {
    unlink($saveTo);
    die("Curl error: " . $curl_error);
}

if ($http_code !== 200) {
    unlink($saveTo);
    die("Download failed. HTTP: " . $http_code);
}

echo "Download complete. HTTP: " . $http_code;
import requests

url = "https://api.secfilingdata.com/v1/filings/sro/metadata/all.json"
auth_token = "AUTH_TOKEN"

headers = {
    "Authorization": auth_token,
    "Accept": "application/json"
}

save_to = "sro-metadata-all.json"

with requests.get(url, headers=headers, stream=True) as r:
    if r.status_code != 200:
        raise Exception(f"Download failed: {r.status_code}")

    with open(save_to, "wb") as f:
        for chunk in r.iter_content(chunk_size=8192):
            if chunk:
                f.write(chunk)

print("Download complete")
const url = "https://api.secfilingdata.com/v1/filings/sro/metadata/all.json";
const authToken = "AUTH_TOKEN";

fetch(url, {
    method: "GET",
    headers: {
        "Authorization": authToken,
        "Accept": "application/json"
    }
})
.then(response => {
    if (!response.ok) {
        throw new Error("Download failed: " + response.status);
    }
    return response.blob();
})
.then(blob => {
    const link = document.createElement("a");
    link.href = window.URL.createObjectURL(blob);
    link.download = "sro-metadata-all.json";
    link.click();
})
.catch(err => console.error(err));
const fs = require("fs");
const https = require("https");

const url = "https://api.secfilingdata.com/v1/filings/sro/metadata/all.json";
const authToken = "AUTH_TOKEN";

const file = fs.createWriteStream("sro-metadata-all.json");

https.get(url, {
    headers: {
        "Authorization": authToken,
        "Accept": "application/json"
    }
}, (res) => {

    if (res.statusCode !== 200) {
        console.log("Download failed:", res.statusCode);
        res.resume();
        return;
    }

    res.pipe(file);

    file.on("finish", () => {
        file.close();
        console.log("Download complete");
    });

}).on("error", (err) => {
    fs.unlinkSync("sro-metadata-all.json");
    console.error(err.message);
});
curl -L \
  -H "Authorization: AUTH_TOKEN" \
  -H "Accept: application/json" \
  "https://api.secfilingdata.com/v1/filings/sro/metadata/all.json" \
  -o sro-metadata-all.json
package main

import (
    "io"
    "net/http"
    "os"
)

func main() {

    url := "https://api.secfilingdata.com/v1/filings/sro/metadata/all.json"
    authToken := "AUTH_TOKEN"

    client := &http.Client{}

    req, _ := http.NewRequest("GET", url, nil)
    req.Header.Add("Authorization", authToken)
    req.Header.Add("Accept", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    if resp.StatusCode != 200 {
        panic(resp.Status)
    }

    out, err := os.Create("sro-metadata-all.json")
    if err != nil {
        panic(err)
    }
    defer out.Close()

    io.Copy(out, resp.Body)

    println("Download complete")
}
import java.io.*;
import java.net.*;

public class DownloadFile {
    public static void main(String[] args) throws Exception {

        String urlStr = "https://api.secfilingdata.com/v1/filings/sro/metadata/all.json";
        String authToken = "AUTH_TOKEN";

        URL url = new URL(urlStr);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();

        conn.setRequestMethod("GET");
        conn.setRequestProperty("Authorization", authToken);
        conn.setRequestProperty("Accept", "application/json");

        if (conn.getResponseCode() != 200) {
            System.out.println("Failed: " + conn.getResponseCode());
            return;
        }

        InputStream in = conn.getInputStream();
        FileOutputStream out = new FileOutputStream("sro-metadata-all.json");

        byte[] buffer = new byte[8192];
        int bytesRead;

        while ((bytesRead = in.read(buffer)) != -1) {
            out.write(buffer, 0, bytesRead);
        }

        out.close();
        in.close();

        System.out.println("Download complete");
    }
}
using System;
using System.Net.Http;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var url = "https://api.secfilingdata.com/v1/filings/sro/metadata/all.json";
        var authToken = "AUTH_TOKEN";

        using var client = new HttpClient();
        client.DefaultRequestHeaders.Add("Authorization", authToken);

        var response = await client.GetAsync(url);

        if (!response.IsSuccessStatusCode)
        {
            Console.WriteLine("Failed: " + response.StatusCode);
            return;
        }

        var stream = await response.Content.ReadAsStreamAsync();
        var file = File.Create("sro-metadata-all.json");

        await stream.CopyToAsync(file);

        file.Close();

        Console.WriteLine("Download complete");
    }
}
require 'net/http'
require 'uri'

url = URI("https://api.secfilingdata.com/v1/filings/sro/metadata/all.json")
auth_token = "AUTH_TOKEN"

Net::HTTP.start(url.host, url.port, use_ssl: true) do |http|

  request = Net::HTTP::Get.new(url)
  request["Authorization"] = auth_token
  request["Accept"] = "application/json"

  http.request(request) do |response|

    if response.code != "200"
      puts "Failed: #{response.code}"
      exit
    end

    File.open("sro-metadata-all.json", "w") do |file|
      response.read_body do |chunk|
        file.write(chunk)
      end
    end

    puts "Download complete"
  end
end

Supported SROs

The following Self-Regulatory Organizations (SROs) are supported by our SRO Filings API. The dataset includes filings, SEC releases, publish dates, SR numbers, descriptions, and related document URLs.

National Securities Exchanges

  • 24X Exchange LLC (24X)
  • BOX Exchange LLC (BOX)
  • BOX Options Exchange LLC
  • Cboe BYX Exchange, Inc. (CboeBYX)
  • Bats BYX Exchange, Inc. (BatsBYX)
  • BATS Y-Exchange (BYX)
  • Cboe BZX Exchange, Inc. (CboeBZX)
  • Bats BZX Exchange, Inc. (BatsBZX)
  • BATS Exchange (BATS)
  • Cboe C2 Exchange, Inc. (C2)
  • Cboe EDGA Exchange, Inc. (CboeEDGA)
  • Bats EDGA Exchange, Inc. (BatsEDGA)
  • EDGA Exchange (EDGA)
  • Cboe EDGX Exchange, Inc. (CboeEDGX)
  • Bats EDGX Exchange, Inc. (BatsEDGX)
  • EDGX Exchange (EDGX)
  • Cboe Exchange, Inc. (CBOE)
  • Green Impact Exchange, LLC (GIX)
  • Investors Exchange LLC (IEX)
  • Long-Term Stock Exchange, Inc. (LTSE)
  • MEMX LLC (MEMX)
  • Miami International Securities Exchange, LLC (MIAX)
  • MIAX Emerald, LLC (EMERALD)
  • MIAX PEARL, LLC (PEARL)
  • MIAX SAPPHIRE, LLC (SAPPHIRE)
  • MX2 LLC (MX2)
  • Nasdaq GEMX, LLC (GEMX)
  • ISE Gemini (ISEGemini)
  • Topaz Exchange (Topaz)
  • Nasdaq ISE, LLC (ISE)
  • International Securities Exchange
  • Nasdaq MRX, LLC (MRX)
  • ISE Mercury (ISEMercury)
  • Nasdaq PHLX LLC (Phlx)
  • NASDAQ OMX PHLX
  • Nasdaq Texas, LLC (NasdaqTX)
  • Nasdaq BX, Inc. (BX)
  • NASDAQ OMX BX
  • Boston Stock Exchange (BSE)
  • The Nasdaq Stock Market LLC (NASDAQ)
  • New York Stock Exchange LLC (NYSE)
  • NYSE Arca, Inc. (NYSEARCA)
  • NYSE American LLC (NYSEAMER)
  • NYSE MKT (NYSEMKT)
  • NYSE Amex (NYSEAmex)
  • NYSE Alternext US (NYSEALTR)
  • American Stock Exchange (Amex)
  • NYSE National, Inc. (NYSENAT)
  • National Stock Exchange (NSX)
  • NYSE Texas, Inc. (NYSETEX)
  • NYSE Chicago, Inc. (NYSECHX)
  • Chicago Stock Exchange, Inc. (CHX)
  • Texas Stock Exchange LLC (TXSE)

Registered Securities Associations

  • Financial Industry Regulatory Authority (FINRA)

Notice Registered Securities Future Product Exchanges

  • CBOE Futures Exchange (CFE)
  • Chicago Board of Trade (CBOT)
  • Chicago Mercantile Exchange (CME)
  • OneChicago (registered; see Release No. 34-91117)
  • Minneapolis Grain Exchange, Inc. (MGEX) (registered)
  • NQLX (registered)

Securities Futures Associations

  • National Futures Association (NFA)

Joint Industry Plans

  • 17d-2 Plans for Allocation of Regulatory Responsibilities
  • National Market System Plans (NMS)

Registered Clearing Agencies

  • Banque Centrale De Compensation (LCH SA)
  • Boston Stock Exchange Clearing Corporation (BSECC)
  • Chicago Mercantile Exchange LLC (CME) (registered)
  • CME Securities Clearing, Inc. (CMESC)
  • Fixed Income Clearing Corporation (FICC)
  • ICE Clear Credit LLC (ICC)
  • ICE Clear Europe Limited (ICEEU) (registered)
  • National Securities Clearing Corporation (NSCC)
  • The Options Clearing Corporation (OCC)
  • Stock Clearing Corporation of Philadelphia (SCCP)
  • The Depository Trust Company (DTC)

Advance Notice Filings

  • The Depository Trust Company (DTC)
  • Fixed Income Clearing Corporation (FICC)
  • National Securities Clearing Corporation (NSCC)
  • The Options Clearing Corporation (OCC)

Other Self-Regulatory Organizations

  • Municipal Securities Rulemaking Board (MSRB)