Form X-17A-5 API - FOCUS Reports

The Form X-17A-5 API - FOCUS Reports filters and retrieves Form X-17A-5 filings submitted to the SEC EDGAR database. The API accepts search queries as JSON-formatted payloads and returns matching filings as structured JSON.

Form X-17A-5, commonly referenced as the FOCUS Report (Financial and Operational Combined Uniform Single Report), is filed by SEC-registered broker-dealers and security-based swap dealers under Rule 17a-5 of the Securities Exchange Act of 1934. Broker-dealers submit the form on a monthly, quarterly, and annual cadence to disclose financial condition, net capital computations, and operational data to the SEC and to their designated self-regulatory organization. The annual variant additionally carries the audited financial statements and the independent public accountant's report covering the broker-dealer's most recent fiscal year.

Form X-17A-5 filings include:

  • Reporting entities: Form X-17A-5 filings list the reporting entities associated with the FOCUS report, typically the broker-dealer or security-based swap dealer registrant, with CIK, IRS number, SEC file number, SIC code, and state-of-incorporation details.
  • Registrant identification: The registrant-identification block carries the broker-dealer's legal name, business address, and the contact person designated for the filing.
  • Submission information: Submission-level metadata covers the reporting period, registrant type and sub-type classifications, the material-weakness flag, and any amendment description supplied by the filer.
  • Accountant identification: The accountant-identification block identifies the independent public accountant attached to the FOCUS report, including firm name, accountant classification, and mailing address.
  • Oath and signature: The oath-or-affirmation block records the attestation executed by a registrant officer under Rule 17a-5, capturing signer name, title, signature date, notarization flag, and any optional exception explanation.
Example of Form X-17A-5 API - FOCUS Reports response in JSON Format
1 {
2 "id": "2f89918f3badf6faecb1f53b7ea7406a",
3 "formType": "X-17A-5",
4 "accessionNo": "0000068136-20-000004",
5 "filedAt": "2020-03-02T13:46:03-05:00",
6 "periodOfReport": "2019-12-31",
7 "entities": [
8 {
9 "fiscalYearEnd": "1231",
10 "stateOfIncorporation": "DE",
11 "act": "34",
12 "cik": "68136",
13 "fileNo": "008-15869",
14 "irsNo": "132655998",
15 "companyName": "MORGAN STANLEY & CO. LLC (Filer)",
16 "type": "X-17A-5",
17 "filmNo": "20675943"
18 }
19 ],
20 "submissionInformation": {
21 "periodBegin": "01-01-2019",
22 "periodEnd": "12-31-2019",
23 "materialWeakness": "N"
24 },
25 "registrantIdentification": {
26 "brokerDealerName": "MORGAN STANLEY & CO. LLC",
27 "businessAddress": {
28 "street1": "1585 BROADWAY",
29 "city": "NEW YORK",
30 "stateOrCountry": "NY",
31 "zipCode": "10036-8293"
32 },
33 "contactPersonName": "Gary Lynn",
34 "contactPersonPhoneNumber": "212-276-4914"
35 },
36 "accountantIdentification": {
37 "accountantName": "Deloitte & Touche LLP",
38 "accountantAddress": {
39 "street1": "30 Rockefeller Plaza",
40 "city": "New York",
41 "stateOrCountry": "NY",
42 "zipCode": "10112-0015"
43 },
44 "accountantType": "Certified Public Accountant"
45 },
46 "oathSignature": {
47 "signPersonName": "Gary Lynn",
48 "entityName": "MORGAN STANLEY & CO. LLC",
49 "signDate": "12-31-2019",
50 "signature": "Gary Lynn",
51 "oathTitle": "Managing Director",
52 "confirmNotarizedFlag": "Y"
53 }
54 }

Dataset size:
More than 16,500 Form X-17A-5 filings originally filed in XML format since January 2016 to present.
Data update frequency:
New filings are indexed and searchable within 300 milliseconds of being published on EDGAR.
Survivorship bias free:
Yes. The dataset includes all X-17A-5 filings, covering listed and delisted companies.

API Endpoint

Form X-17A-5 API - FOCUS Reports Search API

The Form X-17A-5 API - FOCUS Reports Search API allows searching and filtering all X-17A-5 filings from 2016 to present. The API accepts search queries as JSON formatted payload and returns the matching X-17A-5 filings in JSON format. The API endpoint is:

https://api.sec-api.io/form-x-17a-5

Supported HTTP methods: POST

Request and response content type: JSON

Form X-17A-5 API - FOCUS Reports Bulk Dataset Download

The complete set of Form X-17A-5 filings is available for bulk download as compressed JSONL files. Each line in a .jsonl.gz file is the full content of a single filing serialized as structured JSON. The bulk dataset is partitioned by year and month using the filename format YYYY-MM.jsonl.gz.

New FOCUS report filings are appended to the bulk dataset daily between 1:00 AM and 4:00 AM ET.

An accompanying index.json file lists metadata for every .jsonl.gz file in the bulk dataset. Each entry exposes three fields: key, updatedAt, and size.

  • key (string) - The file path, e.g. 2025/2025-03.jsonl.gz.
  • updatedAt (date) - The last update timestamp, e.g. 2025-04-03T14:06:34.000Z.
  • size (integer) - The file size in bytes, e.g. 106764954.

The index.json file supports programmatic access and automation, letting consumers detect updates and manage downloads at scale.

EndpointDescriptionHTTP MethodResponse Format
/bulk/form-x-17a-5/YEAR/YEAR-MONTH.jsonl.gzGzip-compressed JSONL file containing all X-17A-5 filings for the specified year and month.GETjsonl.gz
/bulk/form-x-17a-5/index.jsonJSON file containing the paths, file update times and file sizes of all jsonl.gz files of all X-17A-5 data files.GETjson

Bulk Download Endpoint Examples

  • https://api.sec-api.io/bulk/form-x-17a-5/2025/2025-02.jsonl.gz
  • https://api.sec-api.io/bulk/form-x-17a-5/index.json

Authentication

To authenticate API requests, use the API key displayed in your user profile. Utilize the API key in one of two ways. Choose the method that best fits your use case:

  • Authorization Header: Set the API key as an Authorization header. For instance, before sending a POST request to https://api.sec-api.io/form-x-17a-5, ensure the header is set as follows: Authorization: YOUR_API_KEY. Do not include any prefix like Bearer.
  • Query Parameter: Alternatively, append your API key directly to the URL as a query parameter. For example, when making POST requests, use the URL https://api.sec-api.io/form-x-17a-5?token=YOUR_API_KEY instead of the base endpoint.

Request Structure

The following request parameters are supported:

  • query (string) - The search criteria in the format field:value defining the field to search in and the value to search for in this field. The search expression is written in Lucene syntax and supports AND and OR operators. Examples: cik:4568 or filedAt:[2019-01-01 TO 2022-12-31].
  • from (integer) - Pagination control to specify the starting position of the results. Max: 10000. Default: 0.
  • size (integer) - The number of Form X-17A-5 FOCUS report filings to be returned in one response. Default: 50. Max: 50.
  • sort (array) - Specifies the field by which results should be sorted. By default, results are sorted by filedAt in descending order, starting with the most recent filings: [{ "filedAt": { "order": "desc" } }]

Request Examples

Return the two most recent Form X-17A-5 filings for the broker-dealer with CIK 68136.

Open in Data Browser

Retrieve every FOCUS report associated with SEC file number 008-15869, sorted by filing date in descending order.

Open in Data Browser

List the first five Form X-17A-5 filings submitted to EDGAR during March 2020, sorted by filing date in ascending order.

Open in Data Browser

Return the ten most recent FOCUS reports where the broker-dealer disclosed a material weakness in internal control over financial reporting.

Open in Data Browser

Response Structure

When the API locates matches within the Form X-17A-5 API - FOCUS Reports database, it returns a JSON response including two fields: total and data. The value field inside the total object indicates the total number of X-17A-5 filings that match the search criteria, while the data field contains an array of X-17A-5 filing objects that match the query. The maximum number of objects inside the data array is determined by the size and limited to 50. Each X-17A-5 filing object comprises the following fields:

  • id (string) - System-internal unique identifier of the filing record.
  • formType (string) - Form type assigned to the Form X-17A-5 FOCUS report submission, either X-17A-5 for the original filing or X-17A-5/A for an amendment.
  • accessionNo (string) - Unique SEC EDGAR accession number of the FOCUS report submission, e.g. 0000068136-20-000004.
  • effectivenessDate (date) - Date on which the Form X-17A-5 filing became effective on EDGAR, formatted YYYY-MM-DD, e.g. 2020-03-02.
  • filedAt (date) - Timestamp when the FOCUS report was accepted by SEC EDGAR, e.g. 2020-03-02T13:46:03-05:00.
  • periodOfReport (date) - Reporting period covered by the Form X-17A-5 filing, formatted YYYY-MM-DD, e.g. 2019-12-31.
  • entities (array of object) - Array of entities associated with the Form X-17A-5 filing, typically the broker-dealer or security-based swap dealer registrant filing under Rule 17a-5.
    • companyName (string) - Legal name of the reporting entity as registered with the SEC, including the EDGAR role suffix, e.g. MORGAN STANLEY & CO. LLC (Filer).
    • cik (string) - Central Index Key (CIK) of the reporting entity, zero-padded to ten digits, e.g. 0000068136.
    • irsNo (string) - IRS Employer Identification Number (EIN) of the reporting entity, e.g. 132655998.
    • stateOfIncorporation (string) - Two-letter U.S. state or country code where the entity is legally incorporated, e.g. DE for Delaware.
    • fiscalYearEnd (string) - Fiscal year-end of the reporting entity as a four-digit month-day, e.g. 1231 for December 31.
    • type (string) - Filing type recorded for the entity on this submission, e.g. X-17A-5 or X-17A-5/A.
    • act (string) - Regulatory act under which the entity files, e.g. 34 for the Securities Exchange Act of 1934.
    • fileNo (string) - SEC file number tracking the broker-dealer registrant across filings, e.g. 008-15869.
    • filmNo (string) - Film number assigned by the SEC to uniquely identify this specific FOCUS report submission, e.g. 20675943.
    • sic (string) - Standard Industrial Classification (SIC) code assigned to the entity, e.g. 6162 for Mortgage Bankers and Loan Correspondents.
    • tickers (string) - Stock ticker symbol associated with the entity when available, e.g. MS; typically empty for non-public broker-dealer filers.
  • accountantIdentification (object) - Identification of the independent public accountant whose report accompanies the Form X-17A-5 filing under Rule 17a-5.
    • accountantAddress (object) - Mailing address of the independent public accountant identified on the FOCUS report.
      • city (string) - City of the accountant's office address, e.g. New York.
      • stateOrCountry (string) - Two-letter U.S. state or country code of the accountant's office, e.g. NY.
      • street1 (string) - First line of the accountant's street address, e.g. 30 Rockefeller Plaza.
      • street2 (string) - Second line of the accountant's street address, e.g. a suite or floor designation like Suite 2000.
      • zipCode (string) - Postal code of the accountant's office address, e.g. 10017.
    • accountantName (string) - Name of the independent public accountant or audit firm, e.g. Deloitte & Touche LLP.
    • accountantType (string) - Classification of the accountant, one of Certified Public Accountant or Certified Public Accountant not resident in United States or any of its possessions.
  • oathSignature (object) - Oath or affirmation block executed by an officer of the broker-dealer attesting to the truth and correctness of the FOCUS report, as required under Rule 17a-5.
    • confirmNotarizedFlag (string) - Single-character flag indicating whether the oath was notarized, either Y or N.
    • entityName (string) - Name of the entity on whose behalf the oath is given, e.g. MORGAN STANLEY & CO. LLC.
    • explanation (string) - Optional free-text explanation accompanying the oath, often used to note exceptions or report that there are none, e.g. None.
    • oathTitle (string) - Title of the officer executing the oath, e.g. Chief Financial Officer or Managing Director.
    • signDate (string) - Date on which the oath was signed, formatted MM-DD-YYYY, e.g. 12-31-2019.
    • signPersonName (string) - Name of the officer who signed the oath, e.g. Gary Lynn.
    • signature (string) - Typed signature string captured for the oath, typically matching signPersonName.
  • registrantIdentification (object) - Identification of the broker-dealer or security-based swap dealer registrant filing the FOCUS report.
    • brokerDealerName (string) - Legal name of the broker-dealer registrant filing the FOCUS report, e.g. MORGAN STANLEY & CO. LLC.
    • businessAddress (object) - Primary business address of the broker-dealer registrant.
      • city (string) - City of the registrant's business address, e.g. NEW YORK.
      • stateOrCountry (string) - Two-letter U.S. state or country code of the registrant's business address, e.g. NY.
      • street1 (string) - First line of the registrant's business street address, e.g. 1585 BROADWAY.
      • street2 (string) - Second line of the registrant's business street address, e.g. a floor or suite designation like 26TH FLOOR.
      • zipCode (string) - Postal code of the registrant's business address, e.g. 10017.
    • contactPersonName (string) - Name of the contact person at the registrant for questions about the FOCUS report, e.g. Gary Lynn.
    • contactPersonPhoneNumber (string) - Phone number of the contact person at the registrant, e.g. 212-276-4914.
  • submissionInformation (object) - Submission-level metadata describing the FOCUS report period, registrant classification, and any amendment or material weakness disclosures.
    • amendmentDescription (string) - Free-text description of the amendment when the filing is an X-17A-5/A, explaining what was changed relative to the prior submission.
    • materialWeakness (string) - Single-character flag indicating whether the accountant identified a material weakness, either Y or N.
    • periodBegin (string) - Start date of the reporting period covered by the FOCUS report, formatted MM-DD-YYYY, e.g. 01-01-2019.
    • periodEnd (string) - End date of the reporting period covered by the FOCUS report, formatted MM-DD-YYYY, e.g. 12-31-2019.
    • subTypeOfBDRegistrant (string) - Sub-classification of the broker-dealer registrant when applicable, e.g. OTC derivatives dealer.
    • subTypeOfRegistrant (string) - Generic sub-classification of the registrant when not split into BD/SD-specific fields, e.g. OTC derivatives dealer.
    • subTypeOfSDRegistrant (string) - Sub-classification of the security-based swap dealer registrant when applicable, e.g. Filing pursuant to a Commission substituted compliance order.
    • typeOfRegistrant (object) - Classification of the registrant filing the FOCUS report, split between broker-dealer and security-based swap dealer designations.
      • typeOfBDRegistrant (string) - Broker-dealer registrant type, typically Broker-dealer.
      • typeOfSDRegistrant (string) - Security-based swap dealer registrant type, typically Security-based swap dealer.

Response Example

JSON
1 {
2 "total": {
3 "value": 10000,
4 "relation": "gte"
5 },
6 "data": [
7 {
8 "id": "2f89918f3badf6faecb1f53b7ea7406a",
9 "formType": "X-17A-5",
10 "accessionNo": "0000068136-20-000004",
11 "filedAt": "2020-03-02T13:46:03-05:00",
12 "periodOfReport": "2019-12-31",
13 "entities": [
14 {
15 "fiscalYearEnd": "1231",
16 "stateOfIncorporation": "DE",
17 "act": "34",
18 "cik": "68136",
19 "fileNo": "008-15869",
20 "irsNo": "132655998",
21 "companyName": "MORGAN STANLEY & CO. LLC (Filer)",
22 "type": "X-17A-5",
23 "filmNo": "20675943"
24 }
25 ],
26 "submissionInformation": {
27 "periodBegin": "01-01-2019",
28 "periodEnd": "12-31-2019",
29 "materialWeakness": "N"
30 },
31 "registrantIdentification": {
32 "brokerDealerName": "MORGAN STANLEY & CO. LLC",
33 "businessAddress": {
34 "street1": "1585 BROADWAY",
35 "city": "NEW YORK",
36 "stateOrCountry": "NY",
37 "zipCode": "10036-8293"
38 },
39 "contactPersonName": "Gary Lynn",
40 "contactPersonPhoneNumber": "212-276-4914"
41 },
42 "accountantIdentification": {
43 "accountantName": "Deloitte & Touche LLP",
44 "accountantAddress": {
45 "street1": "30 Rockefeller Plaza",
46 "city": "New York",
47 "stateOrCountry": "NY",
48 "zipCode": "10112-0015"
49 },
50 "accountantType": "Certified Public Accountant"
51 },
52 "oathSignature": {
53 "signPersonName": "Gary Lynn",
54 "entityName": "MORGAN STANLEY & CO. LLC",
55 "signDate": "12-31-2019",
56 "signature": "Gary Lynn",
57 "oathTitle": "Managing Director",
58 "confirmNotarizedFlag": "Y"
59 }
60 },
61 // cut off for brevity
62 ]
63 }
64

Response Structure of Bulk Download Endpoints

/bulk/form-x-17a-5/YEAR/YEAR-MONTH.jsonl.gz

Decompressed JSONL Example
1 {"accessionNo":"0000068136-20-000004","formType":"X-17A-5","filedAt":"2020-03-02T13:46:03-05:00","submissionInformation": "{...}","registrantIdentification": "{...}","accountantIdentification": "{...}","oathSignature": "{...}"}
2 { ... }
3 { ... }

/bulk/form-x-17a-5/index.json

index.json Example
1 [
2 {
3 "key": "2026/2026-04.jsonl.gz",
4 "updatedAt": "2026-05-01T03:24:11.000Z",
5 "size": 2150000
6 },
7 {
8 "key": "2026/2026-03.jsonl.gz",
9 "updatedAt": "2026-04-01T03:18:42.000Z",
10 "size": 3480000
11 },
12 {
13 "key": "2026/2026-02.jsonl.gz",
14 "updatedAt": "2026-03-01T03:21:09.000Z",
15 "size": 8920000
16 },
17 {
18 "key": "2026/2026-01.jsonl.gz",
19 "updatedAt": "2026-02-01T03:15:33.000Z",
20 "size": 142800000
21 },
22 // ... more files
23 ]

Rule 17a-5 Key Aspects

Rule 17a-5 under the Securities Exchange Act of 1934 requires every SEC-registered broker-dealer to file periodic reports of financial and operational condition on Form X-17A-5, known as the FOCUS Report (Financial and Operational Combined Uniform Single Report). The SEC adopted the rule in 1975 to consolidate fragmented broker-dealer reporting into a single uniform filing used by the SEC, self-regulatory organizations, and the Securities Investor Protection Corporation. Rule 17a-5 has been amended multiple times, most notably in 2013 to strengthen audit, custody, and compliance reporting following the 2008 financial crisis.

Provisions of Rule 17a-5

  • Periodic FOCUS filings:
    • Rule 17a-5 requires SEC-registered broker-dealers to submit Form X-17A-5 on monthly, quarterly, and annual schedules depending on firm size, customer activity, and SRO designation.
    • Part I captures a monthly snapshot of capital; Part II and Part IIA capture quarterly statements of financial condition, income, and net capital computations.
  • Annual audited reports:
    • Every broker-dealer must file an annual audited report on Form X-17A-5 prepared by a PCAOB-registered independent public accountant.
    • The annual filing includes a statement of financial condition, supporting schedules, and either a compliance report or an exemption report depending on whether the broker-dealer carries customer funds or securities.
  • Net capital and customer protection disclosures:
    • Rule 17a-5 requires broker-dealers to disclose computations under Rule 15c3-1 (net capital) and Rule 15c3-3 (customer protection and reserve requirements) inside the FOCUS Report.
    • The rule also requires notice filings whenever a broker-dealer's net capital, aggregate indebtedness ratio, or books and records fall below regulatory thresholds.
  • Applies to:
    • All broker-dealers registered with the SEC under Section 15(b) of the Securities Exchange Act of 1934.
    • Carrying and clearing firms that hold customer funds or securities, which file the most comprehensive variants of Form X-17A-5.
    • Introducing firms and other non-carrying broker-dealers, which file abbreviated Part IIA quarterly reports.
    • Members of self-regulatory organizations such as FINRA and the national securities exchanges, which use FOCUS data for member surveillance.

Rationale for Rule 17a-5

  • Rule 17a-5 gives the SEC, FINRA, and other self-regulatory organizations a uniform view of broker-dealer financial condition, supporting early detection of capital deficiencies and operational weaknesses.
  • The rule replaced a fragmented set of legacy broker-dealer reporting requirements with a single FOCUS Report, reducing duplicative filings across regulators and standardizing the data definitions used in supervisory analysis.
  • The 2013 amendments aligned broker-dealer audits with PCAOB standards and added the compliance and exemption reports, strengthening protections for customer assets after deficiencies exposed during the 2008 financial crisis.

Form X-17A-5 Key Terms

Form X-17A-5 sits inside the broker-dealer supervisory framework, and several terms used throughout the filing are specific to that regulatory context. The glossary below defines the concepts that appear most often in Form X-17A-5 records and in Rule 17a-5, mapping field names to their regulatory meaning for engineers consuming the dataset.

  • FOCUS Report: FOCUS stands for Financial and Operational Combined Uniform Single Report, the uniform financial report that broker-dealers file with the SEC on Form X-17A-5. The FOCUS Report consolidates capital, balance sheet, income, customer protection, and operational data into a single filing consumed by the SEC, FINRA, and other self-regulatory organizations.
  • Broker-dealer: A broker-dealer is a person or firm registered with the SEC under Section 15 of the Securities Exchange Act of 1934 that effects securities transactions for the account of others (broker) or for its own account (dealer). Broker-dealers are the only filers of Form X-17A-5.
  • Net capital: Net capital is a liquidity-based measure of a broker-dealer's regulatory capital, computed under SEC Rule 15c3-1 by adjusting net worth for non-allowable assets and applying haircuts to securities positions. Form X-17A-5 reports both the broker-dealer's computed net capital and the minimum net capital required under Rule 15c3-1.
  • Aggregate indebtedness: Aggregate indebtedness is the total liabilities of a broker-dealer included in the net capital computation under SEC Rule 15c3-1. The ratio of aggregate indebtedness to net capital is one of the financial responsibility metrics disclosed inside Form X-17A-5.
  • Customer Reserve (Rule 15c3-3): SEC Rule 15c3-3 requires broker-dealers that carry customer accounts to segregate customer funds and securities and to maintain a special reserve bank account. Form X-17A-5 includes the Rule 15c3-3 reserve computation and the related possession-or-control disclosures.
  • Self-Regulatory Organization (SRO): A self-regulatory organization is a securities industry body, such as FINRA or a national securities exchange, registered with the SEC and exercising front-line supervisory authority over its members. Self-regulatory organizations consume Form X-17A-5 filings to monitor member broker-dealers.
  • Securities Investor Protection Corporation (SIPC): The Securities Investor Protection Corporation is a non-profit member corporation created by the Securities Investor Protection Act of 1970 that provides limited insurance for customers of failed broker-dealers. Form X-17A-5 includes SIPC membership and assessment disclosures.
  • Carrying broker-dealer: A carrying broker-dealer is a broker-dealer that holds customer funds or securities and clears trades for its own customers or for introducing firms. Carrying broker-dealers file the most comprehensive variants of Form X-17A-5, including the Rule 15c3-3 customer reserve computation.
  • Introducing broker-dealer: An introducing broker-dealer is a broker-dealer that solicits customer orders but does not itself hold customer funds or securities, instead routing accounts to a carrying firm under a clearing agreement. Introducing broker-dealers file the abbreviated Part IIA variant of Form X-17A-5.

FAQ

Common questions about querying the Form X-17A-5 API - FOCUS Reports, the response shape, and the bulk archives.

How do I pull the most recent FOCUS report filed by a specific broker-dealer when I know its CIK?

To pull the most recent FOCUS report for a broker-dealer whose CIK you already have, search the /form-x-17a-5 endpoint and filter on the reporting entity's CIK (entities.cik). For example, to retrieve filings made by Morgan Stanley & Co. LLC, the value of entities.cik should be 68136.

Order the results by the SEC acceptance timestamp (filedAt) in descending order so the newest filing comes first, and limit the response to a single record by setting size to 1. The returned filing carries the SEC accession number (accessionNo), the reporting period covered (periodOfReport), the form type (formType, either X-17A-5 for an original filing or X-17A-5/A for an amendment), and the full registrant, accountant, oath, and submission-information blocks.

Open in Data Browser

What is the latest financial condition report filed by Morgan Stanley & Co. with the SEC?

Morgan Stanley & Co. LLC files its FOCUS reports under CIK 68136, so the latest financial condition report can be retrieved from the /form-x-17a-5 endpoint by filtering on the reporting entity (entities.cik should be 68136), sorting by SEC acceptance timestamp (filedAt) in descending order, and limiting the response to a single record.

The response carries the broker-dealer name (registrantIdentification.brokerDealerName), the reporting period the filing covers (periodOfReport and submissionInformation.periodEnd), the form type (formType, with X-17A-5/A indicating an amendment), the accession number on EDGAR (accessionNo), and the independent auditor that signed off on the report (accountantIdentification.accountantName).

Open in Data Browser

How do I retrieve every FOCUS report tied to a particular SEC broker-dealer file number?

Each broker-dealer is tracked across all of its filings by a stable SEC file number that appears on the reporting entity (entities.fileNo), formatted like 008-15869 for Morgan Stanley & Co. LLC. To retrieve every FOCUS report attached to that file number, search the /form-x-17a-5 endpoint and filter on entities.fileNo; the value should be the full file number including the 008- prefix.

Sort the results by SEC acceptance timestamp (filedAt) in descending order to walk back from the most recent filing, and page through results using from and size since the per-page maximum is 50. Each returned filing exposes the form type (formType), the reporting period (periodOfReport), and the submission-information block (submissionInformation).

Open in Data Browser

How do I list all broker-dealer financial reports filed in a given calendar month?

To list every broker-dealer FOCUS report that hit EDGAR during a specific calendar month, search the /form-x-17a-5 endpoint and filter on the SEC acceptance timestamp (filedAt); for March 2020, for example, the value of filedAt should fall between 2020-03-01 and 2020-03-31.

Results can be sorted by filedAt in either ascending order to walk forward through the month or descending order to start from the most recent submission. Because the endpoint returns at most 50 records per response, page through the full month by incrementing from in steps of size. Each entry exposes the accession number (accessionNo), the form type (formType, with X-17A-5/A flagging amendments), the reporting period (periodOfReport), and the broker-dealer name (registrantIdentification.brokerDealerName).

Open in Data Browser

How can I look up a specific FOCUS report when I only have its EDGAR accession number?

Every FOCUS report is uniquely identified on EDGAR by its accession number (accessionNo), formatted like 0000068136-20-000004. To look up a single filing when the accession number is the only thing you have, search the /form-x-17a-5 endpoint and filter on accessionNo with the exact value, including the leading zeros and dashes.

The response contains a single matching filing object with the form type (formType), the SEC acceptance timestamp (filedAt), the reporting period (periodOfReport), the reporting entity (entities), and the registrant, accountant, oath, and submission-information blocks.

Open in Data Browser

How do I find broker-dealers that disclosed a material weakness in their internal control over financial reporting?

FOCUS reports carry a single-character flag indicating whether the independent accountant identified a material weakness in internal control over financial reporting (submissionInformation.materialWeakness, either Y or N). To find broker-dealers that disclosed a material weakness, search the /form-x-17a-5 endpoint and filter so the value of submissionInformation.materialWeakness is Y.

Sorting by SEC acceptance timestamp (filedAt) in descending order surfaces the most recent disclosures first. Each matching filing exposes the broker-dealer name (registrantIdentification.brokerDealerName), the reporting entity's CIK (entities.cik), the reporting period covered (periodOfReport), and the auditor of record (accountantIdentification.accountantName).

Open in Data Browser

How do I screen for amended FOCUS reports and pair them with the corresponding original filing?

Amendments to FOCUS reports are stored as a distinct form type (formType, where the value X-17A-5/A denotes an amended filing and X-17A-5 denotes the original). To screen for amendments, search the /form-x-17a-5 endpoint and filter so the value of formType is X-17A-5/A.

For each amendment, the original filing it supersedes is the prior X-17A-5 from the same broker-dealer covering the same reporting period. Pair them with a second call to /form-x-17a-5 where the value of entities.cik matches the amendment's reporting entity, the value of periodOfReport matches the amendment's reporting period, and the value of formType is X-17A-5. The amendment may also carry a free-text description of what changed (submissionInformation.amendmentDescription).

Open in Data Browser

Which broker-dealer FOCUS filings explain in their own words what was changed when they amended a prior submission?

When a broker-dealer files an amended FOCUS report (formType is X-17A-5/A), it may include a free-text description of what was changed relative to the prior submission (submissionInformation.amendmentDescription). To surface only those amendments that carry the filer's own explanation, search the /form-x-17a-5 endpoint and filter so the value of formType is X-17A-5/A and the field submissionInformation.amendmentDescription is present.

Each matching record exposes the broker-dealer name (registrantIdentification.brokerDealerName), the reporting period (periodOfReport), the SEC acceptance timestamp (filedAt), and the amendment description itself, which typically reads as a short narrative summarizing the corrected line items or restated figures.

Open in Data Browser

How do I find all broker-dealers headquartered in a particular U.S. state?

The primary business address of each broker-dealer is recorded on the registrant-identification block, and the two-letter state code lives under the business address (registrantIdentification.businessAddress.stateOrCountry). To find broker-dealers headquartered in New York, for example, search the /form-x-17a-5 endpoint and filter so the value of registrantIdentification.businessAddress.stateOrCountry is NY.

Since a broker-dealer files multiple FOCUS reports over time, deduplicate the result set by the reporting entity's CIK (entities.cik) to get a list of distinct firms, or sort by SEC acceptance timestamp (filedAt) in descending order and keep only the most recent filing per CIK to capture each firm's current address.

Open in Data Browser

How do I find broker-dealers incorporated in Delaware but doing business out of another state?

State of legal incorporation and state of business operations are stored on separate fields. The state where the entity is legally incorporated lives on the reporting entity (entities.stateOfIncorporation, a two-letter code such as DE for Delaware), while the headquarters address is on the registrant-identification block (registrantIdentification.businessAddress.stateOrCountry).

To find broker-dealers incorporated in Delaware but headquartered elsewhere, search the /form-x-17a-5 endpoint and filter so the value of entities.stateOfIncorporation is DE and the value of registrantIdentification.businessAddress.stateOrCountry is the other state of interest, for example NY for Delaware-incorporated firms operating out of New York. Each matching filing exposes the broker-dealer name (registrantIdentification.brokerDealerName), the reporting entity's CIK (entities.cik), and both addresses.

Open in Data Browser

How can I see every annual FOCUS report covering fiscal year 2024 across the entire industry?

The reporting period of a FOCUS report is exposed as a YYYY-MM-DD date (periodOfReport), and the submission-information block carries the same period as start- and end-date strings (submissionInformation.periodBegin and submissionInformation.periodEnd, formatted MM-DD-YYYY). To capture every annual report covering calendar fiscal year 2024, search the /form-x-17a-5 endpoint and filter so the value of periodOfReport is 2024-12-31.

Broker-dealers with non-December fiscal year-ends will not match that exact date, so to also pick up annual reports ending in other months of 2024, filter so the value of periodOfReport falls between 2024-01-01 and 2024-12-31 and cross-check against the entity's fiscal year-end (entities.fiscalYearEnd, a four-digit MMDD such as 1231 or 0331). Page through the full set with from and size since the per-page maximum is 50.

Open in Data Browser

How do I pull every audit-period FOCUS report a single broker-dealer has filed and order them by reporting period?

To pull every FOCUS report a single broker-dealer has filed and order them by the reporting period rather than the filing date, search the /form-x-17a-5 endpoint and filter on the reporting entity's CIK (entities.cik). Then sort the results by reporting period (periodOfReport) in descending order to start from the most recent fiscal year covered, or in ascending order to walk forward chronologically.

Each returned filing exposes the form type (formType, with X-17A-5/A flagging amendments to a given period), the period start and end strings on the submission-information block (submissionInformation.periodBegin and submissionInformation.periodEnd), and the accountant of record (accountantIdentification.accountantName). Page through the full set with from and size since the per-page maximum is 50.

Open in Data Browser

How do I find FOCUS reports audited by a specific accounting firm?

The independent public accountant attached to each FOCUS report is named on the accountant-identification block (accountantIdentification.accountantName), with values such as Deloitte & Touche LLP or CohnReznick LLP. To find every FOCUS report audited by a specific firm, search the /form-x-17a-5 endpoint and filter on accountantIdentification.accountantName with the exact firm name as a quoted phrase.

Sort the results by SEC acceptance timestamp (filedAt) in descending order to start from the most recent engagement, and inspect the broker-dealer name (registrantIdentification.brokerDealerName) and reporting period (periodOfReport) on each match to see which firms the auditor signed for and over what fiscal years.

Open in Data Browser

How can I identify broker-dealers whose independent auditor is located outside the United States?

The classification of the auditor on each FOCUS report is captured on the accountant-identification block (accountantIdentification.accountantType), and it takes one of two values: Certified Public Accountant for U.S.-resident accountants or Certified Public Accountant not resident in United States or any of its possessions for non-U.S.-resident accountants. To identify broker-dealers whose independent auditor is non-resident, search the /form-x-17a-5 endpoint and filter so the value of accountantIdentification.accountantType is the non-resident classification.

Each matching filing exposes the auditor's firm name (accountantIdentification.accountantName), the auditor's office address (accountantIdentification.accountantAddress, with the country in accountantIdentification.accountantAddress.stateOrCountry), the broker-dealer name (registrantIdentification.brokerDealerName), and the reporting period (periodOfReport).

Open in Data Browser

How do I rank the audit firms that sign off on the most broker-dealer FOCUS reports each year?

To rank audit firms by the number of FOCUS reports they sign each year, search the /form-x-17a-5 endpoint with a filter on the SEC acceptance timestamp (filedAt) restricted to one calendar year, page through the full result set with from and size, and group the returned records by the audit firm's name (accountantIdentification.accountantName). The count per firm gives you the ranking for that year.

For a clean year-over-year leaderboard, repeat the procedure once per year and join on accountantIdentification.accountantName. Each filing also exposes the reporting period (periodOfReport) and the broker-dealer (entities.cik, registrantIdentification.brokerDealerName), so the same set of records can be further sliced by client size or audit-period mix.

Open in Data Browser

How do I find FOCUS reports signed by a specific officer or executive?

Every FOCUS report carries an oath-or-affirmation block executed by an officer of the broker-dealer (oathSignature). The signer's name is recorded on the signer-name field (oathSignature.signPersonName), with values such as Gary Lynn or Sam Masucci. To find reports signed by a specific person, search the /form-x-17a-5 endpoint and filter on oathSignature.signPersonName with the exact name as a quoted phrase.

Each matching filing exposes the signer's title at the time of signing (oathSignature.oathTitle), the entity attested to (oathSignature.entityName), the date the oath was signed (oathSignature.signDate, formatted MM-DD-YYYY), and whether the oath was notarized (oathSignature.confirmNotarizedFlag).

Open in Data Browser

How do I filter for filings where the broker-dealer officer signed in a particular role, like CFO or CEO?

The title under which an officer executed the oath is recorded on the oath block (oathSignature.oathTitle), with free-text values such as Chief Financial Officer, CEO, Managing Director, or CFO/FINOP. To filter for filings signed in a particular role, search the /form-x-17a-5 endpoint and filter on oathSignature.oathTitle with the exact title as a quoted phrase.

Because the title is free text, the same role can appear under multiple labels — for example, the chief financial officer may sign as Chief Financial Officer on one filing and as CFO on another — so iterate over the variants you care about and union the results. Each matching record exposes the signer's name (oathSignature.signPersonName), the broker-dealer (registrantIdentification.brokerDealerName), and the reporting period (periodOfReport).

Open in Data Browser

How do I find broker-dealer filings where the oath was not notarized?

Each FOCUS report carries a single-character flag indicating whether the oath was notarized (oathSignature.confirmNotarizedFlag, either Y for notarized or N for not notarized). To find filings where the oath was not notarized, search the /form-x-17a-5 endpoint and filter so the value of oathSignature.confirmNotarizedFlag is N.

Each matching record exposes the broker-dealer (registrantIdentification.brokerDealerName), the signer and title (oathSignature.signPersonName and oathSignature.oathTitle), the date of signature (oathSignature.signDate), and any free-text exception note attached to the oath (oathSignature.explanation).

Open in Data Browser

How do I tell whether a broker-dealer is registered as a securities-based swap dealer rather than a regular broker-dealer?

The registrant classification on each FOCUS report is split between a broker-dealer designation and a security-based swap dealer designation on the type-of-registrant object (submissionInformation.typeOfRegistrant). A regular broker-dealer carries the broker-dealer designation (submissionInformation.typeOfRegistrant.typeOfBDRegistrant, typically Broker-dealer), while a security-based swap dealer carries the swap dealer designation (submissionInformation.typeOfRegistrant.typeOfSDRegistrant, typically Security-based swap dealer).

To isolate security-based swap dealer filings, search the /form-x-17a-5 endpoint and filter so the field submissionInformation.typeOfRegistrant.typeOfSDRegistrant is present, or so its value is Security-based swap dealer. To isolate regular broker-dealer filings, filter so the value of submissionInformation.typeOfRegistrant.typeOfBDRegistrant is Broker-dealer.

Open in Data Browser

How do I find specialized broker-dealer categories such as OTC derivatives dealers in the FOCUS dataset?

Specialized broker-dealer categories are captured on the registrant sub-type fields on the submission-information block (submissionInformation.subTypeOfRegistrant for the generic sub-classification, submissionInformation.subTypeOfBDRegistrant for the broker-dealer sub-type, and submissionInformation.subTypeOfSDRegistrant for the security-based swap dealer sub-type). To find OTC derivatives dealers, for example, search the /form-x-17a-5 endpoint and filter so the value of submissionInformation.subTypeOfRegistrant or submissionInformation.subTypeOfBDRegistrant is OTC derivatives dealer.

Other sub-type values, such as Filing pursuant to a Commission substituted compliance order on the swap dealer sub-type, are filtered the same way. Each matching record exposes the broker-dealer name (registrantIdentification.brokerDealerName), the reporting entity's CIK (entities.cik), and the reporting period (periodOfReport).

Open in Data Browser

How do I find SEC-registered broker-dealers whose fiscal year does not end on December 31?

Each reporting entity on a FOCUS report exposes its fiscal year-end as a four-digit MMDD string on the entity object (entities.fiscalYearEnd), with values such as 1231 for December 31 or 0331 for March 31. To find broker-dealers whose fiscal year does not end on December 31, search the /form-x-17a-5 endpoint and filter so the value of entities.fiscalYearEnd is anything other than 1231.

Deduplicate the result set by the reporting entity's CIK (entities.cik) to get a list of distinct firms, since each broker-dealer files multiple FOCUS reports over time. The reporting period itself (periodOfReport) and the period-end string (submissionInformation.periodEnd) provide a cross-check on the fiscal year used for any given filing.

Open in Data Browser

How do I look up a broker-dealer's most recent contact person and phone number for FOCUS-report inquiries?

The contact person designated by a broker-dealer for FOCUS-report inquiries is recorded on the registrant-identification block (registrantIdentification.contactPersonName), along with a phone number (registrantIdentification.contactPersonPhoneNumber). To look up the most recent contact for a specific firm, search the /form-x-17a-5 endpoint and filter on the reporting entity's CIK (entities.cik), sort by SEC acceptance timestamp (filedAt) in descending order, and limit the response to a single record by setting size to 1.

The returned filing exposes the broker-dealer name (registrantIdentification.brokerDealerName), the contact person (registrantIdentification.contactPersonName), and the contact phone number (registrantIdentification.contactPersonPhoneNumber) as of that filing.

Open in Data Browser

How do I find a broker-dealer when I only have its IRS employer identification number?

Each reporting entity on a FOCUS report carries an IRS Employer Identification Number on the entity object (entities.irsNo), formatted as a digit string such as 132655998 for Morgan Stanley & Co. LLC. To find the broker-dealer behind a given EIN, search the /form-x-17a-5 endpoint and filter on entities.irsNo with the EIN as a digit string with no dashes.

The returned filings expose the reporting entity's CIK (entities.cik), the SEC file number (entities.fileNo), the broker-dealer's legal name (registrantIdentification.brokerDealerName), and the state of incorporation (entities.stateOfIncorporation), giving you the full identity record for the firm.

Open in Data Browser

How do I count how many distinct broker-dealers filed FOCUS reports in a given year?

To count the number of distinct broker-dealers that filed FOCUS reports in a given year, search the /form-x-17a-5 endpoint and filter on the SEC acceptance timestamp (filedAt); the value should fall between January 1 and December 31 of that year. Page through the full result set with from and size since the per-page maximum is 50, and collect the unique values of the reporting entity's CIK (entities.cik) across all returned filings.

The count of distinct entities.cik values is the count of unique broker-dealers that filed at least one FOCUS report that year. The same approach works against the bulk dataset at /bulk/form-x-17a-5/YEAR/YEAR-MONTH.jsonl.gz when the search-endpoint pagination cap of from plus size at 10000 is a concern.

Open in Data Browser

How do I track the change in the number of broker-dealers reporting material weaknesses year-over-year?

To track year-over-year changes in material-weakness disclosures, search the /form-x-17a-5 endpoint once per year. For each year, filter so the value of submissionInformation.materialWeakness is Y and the value of filedAt falls between January 1 and December 31 of that year. Page through the full result set with from and size, and count the unique values of the reporting entity's CIK (entities.cik).

The count per year, joined on entities.cik across years, gives the year-over-year delta and identifies firms that newly disclosed a material weakness, continued to disclose one, or cleared a prior disclosure. For a more granular view, group counts by the audit firm (accountantIdentification.accountantName) or by the broker-dealer's state (registrantIdentification.businessAddress.stateOrCountry).

Open in Data Browser

How do I page through all FOCUS reports for a large broker-dealer that has more than 50 filings?

The /form-x-17a-5 endpoint returns at most 50 records per response, so to walk through every filing for a broker-dealer with more than 50 filings, issue repeated calls that filter on the reporting entity's CIK (entities.cik) and increment the starting offset (from) by the page size (size) on each call. Setting size to 50 and from to 0, then 50, then 100, and so on, paginates through the result set in order of the chosen sort.

Sort by SEC acceptance timestamp (filedAt) in descending order or by reporting period (periodOfReport) in descending order so the order is stable across pages, and stop when a response returns fewer records than the page size. The hard ceiling on the offset is 10000; if a single broker-dealer ever exceeds that depth, narrow the query with an additional filter on filedAt to walk the history in time-bucketed slices.

Open in Data Browser

What is the most efficient way to bulk-download every FOCUS report filed in a given month rather than paginating through the search API?

Instead of paginating the search endpoint, download the full month from the bulk endpoint at /bulk/form-x-17a-5/YEAR/YEAR-MONTH.jsonl.gz, for example /bulk/form-x-17a-5/2025/2025-02.jsonl.gz for February 2025. The response is a gzip-compressed JSONL file with one filing per line, serialized in the same JSON structure returned by the search endpoint.

Each line carries the accession number (accessionNo), the form type (formType), the SEC acceptance timestamp (filedAt), the reporting entity (entities), and the registrant, accountant, oath, and submission-information blocks. Bulk files are appended daily between 1:00 AM and 4:00 AM ET, so a single download captures every FOCUS report filed in that month without paging.

How do I detect when new monthly FOCUS bulk files are available so I can incrementally sync them?

The bulk dataset publishes a manifest at /bulk/form-x-17a-5/index.json that lists every monthly .jsonl.gz file along with three fields per entry: the file path (key, such as 2025/2025-03.jsonl.gz), the last update timestamp (updatedAt), and the file size in bytes (size).

To detect new or updated files, poll the index, compare each entry's updatedAt and size against a locally stored copy of the previous index, and re-download only the entries whose updatedAt is newer or whose size has grown. Because the current month's file is appended daily between 1:00 AM and 4:00 AM ET, polling once per day after that window is sufficient to pick up every new filing.

How do I download the complete historical FOCUS dataset from 2016 to present?

The complete historical FOCUS dataset, covering more than 16,500 filings from January 2016 to the present, is partitioned into one gzip-compressed JSONL file per month at /bulk/form-x-17a-5/YEAR/YEAR-MONTH.jsonl.gz. To download the full history, first fetch the manifest at /bulk/form-x-17a-5/index.json, which lists every monthly file as an entry with a file path (key), a last update timestamp (updatedAt), and a file size in bytes (size).

Then iterate over the entries and fetch each file path from /bulk/form-x-17a-5/. After the initial backfill, keep the local copy current by re-polling the index and re-downloading only the entries whose updatedAt or size has changed since the previous run.

How do I authenticate my requests to the FOCUS report API?

Authentication to the /form-x-17a-5 endpoint uses the API key displayed in your sec-api.io user profile, and the key can be supplied in one of two ways. The first is to set the API key directly as an Authorization header with no Bearer prefix. The second is to append the key as a query parameter to the request URL using ?token=YOUR_API_KEY.

The same two methods authenticate calls to the bulk endpoints at /bulk/form-x-17a-5/YEAR/YEAR-MONTH.jsonl.gz and /bulk/form-x-17a-5/index.json. Choose whichever method fits your client; both authenticate identically against every endpoint on the service.

Open in Data Browser