# SRO Filings Database API > SRO Filing Database API offers access to all SRO-related filings and corresponding SEC rulemaking releases from 1995 to present. Features include search functionality, metadata retrieval, and bulk-download in various formats. Data is updated daily. Covers all SEC-monitored SROs. Source: https://sec-api.io/docs/sro-filings-database-api The SRO Filing Database offers a repository of all SRO-related filings and corresponding SEC rulemaking releases, such as notices, orders, and request for comments. The database is updated daily and includes all filings from 1995 to present, accumulating to over 30,000 documents. The database is accessible via an API that provides search functionality and returns all metadata of published SRO filings and allows to bulk-download all filings and exhibits as PDFs, HTML and converted text. All SROs overseen by the SEC are covered, such as security exchanges, securities associations, clearing agencies, and more. Dataset Size: All releases from 1995 to present with more than 30,000 documents, covering all SROs supervised by the SEC. Data Update Frequency: New filings are indexed and searchable in 300 milliseconds after they are published on the SEC website. ## API Endpoints **Search API** API to search the SRO filings database: POST requests to `https://api.sec-api.io/sro` **Bulk Download APIs** API to bulk-download metadata of all releases as JSON file: GET request to `https://api.sec-api.io/sro/metadata/all.json` API to bulk-download all SRO releases per year as ZIP file: GET request to `https://api.sec-api.io/sro/documents/{YEAR}.zip` **Single Download APIs** API to download single SRO documents: GET requests to `https://api.sec-api.io/sro/{releaseNo}/{type}-{filename}` API to download single PDFs/HTMLs converted to text: GET requests to `https://api.sec-api.io/sro/{releaseNo}/{type}-{filename}.txt` ### Authentication To authenticate API requests, use the API key displayed in your [user profile](https://sec-api.io/login). Utilize the API key in one of two ways. Choose the method that best fits your use case: - **Authorization Header**: Include the API key as an `Authorization` header of the request. For instance, before sending a `POST` request to `https://api.sec-api.io/sro`, ensure the header is set as follows: `Authorization: YOUR_API_KEY`. - **Query Parameter**: Alternatively, append the API key directly to the URL as a query parameter. For example, when making `POST` requests, use the URL `https://api.sec-api.io/sro?token=YOUR_API_KEY` instead of the base endpoint. ## Search API To search the SRO filings database, make a POST request to `https://api.sec-api.io/sro`, providing your search criteria as a JSON payload. ### Request Structure The Search API recognizes the following JSON payload parameters: - `query` (string, required) - The search term or expression, formatted using the Lucene syntax. Example: `sro:NASDAQ`. - `from` (string, optional) - Pagination control to specify the starting position of the results. Max: 10000. Default: 0. - `size` (string, optional) - Determines the number of results to be returned. Max: 100. Default: 100. - `sort` (array, optional) - Specifies the field by which results should be sorted. By default, results are sorted by `issueDate` in descending order. #### Query Example Get all metadata objects of the 10 most recently published filings by the NASDAQ SRO. ```json { "query": "sro:NASDAQ", "from": "0", "size": "10", "sort": [{"issueDate":{"order":"desc"}}] } ``` ### Response Structure When the Search API locates matches within the SRO filings database, it returns an array of SRO filing objects in JSON format. Each object comprises the following fields: - `releaseNumber`: String representing the release number associated with the filing. Example: `34-98702` - `issueDate`: Date string indicating the release date of the filing. Example: `2023-09-01` - `fileNumber`: File number of the filing. Example: `SR-ISE-2023-22`. - `sro`: String indicating the SRO associated with the filing. Example: `Nasdaq ISE, LLC (ISE)` - `details`: String containing the details of the filing. Example: `Notice of Filing and Immediate Effectiveness of Proposed Rule Change to Amend its Complex Order Rules` - `commentsDue`: Optional string indicating the date by which comments on the filing are due. Example: `21 days after date of publication in the Federal Register.` - `urls`: Array of objects, each containing a `type` and a `url`. The types and their corresponding URLs might include: - Primary filing as indicated by `type` being the `releaseNumber` (always included): `https://www.sec.gov/files/rules/sro/ise/2023/34-98702.pdf`. Older filings might point to a HTML file (website) instead of a PDF file. - Exhibit 2 (a,b, ...) (optional): `https://www.sec.gov/files/rules/sro/finra/2023/34-98703-ex2a.pdf` - Exhibit 3 (optional): `https://www.sec.gov/files/rules/sro/nyse/2023/34-98665-ex3.pdf` - Exhibit 4 (optional): `https://www.sec.gov/files/rules/sro/cfe/2023/34-97358-ex4.pdf` - Exhibit 5 (optional): `https://www.sec.gov/files/rules/sro/ise/2023/34-98702-ex5.pdf` - Submit a Comment on `releaseNumber`: `https://www.sec.gov/comments/sr-ise-2023-22/sr-ise-2023-22-notice-filing-and-immediate-effectiveness-proposed-rule` - View Received Comments (optional): `https://www.sec.gov/comments/4-700/4-700.htm` - Commission's Request for Additional Information (optional): `https://www.sec.gov/files/rules/sro/dtc/2018/sr-dtc-2017-803-request-additional-info.pdf` - Response to the Commission's Request for Additional Information (optional): `https://www.sec.gov/files/rules/sro/dtc/2018/dtc-2017-803-response-request-info.pdf` - Order Granting Accelerated Approval of a Proposed Rule Change (optional): `https://www.sec.gov/files/rules/sro/emcc/34-49952.pdf` #### Response Example JSON ```json [ { "releaseNumber": "34-98702", "issueDate": "2023-10-06", "fileNumber": "SR-ISE-2023-22", "sro": "Nasdaq ISE, LLC (ISE)", "details": "Notice of Filing and Immediate Effectiveness of Proposed Rule Change to Amend its Complex Order Rules", "commentsDue": "21 days after date of publication in the Federal Register.", "urls": [ { "type": "34-98702", "url": "https://www.sec.gov/files/rules/sro/ise/2023/34-98702.pdf" }, { "type": "Exhibit 5", "url": "https://www.sec.gov/files/rules/sro/ise/2023/34-98702-ex5.pdf" }, { "type": "Submit a Comment on SR-ISE-2023-22", "url": "https://www.sec.gov/comments/sr-ise-2023-22/sr-ise-2023-22-notice-filing-and-immediate-effectiveness-proposed-rule" } ] }, { "releaseNumber": "34-97786", "issueDate": "2023-06-21", "fileNumber": "SR-LCHSA-2023-003", "sroOrg": "Banque Centrale De Compensation", "details": "Notice of Filing and Immediate Effectiveness of Proposed Rule Change, as Modified by Amendment No. 1, Relating to Liquidity Risk Modelling Framework", "commentsDue": "July 18, 2023", "urls": [ { "type": "34-97786", "url": "https://www.sec.gov/files/rules/sro/lchsa/2023/34-97786.pdf" }, { "type": "Exhibit 3.1", "url": "https://www.sec.gov/files/rules/sro/lchsa/2023/34-97786-ex31.pdf" }, { "type": "Exhibit 3.2", "url": "https://www.sec.gov/files/rules/sro/lchsa/2023/34-97786-ex32.pdf" }, { "type": "Exhibit 5", "url": "https://www.sec.gov/files/rules/sro/lchsa/2023/34-97786-ex5.pdf" }, { "type": "Submit a Comment on SR-LCH-SA-2023-003", "url": "https://www.sec.gov/comments/sr-lch-sa-2023-003/notice-filing-and-immediate-effectiveness-proposed-rule-change-modified" } ] } // ... ] ``` ## Bulk-Download SRO Filings & SEC Correspondence Two bulk-download APIs for SRO filing metadata and documents are available. ### Bulk-Download Metadata in JSON Format Download the entire database of metadata (issue date, SRO, details, URLs to documents) of all SRO filings and corresponding SEC releases published from 1997 to present as a single JSON file. **Endpoint**: `GET https://api.sec-api.io/sro/metadata/all.json` The JSON file mirrors the structure of the Search API response, but containing all filing objects instead of a filtered subset. The JSON file contains an array of metadata objects with the following structure: - `releaseNumber`: String representing the release number associated with the filing. Example: `34-98702` - `issueDate`: Date string indicating the release date of the filing. Example: `2023-09-01` - `fileNumber`: File number of the filing. Example: `SR-ISE-2023-22`. - `sro`: String indicating the SRO associated with the filing. Example: `Nasdaq ISE, LLC (ISE)` - `details`: String containing the details of the filing. Example: `Notice of Filing and Immediate Effectiveness of Proposed Rule Change to Amend its Complex Order Rules` - `commentsDue`: Optional string indicating the date by which comments on the filing are due. Example: `21 days after date of publication in the Federal Register.` - `urls`: Array of objects, each containing a `type` and a `url`. The types and their corresponding URLs might include: - Primary filing as indicated by `type` being the `releaseNumber` (always included): `https://www.sec.gov/files/rules/sro/ise/2023/34-98702.pdf`. Older filings might point to a HTML file (website) instead of a PDF file. - Exhibit 2 (a,b, ...) (optional): `https://www.sec.gov/files/rules/sro/finra/2023/34-98703-ex2a.pdf` - Exhibit 3 (optional): `https://www.sec.gov/files/rules/sro/nyse/2023/34-98665-ex3.pdf` - Exhibit 4 (optional): `https://www.sec.gov/files/rules/sro/cfe/2023/34-97358-ex4.pdf` - Exhibit 5 (optional): `https://www.sec.gov/files/rules/sro/ise/2023/34-98702-ex5.pdf` - Submit a Comment on `releaseNumber`: `https://www.sec.gov/comments/sr-ise-2023-22/sr-ise-2023-22-notice-filing-and-immediate-effectiveness-proposed-rule` - View Received Comments (optional): `https://www.sec.gov/comments/sr-nasdaq-2022-080/srnasdaq2022080.htm` - Commission's Request for Additional Information (optional): `https://www.sec.gov/files/rules/sro/dtc/2018/sr-dtc-2017-803-request-additional-info.pdf` - Response to the Commission's Request for Additional Information (optional): `https://www.sec.gov/files/rules/sro/dtc/2018/dtc-2017-803-response-request-info.pdf` - Order Granting Accelerated Approval of a Proposed Rule Change (optional): `https://www.sec.gov/files/rules/sro/emcc/34-49952.pdf` ### Bulk-Download PDFs, HTML and Text Files as ZIP Files Download a collection of all documents, including filings, notices, orders, comments and more. These documents are available in PDF, HTML, and their corresponding text versions. They are organized annually, packaged as compressed ZIP files and contain all documents attached to an SRO filing published in the respective year. **Endpoint**: `GET https://api.sec-api.io/sro/documents/{YEAR}.zip` Inside the ZIP file, you'll find distinct folders, each representing an individual SRO filing. Here's a breakdown of the contents and structure: - **Folder Naming**: Each filing has its designated folder, named using the format `/{releaseNo}`. - **Contents**: - **Metadata**: Each folder contains a JSON file capturing its metadata. - **Original Documents**: You'll find all relevant documents pertaining to the filing, such as notice of proposed rule change, exhibits, response from the SEC, comments, and more. These are available in PDF and HTML formats, depending on how the SEC published the document. The HTML files mirror documents hosted as websites on SEC.gov. - **Text Versions**: Every PDF and HTML document has a corresponding text file, making content easily accessible. These text files retain the original document's name but append a `.txt` extension. For instance, the text counterpart of `34-96601.pdf` would be `34-96601.pdf.txt`. Example structure of an unzipped ZIP file of SRO filings published in 2022: - ZIP file name: `2022.zip` - Unzipped folder structure: - `/34-96601/` - `34-96601.json` (metadata) - `34-96601.pdf` (primary notice) - `34-96601.pdf.txt` (primary notice converted to text) - `34-96601-exhibit-2.pdf` (exhibit 2) - `34-96601-exhibit-2.pdf.txt` (exhibit 2 converted to text) - `34-96601-received-comments.html` (received comments) - `34-96601-received-comments.html.txt` (received comments converted to text) - ... and more ## Supported SROs The following SROs are supported by the SRO Filing/Rulemaking Database. ### National Securities Exchanges - American Stock Exchange (Amex) - Bats BYX Exchange, Inc. (BatsBYX) - Bats BZX Exchange, Inc. (BatsBZX) - Bats EDGA Exchange, Inc. (BatsEDGA) - Bats EDGX Exchange, Inc. (BatsEDGX) - BATS Exchange (BATS) - BATS Y-Exchange (BYX) - Boston Stock Exchange (BSE) - BOX Exchange LLC (BOX) - Cboe BYX Exchange, Inc. (CboeBYX) - Cboe BZX Exchange, Inc. (CboeBZX) - Cboe C2 Exchange, Inc. (C2) - Cboe EDGA Exchange, Inc. (CboeEDGA) - Cboe EDGX Exchange, Inc. (CboeEDGX) - Cboe Exchange, Inc. (CBOE) - Chicago Stock Exchange, Inc. (CHX) - EDGA Exchange (EDGA) - EDGX Exchange (EDGX) - Investors Exchange LLC (IEX) - ISE Gemini (ISEGemini) - ISE Mercury (ISEMercury) - Long-Term Stock Exchange, Inc. (LTSE) - MEMX LLC (MEMX) - Miami International Securities Exchange, LLC (MIAX) - MIAX Emerald, LLC (EMERALD) - MIAX PEARL, LLC (PEARL) - Nasdaq BX, Inc. (BX) - Nasdaq GEMX, LLC (GEMX) - Nasdaq ISE, LLC (ISE) - Nasdaq MRX, LLC (MRX) - NASDAQ OMX PHLX - Nasdaq PHLX LLC (Phlx) - National Stock Exchange (NSX) - New York Stock Exchange LLC (NYSE) - NYSE Alternext US (NYSEALTR) - NYSE American LLC (NYSEAMER) - NYSE Amex (NYSEAmex) - NYSE Arca (NYSEArca) - NYSE Chicago, Inc. (NYSECHX) - NYSE MKT (NYSEMKT) - NYSE National, Inc. (NYSENAT) - The Nasdaq Stock Market LLC (NASDAQ) - Topaz Exchange (Topaz) ### Joint Industry Plans - 17d-2 Plans for Allocation of Regulatory Responsibilities - National Market System Plans (NMS) ### 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) - Minneapolis Grain Exchange, Inc. (MGEX) ### Securities Futures Associations - National Futures Association (NFA) ### Registered Clearing Agencies - Banque Centrale De Compensation - Boston Stock Exchange Clearing Corporation - Chicago Mercantile Exchange LLC - Emerging Markets Clearing Corporation (EMCC) - Fixed Income Clearing Corporation (FICC, FICC-AN) - ICE Clear Credit LLC - ICE Clear Europe Limited - National Securities Clearing Corporation (NSCC, NSCC-AN) - The Options Clearing Corporation (OCC, OCC-AN) - Stock Clearing Corporation of Philadelphia - The Depository Trust Company (DTC, DTC-AN) ### Other SROs - Municipal Securities Rulemaking Board (MSRB) ## FAQ Common questions about querying the SRO Filings Database API, the response shape, and the bulk archives. ### How do I look up a specific SRO rule filing when I only know its release number? To look up a single SRO rule filing by its release number, search the SRO filings database at the `/sro` endpoint and restrict the search to that exact release identifier. The release number is carried on each filing object as `releaseNumber` (for example `34-98702`), so the value of `releaseNumber` should equal the identifier you have. The response contains the full metadata for that filing, including the issue date (`issueDate`), the SR file number (`fileNumber`), the SRO that submitted it (`sro`), the description (`details`), and the list of attached document URLs (`urls`), each of which carries its label in `urls.type` and its location in `urls.url`. ```json { "query": "releaseNumber:\"34-98702\"", "from": 0, "size": 50, "sort": [{"issueDate":{"order":"desc"}}] } ``` ### How do I pull all proposed rule changes published by NASDAQ in the last 12 months? To pull all proposed rule changes published by NASDAQ over the trailing twelve months, query the `/sro` endpoint and filter on the SRO name together with a publication-date window. The SRO of a filing is stored on the `sro` field (for example `The Nasdaq Stock Market LLC (NASDAQ)`), and the publication date is stored on `issueDate` as an ISO date string such as `2023-10-06`. The value of `sro` should match the NASDAQ entity (for example `NASDAQ`), and the value of `issueDate` should fall between the date twelve months ago and today. Page through results by raising the starting offset (`from`) in steps of the page size (`size`), since a year of NASDAQ activity typically exceeds the 100-result page cap. ```json { "query": "sro:\"NASDAQ\" AND issueDate:[2025-05-26 TO 2026-05-26]", "from": 0, "size": 50, "sort": [{"issueDate":{"order":"desc"}}] } ``` ### How do I find every SRO filing tied to a particular SR file number? To find every release tied to a single SR file number, search the `/sro` endpoint on the `fileNumber` field. The file number identifies the underlying proposal — for example `SR-ISE-2023-22` or `SR-NASDAQ-2008-102` — and the same file number is reused across every release that touches that proposal (initial notice, amendments, approval order, and so on). The value of `fileNumber` should equal the SR identifier you have. The response returns one entry per release, each with its own `releaseNumber`, `issueDate`, and `details`, so the result set traces the proposal end-to-end. ```json { "query": "fileNumber:\"SR-ISE-2023-22\"", "from": 0, "size": 50, "sort": [{"issueDate":{"order":"desc"}}] } ``` ### How do I retrieve the 10 most recently published SRO filings sorted by publication date? To retrieve the ten most recently published SRO filings, query the `/sro` endpoint with a match-all query and sort by publication date in descending order. The publication date lives on the `issueDate` field, and the search supports custom sort orders through the `sort` parameter; the default is already `issueDate` descending. Set the page size (`size`) to `10` and the starting offset (`from`) to `0`. The response is an array of filing objects, each carrying `releaseNumber`, `issueDate`, `fileNumber`, `sro`, `details`, `commentsDue`, and the document `urls`. ```json { "query": "releaseNumber:*", "from": 0, "size": 10, "sort": [{"issueDate":{"order":"desc"}}] } ``` ### How do I search for rule filings submitted by FINRA over a specific date window? To search for FINRA rule filings inside a specific date window, query the `/sro` endpoint and combine an SRO filter with an `issueDate` range. The SRO is stored on the `sro` field — FINRA appears as `Financial Industry Regulatory Authority (FINRA)` — and the release date is stored on `issueDate` as an ISO date. The value of `sro` should match `FINRA`, and the value of `issueDate` should fall between the start and end of the window you care about. Each returned object lists the release number (`releaseNumber`), the SR file number (`fileNumber`, for example `SR-FINRA-2018-030`), the description (`details`), and the linked documents (`urls`). ```json { "query": "sro:\"FINRA\" AND issueDate:[2023-01-01 TO 2023-12-31]", "from": 0, "size": 50, "sort": [{"issueDate":{"order":"desc"}}] } ``` ### How do I find SRO filings related to clearing agencies such as DTC, NSCC, or OCC? To find SRO filings submitted by clearing agencies, query the `/sro` endpoint and filter the `sro` field on the clearing-agency name. The clearing agencies covered include The Depository Trust Company (DTC), the National Securities Clearing Corporation (NSCC), The Options Clearing Corporation (OCC), the Fixed Income Clearing Corporation (FICC), ICE Clear Credit, ICE Clear Europe Limited, the Chicago Mercantile Exchange LLC, and Banque Centrale De Compensation. The value of `sro` should match any of these clearing-agency names (for example `DTC`, `NSCC`, or `OCC`). Each returned filing carries its release number (`releaseNumber`), the SR file number (`fileNumber`, for example `SR-ICEEU-2023-021`), the description (`details`), and the attached document URLs (`urls`). ```json { "query": "sro:(\"DTC\" OR \"NSCC\" OR \"OCC\")", "from": 0, "size": 50, "sort": [{"issueDate":{"order":"desc"}}] } ``` ### How do I locate SRO filings that mention a specific topic like "Clearly Erroneous Transactions" in their description? To locate SRO filings that mention a specific topic in their description, run a full-text search against the `details` field at the `/sro` endpoint. The `details` field carries the free-text description supplied by the SEC, such as `Notice of Filing and Immediate Effectiveness of a Proposed Rule Change To Extend a Pilot Program Related to Rule 11890, Entitled "Clearly Erroneous Transactions"`. The value of `details` should contain the phrase you are searching for (for example `Clearly Erroneous Transactions`). Each match returns the release number (`releaseNumber`), the SRO (`sro`), the issue date (`issueDate`), and the document URLs (`urls`). ```json { "query": "details:\"Clearly Erroneous Transactions\"", "from": 0, "size": 50, "sort": [{"issueDate":{"order":"desc"}}] } ``` ### How do I get only those SRO filings that are still open for public comment? To get only the SRO filings that are still open for public comment, query the `/sro` endpoint and restrict results to filings where the comment-deadline field has a value. The `commentsDue` field is populated only when the SEC publishes a comment window — it holds either an explicit date such as `September 26, 2023` or a phrase like `21 days after date of publication in the Federal Register.` When no comment window applies, `commentsDue` is null. The value of `commentsDue` should be non-null. To further narrow the list to filings whose deadline has not yet passed, parse the deadline date (when expressed as a calendar date) and keep only those where it is later than today. ```json { "query": "commentsDue:*", "from": 0, "size": 50, "sort": [{"issueDate":{"order":"desc"}}] } ``` ### How do I find SRO rule changes that were approved by the SEC versus those merely filed for immediate effectiveness? To distinguish SEC-approved rule changes from filings that took effect immediately on submission, search the `/sro` endpoint on the `details` field for the distinguishing phrase. SEC-approved releases carry descriptions that begin with `Order Approving Proposed Rule Change` (for example `Order Approving Proposed Rule Change To Amend FINRA Rule 7730`), while immediately effective filings carry descriptions that begin with `Notice of Filing and Immediate Effectiveness of Proposed Rule Change`. The value of `details` should contain `Order Approving` for SEC-approved rule changes, and `Notice of Filing and Immediate Effectiveness` for the immediately effective ones. Both queries return the standard filing object with `releaseNumber`, `issueDate`, `fileNumber`, `sro`, and `urls`. ```json { "query": "details:\"Order Approving\"", "from": 0, "size": 50, "sort": [{"issueDate":{"order":"desc"}}] } ``` ### How do I retrieve all SRO filings that include an Exhibit 5 (the rule change text)? To retrieve SRO filings that include an Exhibit 5 attachment — the document containing the full text of the proposed rule change — query the `/sro` endpoint and filter on the `urls` array. Each entry in `urls` carries a label in `urls.type` and a link in `urls.url`; Exhibit 5 attachments use the label `Exhibit 5`. The value of `urls.type` should be `Exhibit 5`. Each matching filing returns its full metadata along with the Exhibit 5 download URL (`urls.url`), which points to the PDF on sec.gov. ```json { "query": "urls.type:\"Exhibit 5\"", "from": 0, "size": 50, "sort": [{"issueDate":{"order":"desc"}}] } ``` ### How do I find SRO filings that have received public comments via the SEC's comments portal? To find SRO filings that have received public comments, query the `/sro` endpoint and filter on the document-links array. When the SEC has posted received comments for a filing, the `urls` array contains an entry whose `urls.type` is `View Received Comments` and whose `urls.url` points to the comments index page on sec.gov. The value of `urls.type` should be `View Received Comments`. The response returns the filing metadata together with the URL of the comments page, which lists every comment letter submitted on that proposal. ```json { "query": "urls.type:\"View Received Comments\"", "from": 0, "size": 50, "sort": [{"issueDate":{"order":"desc"}}] } ``` ### How do I page through more than 100 results when a search returns thousands of SRO filings? To page through large result sets at the `/sro` endpoint, combine the starting offset (`from`) with the page size (`size`). The page size caps at `100`, and the starting offset caps at `10000`, so the endpoint can deliver up to 10,100 results across all pages of a single query. Issue the first request with `from` set to `0` and `size` set to `100`, then issue subsequent requests with `from` advanced by `100` each time, until the response array comes back empty or you reach the `10000` limit. When a query would exceed the offset cap, tighten the result set by narrowing the `issueDate` window or by adding an SRO or file-number filter. ```json { "query": "releaseNumber:*", "from": 100, "size": 100, "sort": [{"issueDate":{"order":"desc"}}] } ``` ### How do I download the entire historical SRO filings metadata catalog in one shot? To download the entire historical SRO filings metadata catalog in a single file, fetch the bulk-metadata endpoint at `/sro/metadata/all.json`. The response is a single JSON file containing one object per release from 1997 to present, mirroring the per-filing structure returned by the search endpoint. Each object in the file carries the same fields as the search response — `releaseNumber`, `issueDate`, `fileNumber`, `sro`, `details`, `commentsDue`, and the `urls` array of `{type, url}` document links — so the same downstream parsing logic applies to both. ```bash https://api.sec-api.io/sro/metadata/all.json?token=YOUR_API_KEY ``` ### How do I bulk-download all SRO documents and exhibits published in a specific calendar year as PDFs and text? To bulk-download every SRO document and exhibit published in a specific year, fetch the year-specific ZIP archive from `/sro/documents/{YEAR}.zip`, substituting the four-digit year (for example `2022`). The archive contains one folder per release, named after the release number. Inside each release folder you get the metadata JSON (named `{releaseNumber}.json`), the primary notice PDF or HTML (named `{releaseNumber}.pdf` or `.html`), any exhibits (named `{releaseNumber}-exhibit-{n}.pdf`), the received-comments HTML when available, and a plain-text version of every PDF and HTML file with a `.txt` suffix appended to the original filename. ```bash https://api.sec-api.io/sro/documents/2022.zip?token=YOUR_API_KEY ``` ### How do I download a single SRO release PDF and its plain-text version by release number? To download a single SRO release document by release number, fetch the single-document endpoint at `/sro/{releaseNo}/{type}-{filename}`, substituting the release number, the document type, and the filename listed on the filing object. The download URLs for every available document are listed on the filing record under the `urls` array, where `urls.type` gives the label (such as the release number itself or `Exhibit 5`) and `urls.url` gives the original sec.gov source. To retrieve the plain-text version of the same document, append `.txt` to the same path — the text-conversion endpoint lives at `/sro/{releaseNo}/{type}-{filename}.txt` and returns the PDF or HTML converted to text. ```bash https://api.sec-api.io/sro/34-98702/34-98702.pdf?token=YOUR_API_KEY ``` ### How do I count how many rule filings each U.S. exchange submitted in a given quarter? To count rule filings per exchange for a given quarter, query the `/sro` endpoint with an `issueDate` window covering that quarter and then group the results by SRO on the client side. The `sro` field on each filing carries the exchange name (for example `The Nasdaq Stock Market LLC (NASDAQ)` or `New York Stock Exchange LLC (NYSE)`), and the `issueDate` field carries the publication date. The value of `issueDate` should fall between the first and last day of the target quarter. Paginate through the full result set by advancing the starting offset (`from`) in steps of the page size (`size`, max `100`), and tally the count of `releaseNumber` values per `sro` after collection. ```json { "query": "issueDate:[2023-01-01 TO 2023-03-31]", "from": 0, "size": 100, "sort": [{"issueDate":{"order":"desc"}}] } ``` ### How do I find SRO filings that were modified by an amendment? To find SRO filings that were modified by an amendment, search the `/sro` endpoint on the `details` field. The SEC always notes the amendment in the description — for example `Notice of Filing of Proposed Rule Change, as Modified by Amendment No. 1` or `Order Approving Proposed Rule Change as Modified by Amendment No. 2 Thereto`. The value of `details` should contain the phrase `Amendment No.`. Each match returns the full filing record, and the related amendments share the same SR file number (`fileNumber`), so you can group amendment chains by `fileNumber` after retrieval. ```json { "query": "details:\"Amendment No.\"", "from": 0, "size": 50, "sort": [{"issueDate":{"order":"desc"}}] } ``` ### How do I retrieve all SRO filings related to a National Market System Plan (NMS Plan)? To retrieve filings related to a National Market System Plan, query the `/sro` endpoint and filter on the SRO name reserved for NMS plans. NMS plan filings are tagged with the SRO label `National Market System Plans (NMS)` — they are joint filings made by multiple exchanges, FINRA, and other self-regulatory organizations under a single plan such as the UTP plan for Nasdaq-listed securities. The value of `sro` should equal `National Market System Plans (NMS)`. To narrow further to a specific plan, add a text filter on the `details` field for the plan name or on `fileNumber` for the SR identifier (NMS plan file numbers use the `S7-...` prefix, for example `S7-24-89`). ```json { "query": "sro:\"National Market System Plans (NMS)\"", "from": 0, "size": 50, "sort": [{"issueDate":{"order":"desc"}}] } ``` ### How do I find filings where the SEC issued a Request for Additional Information to the SRO? To find filings where the SEC issued a Request for Additional Information, query the `/sro` endpoint and filter on the document-links array. When the Commission posts a request-for-additional-information letter, the `urls` array gains an entry whose `urls.type` is `Commission's Request for Additional Information` (and frequently a matching entry for the SRO's response, labeled `Response to the Commission's Request for Additional Information`). The value of `urls.type` should contain `Request for Additional Information`. Each matching filing carries the request-letter URL in `urls.url`, alongside the original release metadata. ```json { "query": "urls.type:\"Commission's Request for Additional Information\"", "from": 0, "size": 50, "sort": [{"issueDate":{"order":"desc"}}] } ``` ### How do I authenticate my API calls against the SRO endpoint? To authenticate calls against the `/sro` endpoint, supply the API key shown on the user profile page either as a request header or as a URL query parameter. As a header, set `Authorization` to the API key value. As a query parameter, append `?token=YOUR_API_KEY` to the endpoint URL. The same authentication mechanism applies to every SRO-related path, including the bulk-metadata endpoint at `/sro/metadata/all.json`, the yearly bulk-documents endpoint at `/sro/documents/{YEAR}.zip`, and the single-document endpoints at `/sro/{releaseNo}/{type}-{filename}` and `/sro/{releaseNo}/{type}-{filename}.txt`. ```json { "query": "releaseNumber:*", "from": 0, "size": 50, "sort": [{"issueDate":{"order":"desc"}}] } ``` ### How do I find filings whose comment deadline is expressed as a fixed calendar date rather than "X days after publication"? To find filings whose comment deadline is a fixed calendar date, query the `/sro` endpoint with a text filter on the `commentsDue` field. The `commentsDue` field is a free-text string: most entries follow the template `21 days after date of publication in the Federal Register.` (a relative deadline), while a smaller subset carries an explicit calendar date such as `September 26, 2023` or `July 18, 2023`. The value of `commentsDue` should not contain `after date of publication`, or alternatively should match a calendar-date pattern such as a month name followed by a day and year. The matching filings carry the explicit deadline in `commentsDue`, ready to compare against today's date. ```json { "query": "commentsDue:* AND NOT commentsDue:\"after date of publication\"", "from": 0, "size": 50, "sort": [{"issueDate":{"order":"desc"}}] } ``` ### How do I trace an SRO rule change from its initial notice through the SEC's final approval order? To trace a proposed rule change from its initial notice through the SEC's final approval order, query the `/sro` endpoint on the `fileNumber` field. The SR file number identifies the underlying proposal (for example `SR-NASDAQ-2008-102`) and stays constant across every release that touches it — the initial notice, any amendments, the SEC's request for additional information, the SRO's response, and the final approval order each get their own `releaseNumber` while keeping the same `fileNumber`. The value of `fileNumber` should equal the SR identifier of the proposal you are tracing. Sort the result set by publication date — the value of `issueDate` ascending — to read the procedural history from first filing to final order, where each step is described in the corresponding `details` field. ```json { "query": "fileNumber:\"SR-NASDAQ-2008-102\"", "from": 0, "size": 50, "sort": [{"issueDate":{"order":"asc"}}] } ``` ### How do I find rule filings from the newer equities exchanges like MEMX, IEX, or LTSE? To find filings from the newer equities exchanges, query the `/sro` endpoint and filter the `sro` field on the venue name. The newer equities venues covered include MEMX LLC (`MEMX`), Investors Exchange LLC (`IEX`), and the Long-Term Stock Exchange (`LTSE`). The value of `sro` should match any of those exchange identifiers. Each returned filing carries the release number (`releaseNumber`), the SR file number (`fileNumber`), the description (`details`), and the attached document URLs (`urls`). ```json { "query": "sro:(\"MEMX\" OR \"IEX\" OR \"LTSE\")", "from": 0, "size": 50, "sort": [{"issueDate":{"order":"desc"}}] } ``` ### How do I retrieve the raw text of an exhibit attached to an SRO filing for keyword analysis? To retrieve the raw text of an exhibit attached to an SRO filing, fetch the text-conversion endpoint at `/sro/{releaseNo}/{type}-{filename}.txt`. The exhibit's original sec.gov PDF or HTML URL is listed on the filing object under the `urls` array, where `urls.type` identifies the exhibit (for example `Exhibit 5`, `Exhibit 4`, or `Exhibit 2`) and `urls.url` points to the source document. Replace `{releaseNo}`, `{type}`, and `{filename}` with the corresponding path segments derived from the source URL on `urls.url`, and append `.txt` to receive the text-converted version of the same document, ready for keyword scanning. ```bash https://api.sec-api.io/sro/34-98702/34-98702-ex5.pdf.txt?token=YOUR_API_KEY ``` ### How do I identify SRO filings that propose changes to fee schedules across multiple exchanges? To identify SRO filings that propose fee-schedule changes, query the `/sro` endpoint on the `details` field with fee-related phrasing. The `details` field carries the SEC's description of each release, and fee-schedule proposals typically include words such as `fee`, `fees`, `pricing`, or `fee schedule` in their titles. The value of `details` should contain one of those fee-related terms. To cover multiple exchanges in a single result set, leave the `sro` field unfiltered and group the resulting filings by `sro` after retrieval; that gives one slice of fee-related releases per venue. ```json { "query": "details:(\"fee schedule\" OR \"fees\" OR \"pricing\")", "from": 0, "size": 50, "sort": [{"issueDate":{"order":"desc"}}] } ``` ### How do I sort SRO filings by file number to group together all amendments under the same proposal? To group every release under the same proposal together, query the `/sro` endpoint and sort by `fileNumber` in ascending order. The SR file number is shared across every release that touches a proposal — initial notice, amendments, request-for-additional-information, response, and approval order all carry the same `fileNumber` — so sorting by it places those releases next to each other in the result list. Use the `sort` parameter with `fileNumber` ascending as the sort key. As a secondary sort, add `issueDate` ascending so that within each `fileNumber` group the releases appear in chronological order from initial filing to final action. ```json { "query": "fileNumber:*", "from": 0, "size": 50, "sort": [{"fileNumber":{"order":"asc"}},{"issueDate":{"order":"asc"}}] } ``` ### How do I track recent rulemaking activity from MSRB (municipal securities) over a chosen period? To track recent rulemaking activity from the Municipal Securities Rulemaking Board, query the `/sro` endpoint and filter on the SRO name combined with a publication-date window. The MSRB is tagged on filings with the value `MSRB` on the `sro` field, and the publication date lives on `issueDate`. The value of `sro` should match `MSRB`, and the value of `issueDate` should fall within the period you care about. Sort by `issueDate` descending to read the activity newest-first; each returned filing carries the SR file number (`fileNumber`), description (`details`), comment deadline (`commentsDue`) when applicable, and document URLs (`urls`). ```json { "query": "sro:\"MSRB\" AND issueDate:[2023-01-01 TO 2023-12-31]", "from": 0, "size": 50, "sort": [{"issueDate":{"order":"desc"}}] } ``` ### How do I find SRO releases that received accelerated approval from the Commission? To find SRO releases that received accelerated approval from the Commission, query the `/sro` endpoint and filter either on the document-links array or on the description. Accelerated-approval releases attach a document whose label on `urls.type` is `Order Granting Accelerated Approval of a Proposed Rule Change`, and the description on the `details` field typically opens with `Order Granting Accelerated Approval`. The value of `urls.type` should equal `Order Granting Accelerated Approval of a Proposed Rule Change`, or the value of `details` should contain `Order Granting Accelerated Approval`. Either filter returns the same kind of approval order, with the order PDF available on `urls.url`. ```json { "query": "details:\"Order Granting Accelerated Approval\"", "from": 0, "size": 50, "sort": [{"issueDate":{"order":"desc"}}] } ``` ### How do I build a daily watch list of new SRO filings as soon as they are published on SEC.gov? To build a daily watch list of newly published SRO filings, poll the `/sro` endpoint with a default sort on `issueDate` descending and a small page size, then deduplicate against release numbers you have already seen. New filings become searchable within roughly 300 milliseconds of publication on sec.gov, so a poll interval on the order of a minute is enough to catch every new release shortly after it appears. Set the page size (`size`) to a small value such as `25` or `50`, keep the default sort order, and on each poll iterate through the response array until you reach a `releaseNumber` already stored from a previous poll. Everything above that watermark is new; record each new release together with its `issueDate`, `fileNumber`, `sro`, `details`, and `urls`. ```json { "query": "releaseNumber:*", "from": 0, "size": 25, "sort": [{"issueDate":{"order":"desc"}}] } ``` ### How do I find rule filings that establish or extend a pilot program at an exchange? To find rule filings that establish or extend a pilot program at an exchange, search the `/sro` endpoint on the `details` field for pilot-program phrasing. The SEC consistently names pilot programs in the release description, both when a program is first set up — for example `Order Approving Proposed Rule Change as Modified by Amendment No. 2 Thereto To Establish a Pilot Program for NASDAQ Basic Data Feeds` — and when an existing program is extended, for example `Notice of Filing and Immediate Effectiveness of a Proposed Rule Change To Extend a Pilot Program Related to Rule 11890, Entitled "Clearly Erroneous Transactions"`. The value of `details` should contain `Pilot Program`. To separate brand-new programs from extensions of existing ones, add a secondary text filter — `details` should contain `Establish a Pilot Program` for initial pilots, or `Extend a Pilot Program` for extensions. Each match returns the full filing record with `releaseNumber`, `issueDate`, `sro`, `fileNumber`, and `urls`, and pilots tied to the same proposal share an `fileNumber` so the establishment and subsequent extensions can be grouped after retrieval. ```json { "query": "details:\"Establish a Pilot Program\"", "from": 0, "size": 50, "sort": [{"issueDate":{"order":"desc"}}] } ``` ## References - [SEC SRO Rule Filings](https://www.sec.gov/rules/sro.shtml) - [SEC SRO - How to Submit Comments](https://www.sec.gov/regulatory-actions/how-to-submit-comments) ### Research Papers - [Self-regulation and governmental oversight: a theoretical and experimental study (2021). Journal of Regulatory Economics](https://link.springer.com/article/10.1007/s11149-020-09421-0) - [Does self-regulation work? Experimental evidence of the reputational incentives of Self-Regulatory Organizations (2015). Applied Economics](https://www.tandfonline.com/doi/full/10.1080/00036846.2015.1030567) - [Self-Regulation in Securities Markets (2011). World Bank Policy Research Working Paper](https://ssrn.com/abstract=1747445) - [Self-Regulation and government oversight (2005). The Review of Economic Studies](https://academic.oup.com/restud/article-abstract/72/3/687/1553214?redirectedFrom=fulltext&login=false) - [Self-Regulation, Innovation, and the Financial Industry (2003). Journal of Regulatory Economics](https://link.springer.com/article/10.1023/A:1021858812744)