From 0064d642af7849dec81b97c73e8e55ef8e257f41 Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Mon, 14 Jun 2021 12:46:55 -0400 Subject: [PATCH 01/39] 3.0.0 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 017f8ea..d74b45f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "sec-api", - "version": "2.0.2", + "version": "3.0.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index d988d9b..d581efd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sec-api", - "version": "2.0.2", + "version": "3.0.0", "description": "sec.gov EDGAR API Wrapper", "main": "index.js", "scripts": { From 79577191087eb66b7102e826e54840c15b88dd8a Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Thu, 17 Jun 2021 06:07:43 -0400 Subject: [PATCH 02/39] render API added --- README.md | 43 +++++++++++++++++++++++++++++++++++++++++-- config.js | 3 +++ example.js | 17 +++++++++++++++++ index.js | 27 +++++++++++++++++++++++++++ 4 files changed, 88 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index defd13d..6f01bca 100644 --- a/README.md +++ b/README.md @@ -11,8 +11,7 @@ - Client- and server-side JavaScript supported (Node.js, React, React Native, Angular, Vue, etc.) - Free API key available on [sec-api.io](https://sec-api.io) -The official documentation explains how to use the -query API to filter historical filings: [sec-api.io/docs](https://sec-api.io/docs) +You can find more examples and details here: [sec-api.io/docs](https://sec-api.io/docs) Data source: [sec.gov](https://www.sec.gov/edgar/searchedgar/companysearch.html) @@ -28,6 +27,12 @@ using the API as imported package. Both options are explained below. # Query API +The query API allows you to search and filter all 18 million filings published on SEC EDGAR. + +--- + +The example below returns the most recent 10-Q filings. + ```js const { queryApi } = require('sec-api'); @@ -43,8 +48,16 @@ const query = { const filings = await queryApi.getFilings(rawQuery); ``` +> See the documentation for more details: https://sec-api.io/docs/query-api + # Full-Text Search API +Full-text search allows you to search the full text of all EDGAR filings submitted since 2001. The full text of a filing includes all data in the filing itself as well as all attachments (such as exhibits) to the filing. + +--- + +The example below returns all 8-K and 10-Q filings and their exhibits, filed between 01-01-2021 and 14-06-2021, that include the exact phrase "LPCN 1154". + ```js const { fullTextSearchApi } = require('sec-api'); @@ -60,8 +73,15 @@ const query = { const filings = await fullTextSearchApi.getFilings(rawQuery); ``` +> See the documentation for more details: https://sec-api.io/docs/full-text-search-api + # Real-Time Streaming API +The stream API provides a live stream (aka feed) of newly published filings on SEC EDGAR. +A new filing is sent to your connected client as soon as its published. + +--- + Type in your command line: 1. `mkdir my-project && cd my-project` to create a new folder for your project. @@ -81,6 +101,8 @@ streamApi.on('filing', (filing) => console.log(filing)); 5. `node index.js` to start listening for new filings. New filings are printed in your console as soon as they are published on SEC EDGAR. +> See the documentation for more details: https://sec-api.io/docs/stream-api + ## Command Line In your command line, type @@ -108,6 +130,23 @@ class Filings extends React.Component { } ``` +# Filing Render API + +Used to fetch the content of any filing or exhibit. + +```js +const { renderApi } = require('sec-api'); + +renderApi.setApiKey('YOUR_API_KEY'); + +const filingUrl = + 'https://www.sec.gov/Archives/edgar/data/1841925/000121390021032758/ea142795-8k_indiesemic.htm'; + +const filingContent = await renderApi.getFilingContent(filingUrl); +``` + +> See the documentation for more details: https://sec-api.io/docs/sec-filings-render-api + # Response Format - `accessionNo` (string) - Accession number of filing, e.g. 0000028917-20-000033 diff --git a/config.js b/config.js index 4bac709..0ec1a28 100644 --- a/config.js +++ b/config.js @@ -11,4 +11,7 @@ module.exports = { fullTextApi: { endpoint: 'https://api.sec-api.io/full-text-search', }, + renderApi: { + endpoint: 'https://api.sec-api.io/filing-reader', + }, }; diff --git a/example.js b/example.js index e02c4cc..c56ba43 100644 --- a/example.js +++ b/example.js @@ -49,6 +49,23 @@ const fullTextSearchExample = async () => { // uncomment // fullTextSearchExample(); +/** + * Render API + */ +const { renderApi } = secApi; + +const renderApiExample = async () => { + const filingUrl = + 'https://www.sec.gov/Archives/edgar/data/1841925/000121390021032758/ea142795-8k_indiesemic.htm'; + + const data = await renderApi.getFilingContent(filingUrl); + + console.log(data); +}; + +// uncomment +// renderApiExample(); + /** * Stream API */ diff --git a/index.js b/index.js index 4befcf2..6d9e6a7 100755 --- a/index.js +++ b/index.js @@ -91,6 +91,29 @@ const getFilingsFullText = async (query) => { return data; }; +/** + * Render API + */ +const getFilingContent = async (url, type = 'html') => { + const _url = + config.renderApi.endpoint + + '?token=' + + store.apiKey + + '&type=' + + type + + '&url=' + + url; + + const options = { + method: 'get', + url: _url, + }; + + const { data } = await axios(options); + + return data; +}; + /** * Helpers */ @@ -109,6 +132,10 @@ const modules = { setApiKey, getFilings: getFilingsFullText, }, + renderApi: { + setApiKey, + getFilingContent, + }, }; module.exports = modules; From d747776d1a53bd603cea172a67548074f869fee6 Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Thu, 17 Jun 2021 06:07:59 -0400 Subject: [PATCH 03/39] 3.0.1 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index d74b45f..cc92518 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "sec-api", - "version": "3.0.0", + "version": "3.0.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index d581efd..94071cc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sec-api", - "version": "3.0.0", + "version": "3.0.1", "description": "sec.gov EDGAR API Wrapper", "main": "index.js", "scripts": { From ec16228ef613d9dd20a32bcaa64d34383060aacb Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Tue, 20 Jul 2021 04:38:33 -0400 Subject: [PATCH 04/39] added XBRL-to-JSON converter API --- README.md | 193 ++++++++++++++++++++++++++++++++++++++++++++++++++++- config.js | 3 + example.js | 25 +++++++ index.js | 31 +++++++++ 4 files changed, 250 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6f01bca..d942b10 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,11 @@ # sec.gov EDGAR filings query & real-time API -- Covers +18 million SEC Edgar filings for **over 8000** publicly listed companies, ETFs, hedge funds, mutual funds, and investors dating back to 1993. +- Covers +18 million SEC Edgar filings for **over 10,000** publicly listed companies, ETFs, hedge funds, mutual funds, and investors dating back to 1993. - Every filing is **mapped to a CIK and ticker**. - **All +150 form types** are supported, eg 10-Q, 10-K, 4, 8-K, 13-F, S-1, 424B4 and many more. [See the list of supported form types here.](https://sec-api.io/#list-of-sec-form-types) - The API returns a new filing as soon as it is published on SEC EDGAR. +- XBRL-to-JSON converter and parser API. Extract standardized financial statements from any 10-K and 10-Q filing. - **No XBRL/XML** needed - JSON formatted. - 13F holdings API included. Monitor all institutional ownerships in real-time. - Python, R, Java, C++, Excel scripts are supported through websockets @@ -130,9 +131,197 @@ class Filings extends React.Component { } ``` +# XBRL-To-JSON Converter API + +Parse and standardize any XBRL and convert it to JSON. Extract financial statements and meta data from 10-K and 10-Q filings. + +The entire US GAAP taxonomy is fully supported. All XBRL items are fully converted into JSON, including `us-gaap`, `dei` and custom items. XBRL facts are automatically mapped to their respective context including period instants and date ranges. + +All financial statements are accessible and standardized: + +- StatementsOfIncome +- StatementsOfIncomeParenthetical +- StatementsOfComprehensiveIncome +- StatementsOfComprehensiveIncomeParenthetical +- BalanceSheets +- BalanceSheetsParenthetical +- StatementsOfCashFlows +- StatementsOfCashFlowsParenthetical +- StatementsOfShareholdersEquity +- StatementsOfShareholdersEquityParenthetical + +Variants such as `ConsolidatedStatementsofOperations` or `ConsolidatedStatementsOfLossIncome` are automatically standardized to their root name, e.g. `StatementsOfIncome`. + +## Income Statement - Example Item + +```json +{ + "StatementsOfIncome": { + "RevenueFromContractWithCustomerExcludingAssessedTax": [ + { + "decimals": "-6", + "unitRef": "usd", + "period": { + "startDate": "2019-09-29", + "endDate": "2020-09-26" + }, + "value": "274515000000" + }, + { + "decimals": "-6", + "unitRef": "usd", + "period": { + "startDate": "2018-09-30", + "endDate": "2019-09-28" + }, + "value": "260174000000" + } + ] + } +} +``` + +## Usage + +There are 3 ways to convert XBRL to JSON: + +- `htm-url`: Provide the URL of the filing ending with `.htm` + Example URL: https://www.sec.gov/Archives/edgar/data/1318605/000156459021004599/tsla-10k_20201231.htm +- `xbrl-url`: Provide the URL of the XBRL file ending with `.xml`. The XBRL file URL can be found in the `dataFiles` array returned by our query API. The array item has the description `EXTRACTED XBRL INSTANCE DOCUMENT` or similar. + Example URL: https://www.sec.gov/Archives/edgar/data/1318605/000156459021004599/tsla-10k_20201231_htm.xml +- `accession-no`: Provide the accession number of the filing, e.g. `0001564590-21-004599` + +```js +const { xbrlApi } = secApi; + +xbrlApi.setApiKey('YOUR_API_KEY'); + +// 10-K HTM File URL example +xbrlApi + .xbrlToJson({ + htmUrl: + 'https://www.sec.gov/Archives/edgar/data/320193/000032019320000096/aapl-20200926.htm', + }) + .then(console.log); + +// 10-K XBRL File URL Example +xbrlApi + .xbrlToJson({ + xbrlUrl: + 'https://www.sec.gov/Archives/edgar/data/320193/000032019320000096/aapl-20200926_htm.xml', + }) + .then(console.log); + +// 10-K Accession Number Example +xbrlApi.xbrlToJson({ accessionNo: '0000320193-20-000096' }).then(console.log); +``` + +## Example Response + +Note: response is shortened. + +```json +{ + "CoverPage": { + "DocumentPeriodEndDate": "2020-09-26", + "EntityRegistrantName": "Apple Inc.", + "EntityIncorporationStateCountryCode": "CA", + "EntityTaxIdentificationNumber": "94-2404110", + "EntityAddressAddressLine1": "One Apple Park Way", + "EntityAddressCityOrTown": "Cupertino", + "EntityAddressStateOrProvince": "CA", + "EntityAddressPostalZipCode": "95014", + "CityAreaCode": "408", + "LocalPhoneNumber": "996-1010", + "TradingSymbol": "AAPL", + "EntityPublicFloat": { + "decimals": "-6", + "unitRef": "usd", + "period": { + "instant": "2020-03-27" + }, + "value": "1070633000000" + }, + "EntityCommonStockSharesOutstanding": { + "decimals": "-3", + "unitRef": "shares", + "period": { + "instant": "2020-10-16" + }, + "value": "17001802000" + }, + "DocumentFiscalPeriodFocus": "FY", + "CurrentFiscalYearEndDate": "--09-26" + }, + "StatementsOfIncome": { + "RevenueFromContractWithCustomerExcludingAssessedTax": [ + { + "decimals": "-6", + "unitRef": "usd", + "period": { + "startDate": "2019-09-29", + "endDate": "2020-09-26" + }, + "segment": { + "dimension": "srt:ProductOrServiceAxis", + "value": "us-gaap:ProductMember" + }, + "value": "220747000000" + }, + { + "decimals": "-6", + "unitRef": "usd", + "period": { + "startDate": "2018-09-30", + "endDate": "2019-09-28" + }, + "segment": { + "dimension": "srt:ProductOrServiceAxis", + "value": "us-gaap:ProductMember" + }, + "value": "213883000000" + } + ] + }, + "BalanceSheets": { + "CashAndCashEquivalentsAtCarryingValue": [ + { + "decimals": "-6", + "unitRef": "usd", + "period": { + "instant": "2020-09-26" + }, + "value": "38016000000" + }, + { + "decimals": "-6", + "unitRef": "usd", + "period": { + "instant": "2019-09-28" + }, + "value": "48844000000" + }, + { + "decimals": "-6", + "unitRef": "usd", + "period": { + "instant": "2020-09-26" + }, + "segment": { + "dimension": "us-gaap:FinancialInstrumentAxis", + "value": "us-gaap:CashMember" + }, + "value": "17773000000" + } + ] + } +``` + +> See the documentation for more details: https://sec-api.io/docs/xbrl-to-json-converter-api + # Filing Render API -Used to fetch the content of any filing or exhibit. +Used to download any filing or exhibit. You can process the downloaded filing in memory or save the filing to your hard drive. ```js const { renderApi } = require('sec-api'); diff --git a/config.js b/config.js index 0ec1a28..300411d 100644 --- a/config.js +++ b/config.js @@ -14,4 +14,7 @@ module.exports = { renderApi: { endpoint: 'https://api.sec-api.io/filing-reader', }, + xbrlToJsonApi: { + endpoint: 'https://api.sec-api.io/xbrl-to-json', + }, }; diff --git a/example.js b/example.js index c56ba43..dd1b58e 100644 --- a/example.js +++ b/example.js @@ -75,3 +75,28 @@ const { streamApi } = secApi; // streamApi.connect(yourApiKey); // streamApi.on('filing', (filing) => console.log(filing)); // streamApi.on('filings', (filings) => console.log(filings)); + +const { xbrlApi } = secApi; + +xbrlApi.setApiKey('YOUR_API_KEY'); + +// 10-K HTM File URL example +// const xbrlJson = xbrlApi +// .xbrlToJson({ +// htmUrl: +// 'https://www.sec.gov/Archives/edgar/data/320193/000032019320000096/aapl-20200926.htm', +// }) +// .then(console.log); + +// 10-K XBRL File URL Example +// const xbrlJson = xbrlApi +// .xbrlToJson({ +// xbrlUrl: +// 'https://www.sec.gov/Archives/edgar/data/320193/000032019320000096/aapl-20200926_htm.xml', +// }) +// .then(console.log); + +// 10-K Accession Number Example +// const xbrlJson = xbrlApi +// .xbrlToJson({ accessionNo: '0000320193-20-000096' }) +// .then(console.log); diff --git a/index.js b/index.js index 6d9e6a7..c300227 100755 --- a/index.js +++ b/index.js @@ -114,6 +114,33 @@ const getFilingContent = async (url, type = 'html') => { return data; }; +/** + * XBRL-to-JSON converter and parser + */ +const xbrlToJson = async ({ htmUrl, xbrlUrl, accessionNo } = {}) => { + if (!htmUrl && !xbrlUrl && !accessionNo) { + throw new Error( + 'Please provide one of the following arguments: htmUrl, xbrlUrl or accessionNo' + ); + } + + let requestUrl = config.xbrlToJsonApi.endpoint + '?token=' + store.apiKey; + + if (htmUrl) { + requestUrl += '&htm-url=' + htmUrl; + } + if (xbrlUrl) { + requestUrl += '&xbrl-url=' + xbrlUrl; + } + if (accessionNo) { + requestUrl += '&accession-no=' + accessionNo; + } + + const { data } = await axios.get(requestUrl); + + return data; +}; + /** * Helpers */ @@ -136,6 +163,10 @@ const modules = { setApiKey, getFilingContent, }, + xbrlApi: { + setApiKey, + xbrlToJson, + }, }; module.exports = modules; From c4a1887a6888bf3e4c91ebd23021c5025d6a48f9 Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Tue, 20 Jul 2021 04:42:00 -0400 Subject: [PATCH 05/39] added XBRL-to-JSON converter API --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index d942b10..ec01f97 100644 --- a/README.md +++ b/README.md @@ -185,11 +185,11 @@ Variants such as `ConsolidatedStatementsofOperations` or `ConsolidatedStatements There are 3 ways to convert XBRL to JSON: -- `htm-url`: Provide the URL of the filing ending with `.htm` +- `htmUrl`: Provide the URL of the filing ending with `.htm`. Example URL: https://www.sec.gov/Archives/edgar/data/1318605/000156459021004599/tsla-10k_20201231.htm -- `xbrl-url`: Provide the URL of the XBRL file ending with `.xml`. The XBRL file URL can be found in the `dataFiles` array returned by our query API. The array item has the description `EXTRACTED XBRL INSTANCE DOCUMENT` or similar. +- `xbrlUrl`: Provide the URL of the XBRL file ending with `.xml`. The XBRL file URL can be found in the `dataFiles` array returned by our query API. The array item has the description `EXTRACTED XBRL INSTANCE DOCUMENT` or similar. Example URL: https://www.sec.gov/Archives/edgar/data/1318605/000156459021004599/tsla-10k_20201231_htm.xml -- `accession-no`: Provide the accession number of the filing, e.g. `0001564590-21-004599` +- `accessionNo`: Provide the accession number of the filing, e.g. `0001564590-21-004599` ```js const { xbrlApi } = secApi; From b43693e7e6bfdb52bc1f55dd45d6f133f9d50f15 Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Tue, 20 Jul 2021 04:44:53 -0400 Subject: [PATCH 06/39] added XBRL-to-JSON converter API --- package.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/package.json b/package.json index 94071cc..165bdad 100644 --- a/package.json +++ b/package.json @@ -16,8 +16,14 @@ "API", "Filings", "XBRL to JSON", + "XBRL", + "Financial statements", + "Income statement", + "Balance sheet", + "Cash flow statement", "real-time", "JSON Filings", + "Institutional ownership", "10-K", "10-Q", "8-K", From 4f56a5810d8de0a537d149d4fc92cde994ad03b3 Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Tue, 20 Jul 2021 04:45:00 -0400 Subject: [PATCH 07/39] 3.1.0 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index cc92518..d1a78d3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "sec-api", - "version": "3.0.1", + "version": "3.1.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 165bdad..e187885 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sec-api", - "version": "3.0.1", + "version": "3.1.0", "description": "sec.gov EDGAR API Wrapper", "main": "index.js", "scripts": { From ee1040cdff092c39ffdf720491b1da60178b5d5b Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Sat, 21 Aug 2021 04:05:46 -0400 Subject: [PATCH 08/39] support load balancer traffic --- index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/index.js b/index.js index c300227..bedd514 100755 --- a/index.js +++ b/index.js @@ -18,7 +18,10 @@ const streamApiStore = {}; const initSocket = (apiKey) => { const uri = config.io.server + '/' + config.io.namespace.allFilings; - const params = { query: { apiKey } }; + const params = { + query: { apiKey }, + transports: ['websocket'], // ensure traffic goes through load balancer + }; streamApiStore.socket = io(uri, params); streamApiStore.socket.on('connect', () => console.log('Socket connected to', uri) From 8c2587579c2d88a620053ea6f0982f502828b26b Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Sat, 21 Aug 2021 04:05:57 -0400 Subject: [PATCH 09/39] 3.1.1 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index d1a78d3..b91cd16 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "sec-api", - "version": "3.1.0", + "version": "3.1.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index e187885..8285b91 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sec-api", - "version": "3.1.0", + "version": "3.1.1", "description": "sec.gov EDGAR API Wrapper", "main": "index.js", "scripts": { From 765a54eee346532b57436593f3d8299bae293cd8 Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Fri, 17 Sep 2021 05:59:44 -0400 Subject: [PATCH 10/39] updated readme --- README.md | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++--- config.js | 3 +++ example.js | 21 ++++++++++++++++++- index.js | 21 +++++++++++++++++++ 4 files changed, 100 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index ec01f97..c5e2de0 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,13 @@ -# sec.gov EDGAR filings query & real-time API +# sec.gov EDGAR filings query, extraction, converter and real-time streaming API + +- **Query API** - search all +18 million SEC EDGAR filings published since 1993 using simpe and complex queries. +- **Full-text search API** - find filings, attachments or exhibits mentioning specific keywords or phrases. +- **Real-time streaming API** - stream new filings in real-time with an average delay of 500 milliseconds. +- **XBRL-to-JSON converter API** - convert XBRL filing versions into standardized JSON and access income statements, balance sheets and cash flow statements of all 10-K and 10-Q filings. +- **10-K/10-Q section extraction API** - extract individual sections from 10-K and 10-Q filings, in standardized text or HTML. +- **Filing download & render API** - download and render any filing or exhibit. + +--- - Covers +18 million SEC Edgar filings for **over 10,000** publicly listed companies, ETFs, hedge funds, mutual funds, and investors dating back to 1993. - Every filing is **mapped to a CIK and ticker**. @@ -319,9 +328,53 @@ Note: response is shortened. > See the documentation for more details: https://sec-api.io/docs/xbrl-to-json-converter-api -# Filing Render API +# 10-K/10-Q Section Extractor API + +The Extractor API returns individual sections from 10-Q and 10-K filings. The extracted section is cleaned and standardized - in raw text or in standardized HTML. You can programmatically extract one or multiple sections from any 10-Q and 10-K filing. + +All 10-K and 10-Q sections can be extracted: + +- 1 - Business +- 1A - Risk Factors +- 1B - Unresolved Staff Comments +- 2 - Properties +- 3 - Legal Proceedings +- 4 - Mine Safety Disclosures +- 5 - Market for Registrant’s Common Equity, Related Stockholder Matters and Issuer Purchases of Equity Securities +- 6 - Selected Financial Data (prior to February 2021) +- 7 - Management’s Discussion and Analysis of Financial Condition and Results of Operations +- 7A - Quantitative and Qualitative Disclosures about Market Risk +- 8 - Financial Statements and Supplementary Data +- 9 - Changes in and Disagreements with Accountants on Accounting and Financial Disclosure +- 9A - Controls and Procedures +- 9B - Other Information +- 10 - Directors, Executive Officers and Corporate Governance +- 11 - Executive Compensation +- 12 - Security Ownership of Certain Beneficial Owners and Management and Related Stockholder Matters +- 13 - Certain Relationships and Related Transactions, and Director Independence +- 14 - Principal Accountant Fees and Services + +## Example + +```js +const { extractorApi } = secApi; + +// Tesla 10-K filing +const filingUrl = + 'https://www.sec.gov/Archives/edgar/data/1318605/000156459021004599/tsla-10k_20201231.htm'; + +const sectionText = await extractorApi.getSection(filingUrl, '1A', 'text'); +const sectionHtml = await extractorApi.getSection(filingUrl, '1A', 'html'); + +console.log(sectionText); +console.log(sectionHtml); +``` + +> See the documentation for more details: https://sec-api.io/docs/sec-filings-item-extraction-api + +# Filing Render & Download API -Used to download any filing or exhibit. You can process the downloaded filing in memory or save the filing to your hard drive. +Used to download or render any filing or exhibit. You can process the downloaded filing in memory or save the filing to your hard drive. ```js const { renderApi } = require('sec-api'); diff --git a/config.js b/config.js index 300411d..deee0e5 100644 --- a/config.js +++ b/config.js @@ -17,4 +17,7 @@ module.exports = { xbrlToJsonApi: { endpoint: 'https://api.sec-api.io/xbrl-to-json', }, + extractorApi: { + endpoint: 'https://api.sec-api.io/extractor', + }, }; diff --git a/example.js b/example.js index dd1b58e..8692cfc 100644 --- a/example.js +++ b/example.js @@ -76,9 +76,28 @@ const { streamApi } = secApi; // streamApi.on('filing', (filing) => console.log(filing)); // streamApi.on('filings', (filings) => console.log(filings)); +/** + * 10-K/10-Q Section Extraction API + */ +const { extractorApi } = secApi; + +(async () => { + const filingUrl = + 'https://www.sec.gov/Archives/edgar/data/1318605/000156459021004599/tsla-10k_20201231.htm'; + + const sectionText = await extractorApi.getSection(filingUrl, '1A', 'text'); + const sectionHtml = await extractorApi.getSection(filingUrl, '1A', 'html'); + + console.log(sectionText); + console.log(sectionHtml); +})(); + +/** + * XBRL-to-JSON API + */ const { xbrlApi } = secApi; -xbrlApi.setApiKey('YOUR_API_KEY'); +// xbrlApi.setApiKey('YOUR_API_KEY'); // 10-K HTM File URL example // const xbrlJson = xbrlApi diff --git a/index.js b/index.js index bedd514..969c1d5 100755 --- a/index.js +++ b/index.js @@ -144,6 +144,23 @@ const xbrlToJson = async ({ htmUrl, xbrlUrl, accessionNo } = {}) => { return data; }; +/** + * Extractor API + */ +const getSection = async (filingUrl, section = '1A', returnType = 'text') => { + if (!filingUrl || !filingUrl.length) { + throw new Error('No valid filing URL provided'); + } + + const requestUrl = + config.extractorApi.endpoint + + `?token=${store.apiKey}&url=${filingUrl}&item=${section}&type=${returnType}`; + + const { data } = await axios.get(requestUrl); + + return data; +}; + /** * Helpers */ @@ -170,6 +187,10 @@ const modules = { setApiKey, xbrlToJson, }, + extractorApi: { + setApiKey, + getSection, + }, }; module.exports = modules; From c135dd256885b3366a209c8484965f02d582bf99 Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Fri, 17 Sep 2021 06:02:34 -0400 Subject: [PATCH 11/39] updated readme --- README.md | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/README.md b/README.md index c5e2de0..d974e66 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,4 @@ -# sec.gov EDGAR filings query, extraction, converter and real-time streaming API - -- **Query API** - search all +18 million SEC EDGAR filings published since 1993 using simpe and complex queries. -- **Full-text search API** - find filings, attachments or exhibits mentioning specific keywords or phrases. -- **Real-time streaming API** - stream new filings in real-time with an average delay of 500 milliseconds. -- **XBRL-to-JSON converter API** - convert XBRL filing versions into standardized JSON and access income statements, balance sheets and cash flow statements of all 10-K and 10-Q filings. -- **10-K/10-Q section extraction API** - extract individual sections from 10-K and 10-Q filings, in standardized text or HTML. -- **Filing download & render API** - download and render any filing or exhibit. - ---- +# sec.gov EDGAR filings query, extraction, parser and real-time streaming API - Covers +18 million SEC Edgar filings for **over 10,000** publicly listed companies, ETFs, hedge funds, mutual funds, and investors dating back to 1993. - Every filing is **mapped to a CIK and ticker**. From cabdeadc60f2d9a11db92b96ca79a1ccbecf856e Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Fri, 17 Sep 2021 06:05:07 -0400 Subject: [PATCH 12/39] 3.1.2 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index b91cd16..417b990 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "sec-api", - "version": "3.1.1", + "version": "3.1.2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 8285b91..dfde528 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sec-api", - "version": "3.1.1", + "version": "3.1.2", "description": "sec.gov EDGAR API Wrapper", "main": "index.js", "scripts": { From fa1eaf61516cc6949f04eeb50315ab42427bc9f6 Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Fri, 17 Sep 2021 06:07:40 -0400 Subject: [PATCH 13/39] patched axios --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 417b990..b612b43 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,11 +15,11 @@ "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" }, "axios": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", - "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", "requires": { - "follow-redirects": "^1.10.0" + "follow-redirects": "^1.14.0" } }, "backo2": { @@ -91,9 +91,9 @@ } }, "follow-redirects": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz", - "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==" + "version": "1.14.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz", + "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==" }, "has-binary2": { "version": "1.0.3", diff --git a/package.json b/package.json index dfde528..9971663 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ }, "homepage": "https://github.com/janlukasschroeder/sec-api#readme", "dependencies": { - "axios": "^0.21.1", + "axios": "^0.21.4", "socket.io-client": "^2.4.0" }, "bin": { From d912ad67942b68ed4799905c6b1225eb6b09e46e Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Fri, 17 Sep 2021 06:07:44 -0400 Subject: [PATCH 14/39] 3.1.3 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index b612b43..81337a6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "sec-api", - "version": "3.1.2", + "version": "3.1.3", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 9971663..fce28e3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sec-api", - "version": "3.1.2", + "version": "3.1.3", "description": "sec.gov EDGAR API Wrapper", "main": "index.js", "scripts": { From 4e11c1ec138c9f6bffda7cf0ce5375b1208b0ab6 Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Fri, 22 Oct 2021 12:18:22 -0400 Subject: [PATCH 15/39] deactivate verbose output in stream API in command line --- index.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/index.js b/index.js index 969c1d5..fbfa1d2 100755 --- a/index.js +++ b/index.js @@ -32,12 +32,10 @@ const initSocket = (apiKey) => { }; const handleNewFiling = (filing) => { - console.log(filing); streamApiStore.eventEmitter.emit('filing', filing); }; const handleNewFilings = (filings) => { - console.log(filing); streamApiStore.eventEmitter.emit('filings', filings); }; From f25f355f0e108535a9b435c9f024d2d6ba229f89 Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Fri, 22 Oct 2021 12:18:55 -0400 Subject: [PATCH 16/39] 3.1.4 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 81337a6..c03058a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "sec-api", - "version": "3.1.3", + "version": "3.1.4", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index fce28e3..0fdf901 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sec-api", - "version": "3.1.3", + "version": "3.1.4", "description": "sec.gov EDGAR API Wrapper", "main": "index.js", "scripts": { From 4a146bf45ad7e955191518af16cf26ac27018d18 Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Sat, 30 Oct 2021 10:34:27 -0400 Subject: [PATCH 17/39] added new download API --- README.md | 2 +- config.js | 3 +++ example.js | 7 +++++-- index.js | 19 +++++++++++-------- 4 files changed, 20 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index d974e66..1969997 100644 --- a/README.md +++ b/README.md @@ -365,7 +365,7 @@ console.log(sectionHtml); # Filing Render & Download API -Used to download or render any filing or exhibit. You can process the downloaded filing in memory or save the filing to your hard drive. +Download or render up to 40 filings per second. All filings, exhibits and attachements are supported. Access over 650,000 gigabyte of filings data. You can process the downloaded data in memory or save it to your hard drive. ```js const { renderApi } = require('sec-api'); diff --git a/config.js b/config.js index deee0e5..25197c8 100644 --- a/config.js +++ b/config.js @@ -14,6 +14,9 @@ module.exports = { renderApi: { endpoint: 'https://api.sec-api.io/filing-reader', }, + downloadApi: { + endpoint: 'https://archive.sec-api.io/', + }, xbrlToJsonApi: { endpoint: 'https://api.sec-api.io/xbrl-to-json', }, diff --git a/example.js b/example.js index 8692cfc..cfc1c4f 100644 --- a/example.js +++ b/example.js @@ -81,7 +81,7 @@ const { streamApi } = secApi; */ const { extractorApi } = secApi; -(async () => { +const extractorApiExample = async () => { const filingUrl = 'https://www.sec.gov/Archives/edgar/data/1318605/000156459021004599/tsla-10k_20201231.htm'; @@ -90,7 +90,10 @@ const { extractorApi } = secApi; console.log(sectionText); console.log(sectionHtml); -})(); +}; + +// uncomment +// extractorApiExample(); /** * XBRL-to-JSON API diff --git a/index.js b/index.js index fbfa1d2..4faf51c 100755 --- a/index.js +++ b/index.js @@ -96,14 +96,17 @@ const getFilingsFullText = async (query) => { * Render API */ const getFilingContent = async (url, type = 'html') => { - const _url = - config.renderApi.endpoint + - '?token=' + - store.apiKey + - '&type=' + - type + - '&url=' + - url; + let _url; + + if (type === 'pdf') { + _url = config.renderApi.endpoint + +'&type=' + type + '&url=' + url; + } else { + const filename = url.replace( + 'https://www.sec.gov/Archives/edgar/data/', + '' + ); + _url = config.downloadApi.endpoint + filename + '?token=' + store.apiKey; + } const options = { method: 'get', From 763120b428901d1a49d8283610cde3080382fee7 Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Sat, 30 Oct 2021 10:34:38 -0400 Subject: [PATCH 18/39] 3.1.5 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index c03058a..39b668d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "sec-api", - "version": "3.1.4", + "version": "3.1.5", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 0fdf901..c908e04 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sec-api", - "version": "3.1.4", + "version": "3.1.5", "description": "sec.gov EDGAR API Wrapper", "main": "index.js", "scripts": { From 22a374c3dd6227a205fe72d2467873237c3bc789 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 15 Jan 2022 09:14:31 +0000 Subject: [PATCH 19/39] Bump follow-redirects from 1.14.4 to 1.14.7 Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.4 to 1.14.7. - [Release notes](https://github.com/follow-redirects/follow-redirects/releases) - [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.14.4...v1.14.7) --- updated-dependencies: - dependency-name: follow-redirects dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 39b668d..84ac227 100644 --- a/package-lock.json +++ b/package-lock.json @@ -91,9 +91,9 @@ } }, "follow-redirects": { - "version": "1.14.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz", - "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==" + "version": "1.14.7", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz", + "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==" }, "has-binary2": { "version": "1.0.3", From 6cf94b48cf40498d4ed75ff34fd14c2bb0218fa2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Feb 2022 09:10:17 +0000 Subject: [PATCH 20/39] Bump follow-redirects from 1.14.7 to 1.14.8 Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.7 to 1.14.8. - [Release notes](https://github.com/follow-redirects/follow-redirects/releases) - [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.14.7...v1.14.8) --- updated-dependencies: - dependency-name: follow-redirects dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 84ac227..04904fa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -91,9 +91,9 @@ } }, "follow-redirects": { - "version": "1.14.7", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz", - "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==" + "version": "1.14.8", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", + "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==" }, "has-binary2": { "version": "1.0.3", From 7d42df79b677c7d12323d7a5a91ab301e99fc44a Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Wed, 4 Feb 2026 15:05:54 -0500 Subject: [PATCH 21/39] updated docs; added new Download API --- .gitignore | 3 +- README.md | 777 +++++++++++++++++++++++---------------------------- config.js | 7 + example.js | 16 ++ index.js | 81 +++++- package.json | 4 +- 6 files changed, 456 insertions(+), 432 deletions(-) diff --git a/.gitignore b/.gitignore index b037fbf..ede9682 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .idea .env -node_modules \ No newline at end of file +node_modules +.deploy \ No newline at end of file diff --git a/README.md b/README.md index 1969997..0eb3425 100644 --- a/README.md +++ b/README.md @@ -1,38 +1,101 @@ -# sec.gov EDGAR filings query, extraction, parser and real-time streaming API +# SEC-API.io JavaScript API Library -- Covers +18 million SEC Edgar filings for **over 10,000** publicly listed companies, ETFs, hedge funds, mutual funds, and investors dating back to 1993. -- Every filing is **mapped to a CIK and ticker**. -- **All +150 form types** are supported, eg 10-Q, 10-K, 4, 8-K, 13-F, S-1, 424B4 and many more. - [See the list of supported form types here.](https://sec-api.io/#list-of-sec-form-types) -- The API returns a new filing as soon as it is published on SEC EDGAR. -- XBRL-to-JSON converter and parser API. Extract standardized financial statements from any 10-K and 10-Q filing. -- **No XBRL/XML** needed - JSON formatted. -- 13F holdings API included. Monitor all institutional ownerships in real-time. -- Python, R, Java, C++, Excel scripts are supported through websockets -- Client- and server-side JavaScript supported (Node.js, React, React Native, Angular, Vue, etc.) -- Free API key available on [sec-api.io](https://sec-api.io) +`sec-api` is a JavaScript library for accessing the complete EDGAR database, including over **20 million SEC filings** from 1993/94 to the present and more than **100 million exhibits and attachments**. -You can find more examples and details here: [sec-api.io/docs](https://sec-api.io/docs) +Download filings and related documents, such as complete submission files, index pages, SGML headers, XML and XBRL files, PDFs, and more, at up to **20 requests per second**, with **no API key required**. -Data source: [sec.gov](https://www.sec.gov/edgar/searchedgar/companysearch.html) +The full API documentation is available at [sec-api.io/docs](https://sec-api.io/docs). -# Getting Started +## Quick Start -You can use the API in your command line, or develop your own application -using the API as imported package. Both options are explained below. +```bash +npm install sec-api +``` + +**Download EDGAR Filings Free of Charge** + +```js +const { downloadApi } = require('sec-api'); + +// optional, only needed for higher rate limits. +// downloadApi.setApiKey('YOUR_API_KEY'); + +const filingUrl = + 'https://www.sec.gov/Archives/edgar/data/1318605/000162828025045968/tsla-20250930.htm'; + +const data = await downloadApi.getFile(filingUrl); + +console.log(data.slice(0, 1000)); +``` + +## Feature Overview + +**EDGAR Filing Search & Download APIs** + +- [SEC Filing Search API](#sec-edgar-filings-query-api) +- [Full-Text Search API](#full-text-search-api) +- [Real-Time Filing Stream API](#filings-real-time-stream-api) +- [Download API - Download any SEC filing, exhibit and attached file](#filing--exhibit-download-api) +- [PDF Generator API - Download SEC filings and exhibits as PDF](#pdf-generator-api) + +**Converter & Extractor APIs** + +- [XBRL-to-JSON Converter API + Financial Statements](#xbrl-to-json-converter-api) +- [10-K/10-Q/8-K Section Extraction API](#10-k10-q8-k-section-extractor-api) + +**Investment Advisers** + +- [Form ADV API - Investment Advisors (Firm & Indvl. Advisors, Brochures, Schedules)](#form-adv-api) + +**Ownership Data APIs** + +- [Form 3/4/5 API - Insider Trading Disclosures](#insider-trading-data-api) +- [Form 144 API - Restricted Stock Sales by Insiders](#form-144-api) +- [Form 13F API - Institutional Investment Manager Holdings & Cover Pages](#form-13f-institutional-holdings-database) +- [Form 13D/13G API - Activist and Passive Investor Holdings](#form-13d-13g-api) +- [Form N-PORT API - Mutual Funds, ETFs and Closed-End Fund Holdings](#form-n-port-api) + +**Investment Companies** -**Before you start**: +- [Form N-CEN API - Annual Reports](#form-n-cen-api---annual-reports-by-investment-companies) +- [Form N-PX API - Proxy Voting Records](#form-n-px-proxy-voting-records-api) -- Install Node.js if you haven't already. On Mac in the command line type `brew install node`. -- Get your free API key here: [sec-api.io](https://sec-api.io) +**Security Offerings APIs** -# Query API +- [Form S-1/424B4 API - Registration Statements and Prospectuses (IPOs, Debt/Warrants/... Offerings)](#form-s-1424b4-api) +- [Form C API - Crowdfunding Offerings & Campaigns](#form-c-api---crowdfunding-campaigns) +- [Form D API - Private Security Offerings](#form-d-api) +- [Regulation A APIs - Offering Statements by Small Companies (Form 1-A, Form 1-K, Form 1-Z)](#regulation-a-apis) -The query API allows you to search and filter all 18 million filings published on SEC EDGAR. +**Structured Material Event Data from Form 8-K** ---- +- [Auditor and Accountant Changes (Item 4.01)](#auditor-and-accountant-changes-item-401) +- [Financial Restatements & Non-Reliance on Prior Financial Results (Item 4.02)](#financial-restatements--non-reliance-on-prior-financial-results-item-402) +- [Changes of Directors, Board Members and Compensation Plans (Item 5.02)](#changes-of-directors-executives-board-members-and-compensation-plans-item-502) -The example below returns the most recent 10-Q filings. +**Public Company Data** + +- [Directors & Board Members API](#directors--board-members-data-api) +- [Executive Compensation Data API](#executive-compensation-data-api) +- [Outstanding Shares & Public Float](#outstanding-shares--public-float-api) +- [Company Subsidiary API](#subsidiary-api) + +**Enforcement Actions, Proceedings, AAERs & SRO Filings** + +- [SEC Enforcement Actions](#sec-enforcement-actions-database-api) +- [SEC Litigation Releases](#sec-litigation-releases-database-api) +- [SEC Administrative Proceedings](#sec-administrative-proceedings-database-api) +- [AAER Database API - Accounting and Auditing Enforcement Releases](#aaer-database-api) +- [SRO Filings Database API](#sro-filings-database-api) + +**Other APIs** + +- [CUSIP/CIK/Ticker Mapping API](#cusipcikticker-mapping-api) +- [EDGAR Entities Database API](#edgar-entities-database) + +## SEC EDGAR Filings Query API + +The Query API allows searching and filtering all 20 million filings and 100 million exhibits published on the SEC EDGAR database since 1993 to present, with new filings being added in 300 milliseconds after their publication on EDGAR. ```js const { queryApi } = require('sec-api'); @@ -40,24 +103,85 @@ const { queryApi } = require('sec-api'); queryApi.setApiKey('YOUR_API_KEY'); const query = { - query: { query_string: { query: 'formType:"10-Q"' } }, // get most recent 10-Q filings - from: '0', // start with first filing. used for pagination. - size: '10', // limit response to 10 filings + query: 'formType:"10-Q"', // get most recent 10-Q filings + from: '0', // used for pagination. set to 50 to retrieve the next 50 metadata objects. + size: '50', // number of results per response sort: [{ filedAt: { order: 'desc' } }], // sort result by filedAt }; const filings = await queryApi.getFilings(rawQuery); ``` -> See the documentation for more details: https://sec-api.io/docs/query-api +
+ Full Response Example + +```json +{ + "total": { "value": 47, "relation": "eq" }, + "filings": [ + { + "id": "3ba530142cd52e76b7e15cc9000d2c33", + "ticker": "TSLA", + "formType": "10-Q", + "description": "Form 10-Q - Quarterly report [Sections 13 or 15(d)]", + "accessionNo": "0001628280-25-045968", + "cik": "1318605", + "companyNameLong": "Tesla, Inc. (Filer)", + "companyName": "Tesla, Inc.", + "filedAt": "2025-10-22T21:08:43-04:00", + "periodOfReport": "2025-09-30", + "linkToHtml": "https://www.sec.gov/Archives/edgar/data/1318605/000162828025045968/0001628280-25-045968-index.htm", + "linkToFilingDetails": "https://www.sec.gov/Archives/edgar/data/1318605/000162828025045968/tsla-20250930.htm", + "linkToTxt": "https://www.sec.gov/Archives/edgar/data/1318605/000162828025045968/0001628280-25-045968.txt", + "entities": [ + { + "fiscalYearEnd": "1231", + "stateOfIncorporation": "TX", + "act": "34", + "cik": "1318605", + "fileNo": "001-34756", + "irsNo": "912197729", + "companyName": "Tesla, Inc. (Filer)", + "type": "10-Q", + "sic": "3711 Motor Vehicles & Passenger Car Bodies", + "filmNo": "251411222", + "undefined": "04 Manufacturing)" + } + ], + "documentFormatFiles": [ + { + "sequence": "1", + "size": "1573631", + "documentUrl": "https://www.sec.gov/ix?doc=/Archives/edgar/data/1318605/000162828025045968/tsla-20250930.htm", + "description": "10-Q", + "type": "10-Q" + }, + // ... more files + ], + "dataFiles": [ + { + "sequence": "5", + "size": "54524", + "documentUrl": "https://www.sec.gov/Archives/edgar/data/1318605/000162828025045968/tsla-20250930.xsd", + "description": "XBRL TAXONOMY EXTENSION SCHEMA DOCUMENT", + "type": "EX-101.SCH" + }, + // ... more files + ], + }, + ] +} +``` -# Full-Text Search API +
-Full-text search allows you to search the full text of all EDGAR filings submitted since 2001. The full text of a filing includes all data in the filing itself as well as all attachments (such as exhibits) to the filing. +> See the documentation for more details: https://sec-api.io/docs/query-api ---- +## Full-Text Search API -The example below returns all 8-K and 10-Q filings and their exhibits, filed between 01-01-2021 and 14-06-2021, that include the exact phrase "LPCN 1154". +The SEC Filing Full-Text Search API enables searches across the full text of all EDGAR filings submitted since 2001. Each search scans the entire filing content, including all attachments, such as exhibits. + +The following example returns all 8-K and 10-Q filings and their exhibits, filed between 01-01-2021 and 14-06-2021, that include the exact phrase "LPCN 1154". ```js const { fullTextSearchApi } = require('sec-api'); @@ -76,20 +200,9 @@ const filings = await fullTextSearchApi.getFilings(rawQuery); > See the documentation for more details: https://sec-api.io/docs/full-text-search-api -# Real-Time Streaming API - -The stream API provides a live stream (aka feed) of newly published filings on SEC EDGAR. -A new filing is sent to your connected client as soon as its published. +## Filings Real-Time Stream API ---- - -Type in your command line: - -1. `mkdir my-project && cd my-project` to create a new folder for your project. -2. `npm init -y` to set up Node.js boilerplate. -3. `npm install sec-api` to install the package. -4. `touch index.js` to create a new file. Copy/paste the example code below - into the file `index.js`. Replace `YOUR_API_KEY` with the API key provided on [sec-api.io](https://sec-api.io) +The Stream API provides a real-time feed of the latest filings submitted to the SEC EDGAR database via a WebSocket connection. This push-based technology ensures immediate delivery of metadata for each new filing as it becomes publicly available. ```js const { streamApi } = require('sec-api'); @@ -99,60 +212,30 @@ streamApi.connect('YOUR_API_KEY'); streamApi.on('filing', (filing) => console.log(filing)); ``` -5. `node index.js` to start listening for new filings. New filings are - printed in your console as soon as they are published on SEC EDGAR. - > See the documentation for more details: https://sec-api.io/docs/stream-api -## Command Line - -In your command line, type - -1. `npm install sec-api -g` to install the package -2. `sec-api YOUR_API_KEY` to connect to the stream. Replace `YOUR_API_KEY` with - the API key provided on [sec-api.io](https://sec-api.io) -3. Done! You will see new filings printed in your command line - as soon as they are published on SEC EDGAR. +## Filing & Exhibit Download API -## React - -Live Demo: https://codesandbox.io/s/01xqz2ml9l (requires an API key to work) +On the free plan, you can download up to 20 SEC filings per second without an API key. Paid plans allow for higher throughput—up to 60,000 filings within a 5-minute window. Access is provided to all 20+ million EDGAR filings dating back to 1993, including over 100 million attachments and exhibits such as Exhibit 99, complete submission files, SGML headers, and more. ```js -import { streamApi } from 'sec-api'; - -class Filings extends React.Component { - componentDidMount() { - const socket = streamApi('YOUR_API_KEY'); - socket.on('filing', (filing) => console.log(filing)); - } - - // ... -} -``` +const { downloadApi } = require('sec-api'); -# XBRL-To-JSON Converter API +downloadApi.setApiKey('YOUR_API_KEY'); -Parse and standardize any XBRL and convert it to JSON. Extract financial statements and meta data from 10-K and 10-Q filings. +const filingUrl = + 'https://www.sec.gov/Archives/edgar/data/1841925/000121390021032758/ea142795-8k_indiesemic.htm'; -The entire US GAAP taxonomy is fully supported. All XBRL items are fully converted into JSON, including `us-gaap`, `dei` and custom items. XBRL facts are automatically mapped to their respective context including period instants and date ranges. +const filingContent = await downloadApi.getFile(filingUrl); +``` -All financial statements are accessible and standardized: +> See the documentation for more details: https://sec-api.io/docs/sec-filings-render-api -- StatementsOfIncome -- StatementsOfIncomeParenthetical -- StatementsOfComprehensiveIncome -- StatementsOfComprehensiveIncomeParenthetical -- BalanceSheets -- BalanceSheetsParenthetical -- StatementsOfCashFlows -- StatementsOfCashFlowsParenthetical -- StatementsOfShareholdersEquity -- StatementsOfShareholdersEquityParenthetical +## XBRL-To-JSON Converter API -Variants such as `ConsolidatedStatementsofOperations` or `ConsolidatedStatementsOfLossIncome` are automatically standardized to their root name, e.g. `StatementsOfIncome`. +Parse and standardize any XBRL data and convert it to standardized JSON format in seconds without coding. Extract financial statements from annual and quarterly reports (10-K, 10-Q, 20-F, 40-F), offerings such as S-1 filings, and post-effective amendements for registration statements (POS AM), accounting policies and footnotes, risk-return summaries of mutual fund and ETF prospectuses (485BPOS) and general information from event filings (8-K). All XBRL-supported filing types can be converterd. -## Income Statement - Example Item +### Income Statement Item Example ```json { @@ -181,15 +264,16 @@ Variants such as `ConsolidatedStatementsofOperations` or `ConsolidatedStatements } ``` -## Usage +### Usage -There are 3 ways to convert XBRL to JSON: +Convert XBRL filings to JSON using one of the following three input methods: -- `htmUrl`: Provide the URL of the filing ending with `.htm`. - Example URL: https://www.sec.gov/Archives/edgar/data/1318605/000156459021004599/tsla-10k_20201231.htm -- `xbrlUrl`: Provide the URL of the XBRL file ending with `.xml`. The XBRL file URL can be found in the `dataFiles` array returned by our query API. The array item has the description `EXTRACTED XBRL INSTANCE DOCUMENT` or similar. - Example URL: https://www.sec.gov/Archives/edgar/data/1318605/000156459021004599/tsla-10k_20201231_htm.xml -- `accessionNo`: Provide the accession number of the filing, e.g. `0001564590-21-004599` +1. **`htmUrl`** - URL of the filing’s HTML page (typically ending in `.htm`). + Example: `https://www.sec.gov/Archives/edgar/data/1318605/000156459021004599/tsla-10k_20201231.htm` +2. **`xbrlUrl`** - Direct URL to the XBRL instance document (ending in `.xml`). + This URL is available in the `dataFiles` array returned by the query API. Look for an item with the description `"EXTRACTED XBRL INSTANCE DOCUMENT"` or similar. + Example: `https://www.sec.gov/Archives/edgar/data/1318605/000156459021004599/tsla-10k_20201231_htm.xml` +3. **`accessionNo`** - SEC accession number of the filing (e.g., `0001564590-21-004599`). ```js const { xbrlApi } = secApi; @@ -197,137 +281,138 @@ const { xbrlApi } = secApi; xbrlApi.setApiKey('YOUR_API_KEY'); // 10-K HTM File URL example -xbrlApi - .xbrlToJson({ - htmUrl: - 'https://www.sec.gov/Archives/edgar/data/320193/000032019320000096/aapl-20200926.htm', - }) - .then(console.log); +const xbrlJson1 = await xbrlApi.xbrlToJson({ + htmUrl: + 'https://www.sec.gov/Archives/edgar/data/320193/000032019320000096/aapl-20200926.htm', +}); // 10-K XBRL File URL Example -xbrlApi - .xbrlToJson({ - xbrlUrl: - 'https://www.sec.gov/Archives/edgar/data/320193/000032019320000096/aapl-20200926_htm.xml', - }) - .then(console.log); +const xbrlJson2 = await xbrlApi.xbrlToJson({ + xbrlUrl: + 'https://www.sec.gov/Archives/edgar/data/320193/000032019320000096/aapl-20200926_htm.xml', +}); // 10-K Accession Number Example -xbrlApi.xbrlToJson({ accessionNo: '0000320193-20-000096' }).then(console.log); +const xbrlJson3 = await xbrlApi.xbrlToJson({ + accessionNo: '0000320193-20-000096', +}); ``` -## Example Response - -Note: response is shortened. +### Example Response ```json { - "CoverPage": { - "DocumentPeriodEndDate": "2020-09-26", - "EntityRegistrantName": "Apple Inc.", - "EntityIncorporationStateCountryCode": "CA", - "EntityTaxIdentificationNumber": "94-2404110", - "EntityAddressAddressLine1": "One Apple Park Way", - "EntityAddressCityOrTown": "Cupertino", - "EntityAddressStateOrProvince": "CA", - "EntityAddressPostalZipCode": "95014", - "CityAreaCode": "408", - "LocalPhoneNumber": "996-1010", - "TradingSymbol": "AAPL", - "EntityPublicFloat": { - "decimals": "-6", - "unitRef": "usd", - "period": { - "instant": "2020-03-27" - }, - "value": "1070633000000" - }, - "EntityCommonStockSharesOutstanding": { - "decimals": "-3", - "unitRef": "shares", - "period": { - "instant": "2020-10-16" - }, - "value": "17001802000" - }, - "DocumentFiscalPeriodFocus": "FY", - "CurrentFiscalYearEndDate": "--09-26" - }, - "StatementsOfIncome": { - "RevenueFromContractWithCustomerExcludingAssessedTax": [ - { - "decimals": "-6", - "unitRef": "usd", - "period": { - "startDate": "2019-09-29", - "endDate": "2020-09-26" - }, - "segment": { - "dimension": "srt:ProductOrServiceAxis", - "value": "us-gaap:ProductMember" - }, - "value": "220747000000" - }, - { - "decimals": "-6", - "unitRef": "usd", - "period": { - "startDate": "2018-09-30", - "endDate": "2019-09-28" - }, - "segment": { - "dimension": "srt:ProductOrServiceAxis", - "value": "us-gaap:ProductMember" - }, - "value": "213883000000" - } - ] - }, - "BalanceSheets": { - "CashAndCashEquivalentsAtCarryingValue": [ - { - "decimals": "-6", - "unitRef": "usd", - "period": { - "instant": "2020-09-26" - }, - "value": "38016000000" - }, - { - "decimals": "-6", - "unitRef": "usd", - "period": { - "instant": "2019-09-28" - }, - "value": "48844000000" - }, - { - "decimals": "-6", - "unitRef": "usd", - "period": { - "instant": "2020-09-26" + "CoverPage": { + "DocumentPeriodEndDate": "2020-09-26", + "EntityRegistrantName": "Apple Inc.", + "EntityIncorporationStateCountryCode": "CA", + "EntityTaxIdentificationNumber": "94-2404110", + "EntityAddressAddressLine1": "One Apple Park Way", + "EntityAddressCityOrTown": "Cupertino", + "EntityAddressStateOrProvince": "CA", + "EntityAddressPostalZipCode": "95014", + "CityAreaCode": "408", + "LocalPhoneNumber": "996-1010", + "TradingSymbol": "AAPL", + "EntityPublicFloat": { + "decimals": "-6", + "unitRef": "usd", + "period": { + "instant": "2020-03-27" + }, + "value": "1070633000000" }, - "segment": { - "dimension": "us-gaap:FinancialInstrumentAxis", - "value": "us-gaap:CashMember" + "EntityCommonStockSharesOutstanding": { + "decimals": "-3", + "unitRef": "shares", + "period": { + "instant": "2020-10-16" + }, + "value": "17001802000" }, - "value": "17773000000" - } - ] - } + "DocumentFiscalPeriodFocus": "FY", + "CurrentFiscalYearEndDate": "--09-26" + }, + "StatementsOfIncome": { + "RevenueFromContractWithCustomerExcludingAssessedTax": [ + { + "decimals": "-6", + "unitRef": "usd", + "period": { + "startDate": "2019-09-29", + "endDate": "2020-09-26" + }, + "segment": { + "dimension": "srt:ProductOrServiceAxis", + "value": "us-gaap:ProductMember" + }, + "value": "220747000000" + }, + { + "decimals": "-6", + "unitRef": "usd", + "period": { + "startDate": "2018-09-30", + "endDate": "2019-09-28" + }, + "segment": { + "dimension": "srt:ProductOrServiceAxis", + "value": "us-gaap:ProductMember" + }, + "value": "213883000000" + } + ] + }, + "BalanceSheets": { + "CashAndCashEquivalentsAtCarryingValue": [ + { + "decimals": "-6", + "unitRef": "usd", + "period": { + "instant": "2020-09-26" + }, + "value": "38016000000" + }, + { + "decimals": "-6", + "unitRef": "usd", + "period": { + "instant": "2019-09-28" + }, + "value": "48844000000" + }, + { + "decimals": "-6", + "unitRef": "usd", + "period": { + "instant": "2020-09-26" + }, + "segment": { + "dimension": "us-gaap:FinancialInstrumentAxis", + "value": "us-gaap:CashMember" + }, + "value": "17773000000" + } + ] + } +} ``` > See the documentation for more details: https://sec-api.io/docs/xbrl-to-json-converter-api -# 10-K/10-Q Section Extractor API +## 10-K/10-Q/8-K Section Extractor API -The Extractor API returns individual sections from 10-Q and 10-K filings. The extracted section is cleaned and standardized - in raw text or in standardized HTML. You can programmatically extract one or multiple sections from any 10-Q and 10-K filing. +The Extractor API extracts any text section from 10-Q, 10-K and 8-K SEC filings, and returns the extracted content in cleaned and standardized text or HTML format. -All 10-K and 10-Q sections can be extracted: +Supported sections: + +
+ 10-K Sections - 1 - Business - 1A - Risk Factors - 1B - Unresolved Staff Comments +- 1C - Cybersecurity - 2 - Properties - 3 - Legal Proceedings - 4 - Mine Safety Disclosures @@ -344,8 +429,71 @@ All 10-K and 10-Q sections can be extracted: - 12 - Security Ownership of Certain Beneficial Owners and Management and Related Stockholder Matters - 13 - Certain Relationships and Related Transactions, and Director Independence - 14 - Principal Accountant Fees and Services - -## Example +- 15 - Exhibits and Financial Statement Schedules + +
+ +
+ 10-Q Sections + +- **Part 1:** + - 1 - Financial Statements + - 2 - Management’s Discussion and Analysis of Financial Condition and Results of Operations + - 3 - Quantitative and Qualitative Disclosures About Market Risk + - 4 - Controls and Procedures + +- **Part 2:** + - 1 - Legal Proceedings + - 1A - Risk Factors + - 2 - Unregistered Sales of Equity Securities and Use of Proceeds + - 3 - Defaults Upon Senior Securities + - 4 - Mine Safety Disclosures + - 5 - Other Information + - 6 - Exhibits + +
+
+ 8-K Sections + +- 1.01: Entry into a Material Definitive Agreement +- 1.02: Termination of a Material Definitive Agreement +- 1.03: Bankruptcy or Receivership +- 1.04: Mine Safety - Reporting of Shutdowns and Patterns of Violations +- 1.05: Material Cybersecurity Incidents (introduced in 2023) +- 2.01: Completion of Acquisition or Disposition of Assets +- 2.02: Results of Operations and Financial Condition +- 2.03: Creation of a Direct Financial Obligation or an Obligation under an Off-Balance Sheet Arrangement of a Registrant +- 2.04: Triggering Events That Accelerate or Increase a Direct Financial Obligation or an Obligation under an Off-Balance Sheet Arrangement +- 2.05: Cost Associated with Exit or Disposal Activities +- 2.06: Material Impairments +- 3.01: Notice of Delisting or Failure to Satisfy a Continued Listing Rule or Standard; Transfer of Listing +- 3.02: Unregistered Sales of Equity Securities +- 3.03: Material Modifications to Rights of Security Holders +- 4.01: Changes in Registrant's Certifying Accountant +- 4.02: Non-Reliance on Previously Issued Financial Statements or a Related Audit Report or Completed Interim Review +- 5.01: Changes in Control of Registrant +- 5.02: Departure of Directors or Certain Officers; Election of Directors; Appointment of Certain Officers: Compensatory Arrangements of Certain Officers +- 5.03: Amendments to Articles of Incorporation or Bylaws; Change in Fiscal Year +- 5.04: Temporary Suspension of Trading Under Registrant's Employee Benefit Plans +- 5.05: Amendments to the Registrant's Code of Ethics, or Waiver of a Provision of the Code of Ethics +- 5.06: Change in Shell Company Status +- 5.07: Submission of Matters to a Vote of Security Holders +- 5.08: Shareholder Nominations Pursuant to Exchange Act Rule 14a-11 +- 6.01: ABS Informational and Computational Material +- 6.02: Change of Servicer or Trustee +- 6.03: Change in Credit Enhancement or Other External Support +- 6.04: Failure to Make a Required Distribution +- 6.05: Securities Act Updating Disclosure +- 6.06: Static Pool +- 6.10: Alternative Filings of Asset-Backed Issuers +- 7.01: Regulation FD Disclosure +- 8.01: Other Events +- 9.01: Financial Statements and Exhibits +- Signature + +
+ +### Usage ```js const { extractorApi } = secApi; @@ -362,220 +510,3 @@ console.log(sectionHtml); ``` > See the documentation for more details: https://sec-api.io/docs/sec-filings-item-extraction-api - -# Filing Render & Download API - -Download or render up to 40 filings per second. All filings, exhibits and attachements are supported. Access over 650,000 gigabyte of filings data. You can process the downloaded data in memory or save it to your hard drive. - -```js -const { renderApi } = require('sec-api'); - -renderApi.setApiKey('YOUR_API_KEY'); - -const filingUrl = - 'https://www.sec.gov/Archives/edgar/data/1841925/000121390021032758/ea142795-8k_indiesemic.htm'; - -const filingContent = await renderApi.getFilingContent(filingUrl); -``` - -> See the documentation for more details: https://sec-api.io/docs/sec-filings-render-api - -# Response Format - -- `accessionNo` (string) - Accession number of filing, e.g. 0000028917-20-000033 -- `cik` (string) - CIK of the filing issuer. Important: trailing `0` are removed. -- `ticker` (string) - Ticker of company, e.g. AMOT. A ticker is not available when non-publicly traded companies report filings (e.g. form 4 reported by directors). Please contact us if you find filings that you think should have tickers (but don't). -- `companyName` (string) - Name of company, e.g. Allied Motion Technologies Inc -- `companyNameLong` (string) - Long version of company name including the filer type (Issuer, Filer, Reporting), e.g. ALLIED MOTION TECHNOLOGIES INC (0000046129) (Issuer) -- `formType` (string) - sec.gov form type, e.g 10-K. [See the list of supported form types here.](https://sec-api.io/#list-of-sec-form-types) -- `description` (string) - Description of the form, e.g. Statement of changes in beneficial ownership of securities -- `linkToFilingDetails` (string) - Link to HTML, XML or PDF version of the filing. -- `linkToTxt` (string) - Link to the plain text version of the filing. This file can be multiple MBs large. -- `linkToHtml` (string) - Link to index page of the filing listing all exhibits and the original HTML file. -- `linkToXbrl` (string, optional) - Link to XBRL version of the filing (if available). -- `filedAt` (string) - The date (format: YYYY-MM-DD HH:mm:SS TZ) the filing was filed, eg 2019-12-06T14:41:26-05:00. -- `periodOfReport` (string, if reported) - Period of report, e.g. 2021-06-08 -- `effectivenessDate` (string, if reported) - Effectiveness date, e.g. 2021-06-08 -- `id` (string) - Unique ID of the filing. -- `entities` (array) - A list of all entities referred to in the filing. The first item in the array always represents the filing issuer. Each array element is an object with the following keys: - - `companyName` (string) - Company name of the entity, e.g. DILLARD'S, INC. (Issuer) - - `cik` (string) - CIK of the entity. Trailing 0 are not removed here, e.g. 0000028917 - - `irsNo` (string, optional) - IRS number of the entity, e.g. 710388071 - - `stateOfIncorporation` (string, optional) - State of incorporation of entity, e.g. AR - - `fiscalYearEnd` (string, optional) - Fiscal year end of the entity, e.g. 0201 - - `sic` (string, optional) - SIC of the entity, e.g. 5311 Retail-Department Stores - - `type` (string, optional) - Type of the filing being filed. Same as formType, e.g. 4 - - `act` (string, optional) - The SEC act pursuant to which the filing was filed, e.g. 34 - - `fileNo` (string, optional) - Filer number of the entity, e.g. 001-06140 - - `filmNo` (string, optional) - Film number of the entity, e.g. 20575664 -- `documentFormatFiles` (array) - An array listing all primary files of the filing. The first item of the array is always the filing itself. The last item of the array is always the TXT version of the filing. All other items can represent exhibits, press releases, PDF documents, presentations, graphics, XML files, and more. An array item is represented as follows: - - `sequence` (string, optional) - The sequence number of the filing, e.g. 1 - - `description` (string, optional) - Description of the file, e.g. EXHIBIT 31.1 - - `documentUrl` (string) - URL to the file on SEC.gov - - `type` (string, optional) - Type of the file, e.g. EX-32.1, GRAPHIC or 10-Q - - `size` (string, optional) - Size of the file, e.g. 6627216 -- `dataFiles` (array) - List of data files (filing attachments, exhibits, XBRL files) attached to the filing. - - `sequence` (string) - Sequence number of the file, e.g. 6 - - `description` (string) - Description of the file, e.g. XBRL INSTANCE DOCUMENT - - `documentUrl` (string) - URL to the file on SEC.gov - - `type` (string, optional) - Type of the file, e.g. EX-101.INS, EX-101.DEF or EX-101.PRE - - `size` (string, optional) - Size of the file, e.g. 6627216 -- `seriesAndClassesContractsInformation` (array) - List of series and classes/contracts information - - `series` (string) - Series ID, e.g. S000001297 - - `name` (string) - Name of entity, e.g. PRUDENTIAL ANNUITIES LIFE ASSUR CORP VAR ACCT B CL 1 SUB ACCTS - - `classesContracts` (array) - List of classes/contracts. Each list item has the following keys: - - `classContract` (string) - Class/Contract ID, e.g. C000011787 - - `name` (string) - Name of class/contract entity, e.g. Class L - - `ticker` (string) - Ticker class/contract entity, e.g. URTLX - -## 13F Institutional Ownerships - -13F filings report institutional ownerships. Each 13F filing has an attribute `holdings` (array). An array item in holdings represents one holding and has the following attributes: - -- `nameOfIssuer` (string) - Name of issuer, e.g. MICRON TECHNOLOGY INC -- `titleOfClass` (string) - Title of class, e.g. COM -- `cusip` (string) - CUSIP of security, e.g. 98850P109 -- `value` (integer) - Absolute holding value in $, e.g. 18000. Note: `value` doesn't have to be multiplied by 1000 anymore. It's done by our API automatically. -- `shrsOrPrnAmt` (object) - - `sshPrnamt` (integer) - Shares or PRN AMT, e.g. 345 - - `sshPrnamtType` (string) - Share/PRN type, e.g. "SH" -- `putCall` (string, optional) - Put / Call, e.g. Put -- `investmentDiscretion` (string) - Investment discretion, e.g. "SOLE" -- `otherManager` (string, optional) - Other manager, e.g. 7 -- `votingAuthority` (object) - - `Sole` (integer) - Sole, e.g. 345 - - `Shared` (integer) - Shared, e.g. 345 - - `None` (integer) - None, e.g. 345 - -## Example JSON Response - -```json -{ - "id": "79ad9e452ea42402df4fe55c636191d6", - "accessionNo": "0001213900-21-032169", - "cik": "1824149", - "ticker": "JOFF", - "companyName": "JOFF Fintech Acquisition Corp.", - "companyNameLong": "JOFF Fintech Acquisition Corp. (Filer)", - "formType": "10-Q", - "description": "Form 10-Q - Quarterly report [Sections 13 or 15(d)]", - "filedAt": "2021-06-11T17:25:44-04:00", - "linkToTxt": "https://www.sec.gov/Archives/edgar/data/1824149/000121390021032169/0001213900-21-032169.txt", - "linkToHtml": "https://www.sec.gov/Archives/edgar/data/1824149/000121390021032169/0001213900-21-032169-index.htm", - "linkToXbrl": "", - "linkToFilingDetails": "https://www.sec.gov/Archives/edgar/data/1824149/000121390021032169/f10q0321_jofffintech.htm", - "entities": [ - { - "companyName": "JOFF Fintech Acquisition Corp. (Filer)", - "cik": "1824149", - "irsNo": "852863893", - "stateOfIncorporation": "DE", - "fiscalYearEnd": "1231", - "type": "10-Q", - "act": "34", - "fileNo": "001-40005", - "filmNo": "211012398", - "sic": "6770 Blank Checks" - } - ], - "documentFormatFiles": [ - { - "sequence": "1", - "description": "QUARTERLY REPORT", - "documentUrl": "https://www.sec.gov/Archives/edgar/data/1824149/000121390021032169/f10q0321_jofffintech.htm", - "type": "10-Q", - "size": "274745" - }, - { - "sequence": "2", - "description": "CERTIFICATION", - "documentUrl": "https://www.sec.gov/Archives/edgar/data/1824149/000121390021032169/f10q0321ex31-1_jofffintech.htm", - "type": "EX-31.1", - "size": "12209" - }, - { - "sequence": "3", - "description": "CERTIFICATION", - "documentUrl": "https://www.sec.gov/Archives/edgar/data/1824149/000121390021032169/f10q0321ex31-2_jofffintech.htm", - "type": "EX-31.2", - "size": "12220" - }, - { - "sequence": "4", - "description": "CERTIFICATION", - "documentUrl": "https://www.sec.gov/Archives/edgar/data/1824149/000121390021032169/f10q0321ex32-1_jofffintech.htm", - "type": "EX-32.1", - "size": "4603" - }, - { - "sequence": "5", - "description": "CERTIFICATION", - "documentUrl": "https://www.sec.gov/Archives/edgar/data/1824149/000121390021032169/f10q0321ex32-2_jofffintech.htm", - "type": "EX-32.2", - "size": "4607" - }, - { - "sequence": " ", - "description": "Complete submission text file", - "documentUrl": "https://www.sec.gov/Archives/edgar/data/1824149/000121390021032169/0001213900-21-032169.txt", - "type": " ", - "size": "2344339" - } - ], - "dataFiles": [ - { - "sequence": "6", - "description": "XBRL INSTANCE FILE", - "documentUrl": "https://www.sec.gov/Archives/edgar/data/1824149/000121390021032169/joff-20210331.xml", - "type": "EX-101.INS", - "size": "248137" - }, - { - "sequence": "7", - "description": "XBRL SCHEMA FILE", - "documentUrl": "https://www.sec.gov/Archives/edgar/data/1824149/000121390021032169/joff-20210331.xsd", - "type": "EX-101.SCH", - "size": "43550" - }, - { - "sequence": "8", - "description": "XBRL CALCULATION FILE", - "documentUrl": "https://www.sec.gov/Archives/edgar/data/1824149/000121390021032169/joff-20210331_cal.xml", - "type": "EX-101.CAL", - "size": "21259" - }, - { - "sequence": "9", - "description": "XBRL DEFINITION FILE", - "documentUrl": "https://www.sec.gov/Archives/edgar/data/1824149/000121390021032169/joff-20210331_def.xml", - "type": "EX-101.DEF", - "size": "182722" - }, - { - "sequence": "10", - "description": "XBRL LABEL FILE", - "documentUrl": "https://www.sec.gov/Archives/edgar/data/1824149/000121390021032169/joff-20210331_lab.xml", - "type": "EX-101.LAB", - "size": "309660" - }, - { - "sequence": "11", - "description": "XBRL PRESENTATION FILE", - "documentUrl": "https://www.sec.gov/Archives/edgar/data/1824149/000121390021032169/joff-20210331_pre.xml", - "type": "EX-101.PRE", - "size": "186873" - } - ], - "seriesAndClassesContractsInformation": [], - "periodOfReport": "2021-03-31", - "effectivenessDate": "2021-03-31" -} -``` - -# Contact - -Let me know how I can improve the library or if you have any feature -suggestions. I'm happy to implement them. - -Just open a new issue on github here: -[https://github.com/janlukasschroeder/sec-api/issues](https://github.com/janlukasschroeder/sec-api/issues) diff --git a/config.js b/config.js index 25197c8..b784692 100644 --- a/config.js +++ b/config.js @@ -1,6 +1,7 @@ module.exports = { io: { server: 'https://api.sec-api.io:3334', + // server: 'http://localhost:3333', namespace: { allFilings: 'all-filings', }, @@ -11,6 +12,12 @@ module.exports = { fullTextApi: { endpoint: 'https://api.sec-api.io/full-text-search', }, + downloadApiV1: { + endpoint: 'https://archive.sec-api.io', + }, + downloadApiV2: { + endpoint: 'https://edgar-mirror.sec-api.io', + }, renderApi: { endpoint: 'https://api.sec-api.io/filing-reader', }, diff --git a/example.js b/example.js index cfc1c4f..3b6ac20 100644 --- a/example.js +++ b/example.js @@ -49,6 +49,22 @@ const fullTextSearchExample = async () => { // uncomment // fullTextSearchExample(); +/** + * Download API + */ +const { downloadApi } = secApi; + +const downloadApiExample = async () => { + const filingUrl = + 'https://www.sec.gov/Archives/edgar/data/1318605/000162828025045968/tsla-20250930.htm'; + + const data = await downloadApi.getFile(filingUrl); + + console.log(data.slice(0, 1000)); +}; + +// downloadApiExample(); + /** * Render API */ diff --git a/index.js b/index.js index 4faf51c..0baeaaf 100755 --- a/index.js +++ b/index.js @@ -24,7 +24,7 @@ const initSocket = (apiKey) => { }; streamApiStore.socket = io(uri, params); streamApiStore.socket.on('connect', () => - console.log('Socket connected to', uri) + console.log('Socket connected to', uri), ); streamApiStore.socket.on('filing', handleNewFiling); streamApiStore.socket.on('filings', handleNewFilings); @@ -92,6 +92,67 @@ const getFilingsFullText = async (query) => { return data; }; +/** + * Download API + */ +const removeIxbrlRenderingQuery = (urlPath) => { + return urlPath.replace('/ix?doc=/', '/').replace('/ix.xhtml?doc=/', '/'); +}; + +// in: https://www.sec.gov/Archives/edgar/data/2065821/0001213900-25-073836-index-headers.html +// out: /2065821/000121390025073836/0001213900-25-073836-index-headers.html +const edgarFileUrlToUrlPath = (edgarFileUrl) => { + return edgarFileUrl.replace(/.*\/edgar\/data\//, '/'); +}; + +const addLeadingSlash = (urlPath) => { + if (urlPath.charAt(0) !== '/') { + return '/' + urlPath; + } + return urlPath; +}; + +const getFile = async ( + edgarFileUrl, + params = { + // true: decompress gzip response + // false: return raw gzip buffer + decompress: true, + // true: return string for text content-types, buffer for others (PDFs, images, etc) + // false: return raw buffer for all content-types + autoConvertToString: true, + }, +) => { + const normalizedEdgarFileUrl = removeIxbrlRenderingQuery(edgarFileUrl); + let urlPath = edgarFileUrlToUrlPath(normalizedEdgarFileUrl); + urlPath = addLeadingSlash(urlPath); + + const url = + config.downloadApiV2.endpoint + urlPath + '?token=' + store.apiKey; + + const options = { + method: 'get', + url, + responseType: 'arraybuffer', + decompress: params.decompress, + }; + + const { data, headers } = await axios(options); + + if (!params.autoConvertToString) { + return data; + } + + // check content-type to determine how buffer response should be returned + const contentType = headers['content-type']; + + if (contentType && contentType.includes('text')) { + return data.toString('utf-8'); + } + + return data; +}; + /** * Render API */ @@ -103,7 +164,7 @@ const getFilingContent = async (url, type = 'html') => { } else { const filename = url.replace( 'https://www.sec.gov/Archives/edgar/data/', - '' + '', ); _url = config.downloadApi.endpoint + filename + '?token=' + store.apiKey; } @@ -124,7 +185,7 @@ const getFilingContent = async (url, type = 'html') => { const xbrlToJson = async ({ htmUrl, xbrlUrl, accessionNo } = {}) => { if (!htmUrl && !xbrlUrl && !accessionNo) { throw new Error( - 'Please provide one of the following arguments: htmUrl, xbrlUrl or accessionNo' + 'Please provide one of the following arguments: htmUrl, xbrlUrl or accessionNo', ); } @@ -180,6 +241,10 @@ const modules = { setApiKey, getFilings: getFilingsFullText, }, + downloadApi: { + setApiKey, + getFile, + }, renderApi: { setApiKey, getFilingContent, @@ -202,7 +267,11 @@ module.exports = modules; if (require.main === module) { const apiKey = process.argv[2]; const emitter = connect(apiKey); - emitter.on('filing', (filing) => - console.log(JSON.stringify(filing, null, 1)) - ); + let messageCounter = 0; + + emitter.on('filing', (filing) => { + // console.log(JSON.stringify(filing, null, 1)) + messageCounter++; + console.log(filing.id, filing.formType, filing.filedAt, messageCounter); + }); } diff --git a/package.json b/package.json index c908e04..d4a8030 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "sec-api", - "version": "3.1.5", - "description": "sec.gov EDGAR API Wrapper", + "version": "3.1.6", + "description": "SEC-API.io JavaScript Library", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" From c3171b66d7814737bb7a6260c204cc726c9642d6 Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Wed, 4 Feb 2026 15:12:26 -0500 Subject: [PATCH 22/39] 3.1.7 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 04904fa..6fbd881 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "sec-api", - "version": "3.1.5", + "version": "3.1.7", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index d4a8030..5df0a11 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sec-api", - "version": "3.1.6", + "version": "3.1.7", "description": "SEC-API.io JavaScript Library", "main": "index.js", "scripts": { From c5aa319bc08a29555b4223657ae73e9ff16453bf Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Thu, 12 Feb 2026 04:21:02 -0500 Subject: [PATCH 23/39] bumping axios dep replaced socketio with websocket client --- .gitignore | 3 +- README.md | 35 +++- example.js | 2 +- index.js | 110 +++++------ package-lock.json | 455 +++++++++++++++++++++++++++++----------------- package.json | 5 +- 6 files changed, 373 insertions(+), 237 deletions(-) diff --git a/.gitignore b/.gitignore index ede9682..706e9ce 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .idea .env node_modules -.deploy \ No newline at end of file +deploy.sh +.npmrc \ No newline at end of file diff --git a/README.md b/README.md index 0eb3425..dd0651e 100644 --- a/README.md +++ b/README.md @@ -205,11 +205,29 @@ const filings = await fullTextSearchApi.getFilings(rawQuery); The Stream API provides a real-time feed of the latest filings submitted to the SEC EDGAR database via a WebSocket connection. This push-based technology ensures immediate delivery of metadata for each new filing as it becomes publicly available. ```js -const { streamApi } = require('sec-api'); - -streamApi.connect('YOUR_API_KEY'); - -streamApi.on('filing', (filing) => console.log(filing)); +const WebSocket = require('ws'); + +const API_KEY = 'YOUR_API'; // replace this with your actual API key +const STREAM_API_URL = 'wss://stream.sec-api.io?apiKey=' + API_KEY; + +const ws = new WebSocket(STREAM_API_URL); + +ws.on('open', () => console.log('✅ Connected to:', STREAM_API_URL)); +ws.on('close', () => console.log('Connection closed')); +ws.on('error', (err) => console.log('Error:', err.message)); + +ws.on('message', (message) => { + const filings = JSON.parse(message.toString()); + filings.forEach((filing) => { + console.log( + filing.id, + filing.cik, + filing.formType, + filing.filedAt, + filing.linkToFilingDetails, + ); + }); +}); ``` > See the documentation for more details: https://sec-api.io/docs/stream-api @@ -298,8 +316,9 @@ const xbrlJson3 = await xbrlApi.xbrlToJson({ }); ``` -### Example Response - +
+ Example Response + ```json { "CoverPage": { @@ -398,6 +417,8 @@ const xbrlJson3 = await xbrlApi.xbrlToJson({ } ``` +
+ > See the documentation for more details: https://sec-api.io/docs/xbrl-to-json-converter-api ## 10-K/10-Q/8-K Section Extractor API diff --git a/example.js b/example.js index 3b6ac20..9a6c541 100644 --- a/example.js +++ b/example.js @@ -85,7 +85,7 @@ const renderApiExample = async () => { /** * Stream API */ -const { streamApi } = secApi; +// const { streamApi } = secApi; // uncomment // streamApi.connect(yourApiKey); diff --git a/index.js b/index.js index 0baeaaf..aaf2dde 100755 --- a/index.js +++ b/index.js @@ -1,8 +1,8 @@ #!/usr/bin/env node -const io = require('socket.io-client'); +// const io = require('socket.io-client'); const config = require('./config'); -const events = require('events'); +// const events = require('events'); const axios = require('axios'); const store = { apiKey: '' }; @@ -14,44 +14,44 @@ const setApiKey = (apiKey) => { /* * Stream API */ -const streamApiStore = {}; - -const initSocket = (apiKey) => { - const uri = config.io.server + '/' + config.io.namespace.allFilings; - const params = { - query: { apiKey }, - transports: ['websocket'], // ensure traffic goes through load balancer - }; - streamApiStore.socket = io(uri, params); - streamApiStore.socket.on('connect', () => - console.log('Socket connected to', uri), - ); - streamApiStore.socket.on('filing', handleNewFiling); - streamApiStore.socket.on('filings', handleNewFilings); - streamApiStore.socket.on('error', console.error); -}; - -const handleNewFiling = (filing) => { - streamApiStore.eventEmitter.emit('filing', filing); -}; - -const handleNewFilings = (filings) => { - streamApiStore.eventEmitter.emit('filings', filings); -}; - -const close = () => { - if (streamApiStore.socket.close) { - streamApiStore.socket.close(); - } -}; - -const connect = (apiKey) => { - setApiKey(apiKey); - initSocket(apiKey); - streamApiStore.eventEmitter = new events.EventEmitter(); - modules.streamApi.on = streamApiStore.eventEmitter.on; - return streamApiStore.eventEmitter; -}; +// const streamApiStore = {}; + +// const initSocket = (apiKey) => { +// const uri = config.io.server + '/' + config.io.namespace.allFilings; +// const params = { +// query: { apiKey }, +// transports: ['websocket'], // ensure traffic goes through load balancer +// }; +// streamApiStore.socket = io(uri, params); +// streamApiStore.socket.on('connect', () => +// console.log('Socket connected to', uri), +// ); +// streamApiStore.socket.on('filing', handleNewFiling); +// streamApiStore.socket.on('filings', handleNewFilings); +// streamApiStore.socket.on('error', console.error); +// }; + +// const handleNewFiling = (filing) => { +// streamApiStore.eventEmitter.emit('filing', filing); +// }; + +// const handleNewFilings = (filings) => { +// streamApiStore.eventEmitter.emit('filings', filings); +// }; + +// const close = () => { +// if (streamApiStore.socket.close) { +// streamApiStore.socket.close(); +// } +// }; + +// const connect = (apiKey) => { +// setApiKey(apiKey); +// initSocket(apiKey); +// streamApiStore.eventEmitter = new events.EventEmitter(); +// modules.streamApi.on = streamApiStore.eventEmitter.on; +// return streamApiStore.eventEmitter; +// }; /* * Query API @@ -228,11 +228,11 @@ const getSection = async (filingUrl, section = '1A', returnType = 'text') => { */ const modules = { setApiKey, - streamApi: { - setApiKey, - connect, - close, - }, + // streamApi: { + // setApiKey, + // connect, + // close, + // }, queryApi: { setApiKey, getFilings: getFilingsQuery, @@ -265,13 +265,15 @@ module.exports = modules; * Command Line Execution - Stream API */ if (require.main === module) { - const apiKey = process.argv[2]; - const emitter = connect(apiKey); - let messageCounter = 0; - - emitter.on('filing', (filing) => { - // console.log(JSON.stringify(filing, null, 1)) - messageCounter++; - console.log(filing.id, filing.formType, filing.filedAt, messageCounter); - }); + // const apiKey = process.argv[2]; + // const emitter = connect(apiKey); + // let messageCounter = 0; + // emitter.on('filing', (filing) => { + // // console.log(JSON.stringify(filing, null, 1)) + // messageCounter++; + // console.log(filing.id, filing.formType, filing.filedAt, messageCounter); + // }); + console.log( + 'sec-api npm package working. Please import the package and use the provided methods to interact with the API.', + ); } diff --git a/package-lock.json b/package-lock.json index 6fbd881..868182c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,185 +1,298 @@ { "name": "sec-api", "version": "3.1.7", - "lockfileVersion": 1, + "lockfileVersion": 3, "requires": true, - "dependencies": { - "after": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" - }, - "arraybuffer.slice": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", - "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" - }, - "axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "requires": { - "follow-redirects": "^1.14.0" - } - }, - "backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" + "packages": { + "": { + "name": "sec-api", + "version": "3.1.7", + "license": "MIT", + "dependencies": { + "axios": "^1.13.5" + }, + "bin": { + "sec-api": "index.js" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" }, - "base64-arraybuffer": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", - "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=" + "node_modules/axios": { + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz", + "integrity": "sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } }, - "blob": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", - "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } }, - "component-bind": { + "node_modules/delayed-stream": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } }, - "component-emitter": { + "node_modules/es-errors": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" - }, - "component-inherit": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "engine.io-client": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.2.tgz", - "integrity": "sha512-QEqIp+gJ/kMHeUun7f5Vv3bteRHppHH/FMBQX/esFj/fuYfjyUKWGMo3VCvIP/V8bE9KcjHmRZrhIz2Z9oNsDA==", - "requires": { - "component-emitter": "~1.3.0", - "component-inherit": "0.0.3", - "debug": "~3.1.0", - "engine.io-parser": "~2.2.0", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parseqs": "0.0.6", - "parseuri": "0.0.6", - "ws": "~7.4.2", - "xmlhttprequest-ssl": "~1.6.2", - "yeast": "0.1.2" - } - }, - "engine.io-parser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz", - "integrity": "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==", - "requires": { - "after": "0.8.2", - "arraybuffer.slice": "~0.0.7", - "base64-arraybuffer": "0.1.4", - "blob": "0.0.5", - "has-binary2": "~1.0.2" - } - }, - "follow-redirects": { - "version": "1.14.8", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", - "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==" - }, - "has-binary2": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", - "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", - "requires": { - "isarray": "2.0.1" - } - }, - "has-cors": { + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/proxy-from-env": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" - }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" - }, - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "parseqs": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", - "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==" - }, - "parseuri": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", - "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==" - }, - "socket.io-client": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.4.0.tgz", - "integrity": "sha512-M6xhnKQHuuZd4Ba9vltCLT9oa+YvTsP8j9NcEiLElfIg8KeYPyhWOes6x4t+LTAC8enQbE/995AdTem2uNyKKQ==", - "requires": { - "backo2": "1.0.2", - "component-bind": "1.0.0", - "component-emitter": "~1.3.0", - "debug": "~3.1.0", - "engine.io-client": "~3.5.0", - "has-binary2": "~1.0.2", - "indexof": "0.0.1", - "parseqs": "0.0.6", - "parseuri": "0.0.6", - "socket.io-parser": "~3.3.0", - "to-array": "0.1.4" - } - }, - "socket.io-parser": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.2.tgz", - "integrity": "sha512-FJvDBuOALxdCI9qwRrO/Rfp9yfndRtc1jSgVgV8FDraihmSP/MLGD5PEuJrNfjALvcQ+vMDM/33AWOYP/JSjDg==", - "requires": { - "component-emitter": "~1.3.0", - "debug": "~3.1.0", - "isarray": "2.0.1" - } - }, - "to-array": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" - }, - "ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==" - }, - "xmlhttprequest-ssl": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz", - "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==" - }, - "yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" } } } diff --git a/package.json b/package.json index 5df0a11..eeb7460 100644 --- a/package.json +++ b/package.json @@ -32,15 +32,14 @@ "13-G", "TO-C" ], - "author": "Jan Schroeder", + "author": "Dr. Jan Schroeder", "license": "MIT", "bugs": { "url": "https://github.com/janlukasschroeder/sec-api/issues" }, "homepage": "https://github.com/janlukasschroeder/sec-api#readme", "dependencies": { - "axios": "^0.21.4", - "socket.io-client": "^2.4.0" + "axios": "^1.13.5" }, "bin": { "sec-api": "./index.js" From 3c30a51a94be723a66ba5718465043a6a1f39ea7 Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Thu, 12 Feb 2026 04:21:04 -0500 Subject: [PATCH 24/39] 4.0.0 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 868182c..27aa9a4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "sec-api", - "version": "3.1.7", + "version": "4.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "sec-api", - "version": "3.1.7", + "version": "4.0.0", "license": "MIT", "dependencies": { "axios": "^1.13.5" diff --git a/package.json b/package.json index eeb7460..7a2d7b2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sec-api", - "version": "3.1.7", + "version": "4.0.0", "description": "SEC-API.io JavaScript Library", "main": "index.js", "scripts": { From cc0b4be28768cb2b543b224e07a8f5bb20eac5fa Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Wed, 1 Apr 2026 09:26:12 -0400 Subject: [PATCH 25/39] Add all SEC API endpoint wrappers, ESM support, tests, and comprehensive README documentation - Implement 30+ API wrappers (insider trading, Form 13F, Form ADV, Form D, enforcement actions, mapping, EDGAR entities, etc.) - Add retry logic with exponential backoff for 429 rate limit errors - Add ESM support via index.mjs and package.json "exports" field - Add integration tests for all 32 API endpoints - Document every API in README with usage examples, correct query fields, response key annotations, and collapsible real-world response examples - Add bulk dataset reference table and EDGAR ingestion logs API - Fix all documentation links to match actual sec-api.io/docs paths - Save full API response examples to examples/api-responses/ --- .gitignore | 4 +- README.md | 3838 ++++++++++++++++- config.js | 93 + examples/api-responses/aaer.json | 70 + examples/api-responses/audit-fees.json | 49 + .../directors-board-members.json | 231 + examples/api-responses/edgar-entities.json | 85 + .../edgar-index-ingestion-log.json | 14 + .../api-responses/executive-compensation.json | 66 + examples/api-responses/float.json | 1280 ++++++ examples/api-responses/form-13d-13g.json | 115 + .../api-responses/form-13f-cover-pages.json | 48 + examples/api-responses/form-13f-holdings.json | 155 + examples/api-responses/form-144.json | 117 + examples/api-responses/form-8k-item-4-01.json | 41 + examples/api-responses/form-8k-item-4-02.json | 50 + examples/api-responses/form-8k-item-5-02.json | 78 + examples/api-responses/form-8k.json | 50 + .../api-responses/form-adv-brochures.json | 76 + .../api-responses/form-adv-direct-owners.json | 142 + examples/api-responses/form-adv-firms.json | 624 +++ .../form-adv-indirect-owners.json | 167 + .../api-responses/form-adv-individuals.json | 114 + .../api-responses/form-adv-private-funds.json | 410 ++ examples/api-responses/form-c.json | 145 + examples/api-responses/form-d.json | 166 + examples/api-responses/form-ncen.json | 196 + examples/api-responses/form-nport.json | 314 ++ examples/api-responses/form-npx-metadata.json | 70 + .../form-npx-voting-records.json | 89 + examples/api-responses/form-s1-424b4.json | 157 + examples/api-responses/full-text-search.json | 41 + .../api-responses/insider-trading-form3.json | 53 + .../api-responses/insider-trading-form5.json | 75 + examples/api-responses/insider-trading.json | 168 + examples/api-responses/mapping.json | 21 + examples/api-responses/reg-a-form-1a.json | 130 + examples/api-responses/reg-a-form-1k.json | 73 + examples/api-responses/reg-a-form-1z.json | 68 + examples/api-responses/reg-a-search.json | 90 + .../sec-administrative-proceedings.json | 78 + .../sec-enforcement-actions.json | 84 + .../sec-litigation-releases.json | 118 + examples/api-responses/sro-filings.json | 31 + examples/api-responses/subsidiary.json | 94 + index.js | 505 ++- index.mjs | 44 + package.json | 8 +- tests/index.js | 371 ++ 49 files changed, 11027 insertions(+), 79 deletions(-) create mode 100644 examples/api-responses/aaer.json create mode 100644 examples/api-responses/audit-fees.json create mode 100644 examples/api-responses/directors-board-members.json create mode 100644 examples/api-responses/edgar-entities.json create mode 100644 examples/api-responses/edgar-index-ingestion-log.json create mode 100644 examples/api-responses/executive-compensation.json create mode 100644 examples/api-responses/float.json create mode 100644 examples/api-responses/form-13d-13g.json create mode 100644 examples/api-responses/form-13f-cover-pages.json create mode 100644 examples/api-responses/form-13f-holdings.json create mode 100644 examples/api-responses/form-144.json create mode 100644 examples/api-responses/form-8k-item-4-01.json create mode 100644 examples/api-responses/form-8k-item-4-02.json create mode 100644 examples/api-responses/form-8k-item-5-02.json create mode 100644 examples/api-responses/form-8k.json create mode 100644 examples/api-responses/form-adv-brochures.json create mode 100644 examples/api-responses/form-adv-direct-owners.json create mode 100644 examples/api-responses/form-adv-firms.json create mode 100644 examples/api-responses/form-adv-indirect-owners.json create mode 100644 examples/api-responses/form-adv-individuals.json create mode 100644 examples/api-responses/form-adv-private-funds.json create mode 100644 examples/api-responses/form-c.json create mode 100644 examples/api-responses/form-d.json create mode 100644 examples/api-responses/form-ncen.json create mode 100644 examples/api-responses/form-nport.json create mode 100644 examples/api-responses/form-npx-metadata.json create mode 100644 examples/api-responses/form-npx-voting-records.json create mode 100644 examples/api-responses/form-s1-424b4.json create mode 100644 examples/api-responses/full-text-search.json create mode 100644 examples/api-responses/insider-trading-form3.json create mode 100644 examples/api-responses/insider-trading-form5.json create mode 100644 examples/api-responses/insider-trading.json create mode 100644 examples/api-responses/mapping.json create mode 100644 examples/api-responses/reg-a-form-1a.json create mode 100644 examples/api-responses/reg-a-form-1k.json create mode 100644 examples/api-responses/reg-a-form-1z.json create mode 100644 examples/api-responses/reg-a-search.json create mode 100644 examples/api-responses/sec-administrative-proceedings.json create mode 100644 examples/api-responses/sec-enforcement-actions.json create mode 100644 examples/api-responses/sec-litigation-releases.json create mode 100644 examples/api-responses/sro-filings.json create mode 100644 examples/api-responses/subsidiary.json create mode 100644 index.mjs create mode 100644 tests/index.js diff --git a/.gitignore b/.gitignore index 706e9ce..dec1c10 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,6 @@ .env node_modules deploy.sh -.npmrc \ No newline at end of file +.npmrc +.claude +tmp \ No newline at end of file diff --git a/README.md b/README.md index dd0651e..e5b59e7 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,13 @@ The full API documentation is available at [sec-api.io/docs](https://sec-api.io/ npm install sec-api ``` +Both CommonJS and ESM imports are supported: + +```js +const { downloadApi } = require('sec-api'); // CommonJS +import { downloadApi } from 'sec-api'; // ESM +``` + **Download EDGAR Filings Free of Charge** ```js @@ -37,6 +44,11 @@ console.log(data.slice(0, 1000)); - [Real-Time Filing Stream API](#filings-real-time-stream-api) - [Download API - Download any SEC filing, exhibit and attached file](#filing--exhibit-download-api) - [PDF Generator API - Download SEC filings and exhibits as PDF](#pdf-generator-api) +- [EDGAR Filings Ingestion Logs API](#edgar-filings-ingestion-logs-api) + +**Bulk Datasets** + +- [Bulk Datasets - Download complete EDGAR filing datasets](#bulk-datasets) **Converter & Extractor APIs** @@ -50,6 +62,9 @@ console.log(data.slice(0, 1000)); **Ownership Data APIs** - [Form 3/4/5 API - Insider Trading Disclosures](#insider-trading-data-api) + - [Form 3 - Initial Ownership Statements](#form-3---initial-ownership-statements) + - [Form 4 - Changes in Ownership](#form-4---changes-in-ownership) + - [Form 5 - Annual Ownership Statements](#form-5---annual-ownership-statements) - [Form 144 API - Restricted Stock Sales by Insiders](#form-144-api) - [Form 13F API - Institutional Investment Manager Holdings & Cover Pages](#form-13f-institutional-holdings-database) - [Form 13D/13G API - Activist and Passive Investor Holdings](#form-13d-13g-api) @@ -79,6 +94,7 @@ console.log(data.slice(0, 1000)); - [Executive Compensation Data API](#executive-compensation-data-api) - [Outstanding Shares & Public Float](#outstanding-shares--public-float-api) - [Company Subsidiary API](#subsidiary-api) +- [Audit Fees Data API](#audit-fees-data-api) **Enforcement Actions, Proceedings, AAERs & SRO Filings** @@ -103,13 +119,14 @@ const { queryApi } = require('sec-api'); queryApi.setApiKey('YOUR_API_KEY'); const query = { - query: 'formType:"10-Q"', // get most recent 10-Q filings + query: 'formType:"10-Q" AND ticker:AAPL', from: '0', // used for pagination. set to 50 to retrieve the next 50 metadata objects. size: '50', // number of results per response sort: [{ filedAt: { order: 'desc' } }], // sort result by filedAt }; const filings = await queryApi.getFilings(rawQuery); +// response: { total, filings } ```
@@ -175,6 +192,153 @@ const filings = await queryApi.getFilings(rawQuery);
+
+ 8-K Filing Response Example (Item 2.02) + +```json +{ + "total": { "value": 10000, "relation": "gte" }, + "query": { "from": 0, "size": 1 }, + "filings": [ + { + "id": "74c44f9aefc62f7788ffdccf30596225", + "ticker": "FFAI", + "formType": "8-K", + "accessionNo": "0001213900-26-037931", + "cik": "1805521", + "companyNameLong": "FARADAY FUTURE INTELLIGENT ELECTRIC INC. (Filer)", + "companyName": "FARADAY FUTURE INTELLIGENT ELECTRIC INC.", + "description": "Form 8-K - Current report - Item 2.02 Item 8.01 Item 9.01", + "filedAt": "2026-04-01T06:11:36-04:00", + "periodOfReport": "2026-03-31", + "linkToHtml": "https://www.sec.gov/Archives/edgar/data/1805521/000121390026037931/0001213900-26-037931-index.htm", + "linkToFilingDetails": "https://www.sec.gov/Archives/edgar/data/1805521/000121390026037931/ea0284262-8k_faraday.htm", + "linkToTxt": "https://www.sec.gov/Archives/edgar/data/1805521/000121390026037931/0001213900-26-037931.txt", + "entities": [ + { + "fiscalYearEnd": "1231", + "stateOfIncorporation": "DE", + "act": "34", + "cik": "1805521", + "fileNo": "001-39395", + "irsNo": "844720320", + "companyName": "FARADAY FUTURE INTELLIGENT ELECTRIC INC. (Filer)", + "type": "8-K", + "sic": "3711 Motor Vehicles & Passenger Car Bodies" + } + ], + "documentFormatFiles": [ + { + "sequence": "1", + "size": "31779", + "documentUrl": "https://www.sec.gov/ix?doc=/Archives/edgar/data/1805521/000121390026037931/ea0284262-8k_faraday.htm", + "description": "CURRENT REPORT", + "type": "8-K" + }, + { + "sequence": "2", + "size": "137883", + "documentUrl": "https://www.sec.gov/Archives/edgar/data/1805521/000121390026037931/ea028426201ex99-1.htm", + "description": "PRESS RELEASE", + "type": "EX-99.1" + } + // ... more files + ], + "dataFiles": [] + } + ] +} +``` + +
+ +
+ Series & Classes Filing Response Example + +```json +{ + "total": { "value": 874, "relation": "eq" }, + "query": { "from": 0, "size": 1 }, + "filings": [ + { + "id": "74c44f9aefc62f7788ffdccf30596225", + "ticker": "", + "formType": "24F-2NT", + "accessionNo": "0001410368-25-042647", + "cik": "832808", + "companyNameLong": "BERNSTEIN SANFORD C FUND INC (Filer)", + "companyName": "BERNSTEIN SANFORD C FUND INC", + "description": "Form 24F-2NT - Rule 24f-2 notice", + "filedAt": "2025-12-29T08:59:06-05:00", + "periodOfReport": "2025-09-30", + "linkToHtml": "https://www.sec.gov/Archives/edgar/data/832808/000141036825042647/0001410368-25-042647-index.htm", + "linkToFilingDetails": "https://www.sec.gov/Archives/edgar/data/832808/000141036825042647/xsl24F-2NT/primary_doc.xml", + "linkToTxt": "https://www.sec.gov/Archives/edgar/data/832808/000141036825042647/0001410368-25-042647.txt", + "entities": [ + { + "fiscalYearEnd": "0930", + "stateOfIncorporation": "MD", + "act": "33", + "cik": "832808", + "fileNo": "033-21844", + "irsNo": "133464161", + "companyName": "BERNSTEIN SANFORD C FUND INC (Filer)", + "type": "24F-2NT" + } + ], + "seriesAndClassesContractsInformation": [ + { + "series": "S000011051", + "name": "California Municipal Portfolio", + "classesContracts": [ + { + "ticker": "AICAX", + "name": "AB Intermediate California Municipal Class A", + "classContract": "C000030481" + }, + { + "ticker": "ACMCX", + "name": "AB Intermediate California Municipal Class C", + "classContract": "C000030483" + }, + { + "ticker": "SNCAX", + "name": "California Municipal Class", + "classContract": "C000084881" + } + // ... more classes + ] + }, + { + "series": "S000011055", + "name": "Diversified Municipal Portfolio", + "classesContracts": [ + { + "ticker": "AIDAX", + "name": "AB Intermediate Diversified Municipal Class A", + "classContract": "C000030490" + } + // ... more classes + ] + } + // ... more series + ], + "documentFormatFiles": [ + { + "sequence": "1", + "size": "5162", + "documentUrl": "https://www.sec.gov/Archives/edgar/data/832808/000141036825042647/primary_doc.xml", + "type": "24F-2NT" + } + ], + "dataFiles": [] + } + ] +} +``` + +
+ > See the documentation for more details: https://sec-api.io/docs/query-api ## Full-Text Search API @@ -196,8 +360,34 @@ const query = { }; const filings = await fullTextSearchApi.getFilings(rawQuery); +// response: { total, filings } +``` + +
+ Example Response + +```json +{ + "total": { "value": 3, "relation": "eq" }, + "filings": [ + { + "accessionNo": "0001104659-21-080527", + "cik": "1535955", + "companyNameLong": "Lipocine Inc. (LPCN) (CIK 0001535955)", + "ticker": "LPCN", + "description": "EXHIBIT 99.1", + "formType": "8-K", + "type": "EX-99.1", + "filingUrl": "https://www.sec.gov/Archives/edgar/data/1535955/000110465921080527/tm2119438d1_ex99-1.htm", + "filedAt": "2021-06-14" + } + // ... more filings + ] +} ``` +
+ > See the documentation for more details: https://sec-api.io/docs/full-text-search-api ## Filings Real-Time Stream API @@ -245,6 +435,7 @@ const filingUrl = 'https://www.sec.gov/Archives/edgar/data/1841925/000121390021032758/ea142795-8k_indiesemic.htm'; const filingContent = await downloadApi.getFile(filingUrl); +// response: string (HTML/text) or Buffer (PDF/binary) ``` > See the documentation for more details: https://sec-api.io/docs/sec-filings-render-api @@ -314,6 +505,7 @@ const xbrlJson2 = await xbrlApi.xbrlToJson({ const xbrlJson3 = await xbrlApi.xbrlToJson({ accessionNo: '0000320193-20-000096', }); +// response: { CoverPage, StatementsOfIncome, BalanceSheets, StatementsOfCashFlows, ... } ```
@@ -526,8 +718,3652 @@ const filingUrl = const sectionText = await extractorApi.getSection(filingUrl, '1A', 'text'); const sectionHtml = await extractorApi.getSection(filingUrl, '1A', 'html'); +// response: string (plain text or HTML) console.log(sectionText); console.log(sectionHtml); ``` > See the documentation for more details: https://sec-api.io/docs/sec-filings-item-extraction-api + +## PDF Generator API + +Download any SEC filing or exhibit as a PDF file. + +```js +const { pdfGeneratorApi } = require('sec-api'); + +pdfGeneratorApi.setApiKey('YOUR_API_KEY'); + +const filingUrl = + 'https://www.sec.gov/Archives/edgar/data/1318605/000156459021004599/tsla-10k_20201231.htm'; + +const pdfBuffer = await pdfGeneratorApi.getPdf(filingUrl); + +// write PDF to file +const fs = require('fs'); +// response: Buffer (PDF binary) +fs.writeFileSync('tesla-10k.pdf', pdfBuffer); +``` + +> See the documentation for more details: https://sec-api.io/docs/sec-filings-render-api + +## EDGAR Filings Ingestion Logs API + +Retrieve a log of all filings ingested from SEC EDGAR on a specific date. Returns accession numbers, form types, and filing timestamps for all filings published on the requested date. Data is available from December 2, 2025 onwards. + +```js +const { edgarIndexApi } = require('sec-api'); + +edgarIndexApi.setApiKey('YOUR_API_KEY'); + +const log = await edgarIndexApi.getIngestionLog('2025-12-02'); +// response: { lastUpdatedAt, total, data } +``` + +
+ Example Response + +```json +{ + "lastUpdatedAt": "2025-12-02T21:57:46-05:00", + "total": { "value": 3041, "relation": "eq" }, + "data": [ + { + "accessionNo": "0001193125-25-305761", + "formType": "S-1MEF", + "filedAt": "2025-12-02T21:57:17-05:00" + }, + { + "accessionNo": "0001493152-25-025840", + "formType": "4", + "filedAt": "2025-12-02T21:56:21-05:00" + } + // ... more filings + ] +} +``` + +
+ +> See the documentation for more details: https://sec-api.io/docs/edgar-index-apis + +## Bulk Datasets + +Download complete datasets for offline analysis and large-scale processing. All datasets are updated daily between 10:30 PM and 11:30 PM EST. Browse all available datasets at [sec-api.io/datasets](https://sec-api.io/datasets). + +| Dataset | Form Types | Coverage | Format | +| --------------------------------------------------- | --------------------------- | ------------ | -------------------- | +| Form 10-K - Annual Reports | 10-K, 10-K/A, 10-KSB, 10-KT | 1993-present | ZIP (HTML, TXT) | +| Form 10-Q - Quarterly Reports | 10-Q, 10-Q/A | 1993-present | ZIP (HTML, TXT) | +| Form 8-K Exhibit 99 - Press Releases | 8-K, 8-K/A | 1994-present | ZIP (HTML, TXT, PDF) | +| Earnings Results (Item 2.02) | 8-K, 8-K/A | 2004-present | ZIP (HTML, TXT, PDF) | +| Form 3 - Initial Ownership | 3, 3/A | 2009-present | JSONL | +| Form 4 - Changes in Ownership | 4, 4/A | 2009-present | JSONL | +| Form 5 - Annual Ownership | 5, 5/A | 2009-present | JSONL | +| Form 13F - Institutional Holdings | 13F-HR, 13F-HR/A | 2013-present | JSONL | +| Form N-PORT - Fund Holdings | NPORT, NPORT/A | 2019-present | JSONL | +| Form DEF 14A - Proxy Statements | DEF 14A | 1994-present | ZIP (HTML, TXT) | +| [View all datasets...](https://sec-api.io/datasets) | | | | + +## Form ADV API + +Search and access Form ADV data for registered investment advisers, including firm information, individual advisors, direct/indirect owners, private fund data, and brochures. + +### Search Advisory Firms + +```js +const { formAdvApi } = require('sec-api'); + +formAdvApi.setApiKey('YOUR_API_KEY'); + +const firms = await formAdvApi.getFirms({ + query: 'Info.BusNm:"Bridgewater"', + from: '0', + size: '10', + sort: [{ 'Info.FirmCrdNb': { order: 'desc' } }], +}); +// response: { total, filings } +``` + +
+ Example Response + +```json +{ + "total": { "value": 1, "relation": "eq" }, + "filings": [ + { + "Info": { + "SECRgnCD": "NYRO", + "FirmCrdNb": 361, + "SECNb": "801-16048", + "BusNm": "GOLDMAN SACHS & CO. LLC", + "LegalNm": "GOLDMAN SACHS & CO. LLC", + "UmbrRgstn": "N" + }, + "MainAddr": { + "Strt1": "200 WEST STREET", + "City": "NEW YORK", + "State": "NY", + "Cntry": "United States", + "PostlCd": "10282", + "PhNb": "212-902-1000" + }, + "MailingAddr": {}, + "Rgstn": [ + { + "FirmType": "Registered", + "St": "APPROVED", + "Dt": "1981-05-13" + } + ], + "NoticeFiled": { + "States": [ + { "RgltrCd": "AL", "St": "FILED", "Dt": "1992-10-28" }, + { "RgltrCd": "AK", "St": "FILED", "Dt": "1997-11-21" } + // ... more items + ] + }, + "Filing": [{ "Dt": "2026-03-31", "FormVrsn": "10/2021" }], + "FormInfo": { + "Part1A": { + "Item1": { + "WebAddrs": { + "WebAddrs": [ + "https://www.linkedin.com/showcase/goldman-sachs--private-wealth-management", + "https://privatewealth.goldmansachs.com/us/en/home" + // ... more items + ], + "WebAddr": "https://www.instagram.com/goldmansachs/" + }, + "Q1F5": 18, + "Q1I": "Y", + "Q1M": "Y", + "Q1N": "N", + "Q1O": "Y", + "Q1ODesc": "More than $50 billion", + "Q1P": "FOR8UP27PHTHYVLBNG30" + }, + "Item2A": { + "Q2A1": "Y", + "Q2A2": "N", + "Q2A4": "N", + "Q2A5": "N", + "Q2A6": "N", + "Q2A7": "N", + "Q2A8": "N", + "Q2A9": "N", + "Q2A10": "N", + "Q2A11": "N", + "Q2A12": "N", + "Q2A13": "N" + }, + "Item2B": {}, + "Item3A": { "OrgFormNm": "Limited Liability Company" }, + "Item3B": { "Q3B": "DECEMBER" }, + "Item3C": { "StateCD": "NY", "CntryNm": "United States" }, + "Item5A": { "TtlEmp": 2268 }, + "Item5B": { + "Q5B1": 1765, + "Q5B2": 1698, + "Q5B3": 0, + "Q5B4": 0, + "Q5B5": 60, + "Q5B6": 1 + }, + "Item5C": { "Q5C1": "2355", "Q5C2": 2 }, + "Item5D": { + "Q5DA1": 0, + "Q5DA3": 0, + "Q5DB1": 29104, + "Q5DB3": 50962159253, + "Q5DC1": 0, + "Q5DC3": 0, + "Q5DD1": 0, + "Q5DD3": 0, + "Q5DE1": 0, + "Q5DE3": 0, + "Q5DF1": 0, + "Q5DF3": 0, + "Q5DG1": 9, + "Q5DG3": 4729043, + "Q5DH1": 1040, + "Q5DH3": 17527757435, + "Q5DI1": 1, + "Q5DI2": "Fewer than 5 clients", + "Q5DI3": 5787207, + "Q5DJ1": 0, + "Q5DJ3": 0, + "Q5DK1": 28, + "Q5DK3": 288850139, + "Q5DL1": 0, + "Q5DL3": 0, + "Q5DM1": 506, + "Q5DM3": 16937232904, + "Q5DN1": 15580, + "Q5DN3": 47917712945, + "Q5DN3Oth": "GS TRUST COMPANY, INDIAN TRIBES" + }, + "Item5E": { + "Q5E1": "Y", + "Q5E2": "N", + "Q5E3": "N", + "Q5E4": "Y", + "Q5E5": "Y", + "Q5E6": "Y", + "Q5E7": "Y", + "Q5E7Oth": "EXECUTION CHARGES, CUSTODY, MANAGEMENT FEE" + }, + "Item5F": { + "Q5F1": "Y", + "Q5F2A": 133354336653, + "Q5F2B": 289892273, + "Q5F2C": 133644228926, + "Q5F2D": 46265, + "Q5F2E": 4, + "Q5F2F": 46269, + "Q5F3": 9078887461 + }, + "Item5G": { + "Q5G1": "Y", + "Q5G2": "Y", + "Q5G3": "N", + "Q5G4": "Y", + "Q5G5": "Y", + "Q5G6": "N", + "Q5G7": "Y", + "Q5G8": "Y", + "Q5G9": "N", + "Q5G10": "N", + "Q5G11": "Y", + "Q5G12": "N" + }, + "Item5H": { "Q5H": "1-10" }, + "Item5I": { "Q5I1": "Y", "Q5I2A": 0, "Q5I2B": 0, "Q5I2C": 0 }, + "Item5J": { "Q5J1": "Y", "Q5J2": "Y" }, + "Item5K": { "Q5K1": "Y", "Q5K2": "Y", "Q5K3": "Y", "Q5K4": "Y" }, + "Item5L": { + "Q5L1A": "Y", + "Q5L1B": "Y", + "Q5L1C": "Y", + "Q5L1D": "N", + "Q5L1E": "Y", + "Q5L2": "Y", + "Q5L3": "Y", + "Q5L4": "N" + }, + "Item6A": { + "Q6A1": "Y", + "Q6A2": "N", + "Q6A3": "Y", + "Q6A4": "Y", + "Q6A5": "N", + "Q6A6": "N", + "Q6A7": "N", + "Q6A8": "N", + "Q6A9": "Y", + "Q6A10": "Y", + "Q6A11": "N", + "Q6A12": "N", + "Q6A13": "N", + "Q6A14": "N" + }, + "Item6B": { "Q6B1": "Y", "Q6B2": "N", "Q6B3": "Y" }, + "Item7A": { + "Q7A1": "Y", + "Q7A2": "Y", + "Q7A3": "N", + "Q7A4": "Y", + "Q7A5": "N", + "Q7A6": "Y", + "Q7A7": "Y", + "Q7A8": "Y", + "Q7A9": "Y", + "Q7A10": "N", + "Q7A11": "N", + "Q7A12": "Y", + "Q7A13": "Y", + "Q7A14": "N", + "Q7A15": "N", + "Q7A16": "Y" + }, + "Item7B": { "Q7B": "N" }, + "Item8A": { "Q8A1": "Y", "Q8A2": "Y", "Q8A3": "Y" }, + "Item8B": { "Q8B1": "Y", "Q8B2": "Y", "Q8B3": "Y" }, + "Item8C": { "Q8C1": "Y", "Q8C2": "Y", "Q8C3": "Y", "Q8C4": "Y" }, + "Item8D": { "Q8D": "Y" }, + "Item8E": { "Q8E": "Y" }, + "Item8F": { "Q8F": "Y" }, + "Item8G": { "Q8G1": "Y", "Q8G2": "Y" }, + "Item8H": { "Q8H1": "Y", "Q8H2": "Y" }, + "Item8I": { "Q8I": "N" }, + "Item9A": { + "Q9A1A": "Y", + "Q9A1B": "Y", + "Q9A2A": 132356397074, + "Q9A2B": 46194 + }, + "Item9B": { "Q9B1A": "N", "Q9B1B": "N", "Q9B2A": 0, "Q9B2B": 0 }, + "Item9C": { "Q9C1": "Y", "Q9C2": "Y", "Q9C3": "Y", "Q9C4": "Y" }, + "Item9D": { "Q9D1": "Y", "Q9D2": "Y" }, + "Item9E": { "Q9E": "2025-07" }, + "Item9F": { "Q9F": 91 }, + "Item10A": { "Q10A": "N" }, + "Item11": { "Q11": "Y" }, + "Item11A": { "Q11A1": "N", "Q11A2": "Y" }, + "Item11B": { "Q11B1": "Y", "Q11B2": "Y" }, + "Item11C": { + "Q11C1": "Y", + "Q11C2": "Y", + "Q11C3": "N", + "Q11C4": "Y", + "Q11C5": "Y" + }, + "Item11D": { + "Q11D1": "Y", + "Q11D2": "Y", + "Q11D3": "N", + "Q11D4": "Y", + "Q11D5": "Y" + }, + "Item11E": { "Q11E1": "Y", "Q11E2": "Y", "Q11E3": "N", "Q11E4": "N" }, + "Item11F": { "Q11F": "Y" }, + "Item11G": { "Q11G": "Y" }, + "Item11H": { + "Q11H1A": "Y", + "Q11H1B": "Y", + "Q11H1C": "Y", + "Q11H2": "Y" + } + } + }, + "id": 361 + } + ] +} +``` + +
+ +### Search Individual Advisors + +```js +const individuals = await formAdvApi.getIndividuals({ + query: 'CrntEmps.CrntEmp.orgPK:149777', + from: '0', + size: '10', + sort: [{ id: { order: 'desc' } }], +}); +// response: { total, filings } +``` + +
+ Example Response + +```json +{ + "total": { "value": 10000, "relation": "gte" }, + "filings": [ + { + "Info": { + "lastNm": "Nebot", + "firstNm": "Roman", + "indvlPK": 8213636, + "actvAGReg": "Y", + "link": "https://adviserinfo.sec.gov/individual/summary/8213636" + }, + "OthrNms": { + "OthrNm": [ + { "lastNm": "Nebot creus", "firstNm": "Roman", "midNm": "D" } + ] + }, + "CrntEmps": { + "CrntEmp": [ + { + "CrntRgstns": { + "CrntRgstn": [ + { + "regAuth": "FL", + "regCat": "RA", + "st": "APPROVED", + "stDt": "2026-02-02" + }, + { + "regAuth": "TX", + "regCat": "RA", + "st": "APPROVED", + "stDt": "2026-02-06" + } + ] + }, + "BrnchOfLocs": { + "BrnchOfLoc": [ + { + "str1": "200 South Biscayne Boulevard", + "str2": "Suite 1100", + "city": "Miami", + "state": "FL", + "cntry": "United States", + "postlCd": "33131" + } + ] + }, + "orgNm": "MORGAN STANLEY", + "orgPK": 149777, + "str1": "2000 WESTCHESTER AVENUE", + "city": "PURCHASE", + "state": "NY", + "cntry": "United States", + "postlCd": "10577-2530" + } + ] + }, + "Exms": { + "Exm": [ + { + "exmCd": "S66", + "exmNm": "Uniform Combined State Law Examination", + "exmDt": "2025-12-08" + } + ] + }, + "Dsgntns": {}, + "PrevRgstns": {}, + "EmpHss": { + "EmpHs": [ + { + "fromDt": "02/2019", + "toDt": "01/2026", + "orgNm": "Santander Internacional S.A.", + "city": "Miami", + "state": "FL" + } + // ... more items + ] + }, + "OthrBuss": { + "OthrBus": { + "desc": "..." + } + }, + "DRPs": {}, + "id": 8213636 + } + ] +} +``` + +
+ +### Get Direct Owners (Schedule A) + +```js +const directOwners = await formAdvApi.getDirectOwners('793'); +// response: [...] array of direct owners +``` + +
+ Example Response + +```json +[ + { + "name": "ZEMLYAK, JAMES MARK", + "ownerType": "I", + "titleStatus": "EXECUTIVE VICE PRESIDENT & DIRECTOR", + "dateTitleStatusAcquired": "2002-08", + "ownershipCode": "NA", + "isControlPerson": true, + "isPublicReporting": false, + "crd": "1586132" + }, + { + "name": "STIFEL FINANCIAL CORP.", + "ownerType": "DE", + "titleStatus": "SHAREHOLDER", + "dateTitleStatusAcquired": "1982-02", + "ownershipCode": "E", + "isControlPerson": true, + "isPublicReporting": true, + "crd": "" + } + // ... more owners +] +``` + +
+ +### Get Indirect Owners (Schedule B) + +```js +const indirectOwners = await formAdvApi.getIndirectOwners('326262'); +// response: [...] array of indirect owners +``` + +
+ Example Response + +```json +[ + { + "name": "CORIENT PARTNERS LLC", + "ownerType": "DE", + "entityOwned": "CORIENT PRIVATE WEALTH LLC", + "status": "OWNER", + "dateStatusAcquired": "2022-02", + "ownershipCode": "E", + "isControlPerson": true, + "isPublicReporting": false, + "crd": "" + }, + { + "name": "CI FINANCIAL CORP.", + "ownerType": "FE", + "entityOwned": "CORIENT HOLDINGS INC", + "status": "OWNER", + "dateStatusAcquired": "2019-11", + "ownershipCode": "E", + "isControlPerson": true, + "isPublicReporting": false, + "crd": "" + } + // ... more owners +] +``` + +
+ +### Get Private Funds (Schedule D, Section 7.B.1) + +```js +const privateFunds = await formAdvApi.getPrivateFunds('793'); +// response: [...] array of private fund details +``` + +
+ Example Response + +```json +[ + { + "1a-nameOfFund": "EI FUND II LLC", + "1b-fundIdentificationNumber": "805-4502496130", + "2-lawOrganizedUnder": { "state": "Missouri", "country": "United States" }, + "3a-namesOfGeneralPartnerManagerTrusteeDirector": [ + "STIFEL NICOLAUS & COMPANY, INC." + ], + "3b-filingAdvisers": "No Information Filed", + "4-1-exclusionUnder3c1": false, + "4-2-exclusionUnder3c7": true, + "5-nameCountryOfForeignFinancialRegAuthority": [], + "6a-isMasterFundInMasterFeederArrangement": false, + "6b-nameIdOfFeederFunds": [], + "6c-isFeederFundInMasterFeederAgreement": true, + "6d-nameIdOfMasterFund": "EI FUND V, LP", + "7a-f-feederFundDetails": [], + "8a-isFundOfFunds": true, + "8b-investsInFundsManagedByYouRelatedPerson": false, + "9-investsInSecuritiesAccordingTo6e": false, + "10-typeOfFund": { + "selectedTypes": ["other private fund"], + "otherFundType": "FEEDER INTO PRIVATE EQUITY FUND" + }, + "11-grossAssetValue": 2027469, + "12-minInvestmentCommitment": 100000, + "13-numberOfBeneficialOwners": 25, + "14-percentageOwnedByYou": 0, + "15a-percentageOwnedByFundsOfFunds": 0, + "15b-salesAreLimited": false, + "16-percentageOwnedByNonUnitedStatesPersons": 0, + "17a-isSubadviser": false, + "17b-nameAndSecFileNumber": "No Information Filed", + "18a-investmentAdvisersAdviseFund": false, + "18b-otherAdvisers": [], + "19-clientsAreSolicited": true, + "20-percentageClientsInvestedInFund": 0, + "21-fundReliedOnExemption": true, + "22-formDFileNumbers": ["021-151919"], + "23a-1-financialStatementsAreSubjectToAnnualAudit": true, + "23a-2-financialStatementsPreparedWithUsGaap": true, + "23b-f-auditors": [ + { + "23b-name": "KATZ SAPPER MILLER", + "23c-location": { + "city": "INDIANAPOLIS", + "state": "Indiana", + "country": "United States" + }, + "23d-isIndependentPublicAccountant": true, + "23e-isRegistered": true, + "23e-boardAssignedNumber": "2804", + "23f-isSubjectToInspection": true + } + ], + "23g-financialStatementsDistributedToInvestors": true, + "23h-reportsIncludeUnqualifiedOpinions": "yes", + "24a-fundUsesPrimeBrokers": false, + "24b-e-primeBrokers": [], + "25a-fundUsesCustodians": true, + "25b-g-custodians": [ + { + "25b-legalName": "STIFEL, NICOLAUS & COMPANY, INCORPORATED", + "25c-businessName": "STIFEL, NICOLAUS & COMPANY, INCORPORATED", + "25d-location": { + "city": "ST. LOUIS", + "state": "Missouri", + "country": "United States" + }, + "25e-isRelatedPerson": true, + "25f-1-secRegistrationNumber": "8 - 1447", + "25f-2-crdNumber": "793", + "25g-legalEntityIdentifier": "" + } + ], + "26a-fundUsesAdministrators": true, + "26b-f-administrators": [ + { + "26b-name": "HALL KISTLER & COMPANY", + "26c-location": { + "city": "CANTON", + "state": "Ohio", + "country": "United States" + }, + "26d-isRelatedPerson": false, + "26e-statementsProvidedTo": "no investors", + "26f-statementsSentBy": "ADMINISTRATOR PREPARES INVESTOR ACCOUNT STATEMENTS, AND STIFEL NICOLAUS SENDS THE STATEMENTS TO INVESTORS." + } + ], + "27-percentageOfAssetsValuedNotByRelatedPerson": 100, + "28a-fundUsesMarketers": false, + "28b-g-marketers": [] + } + // ... more funds +] +``` + +
+ +### Get Brochures + +```js +const brochures = await formAdvApi.getBrochures('149777'); +// response: { brochures } +``` + +
+ Example Response + +```json +{ + "brochures": [ + { + "versionId": 1033575, + "name": "CONSULTING GROUP ADVISOR PROGRAM BROCHURE", + "dateSubmitted": "2026-03-30", + "url": "https://files.adviserinfo.sec.gov/IAPD/Content/Common/crd_iapd_Brochure.aspx?BRCHR_VRSN_ID=1033575" + }, + { + "versionId": 1033576, + "name": "PORTFOLIO MANAGEMENT AND INSTITUTIONAL CASH ADVISORY PROGRAM BROCHURE", + "dateSubmitted": "2026-03-30", + "url": "https://files.adviserinfo.sec.gov/IAPD/Content/Common/crd_iapd_Brochure.aspx?BRCHR_VRSN_ID=1033576" + }, + { + "versionId": 1033577, + "name": "ALTERNATIVE INVESTMENTS WRAP PROGRAM BROCHURE", + "dateSubmitted": "2026-03-30", + "url": "https://files.adviserinfo.sec.gov/IAPD/Content/Common/crd_iapd_Brochure.aspx?BRCHR_VRSN_ID=1033577" + } + // ... more brochures + ] +} +``` + +
+ +> See the documentation for more details: https://sec-api.io/docs/investment-adviser-and-adv-api + +## Insider Trading Data API + +Access Form 3, 4, and 5 filings that disclose insider ownership and trading activity by company officers, directors, and beneficial owners. + +### Form 3 - Initial Ownership Statements + +```js +const { insiderTradingApi } = require('sec-api'); + +insiderTradingApi.setApiKey('YOUR_API_KEY'); + +const data = await insiderTradingApi.getData({ + query: 'documentType:3 AND issuer.tradingSymbol:NTB', + from: '0', + size: '50', + sort: [{ filedAt: { order: 'desc' } }], +}); +// response: { total, transactions } +``` + +
+ Example Response + +```json +{ + "total": { "value": 10000, "relation": "gte" }, + "transactions": [ + { + "id": "9ec6b4513d930d643aa7bd45821be7ab", + "accessionNo": "0001975035-26-000012", + "filedAt": "2026-04-01T08:46:43-04:00", + "schemaVersion": "X0607", + "documentType": "3", + "periodOfReport": "2026-03-31", + "notSubjectToSection16": false, + "issuer": { + "cik": "1653242", + "name": "Bank of N.T. Butterfield & Son Ltd", + "tradingSymbol": "NTB" + }, + "reportingOwner": { + "cik": "2120720", + "name": "Henton Andrew Michael", + "address": { + "street1": "59 FRONT STREET", + "city": "HAMILTON", + "zipCode": "HM 12" + }, + "relationship": { + "isDirector": true, + "isOfficer": false, + "isTenPercentOwner": false, + "isOther": false + } + }, + "nonDerivativeTable": { + "holdings": [ + { + "securityTitle": "Bank of N.T. Butterfield & Son Ltd", + "coding": {}, + "postTransactionAmounts": { + "sharesOwnedFollowingTransaction": 667 + }, + "ownershipNature": { + "directOrIndirectOwnership": "D" + } + } + ] + }, + "ownerSignatureName": "Tara Hidalgo, by power of attorney for Andr", + "ownerSignatureNameDate": "2026-04-01" + } + ] +} +``` + +
+ +### Form 4 - Changes in Ownership + +```js +const data = await insiderTradingApi.getData({ + query: 'documentType:4 AND issuer.tradingSymbol:TSLA', + from: '0', + size: '50', + sort: [{ filedAt: { order: 'desc' } }], +}); +// response: { total, transactions } +``` + +
+ Example Response + +```json +{ + "total": { "value": 837, "relation": "eq" }, + "transactions": [ + { + "id": "b5e3ff9eca7a16f1b7fef6aef6767fbc", + "accessionNo": "0001104659-26-025379", + "filedAt": "2026-03-09T19:00:14-04:00", + "schemaVersion": "X0508", + "documentType": "4", + "periodOfReport": "2026-03-05", + "notSubjectToSection16": false, + "issuer": { + "cik": "1318605", + "name": "Tesla, Inc.", + "tradingSymbol": "TSLA" + }, + "reportingOwner": { + "cik": "1771340", + "name": "Taneja Vaibhav", + "address": { + "street1": "C/O TESLA, INC.", + "street2": "1 TESLA ROAD", + "city": "AUSTIN", + "state": "TX", + "zipCode": "78725" + }, + "relationship": { + "isDirector": false, + "isOfficer": true, + "officerTitle": "Chief Financial Officer", + "isTenPercentOwner": false, + "isOther": false + } + }, + "nonDerivativeTable": { + "transactions": [ + { + "securityTitle": "Common Stock", + "transactionDate": "2026-03-05", + "coding": { + "formType": "4", + "code": "M", + "equitySwapInvolved": false, + "footnoteId": ["F1"] + }, + "amounts": { + "shares": 6538, + "pricePerShare": 0, + "acquiredDisposedCode": "A" + }, + "postTransactionAmounts": { + "sharesOwnedFollowingTransaction": 20371, + "sharesOwnedFollowingTransactionFootnoteId": ["F2"] + }, + "ownershipNature": { + "directOrIndirectOwnership": "D" + } + } + // ... more transactions + ], + "holdings": [ + { + "securityTitle": "Common Stock", + "coding": {}, + "postTransactionAmounts": { + "sharesOwnedFollowingTransaction": 111000 + }, + "ownershipNature": { + "directOrIndirectOwnership": "I", + "natureOfOwnership": "See Footnote", + "natureOfOwnershipFootnoteId": ["F4"] + } + } + ] + }, + "derivativeTable": { + "transactions": [ + { + "securityTitle": "Restricted Stock Unit", + "conversionOrExercisePrice": 0, + "transactionDate": "2026-03-05", + "coding": { + "formType": "4", + "code": "M", + "equitySwapInvolved": false + }, + "exerciseDateFootnoteId": ["F5"], + "expirationDateFootnoteId": ["F5"], + "underlyingSecurity": { + "title": "Common Stock", + "shares": 6538 + }, + "amounts": { + "shares": 6538, + "pricePerShare": 0, + "acquiredDisposedCode": "D" + }, + "postTransactionAmounts": { + "sharesOwnedFollowingTransaction": 65382 + }, + "ownershipNature": { + "directOrIndirectOwnership": "D" + } + } + ] + }, + "footnotes": [ + { + "id": "F1", + "text": "Shares of the Issuer's common stock were issued to the reporting person upon the vesting of restricted stock units on March 5, 2026." + } + // ... more footnotes + ], + "ownerSignatureName": "By: Aaron Beckman, Power of Attorney For: Vaibhav Taneja", + "ownerSignatureNameDate": "2026-03-09" + } + ] +} +``` + +
+ +### Form 5 - Annual Ownership Statements + +```js +const data = await insiderTradingApi.getData({ + query: 'documentType:5 AND issuer.tradingSymbol:SPWR', + from: '0', + size: '50', + sort: [{ filedAt: { order: 'desc' } }], +}); +// response: { total, transactions } +``` + +
+ Example Response + +```json +{ + "total": { "value": 10000, "relation": "gte" }, + "transactions": [ + { + "id": "00101d987e5fd4e6d2bdcd1d9c17b170", + "accessionNo": "0001213900-26-031111", + "filedAt": "2026-03-18T18:49:54-04:00", + "schemaVersion": "X0609", + "documentType": "5", + "periodOfReport": "2025-12-28", + "notSubjectToSection16": false, + "issuer": { + "cik": "1838987", + "name": "SunPower Inc.", + "tradingSymbol": "SPWR" + }, + "reportingOwner": { + "cik": "1253573", + "name": "MAIER LOTHAR", + "address": { + "street1": "C/O SUNPOWER INC.", + "street2": "45600 NORTHPORT LOOP EAST", + "city": "FREMONT", + "state": "CA", + "zipCode": "94538" + }, + "relationship": { + "isDirector": true, + "isOfficer": false, + "isTenPercentOwner": false, + "isOther": false + } + }, + "nonDerivativeTable": { + "transactions": [ + { + "securityTitle": "Common Stock", + "transactionDate": "2025-05-23", + "coding": { + "formType": "4", + "code": "A", + "equitySwapInvolved": false + }, + "timeliness": "L", + "amounts": { + "shares": 243169, + "pricePerShare": 0, + "pricePerShareFootnoteId": ["F1"], + "acquiredDisposedCode": "A" + }, + "postTransactionAmounts": { + "sharesOwnedFollowingTransaction": 243169 + }, + "ownershipNature": { + "directOrIndirectOwnership": "D" + } + } + ] + }, + "footnotes": [ + { + "id": "F1", + "text": "On May 23, 2025, the Company granted the Reporting Person 243,169 restricted stock units pursuant to the Company's 2023 Equity Incentive Plan, as amended, each of which fully vested into one share of common stock on the grant date." + } + ], + "ownerSignatureName": "/s/ Lothar Maier", + "ownerSignatureNameDate": "2026-03-17" + } + ] +} +``` + +
+ +> See the documentation for more details: https://sec-api.io/docs/insider-ownership-trading-api + +## Form 144 API + +Access Form 144 filings that report proposed sales of restricted securities by insiders. + +```js +const { form144Api } = require('sec-api'); + +form144Api.setApiKey('YOUR_API_KEY'); + +const data = await form144Api.getData({ + query: 'entities.ticker:TSLA', + from: '0', + size: '50', + sort: [{ filedAt: { order: 'desc' } }], +}); +// response: { total, data } +``` + +
+ Example Response + +```json +{ + "total": { "value": 72, "relation": "eq" }, + "data": [ + { + "id": "3196e422cd21d5a12a3acf756bb3e0a1", + "accessionNo": "0001950047-26-003078", + "fileNo": "001-34756", + "formType": "144", + "filedAt": "2026-03-30T17:31:46-04:00", + "entities": [ + { + "cik": "1318605", + "ticker": "TSLA", + "companyName": "Tesla, Inc. (Subject)", + "irsNo": "912197729", + "fiscalYearEnd": "1231", + "stateOfIncorporation": "TX", + "sic": "3711 Motor Vehicles & Passenger Car Bodies", + "type": "144", + "act": "33", + "fileNo": "001-34756", + "filmNo": "26813321" + }, + { "cik": "1331680", "companyName": "Wilson-Thompson Kathleen (Reporting)", "type": "144" } + ], + "issuerInfo": { + "issuerCik": "1318605", + "issuerTicker": "TSLA", + "issuerName": "Tesla, Inc.", + "secFileNumber": "001-34756", + "issuerAddress": { + "street1": "1 Tesla Road", + "city": "Austin", + "stateOrCountry": "TX", + "zipCode": "78725" + }, + "issuerContactPhone": "5125168177", + "nameOfPersonForWhoseAccountTheSecuritiesAreToBeSold": "KATHLEEN WILSON-THOMPSON", + "relationshipsToIssuer": "Director" + }, + "securitiesInformation": [ + { + "securitiesClassTitle": "Common", + "brokerOrMarketMakerDetails": { + "name": "Morgan Stanley Smith Barney LLC Executive Financial Services", + "address": { + "street1": "1 New York Plaza", + "street2": "8th Floor", + "city": "New York", + "stateOrCountry": "NY", + "zipCode": "10004" + } + }, + "numberOfUnitsToBeSold": 25809, + "aggregateMarketValue": 9338470.47, + "noOfUnitsOutstanding": 3752431984, + "approxSaleDate": "2026-03-30", + "securitiesExchangeName": "NASDAQ" + } + ], + "securitiesToBeSold": [ + { + "securitiesClassTitle": "Common", + "acquiredDate": "2026-03-30", + "natureOfAcquisitionTransaction": "Exercise of Stock Options", + "nameOfPersonFromWhomAcquired": "Issuer", + "isGiftTransaction": false, + "amountOfSecuritiesAcquired": 1648, + "paymentDate": "2026-03-30", + "natureOfPayment": "Cash" + } + // ... more items + ], + "nothingToReportFlagOnSecuritiesSoldInPast3Months": false, + "securitiesSoldInPast3Months": [ + { + "sellerDetails": { + "name": "10b5-1 Sales for KATHLEEN WILSON-THOMPSON", + "address": { + "street1": "1 Tesla Road", + "city": "Austin", + "stateOrCountry": "TX", + "zipCode": "78725" + } + }, + "securitiesClassTitle": "Common", + "saleDate": "2026-02-25", + "amountOfSecuritiesSold": 25731, + "grossProceeds": 10692813.68 + } + ], + "noticeSignature": { + "noticeDate": "2026-03-30", + "planAdoptionDates": ["2025-11-26"], + "signature": "/s/ Kathleen Wilson-Thompson" + } + } + ] +} +``` + +
+ +> See the documentation for more details: https://sec-api.io/docs/form-144-restricted-sales-api + +## Form 13F Institutional Holdings Database + +Access Form 13F filings that disclose quarterly holdings of institutional investment managers with over $100 million in assets under management. Separate endpoints are available for holdings data and cover pages. + +```js +const { form13FHoldingsApi, form13FCoverPagesApi } = require('sec-api'); + +form13FHoldingsApi.setApiKey('YOUR_API_KEY'); +form13FCoverPagesApi.setApiKey('YOUR_API_KEY'); + +// Search 13F holdings +const holdings = await form13FHoldingsApi.getData({ + query: 'cik:1067983', + from: '0', + size: '50', + sort: [{ filedAt: { order: 'desc' } }], +}); + +// Search 13F cover pages +const coverPages = await form13FCoverPagesApi.getData({ + query: 'cik:1067983', + from: '0', + size: '10', + sort: [{ filedAt: { order: 'desc' } }], +}); +// response (both): { total, data } +``` + +
+ Example Response + +```json +{ + "total": { "value": 209, "relation": "eq" }, + "data": [ + { + "id": "289428b455d4eb55f298d84f544d3d61", + "accessionNo": "0001193125-26-054580", + "cik": "1067983", + "ticker": "BRK.B", + "companyName": "BERKSHIRE HATHAWAY INC", + "companyNameLong": "BERKSHIRE HATHAWAY INC (Filer)", + "formType": "13F-HR", + "description": "Form 13F-HR - Quarterly report filed by institutional managers, Holdings", + "filedAt": "2026-02-17T16:05:04-05:00", + "linkToTxt": "https://www.sec.gov/Archives/edgar/data/1067983/000119312526054580/0001193125-26-054580.txt", + "linkToHtml": "https://www.sec.gov/Archives/edgar/data/1067983/000119312526054580/0001193125-26-054580-index.htm", + "linkToXbrl": "", + "linkToFilingDetails": "https://www.sec.gov/Archives/edgar/data/1067983/000119312526054580/xslForm13F_X02/primary_doc.xml", + "entities": [ + { + "companyName": "BERKSHIRE HATHAWAY INC (Filer)", + "cik": "1067983", + "irsNo": "470813844", + "stateOfIncorporation": "DE", + "fiscalYearEnd": "1231", + "type": "13F-HR", + "act": "34", + "fileNo": "028-04545", + "filmNo": "26640865", + "sic": "6331 Fire, Marine & Casualty Insurance", + "undefined": "02 Finance)" + } + ], + "documentFormatFiles": [ + { + "sequence": "1", + "documentUrl": "https://www.sec.gov/Archives/edgar/data/1067983/000119312526054580/xslForm13F_X02/primary_doc.xml", + "type": "13F-HR", + "size": " " + } + // ... more files + ], + "dataFiles": [], + "seriesAndClassesContractsInformation": [], + "periodOfReport": "2025-12-31", + "effectivenessDate": "2026-02-17", + "holdings": [ + { + "nameOfIssuer": "ALLY FINL INC", + "cusip": "02005N100", + "titleOfClass": "COM", + "value": 576074081, + "shrsOrPrnAmt": { "sshPrnamt": 12719675, "sshPrnamtType": "SH" }, + "investmentDiscretion": "DFND", + "votingAuthority": { "Sole": 12719675, "Shared": 0, "None": 0 }, + "otherManager": "4", + "ticker": "ALLY", + "cik": "40729" + } + // ... more holdings + ] + } + ] +} +``` + +
+ +> See the documentation for more details: https://sec-api.io/docs/form-13-f-filings-institutional-holdings-api + +## Form 13D 13G API + +Access Form 13D and 13G filings that disclose activist and passive investor holdings exceeding 5% of a company's outstanding shares. + +```js +const { form13DGApi } = require('sec-api'); + +form13DGApi.setApiKey('YOUR_API_KEY'); + +const data = await form13DGApi.getData({ + query: 'accessionNo:*', + from: '0', + size: '50', + sort: [{ filedAt: { order: 'desc' } }], +}); +// response: { total, filings } +``` + +
+ Example Response + +```json +{ + "total": { "value": 10000, "relation": "gte" }, + "filings": [ + { + "id": "a5d7c15340884b72fd2e95a5afde92e9", + "accessionNo": "0001493152-26-014470", + "formType": "SC 13D/A", + "filedAt": "2026-04-01T06:20:43-04:00", + "filers": [ + { "cik": "1983324", "name": "Real Messenger Corp (Subject)" }, + { "cik": "2099450", "name": "Ma Kwai Hoi (Filed by)" } + ], + "nameOfIssuer": "Real Messenger Corporation", + "titleOfSecurities": "Ordinary Shares", + "cusip": [], + "eventDate": "2026-03-25", + "amendmentNo": "1", + "schedule13GFiledPreviously": false, + "owners": [ + { + "name": ["Kwai Hoi MA"], + "memberOfGroup": { "a": false, "b": false }, + "sourceOfFunds": "OO", + "legalProceedingsDisclosureRequired": false, + "place": "X0", + "soleVotingPower": 7217555, + "sharedVotingPower": 0, + "soleDispositivePower": 7217555, + "sharedDispositivePower": 0, + "aggregateAmountOwned": 7217555, + "isAggregateExcludeShares": false, + "amountAsPercent": 65.86, + "typeOfReportingPerson": ["IN"] + } + // ... more items + ], + "item1": { + "securityTitle": "Ordinary Shares", + "issuerName": "Real Messenger Corporation", + "issuerPrincipalAddress": { + "street1": "695 Town Center Drive, Suite 1200", + "street2": "", + "city": "Costa Mesa", + "stateOrCountry": "CA", + "zipCode": "92626" + }, + "commentText": "The following constitutes Amendment No. 1 (\"Amendment No. 1\") to the Schedule 13D filed with the Securities and Exchange Commission (\"SEC\")..." + }, + "item2": { + "filingPersonName": "", + "principalBusinessAddress": "", + "principalJob": "", + "hasBeenConvicted": "", + "convictionDescription": "", + "citizenship": "" + }, + "item3": { + "fundsSource": "..." + }, + "item4": { + "transactionPurpose": "..." + }, + "item5": { + "percentageOfClassSecurities": "...", + "numberOfShares": "...", + "transactionDescription": "...", + "listOfShareholders": "...", + "date5PercentOwnership": "Not applicable" + }, + "item6": { + "contractDescription": "" + }, + "item7": { + "filedExhibits": "..." + } + } + ] +} +``` + +
+ +> See the documentation for more details: https://sec-api.io/docs/form-13d-13g-search-api + +## Form N-PORT API + +Access Form N-PORT filings that disclose monthly portfolio holdings of mutual funds, ETFs, and closed-end funds. + +```js +const { formNportApi } = require('sec-api'); + +formNportApi.setApiKey('YOUR_API_KEY'); + +const data = await formNportApi.getData({ + query: 'fundInfo.totAssets:[100000000 TO *]', + from: '0', + size: '50', + sort: [{ filedAt: { order: 'desc' } }], +}); +// response: { total, filings } +``` + +
+ Example Response + +```json +{ + "total": { "value": 10000, "relation": "gte" }, + "filings": [ + { + "submissionType": "NPORT-P", + "filerInfo": { + "filer": { + "issuerCredentials": { "cik": "0001552947", "ccc": "XXXXXXXX" } + }, + "seriesClassInfo": { + "seriesId": "S000075330", + "classId": ["C000234270", "C000234271", "C000234272"] + } + }, + "genInfo": { + "regName": "Two Roads Shared Trust", + "regFileNumber": "811-22718", + "regCik": "0001552947", + "regLei": "549300REHU8QC2CK4V30", + "regStreet1": "225 PICTORIA DRIVE", + "regStreet2": "SUITE 450", + "regCity": "CINCINNATI", + "regStateConditional": { "regCountry": "US", "regState": "US-OH" }, + "regZipOrPostalCode": "45246", + "regPhone": "402-895-1600", + "seriesName": "Holbrook Structured Credit Income Fund", + "seriesId": "S000075330", + "seriesLei": "549300VN9LSTDZVMEG10", + "repPdEnd": "2026-04-30", + "repPdDate": "2026-01-31", + "isFinalFiling": "N" + }, + "fundInfo": { + "totAssets": 589656494.57, + "totLiabs": 26303874.88, + "netAssets": 563352619.69, + "assetsAttrMiscSec": 0, + "assetsInvested": 0, + "amtPayOneYrBanksBorr": 0, + "amtPayOneYrCtrldComp": 0, + "amtPayOneYrOthAffil": 0, + "amtPayOneYrOther": 0, + "amtPayAftOneYrBanksBorr": 0, + "amtPayAftOneYrCtrldComp": 0, + "amtPayAftOneYrOthAffil": 0, + "amtPayAftOneYrOther": 0, + "delayDeliv": 0, + "standByCommit": 0, + "liquidPref": 0, + "cshNotRptdInCorD": 0, + "curMetrics": { + "curMetric": [ + { + "curCd": "USD", + "intrstRtRiskdv01": { "period10Yr": 16013.864121, "period1Yr": 11247.59154, "period30Yr": 4288.904006, "period3Mon": 797.324692, "period5Yr": 73979.610662 }, + "intrstRtRiskdv100": { "period10Yr": 1606509.028942, "period1Yr": 1101438.779831, "period30Yr": 435795.28333, "period3Mon": 82265.418559, "period5Yr": 7395155.726345 } + } + ] + }, + "creditSprdRiskInvstGrade": { "period10Yr": 19059.318464, "period1Yr": 10289.915308, "period30Yr": 4867.597881, "period3Mon": 130.272532, "period5Yr": 73099.636591 }, + "creditSprdRiskNonInvstGrade": { "period10Yr": 1101.107886, "period1Yr": 11563.009059, "period30Yr": 815.163831, "period3Mon": 17920.825732, "period5Yr": 6039.88695 }, + "isNonCashCollateral": "N", + "returnInfo": { + "monthlyTotReturns": { + "monthlyTotReturn": [ + { "classId": "C000234270", "rtn1": 0.47, "rtn2": 0.51, "rtn3": 0.55 } + // ... more items + ] + }, + "othMon1": { "netRealizedGain": 7903.87, "netUnrealizedAppr": 41040.49 }, + "othMon2": { "netRealizedGain": 351039.84, "netUnrealizedAppr": -303753.72 }, + "othMon3": { "netRealizedGain": 13348.82, "netUnrealizedAppr": 370504.63 } + }, + "mon1Flow": { "redemption": 20566862.72, "reinvestment": 2200048.38, "sales": 29009934.75 }, + "mon2Flow": { "redemption": 28416519.67, "reinvestment": 2121607.35, "sales": 45362488.84 }, + "mon3Flow": { "redemption": 15947059.37, "reinvestment": 2848443.49, "sales": 35033302.63 } + }, + "invstOrSecs": [ + { + "name": "A&D MORTGAGE TRUST 2023-NQM2", + "lei": "N/A", + "title": "ADMT 2023-NQM2 A1", + "cusip": "00002DAA7", + "identifiers": { "isin": { "value": "US00002DAA72" } }, + "balance": 1287717.11, + "units": "PA", + "curCd": "USD", + "valUSD": 1289380.97, + "pctVal": 0.228876360015, + "payoffProfile": "Long", + "assetCat": "ABS-O", + "issuerCat": "CORP", + "invCountry": "US", + "isRestrictedSec": "Y", + "fairValLevel": "2", + "debtSec": { + "maturityDt": "2068-05-25", + "couponKind": "Floating", + "annualizedRt": 6.131999, + "isDefault": "N", + "areIntrstPmntsInArrs": "N", + "isPaidKind": "N" + }, + "securityLending": { + "isCashCollateral": "N", + "isNonCashCollateral": "N", + "isLoanByFund": "N" + } + } + // ... more items + ] + } + ] +} +``` + +
+ +> See the documentation for more details: https://sec-api.io/docs/n-port-data-api + +## Form N-CEN API - Annual Reports by Investment Companies + +Access Form N-CEN annual report filings submitted by registered investment companies, including data on fund operations, service providers, and portfolio characteristics. + +```js +const { formNcenApi } = require('sec-api'); + +formNcenApi.setApiKey('YOUR_API_KEY'); + +const data = await formNcenApi.getData({ + query: 'accessionNo:*', + from: '0', + size: '50', + sort: [{ filedAt: { order: 'desc' } }], +}); +// response: { total, data } +``` + +
+ Example Response + +```json +{ + "total": { "value": 10000, "relation": "gte" }, + "data": [ + { + "id": "8673f62b218d47bba6c85d8c101caba8", + "accessionNo": "0001639553-26-000002", + "fileNo": "811-23054", + "formType": "N-CEN", + "filedAt": "2026-03-16T17:18:30-04:00", + "periodOfReport": "2025-12-31", + "entities": [ + { + "cik": "1639553", + "companyName": "Variable Annuity-8 Series Account (of Empower Life & Annuity Insurance Co of New York) (Filer)", + "irsNo": "132690792", + "fiscalYearEnd": "1231", + "stateOfIncorporation": "NY", + "act": "40", + "fileNo": "811-23054", + "filmNo": "26757950" + } + ], + "seriesClass": { + "reportClass": [ + { "classIds": ["C000158471", "C000158472"] } + ] + }, + "generalInfo": { + "reportEndingPeriod": "2025-12-31", + "isReportPeriodLt12": false + }, + "registrantInfo": { + "registrantFullName": "Variable Annuity-8 Series Account (of Empower Life & Annuity Insurance Co of New York)", + "investmentCompFileNo": "811-23054", + "registrantCik": "1639553", + "registrantLei": "00000000000000000000", + "registrantStreet1": "370 Lexington Ave, Suite 703", + "registrantCity": "New York", + "registrantZipCode": "10017", + "registrantState": "NY", + "registrantCountry": "US", + "registrantPhoneNumber": "800-537-2033", + "websites": ["N/A"], + "locationBooksRecords": [ + { + "officeName": "Empower Annuity Insurance Company of America", + "officeAddress1": "8515 East Orchard Road", + "officeCity": "Greenwood Village", + "officeState": "CO", + "officeCountry": "US", + "officeRecordsZipCode": "80111", + "officePhone": "303-737-3000", + "booksRecordsDesc": "All accounts, books, or other documents required to be maintained by Section 31(a) of the Investment Company Act of 1940..." + } + ], + "isRegistrantFirstFiling": false, + "isRegistrantLastFiling": false, + "familyInvCompFullName": "Empower Funds, Inc.", + "isRegistrantFamilyInvComp": true, + "registrantClassificationType": "N-4", + "isSecuritiesActRegistration": true, + "chiefComplianceOfficers": [ + { + "ccoName": "Ahmed Abdul-Jaleel", + "crdNumber": "008065071", + "ccoStreet1": "8515 East Orchard Road", + "ccoCity": "Greenwood Village", + "ccoState": "CO", + "ccoCountry": "US", + "ccoZipCode": "80111", + "ccoPhone": "XXXXXX", + "isCcoChangedSinceLastFiling": true, + "ccoEmployers": [ + { "ccoEmployerName": "N/A", "ccoEmployerId": "N/A" } + ] + } + ], + "isRegistrantSubmittedMatter": false, + "isPreviousLegalProceeding": false, + "isPreviousProceedingTerminated": false, + "isFinancialSupportDuringPeriod": false, + "isExemptionFromAct": false, + "principalUnderwriters": [ + { + "principalUnderwriterName": "Empower Financial Services, Inc.", + "principalUnderwriterFileNo": "008-33854", + "principalUnderwriterCrdNumber": "000013109", + "principalUnderwriterLei": "N/A", + "principalUnderWriterState": "CO", + "principalUnderWriterCountry": "US", + "isPrincipalUnderwriterAffiliatedWithRegistrant": true + } + ], + "isUnderwriterHiredOrTerminated": false, + "publicAccountants": [ + { + "publicAccountantName": "Deloitte & Touche LLP", + "pcaobNumber": "34", + "publicAccountantLei": "549300FJV7IV1ZHGAV28", + "publicAccountantState": "CO", + "publicAccountantCountry": "US" + } + ], + "isPublicAccountantChanged": false, + "isOpinionOffered": false, + "isMaterialChange": false, + "isAccountingPrincipleChange": false + }, + "unitInvestmentTrust": { + "depositors": [ + { + "depositorName": "Empower Life & Annuity Insurance Company of New York", + "depositorCrdNo": "N/A", + "depositorLei": "0PLSTTA4SUBLGLKEJ576", + "depositorState": "NY", + "depositorCountry": "US", + "depositorUltimateParentName": "Power Corporation of Canada" + } + ], + "uitAdmins": [ + { + "uitAdminName": "Empower Life & Annuity Insurance Company of New York", + "uitAdminLei": "0PLSTTA4SUBLGLKEJ576", + "uitAdminState": "NY", + "uitAdminCountry": "US", + "isUitAdminAffiliated": true, + "isUitAdminSubAdmin": false + } + ], + "isUitAdminHiredTerminated": false, + "registrantSeparateInsuranceAccount": { + "isRegistrantSeparateInsuranceAccount": true, + "separateAccountSeriesId": "S000050203" + }, + "numOfContracts": 20, + "contractSecurities": [ + { + "separateAccountSecurityName": "Empower SecureFoundation II Variable Annuity", + "separateAccountContractId": "C000158471", + "separateAccountTotalAsset": 1100626.28, + "numContractsSold": 0, + "grossPremiumReceived": 8.4, + "grossPremiumReceivedSection1035": 0, + "numContractsAffected": 0, + "contractValueRedeemed": 92145.22, + "contractValueRedeemedSection1035": 0, + "numContractsAffectedRedeemed": 0 + } + // ... more items + ], + "isRule6C7Reliance": false, + "isRule11A2Reliance": false, + "isRule12D1Dash4Reliance": false, + "isRule12D1GReliance": false + }, + "attachmentsTab": { + "isLegalProceedings": false, + "isProvisionFinancialSupport": false, + "isIPAReportInternalControl": false, + "isChangeAccPrinciples": false, + "isInfoRequiredEO": false, + "isOtherInfoRequired": false + }, + "signature": { + "registrantSignedName": "Variable Annuity-8 Series Account (of Empower Life & Annuity Insurance Co of New York)", + "signedDate": "2026-03-16", + "signature": "/s/ Elaina Ditillo", + "title": "Counsel" + } + } + ] +} +``` + +
+ +> See the documentation for more details: https://sec-api.io/docs/form-ncen-api-annual-reports-investment-companies + +## Form N-PX Proxy Voting Records API + +Access Form N-PX filings that disclose proxy voting records of mutual funds and other registered management investment companies. Use `getMetadata` to search filings and `getVotingRecords` to retrieve individual voting records by accession number. + +### Search N-PX Filing Metadata + +```js +const { formNpxApi } = require('sec-api'); + +formNpxApi.setApiKey('YOUR_API_KEY'); + +const metadata = await formNpxApi.getMetadata({ + query: 'cik:884546', + from: '0', + size: '10', + sort: [{ filedAt: { order: 'desc' } }], +}); +// response: { total, data } +``` + +
+ Example Response + +```json +{ + "total": { "value": 2, "relation": "eq" }, + "data": [ + { + "id": "723cc6d725f186bd4436136332d7fc98", + "accessionNo": "0001021408-25-003152", + "formType": "N-PX", + "filedAt": "2025-08-25T14:01:44-04:00", + "periodOfReport": "2025-06-30", + "cik": "884546", + "ticker": "", + "companyName": "CHARLES SCHWAB INVESTMENT MANAGEMENT INC", + "proxyVotingRecordsAttached": true, + "headerData": { + "submissionType": "N-PX", + "filerInfo": { + "registrantType": "IM", + "filer": { + "issuerCredentials": { "cik": "0000884546" } + }, + "flags": { + "overrideInternetFlag": false, + "confirmingCopyFlag": false + }, + "periodOfReport": "06/30/2025" + } + }, + "formData": { + "coverPage": { + "yearOrQuarter": "YEAR", + "reportCalendarYear": "2025", + "reportingPerson": { + "name": "Charles Schwab Investment Management Inc", + "phoneNumber": "4156677000", + "address": { + "street1": "211 Main Street", + "city": "San Francisco", + "stateOrCountry": "CA", + "zipCode": "94105" + } + }, + "agentForService": {}, + "reportInfo": { + "reportType": "INSTITUTIONAL MANAGER VOTING REPORT", + "confidentialTreatment": false + }, + "fileNumber": "028-03128", + "explanatoryInformation": { + "explanatoryChoice": false + } + }, + "summaryPage": { + "otherIncludedManagersCount": 0 + }, + "signaturePage": { + "reportingPerson": "Charles Schwab Investment Management Inc", + "txSignature": "Omar Aguilar", + "txPrintedSignature": "Omar Aguilar", + "txTitle": "Chief Executive Officer", + "txAsOfDate": "08/20/2025" + } + } + } + ] +} +``` + +
+ +### Get Voting Records by Accession Number + +```js +const votingRecords = await formNpxApi.getVotingRecords('0001021408-25-003152'); +// response: { id, accessionNo, formType, ..., proxyVotingRecords } +``` + +
+ Example Response + +```json +{ + "id": "723cc6d725f186bd4436136332d7fc98", + "accessionNo": "0001021408-25-003152", + "formType": "N-PX", + "filedAt": "2025-08-25T14:01:44-04:00", + "periodOfReport": "2025-06-30", + "cik": "884546", + "ticker": "", + "companyName": "CHARLES SCHWAB INVESTMENT MANAGEMENT INC", + "proxyVotingRecordsAttached": true, + "headerData": { + "submissionType": "N-PX", + "filerInfo": { + "registrantType": "IM", + "filer": { + "issuerCredentials": { "cik": "0000884546" } + }, + "flags": { + "overrideInternetFlag": false, + "confirmingCopyFlag": false + }, + "periodOfReport": "06/30/2025" + } + }, + "formData": { + "coverPage": { + "yearOrQuarter": "YEAR", + "reportCalendarYear": "2025", + "reportingPerson": { + "name": "Charles Schwab Investment Management Inc", + "phoneNumber": "4156677000", + "address": { + "street1": "211 Main Street", + "city": "San Francisco", + "stateOrCountry": "CA", + "zipCode": "94105" + } + }, + "agentForService": {}, + "reportInfo": { + "reportType": "INSTITUTIONAL MANAGER VOTING REPORT", + "confidentialTreatment": false + }, + "fileNumber": "028-03128", + "explanatoryInformation": { + "explanatoryChoice": false + } + }, + "summaryPage": { + "otherIncludedManagersCount": 0 + }, + "signaturePage": { + "reportingPerson": "Charles Schwab Investment Management Inc", + "txSignature": "Omar Aguilar", + "txPrintedSignature": "Omar Aguilar", + "txTitle": "Chief Executive Officer", + "txAsOfDate": "08/20/2025" + } + }, + "proxyVotingRecords": [ + { + "issuerName": "10x Genomics, Inc.", + "cusip": "88025U109", + "meetingDate": "06/03/2025", + "voteDescription": "To approve, on a non-binding, advisory basis, the compensation of our named executive officers.", + "voteCategories": { + "voteCategory": [{ "categoryType": "SECTION 14A SAY-ON-PAY VOTES" }] + }, + "voteSource": "ISSUER", + "sharesVoted": 653315, + "sharesOnLoan": 0, + "vote": { + "voteRecord": [ + { + "howVoted": "AGAINST", + "sharesVoted": 653315, + "managementRecommendation": "AGAINST" + } + ] + } + } + // ... more voting records + ] +} +``` + +
+ +> See the documentation for more details: https://sec-api.io/docs/form-npx-proxy-voting-records-api + +## Form S-1/424B4 API + +Access Form S-1 registration statements and 424B prospectuses related to IPOs, debt offerings, warrant offerings, and other securities offerings. + +```js +const { formS1424B4Api } = require('sec-api'); + +formS1424B4Api.setApiKey('YOUR_API_KEY'); + +const data = await formS1424B4Api.getData({ + query: 'ticker:RIVN', + from: '0', + size: '50', + sort: [{ filedAt: { order: 'desc' } }], +}); +// response: { total, data } +``` + +
+ Example Response + +```json +{ + "total": { "value": 5, "relation": "eq" }, + "data": [ + { + "id": "f838c5f9775441d7aa3b04e087e0e469", + "filedAt": "2021-11-12T17:00:47-05:00", + "accessionNo": "0001193125-21-328239", + "formType": "424B4", + "cik": "1874178", + "ticker": "RIVN", + "entityName": "Rivian Automotive, Inc. / DE", + "filingUrl": "https://www.sec.gov/Archives/edgar/data/1874178/000119312521328239/d157488d424b4.htm", + "tickers": [ + { "ticker": "RIVN", "type": "Class A Common Stock", "exchange": "Nasdaq" } + ], + "securities": [ + { "name": "153,000,000 Shares Class A Common Stock" }, + { "name": "Class B common stock" } + ], + "publicOfferingPrice": { "perShare": 78, "perShareText": "$78.0000", "total": 11934000000, "totalText": "$11,934,000,000" }, + "underwritingDiscount": { "perShare": 1.1098, "perShareText": "$1.1098", "total": 169799400, "totalText": "$169,799,400" }, + "proceedsBeforeExpenses": { "perShare": 76.8902, "perShareText": "$76.8902", "total": 11764200600, "totalText": "$11,764,200,600" }, + "underwriters": [ + { "name": "Morgan Stanley & Co. LLC" }, + { "name": "Goldman Sachs & Co. LLC" }, + { "name": "J.P. Morgan Securities LLC" } + // ... more underwriters + ], + "lawFirms": [ + { "name": "Latham & Watkins LLP", "location": "" }, + { "name": "Skadden, Arps, Slate, Meagher & Flom LLP", "location": "" } + ], + "auditors": [ + { "name": "KPMG LLP" } + ], + "management": [ + { "name": "Robert J. Scaringe", "age": 38, "position": "Founder and Chief Executive Officer, Chairman of the Board of Directors" }, + { "name": "Claire McDonough", "age": 40, "position": "Chief Financial Officer" } + // ... more items + ], + "employees": { + "total": 9195, + "asOfDate": "2021-10-31", + "perDivision": [], + "perRegion": [] + } + } + ] +} +``` + +
+ +> See the documentation for more details: https://sec-api.io/docs/form-s1-424b4-data-search-api + +## Form C API - Crowdfunding Campaigns + +Access Form C filings related to crowdfunding offerings and campaigns under Regulation Crowdfunding. + +```js +const { formCApi } = require('sec-api'); + +formCApi.setApiKey('YOUR_API_KEY'); + +const data = await formCApi.getData({ + query: 'id:*', + from: '0', + size: '50', + sort: [{ filedAt: { order: 'desc' } }], +}); +// response: { total, data } +``` + +
+ Example Response + +```json +{ + "total": { "value": 10000, "relation": "gte" }, + "data": [ + { + "id": "5ed83df80bfdb0dd611508c07e138867", + "accessionNo": "0002103209-26-000005", + "fileNo": "020-36757", + "formType": "C/A", + "filedAt": "2026-03-31T18:45:06-04:00", + "cik": "2103209", + "ticker": "", + "companyName": "GigaWatt, Inc", + "issuerInformation": { + "isAmendment": false, + "natureOfAmendment": "Campaign Page Updates", + "issuerInfo": { + "nameOfIssuer": "GigaWatt, Inc.", + "legalStatus": { + "legalStatusForm": "Corporation", + "jurisdictionOrganization": "CA", + "dateIncorporation": "09-17-2025" + }, + "issuerAddress": { + "street1": "2386 E Walnut Ave", + "city": "Fullerton", + "stateOrCountry": "CA", + "zipCode": "92831" + }, + "issuerWebsite": "https://www.gigawattinc.com/" + }, + "isCoIssuer": false, + "companyName": "StartEngine Primary, LLC", + "commissionCik": "0001725012", + "commissionFileNumber": "008-70060" + }, + "offeringInformation": { + "compensationAmount": "7 - 13 percent", + "financialInterest": "One percent (1%) of securities of the total amount of investments raised in the offering, along the same terms as investors.", + "securityOfferedType": "Other", + "securityOfferedOtherDesc": "Class B Common Stock", + "noOfSecurityOffered": 10000, + "price": 2, + "priceDeterminationMethod": "N/A", + "offeringAmount": 20000, + "overSubscriptionAccepted": true, + "overSubscriptionAllocationType": "Other", + "descOverSubscription": "At issuer's discretion, with priority given to StartEngine Owners", + "maximumOfferingAmount": 1235000, + "deadlineDate": "04-23-2026" + }, + "annualReportDisclosureRequirements": { + "currentEmployees": 21, + "totalAssetMostRecentFiscalYear": 2559852, + "totalAssetPriorFiscalYear": 2169710, + "cashEquiMostRecentFiscalYear": 521671, + "cashEquiPriorFiscalYear": 575133, + "actReceivedMostRecentFiscalYear": 11126, + "actReceivedPriorFiscalYear": 2779, + "shortTermDebtMostRecentFiscalYear": 2659535, + "shortTermDebtPriorFiscalYear": 2311008, + "longTermDebtMostRecentFiscalYear": 707533, + "longTermDebtPriorFiscalYear": 748955, + "revenueMostRecentFiscalYear": 7485272, + "revenuePriorFiscalYear": 9788210, + "costGoodsSoldMostRecentFiscalYear": 5091719, + "costGoodsSoldPriorFiscalYear": 6836396, + "taxPaidMostRecentFiscalYear": 537, + "taxPaidPriorFiscalYear": 4631, + "netIncomeMostRecentFiscalYear": 83037, + "netIncomePriorFiscalYear": 45926, + "issueJurisdictionSecuritiesOffering": [ + "AL", "AK", "AZ" + // ... more items + ] + }, + "signatureInfo": { + "issuerSignature": { + "issuer": "GigaWatt, Inc.", + "issuerSignature": "Deep G. Patel", + "issuerTitle": "Founder, CEO, Board Member, Principal Accounting Officer" + }, + "signaturePersons": [ + { + "personSignature": "Deep G. Patel", + "personTitle": "Founder, CEO, Board Member, Principal Accounting Officer", + "signatureDate": "03-31-2026" + } + ] + } + } + ] +} +``` + +
+ +> See the documentation for more details: https://sec-api.io/docs/form-c-crowdfunding-api + +## Form D API + +Access Form D filings that report private securities offerings exempt from SEC registration, including offerings under Regulation D. + +```js +const { formDApi } = require('sec-api'); + +formDApi.setApiKey('YOUR_API_KEY'); + +const data = await formDApi.getData({ + query: 'offeringData.offeringSalesAmounts.totalOfferingAmount:[1000000 TO *]', + from: '0', + size: '50', + sort: [{ filedAt: { order: 'desc' } }], +}); +// response: { total, offerings } +``` + +
+ Example Response + +```json +{ + "total": { "value": 10000, "relation": "gte" }, + "offerings": [ + { + "schemaVersion": "X0708", + "submissionType": "D/A", + "testOrLive": "LIVE", + "primaryIssuer": { + "cik": "0001925002", + "entityName": "Fund I, a series of Material Ventures, LP", + "issuerAddress": { + "street1": "119 SOUTH MAIN STREET", + "street2": "SUITE 220", + "city": "SEATTLE", + "stateOrCountry": "WA", + "stateOrCountryDescription": "WASHINGTON", + "zipCode": "98104" + }, + "issuerPhoneNumber": "3603409337", + "jurisdictionOfInc": "DELAWARE", + "issuerPreviousNameList": [ + { "previousName": ["None"] } + ], + "edgarPreviousNameList": [ + { "value": "None" } + ], + "entityType": "Limited Partnership", + "yearOfInc": { "withinFiveYears": true, "value": "2021" } + }, + "relatedPersonsList": { + "relatedPersonInfo": [ + { + "relatedPersonName": { "firstName": "Ltd.", "lastName": "Belltower Fund Group" }, + "relatedPersonAddress": { + "street1": "119 South Main Street", + "street2": "Suite 220", + "city": "Seattle", + "stateOrCountry": "WA", + "stateOrCountryDescription": "WASHINGTON", + "zipCode": "98104" + }, + "relatedPersonRelationshipList": { "relationship": ["Director"] }, + "relationshipClarification": "Manager of the general partner of the Issuer" + } + // ... more items + ] + }, + "offeringData": { + "industryGroup": { + "industryGroupType": "Pooled Investment Fund", + "investmentFundInfo": { "investmentFundType": "Venture Capital Fund", "is40Act": false } + }, + "issuerSize": { "revenueRange": "Decline to Disclose" }, + "federalExemptionsExclusions": { "item": ["06b", "3C", "3C.1"] }, + "typeOfFiling": { + "newOrAmendment": { "isAmendment": true, "previousAccessionNumber": "0001976600-23-000006" }, + "dateOfFirstSale": { "value": "2022-04-01" } + }, + "durationOfOffering": { "moreThanOneYear": true }, + "typesOfSecuritiesOffered": { "isPooledInvestmentFundType": true }, + "businessCombinationTransaction": { "isBusinessCombinationTransaction": false }, + "minimumInvestmentAccepted": 25000, + "salesCompensationList": {}, + "offeringSalesAmounts": { + "totalOfferingAmount": 10000000, + "totalAmountSold": 5254355, + "totalRemaining": 4745645 + }, + "investors": { "hasNonAccreditedInvestors": false, "totalNumberAlreadyInvested": 47 }, + "salesCommissionsFindersFees": { + "salesCommissions": { "dollarAmount": 0 }, + "findersFees": { "dollarAmount": 0 } + }, + "useOfProceeds": { + "grossProceedsUsed": { "dollarAmount": 0, "isEstimate": true }, + "clarificationOfResponse": "The manager of the general partner of the Issuer will receive a portion of a management fee as specified in the Issuer's partnership agreement." + }, + "signatureBlock": { + "authorizedRepresentative": false, + "signature": [ + { + "issuerName": "Fund I, a series of Material Ventures, LP", + "signatureName": "/s/ Abraham Wilson", + "nameOfSigner": "Abraham Wilson", + "signatureTitle": "Authorized Person of the Agent of Issuer's GP", + "signatureDate": "2026-03-31" + } + ] + } + }, + "accessionNo": "0001925002-26-000003", + "filedAt": "2026-03-31T20:56:04-04:00", + "id": "eafcfda4b7698259276857a92943d990" + } + ] +} +``` + +
+ +> See the documentation for more details: https://sec-api.io/docs/form-d-xml-json-api + +## Regulation A APIs + +Access Regulation A offering statements filed by small companies. Includes a unified search endpoint and dedicated endpoints for Form 1-A (offering statements), Form 1-K (annual reports), and Form 1-Z (exit reports). + +### Search All Regulation A Filings + +```js +const { regASearchApi } = require('sec-api'); + +regASearchApi.setApiKey('YOUR_API_KEY'); + +const results = await regASearchApi.getData({ + query: 'filedAt:[2024-01-01 TO 2024-12-31]', + from: '0', + size: '10', + sort: [{ filedAt: { order: 'desc' } }], +}); +// response: { total, data } +``` + +
+ Example Response + +```json +{ + "total": { "value": 1419, "relation": "eq" }, + "data": [ + { + "id": "af09549e0cb0775585c3481d61f8e471", + "accessionNo": "0001829126-24-008673", + "fileNo": "24R-00889", + "formType": "1-Z", + "filedAt": "2024-12-31T17:27:40-05:00", + "cik": "1973742", + "ticker": "", + "companyName": "Worldwide Stages, Inc.", + "item1": { + "issuerName": "Worldwide Stages, Inc.", + "street1": "5000 Northfield Lane", + "city": "Spring Hill", + "stateOrCountry": "TN", + "zipCode": "37174", + "phone": "615-341-5900", + "commissionFileNumber": ["024-12301"] + }, + "summaryInfoOffering": [ + { + "offeringQualificationDate": "08-10-2023", + "offeringCommenceDate": "08-10-2023", + "offeringSecuritiesQualifiedSold": 7500000, + "offeringSecuritiesSold": 3870, + "pricePerSecurity": 10, + "portionSecuritiesSoldIssuer": 30960, + "portionSecuritiesSoldSecurityholders": 7740, + "underwrittenSpName": ["-"], + "underwriterFees": 0, + "salesCommissionsSpName": ["Dalmore Group, LLC"], + "salesCommissionsFee": 387, + "findersSpName": ["-"], + "findersFees": 0, + "auditorSpName": ["Fruci & Associates II, PLLC"], + "auditorFees": 40000, + "legalSpName": ["Nelson Mullins Riley & Scarborough"], + "legalFees": 132500, + "promoterSpName": ["-"], + "promotersFees": 0, + "blueSkySpName": ["Guarrd, Inc."], + "blueSkyFees": 4750, + "crdNumberBrokerDealer": "000154559", + "issuerNetProceeds": 25900.4, + "clarificationResponses": "Net proceeds represents amount received by issuer ($30,960) after subtracting its share of commissions ($309.60) and blue sky compliance costs ($4,750)." + } + ], + "certificationSuspension": [ + { + "securitiesClassTitle": "Class B Common Stock", + "certificationFileNumber": ["024-12301"], + "approxRecordHolders": 15 + } + ], + "signatureTab": [ + { + "cik": "0001973742", + "regulationIssuerName1": "Worldwide Stages, Inc.", + "regulationIssuerName2": "Worldwide Stages, Inc.", + "signatureBy": "/s/ Kelly Frey, Sr.", + "date": "12-31-2024", + "title": "Chief Executive Officer" + } + ] + } + ] +} +``` + +
+ +### Form 1-A: Offering Statements + +```js +const { form1AApi } = require('sec-api'); + +form1AApi.setApiKey('YOUR_API_KEY'); + +const form1A = await form1AApi.getData({ + query: 'summaryInfo.indicateTier1Tier2Offering:Tier1', + from: '0', + size: '10', + sort: [{ filedAt: { order: 'desc' } }], +}); +// response: { total, data } +``` + +
+ Example Response + +```json +{ + "total": { "value": 1954, "relation": "eq" }, + "data": [ + { + "id": "3049ff20a7a655422f33f02c192c75bf", + "accessionNo": "0001493152-26-012984", + "fileNo": "024-12729", + "formType": "1-A", + "filedAt": "2026-03-26T17:11:42-04:00", + "cik": "1587603", + "ticker": "", + "companyName": "WINNERS, INC.", + "employeesInfo": [ + { + "issuerName": "Winners, Inc.", + "jurisdictionOrganization": "NV", + "yearIncorporation": "2007", + "cik": "0001587603", + "sicCode": 7990, + "irsNum": "26-0764832", + "fullTimeEmployees": 0, + "partTimeEmployees": 2 + } + ], + "issuerInfo": { + "street1": "401 RYLAND STREET", + "street2": "SUITE 200-A", + "city": "RENO", + "stateOrCountry": "NV", + "zipCode": "89502", + "phoneNumber": "917-767-0075", + "connectionName": "Jim Byrd", + "industryGroup": "Other", + "cashEquivalents": 537, + "investmentSecurities": 0, + "accountsReceivable": 200000, + "propertyPlantEquipment": 0, + "totalAssets": 475537, + "accountsPayable": 483052, + "longTermDebt": 355718, + "totalLiabilities": 838770, + "totalStockholderEquity": -363233, + "totalLiabilitiesAndEquity": 475537, + "totalRevenues": 495, + "costAndExpensesApplToRevenues": 0, + "depreciationAndAmortization": 0, + "netIncome": -978989, + "earningsPerShareBasic": 0, + "earningsPerShareDiluted": 0 + }, + "commonEquity": [ + { + "commonEquityClassName": "Common", + "outstandingCommonEquity": 53115625, + "commonCusipEquity": "97478A304", + "publiclyTradedCommonEquity": "OTCID" + } + ], + "preferredEquity": [ + { + "preferredEquityClassName": "Series A Preferred", + "outstandingPreferredEquity": 0, + "preferredCusipEquity": "000000000", + "publiclyTradedPreferredEquity": "NA" + } + ], + "debtSecurities": [ + { + "debtSecuritiesClassName": "NA", + "outstandingDebtSecurities": 0, + "cusipDebtSecurities": "000000000", + "publiclyTradedDebtSecurities": "NA" + } + ], + "issuerEligibility": { + "certifyIfTrue": true + }, + "applicationRule262": { + "certifyIfNotDisqualified": true + }, + "summaryInfo": { + "indicateTier1Tier2Offering": "Tier1", + "financialStatementAuditStatus": "Unaudited", + "securitiesOfferedTypes": ["Equity (common or preferred stock)"], + "offerDelayedContinuousFlag": true, + "offeringYearFlag": false, + "offeringAfterQualifFlag": false, + "offeringBestEffortsFlag": true, + "solicitationProposedOfferingFlag": false, + "resaleSecuritiesAffiliatesFlag": false, + "securitiesOffered": 10000000, + "outstandingSecurities": 53115625, + "pricePerSecurity": 0.5, + "issuerAggregateOffering": 5000000, + "securityHolderAggegate": 0, + "qualificationOfferingAggregate": 0, + "concurrentOfferingAggregate": 0, + "totalAggregateOffering": 5000000, + "legalServiceProviderName": "James S. Byrd, P.A.", + "legalFees": 115000, + "estimatedNetAmount": 4885000, + "clarificationResponses": "In payment for legal fees related to this Offering, the Company will issue 200,000 shares of stock to James S. Byrd, P.A., at the price of $.50 per share, under this Regulation A Offering once qualified." + }, + "juridictionSecuritiesOffered": { + "jurisdictionsOfSecOfferedNone": true, + "issueJuridicationSecuritiesOffering": ["FL", "NY"] + }, + "securitiesIssued": [ + { + "securitiesIssuerName": "Winners, Inc.", + "securitiesIssuerTitle": "Series A Convertible Preferred Stock", + "securitiesIssuedTotalAmount": 149346690, + "securitiesPrincipalHolderAmount": 0, + "securitiesIssuedAggregateAmount": "$1,345,935 valued at $0.10 per share for settlement of monies owed..." + } + ], + "unregisteredSecuritiesAct": { + "securitiesActExcemption": "15 U.S.C. s. 77d(a)(2); Regulation D 506(b)" + } + } + ] +} +``` + +
+ +### Form 1-K: Annual Reports + +```js +const { form1KApi } = require('sec-api'); + +form1KApi.setApiKey('YOUR_API_KEY'); + +const form1K = await form1KApi.getData({ + query: 'fileNo:24R-00472', + from: '0', + size: '10', + sort: [{ filedAt: { order: 'desc' } }], +}); +// response: { total, data } +``` + +
+ Example Response + +```json +{ + "total": { "value": 4, "relation": "eq" }, + "data": [ + { + "id": "9e7259d5bfcc20d7bdf19c7037ab1186", + "accessionNo": "0001493152-25-009865", + "fileNo": "24R-00472", + "formType": "1-K", + "filedAt": "2025-03-11T16:38:05-04:00", + "periodOfReport": "2024-12-31", + "cik": "1786471", + "ticker": "", + "companyName": "Aptera Motors Corp", + "item1": { + "formIndication": "Annual Report", + "fiscalYearEnd": "12-31-2024", + "street1": "5818 El Camino Real", + "city": "Carlsbad", + "stateOrCountry": "CA", + "zipCode": "92008", + "phoneNumber": "858-371-3151", + "issuedSecuritiesTitle": ["Class B Common Stock"] + }, + "item1Info": [ + { + "issuerName": "Aptera Motors Corp.", + "cik": "0001786471", + "jurisdictionOrganization": "DE", + "irsNum": "83-4079594" + } + ], + "item2": { + "regArule257": false + }, + "summaryInfo": [ + { + "commissionFileNumber": "024-11479", + "offeringQualificationDate": "05-19-2021", + "offeringCommenceDate": "05-19-2021", + "qualifiedSecuritiesSold": 14000000, + "offeringSecuritiesSold": 12630689, + "pricePerSecurity": 8.02, + "aggregrateOfferingPrice": 101297126, + "aggregrateOfferingPriceHolders": 0, + "underwrittenSpName": ["Dalmore Group, LLC / OpenDeal Broker LLC"], + "underwriterFees": 1012971, + "auditorSpName": ["dbbMcKennon"], + "auditorFees": 150000, + "legalSpName": ["CrowdCheck Law LLP/ Sheppard Mullin"], + "legalFees": 90000, + "blueSkySpName": ["Various State Fees"], + "blueSkyFees": 80000, + "crdNumberBrokerDealer": "000136352", + "issuerNetProceeds": 99964154, + "clarificationResponses": "The offering was open for three years. The amounts in this form reflect all three years. Price per security is the avg price over the period." + } + ] + } + ] +} +``` + +
+ +### Form 1-Z: Exit Reports + +```js +const { form1ZApi } = require('sec-api'); + +form1ZApi.setApiKey('YOUR_API_KEY'); + +const form1Z = await form1ZApi.getData({ + query: 'cik:*', + from: '0', + size: '10', + sort: [{ filedAt: { order: 'desc' } }], +}); +// response: { total, data } +``` + +
+ Example Response + +```json +{ + "total": { "value": 361, "relation": "eq" }, + "data": [ + { + "id": "9b9dfa9d1532fbe9150cea549881f0cc", + "accessionNo": "0001683168-26-002068", + "fileNo": "024-12157", + "formType": "1-Z/A", + "filedAt": "2026-03-23T06:02:42-04:00", + "cik": "1585380", + "ticker": "INKW", + "companyName": "Greene Concepts, Inc", + "item1": { + "issuerName": "Greene Concepts, Inc.", + "street1": "13195 U.S. Highway 221 N", + "city": "Marion", + "stateOrCountry": "NC", + "zipCode": "28752", + "phone": "844-889-2837", + "commissionFileNumber": ["024-12157"] + }, + "summaryInfoOffering": [ + { + "offeringQualificationDate": "04-03-2023", + "offeringCommenceDate": "04-03-2023", + "offeringSecuritiesQualifiedSold": 4500000000, + "offeringSecuritiesSold": 3047136365, + "pricePerSecurity": 0.0006, + "portionSecuritiesSoldIssuer": 1972001, + "portionSecuritiesSoldSecurityholders": 0, + "legalSpName": ["Donnell Suares/Newlan Law Firm, PLLC"], + "legalFees": 37500, + "blueSkySpName": ["State Regulators"], + "blueSkyFees": 2500, + "issuerNetProceeds": 1932001 + } + ], + "certificationSuspension": [ + { + "securitiesClassTitle": "Common Stock", + "certificationFileNumber": ["024-12157"], + "approxRecordHolders": 5050 + } + ], + "signatureTab": [ + { + "cik": "0001585380", + "regulationIssuerName1": "Greene Concepts, Inc.", + "regulationIssuerName2": "Greene Concepts, Inc.", + "signatureBy": "/s/ Leonard Greene", + "date": "03-23-2026", + "title": "Chief Executive Officer" + } + ] + } + ] +} +``` + +
+ +> See the documentation for more details: https://sec-api.io/docs/reg-a-offering-statements-api + +## Auditor and Accountant Changes (Item 4.01) + +Access structured data from 8-K filings reporting changes in a registrant's certifying accountant (Item 4.01). + +```js +const { form8KApi } = require('sec-api'); + +form8KApi.setApiKey('YOUR_API_KEY'); + +const data = await form8KApi.getData({ + query: 'item4_01:* AND filedAt:[2024-01-01 TO 2024-12-31]', + from: '0', + size: '50', + sort: [{ filedAt: { order: 'desc' } }], +}); +// response: { total, data } +``` + +
+ Example Response + +```json +{ + "total": { "value": 10000, "relation": "gte" }, + "data": [ + { + "id": "7ed33db091e32b437ff9c4571531869d", + "accessionNo": "0001388658-26-000022", + "formType": "8-K", + "filedAt": "2026-03-31T19:49:16-04:00", + "periodOfReport": "2026-03-30", + "cik": "1388658", + "ticker": "IRTC", + "companyName": "iRhythm Holdings, Inc.", + "items": [ + "Item 4.01: Changes in Registrant's Certifying Accountant", + "Item 9.01: Financial Statements and Exhibits" + ], + "item4_01": { + "keyComponents": "iRhythm Holdings, Inc. dismissed PricewaterhouseCoopers LLP as its independent auditor on March 30, 2026, and subsequently engaged KPMG LLP as the new auditor for the fiscal year ending December 31, 2026.", + "newAccountantDate": "2026-03-30", + "engagedNewAccountant": true, + "formerAccountantDate": "2026-03-30", + "engagementEndReason": "dismissal", + "formerAccountantName": "PricewaterhouseCoopers LLP", + "newAccountantName": "KPMG LLP", + "consultedNewAccountant": false, + "reportedDisagreements": false, + "reportableEventsExist": false, + "attachments": ["Exhibit 16.1"], + "reportedIcfrWeakness": false, + "opinionType": "unqualified", + "auditDisclaimer": false, + "approvedChange": true + } + } + ] +} +``` + +
+ +> See the documentation for more details: https://sec-api.io/docs/form-8k-data-item4-1-search-api + +## Financial Restatements & Non-Reliance on Prior Financial Results (Item 4.02) + +Access structured data from 8-K filings reporting non-reliance on previously issued financial statements (Item 4.02). + +```js +const { form8KApi } = require('sec-api'); + +form8KApi.setApiKey('YOUR_API_KEY'); + +const data = await form8KApi.getData({ + query: 'item4_02:* AND filedAt:[2024-01-01 TO 2024-12-31]', + from: '0', + size: '50', + sort: [{ filedAt: { order: 'desc' } }], +}); +// response: { total, data } +``` + +
+ Example Response + +```json +{ + "total": { "value": 8546, "relation": "eq" }, + "data": [ + { + "id": "1153464e0d82cd42a5773bede05220a8", + "accessionNo": "0001765048-26-000002", + "formType": "8-K", + "filedAt": "2026-03-26T09:53:26-04:00", + "periodOfReport": "2026-03-26", + "cik": "1765048", + "ticker": "GCGJ", + "companyName": "GUOCHUN INTERNATIONAL INC.", + "items": [ + "Item 4.02: Non-Reliance on Previously Issued Financial Statements or a Related Audit Report or Completed Interim Review" + ], + "item4_02": { + "keyComponents": "The Company determined that action should be taken to preclude reliance on previously issued unaudited condensed financial statements for the period ended September 30, 2025, due to an erroneously recorded amount in other general and administrative expenses.", + "identifiedIssues": [ + "Erroneously recorded amount in other general and administrative expenses" + ], + "affectedReportingPeriods": ["Q3 2025"], + "identifiedBy": ["Company"], + "restatementIsNecessary": true, + "reasonsForRestatement": [ + "Erroneous recording of other general and administrative expenses" + ], + "impactYetToBeDetermined": true, + "impactOfError": "Decrease in other general and administrative expenses of $8,250, with a corresponding increase in prepayments of $8,250.", + "impactIsMaterial": false, + "materialWeaknessIdentified": false, + "affectedLineItems": [ + "Other General and Administrative Expenses", + "Prepayments" + ], + "netIncomeDecreased": false, + "netIncomeIncreased": false, + "revenueDecreased": false, + "revenueIncreased": false, + "eventClassification": "Financial Restatement Due to Erroneous Recording in General and Administrative Expenses" + } + } + ] +} +``` + +
+ +> See the documentation for more details: https://sec-api.io/docs/form-8k-data-search-api + +## Changes of Directors, Executives, Board Members and Compensation Plans (Item 5.02) + +Access structured data from 8-K filings reporting departures or appointments of directors and officers, and changes to compensatory arrangements (Item 5.02). + +```js +const { form8KApi } = require('sec-api'); + +form8KApi.setApiKey('YOUR_API_KEY'); + +const data = await form8KApi.getData({ + query: 'item5_02:* AND filedAt:[2024-01-01 TO 2024-12-31]', + from: '0', + size: '50', + sort: [{ filedAt: { order: 'desc' } }], +}); +// response: { total, data } +``` + +
+ Example Response + +```json +{ + "total": { "value": 10000, "relation": "gte" }, + "data": [ + { + "id": "9589d3da16d0e3bd48e6ebb799dd9988", + "accessionNo": "0001193125-26-135660", + "formType": "8-K", + "filedAt": "2026-04-01T07:00:10-04:00", + "periodOfReport": "2026-04-01", + "cik": "1109354", + "ticker": "BRKR", + "companyName": "BRUKER CORP", + "items": [ + "Item 5.02: Departure of Directors or Certain Officers; Election of Directors; Appointment of Certain Officers: Compensatory Arrangements of Certain Officers", + "Item 9.01: Financial Statements and Exhibits" + ], + "item5_02": { + "keyComponents": "Thierry L. Bernard was appointed as a new director to the Board of Bruker Corporation, expanding the Board to twelve directors. His appointment is effective April 1, 2026.", + "personnelChanges": [ + { + "type": "appointment", + "effectiveDate": "2026-04-01", + "positions": ["Director"], + "person": { + "name": "Thierry L. Bernard", + "positionsAtOtherCompanies": [ + "CEO and Managing Director of QIAGEN N.V.", + "Chair of the AdvaMedDx Board of Directors", + "Board Member at Neogen Corporation" + ], + "academicAffiliations": [ + "Sciences Po", + "LSE", + "College of Europe", + "Harvard Business School" + ], + "background": "Joined QIAGEN in February 2015, named CEO in March 2020, previously held roles at bioMérieux SA and other international companies.", + "previousPositions": [ + "Corporate Vice President, Global Commercial Operations at bioMérieux SA" + ] + }, + "compensation": { "noCompensation": false }, + "continuedConsultingRole": false, + "termExtended": false, + "termShortened": false, + "compensationIncreased": false, + "compensationDecreased": false, + "disagreements": false, + "interim": false + } + ], + "organizationChanges": { + "organ": "Board of Directors", + "details": "Expansion of the board", + "sizeIncrease": true, + "sizeDecrease": false, + "created": false, + "abolished": false, + "affectedPersonnel": ["Thierry L. Bernard"] + }, + "attachments": ["Form 8-K", "Company Press Release"] + } + } + ] +} +``` + +
+ +> See the documentation for more details: https://sec-api.io/docs/form-8k-data-item5-2-search-api + +## Directors & Board Members Data API + +Access structured data on directors and board members of public companies, including names, roles, tenure, and committee memberships. + +```js +const { directorsBoardMembersApi } = require('sec-api'); + +directorsBoardMembersApi.setApiKey('YOUR_API_KEY'); + +const data = await directorsBoardMembersApi.getData({ + query: 'ticker:AAPL', + from: '0', + size: '50', + sort: [{ filedAt: { order: 'desc' } }], +}); +// response: { total, data } +``` + +
+ Example Response + +```json +{ + "total": { "value": 20, "relation": "eq" }, + "data": [ + { + "id": "42fe18db08211769589dc61fbd461443", + "filedAt": "2026-01-08T16:31:36-05:00", + "accessionNo": "0001308179-26-000008", + "cik": "320193", + "ticker": "AAPL", + "entityName": "Apple Inc.", + "directors": [ + { + "name": "Alex Gorsky", + "position": "Former Chair and CEO, Johnson & Johnson; Director", + "age": "65", + "directorClass": "II", + "dateFirstElected": "2021", + "isIndependent": false, + "committeeMemberships": ["Nominating Committee", "People and Compensation Committee"], + "qualificationsAndExperience": ["executive leadership experience", "brand marketing expertise", "experience in health and technology"] + }, + { + "name": "Tim Cook", + "position": "CEO; Chief Executive Officer", + "age": "65", + "directorClass": "", + "dateFirstElected": "2011", + "isIndependent": null, + "committeeMemberships": [], + "qualificationsAndExperience": ["extensive executive leadership experience in the technology industry", "management of worldwide operations", "sales, service, and support"] + } + // ... more directors + ] + } + ] +} +``` + +
+ +> See the documentation for more details: https://sec-api.io/docs/directors-and-board-members-data-api + +## Executive Compensation Data API + +Access structured executive compensation data from proxy statements, including salary, bonus, stock awards, and total compensation. Supports both a simple ticker lookup (GET) and advanced search queries (POST). + +```js +const { execCompApi } = require('sec-api'); + +execCompApi.setApiKey('YOUR_API_KEY'); + +// Simple lookup by ticker +const compByTicker = await execCompApi.getData('TSLA'); +// response: [...] array of compensation records + +// Advanced search with query object +const compByQuery = await execCompApi.getData({ + query: 'cik:1318605 AND year:2023', + from: '0', + size: '200', + sort: [{ year: { order: 'desc' } }, { 'name.keyword': { order: 'asc' } }], +}); +// response: { total, data } +``` + +
+ Example Response + +```json +[ + { + "id": "19b4cc24f7170d4f2a69fe20299e8478", + "cik": "1318605", + "ticker": "TSLA", + "name": "Tom Zhu", + "position": "SVP, APAC and Global Vehicle Manufacturing", + "year": 2024, + "salary": 350000, + "bonus": 0, + "stockAwards": 0, + "optionAwards": 0, + "nonEquityIncentiveCompensation": 0, + "changeInPensionValueAndDeferredEarnings": 0, + "otherCompensation": 168250, + "total": 518250 + }, + { + "id": "cf7779d6e76ea8fbb5d95a250758dd93", + "cik": "1318605", + "ticker": "TSLA", + "name": "Elon Musk", + "position": "Technoking of Tesla and Chief Executive Officer", + "year": 2024, + "salary": 0, + "bonus": 0, + "stockAwards": 0, + "optionAwards": 0, + "nonEquityIncentiveCompensation": 0, + "changeInPensionValueAndDeferredEarnings": 0, + "otherCompensation": 0, + "total": 0 + } + // ... more executives +] +``` + +
+ +> See the documentation for more details: https://sec-api.io/docs/executive-compensation-api + +## Outstanding Shares & Public Float API + +Access data on outstanding shares and public float reported in SEC filings. Outstanding shares are reported in both 10-K and 10-Q filings, while public float is only disclosed in annual reports (10-K). + +```js +const { floatApi } = require('sec-api'); + +floatApi.setApiKey('YOUR_API_KEY'); + +// Lookup by ticker +const floatByTicker = await floatApi.getFloat({ ticker: 'AAPL' }); + +// Lookup by CIK +const floatByCik = await floatApi.getFloat({ cik: '320193' }); +// response: { total, data } +``` + +
+ Example Response + +```json +{ + "total": { "value": 59, "relation": "eq" }, + "data": [ + { + "id": "2ff3110e1d6a331323fc8171584b6802", + "tickers": ["AAPL"], + "cik": "320193", + "float": { + "outstandingShares": [ + { "period": "2026-01-16", "shareClass": "", "value": 14681140000 } + ], + "publicFloat": [] + }, + "reportedAt": "2026-01-30T06:01:32-05:00", + "periodOfReport": "2025-12-27", + "sourceFilingAccessionNo": "0000320193-26-000006" + }, + { + "id": "736081ee32d8abd105e3d9cf4fadc5fb", + "tickers": ["AAPL"], + "cik": "320193", + "float": { + "outstandingShares": [ + { "period": "2025-10-17", "shareClass": "", "value": 14776353000 } + ], + "publicFloat": [ + { "period": "2025-03-28", "shareClass": "", "value": 3253431000000 } + ] + }, + "reportedAt": "2025-10-31T06:01:26-04:00", + "periodOfReport": "2025-09-27", + "sourceFilingAccessionNo": "0000320193-25-000079" + } + // ... more data + ] +} +``` + +
+ +> See the documentation for more details: https://sec-api.io/docs/outstanding-shares-float-api + +## Subsidiary API + +Access data on company subsidiaries disclosed in Exhibit 21 of 10-K annual reports. + +```js +const { subsidiaryApi } = require('sec-api'); + +subsidiaryApi.setApiKey('YOUR_API_KEY'); + +const data = await subsidiaryApi.getData({ + query: 'ticker:AAPL', + from: '0', + size: '50', + sort: [{ filedAt: { order: 'desc' } }], +}); +// response: { total, data } +``` + +
+ Example Response + +```json +{ + "total": { "value": 26, "relation": "eq" }, + "data": [ + { + "id": "53b6eca92223fed0008eae2e5e2ec8f1", + "accessionNo": "0000320193-25-000079", + "filedAt": "2025-10-31T06:01:26-04:00", + "cik": "320193", + "ticker": "AAPL", + "companyName": "Apple Inc.", + "subsidiaries": [ + { "name": "Apple Asia Limited", "jurisdiction": "Hong Kong" }, + { "name": "Apple Canada Inc.", "jurisdiction": "Canada" }, + { "name": "Apple Distribution International Limited", "jurisdiction": "Ireland" }, + { "name": "Apple Japan, Inc.", "jurisdiction": "Japan" } + // ... more subsidiaries + ] + } + ] +} +``` + +
+ +> See the documentation for more details: https://sec-api.io/docs/subsidiary-api + +## Audit Fees Data API + +Access audit fee data disclosed in proxy statements (DEF 14A), including fees paid to auditors for audit services, audit-related services, tax services, and other services. + +```js +const { auditFeesApi } = require('sec-api'); + +auditFeesApi.setApiKey('YOUR_API_KEY'); + +const data = await auditFeesApi.getData({ + query: 'cik:1318605', + from: '0', + size: '10', + sort: [{ filedAt: { order: 'desc' } }], +}); +// response: { total, data } +``` + +
+ Example Response + +```json +{ + "total": { "value": 10000, "relation": "gte" }, + "data": [ + { + "id": "a522dfd61d00caa01da0b4f4b38607c5", + "accessionNo": "0001717547-26-000026", + "formType": "DEF 14A", + "filedAt": "2026-04-01T08:33:43-04:00", + "periodOfReport": "2026-05-13", + "entities": [ + { + "cik": "1717547", + "ticker": "BRSP", + "companyName": "BrightSpire Capital, Inc. (Filer)", + "irsNo": "384046290", + "fiscalYearEnd": "1231", + "stateOfIncorporation": "MD", + "sic": "6798 Real Estate Investment Trusts", + "act": "34", + "fileNo": "001-38377", + "filmNo": "26824836" + } + ], + "records": [ + { + "year": 2025, + "auditFees": 1251363, + "auditRelatedFees": null, + "taxFees": null, + "allOtherFees": null, + "totalFees": 1251363, + "auditor": "Deloitte & Touche LLP" + }, + { + "year": 2024, + "auditFees": 1487239, + "auditRelatedFees": null, + "taxFees": 714695, + "allOtherFees": null, + "totalFees": 2201934, + "auditor": "Ernst & Young" + } + ] + } + ] +} +``` + +
+ +> See the documentation for more details: https://sec-api.io/docs/audit-fees-api + +## SEC Enforcement Actions Database API + +Search and access SEC enforcement actions, including civil lawsuits filed in federal court and administrative proceedings. + +```js +const { secEnforcementActionsApi } = require('sec-api'); + +secEnforcementActionsApi.setApiKey('YOUR_API_KEY'); + +const data = await secEnforcementActionsApi.getData({ + query: 'releasedAt:[2024-01-01 TO 2024-12-31]', + from: '0', + size: '50', + sort: [{ releasedAt: { order: 'desc' } }], +}); +// response: { total, data } +``` + +
+ Example Response + +```json +{ + "total": { "value": 137, "relation": "eq" }, + "data": [ + { + "id": "7efc54567587f7930a3e3c1919b5ed8e", + "releaseNo": "2024-212", + "releasedAt": "2024-12-20T17:25:11-05:00", + "url": "https://www.sec.gov/newsroom/press-releases/2024-212", + "title": "Tai Mo Shan to Pay $123 Million for Negligently Misleading Investors About Stability of Terra USD", + "resources": [ + { "label": "SEC Order", "url": "https://www.sec.gov/files/litigation/admin/2024/33-11349.pdf" } + ], + "summary": "The SEC charged Tai Mo Shan Limited with misleading investors about the stability of Terra USD and acting as a statutory underwriter for LUNA crypto assets, resulting in a $123 million settlement.", + "tags": ["disclosure fraud", "crypto", "unregistered securities"], + "entities": [ + { "name": "Tai Mo Shan Limited", "type": "company", "role": "defendant" }, + { "name": "Terraform Labs PTE Ltd.", "type": "company", "role": "other" }, + { "name": "Do Kwon", "type": "individual", "role": "other" } + ], + "complaints": [ + "Tai Mo Shan misled investors about the stability of Terra USD.", + "Tai Mo Shan acted as a statutory underwriter in distributing LUNA crypto assets." + ], + "parallelActionsTakenBy": [], + "hasAgreedToSettlement": true, + "hasAgreedToPayPenalty": true, + "penaltyAmounts": [ + { "penaltyAmount": "73452756", "penaltyAmountText": "$73,452,756", "imposedOn": "Tai Mo Shan Limited" }, + { "penaltyAmount": "12916153", "penaltyAmountText": "$12,916,153", "imposedOn": "Tai Mo Shan Limited" }, + { "penaltyAmount": "36726378", "penaltyAmountText": "$36,726,378", "imposedOn": "Tai Mo Shan Limited" } + ], + "requestedRelief": [ + "disgorgement of profits", + "prejudgment interest", + "civil penalties", + "cease and desist from violations" + ], + "violatedSections": ["registration and fraud provisions"], + "investigationConductedBy": ["Liz Canizares", "Derek Kleinmann", "Daniel Sinnreich"], + "litigationLedBy": [], + "otherAgenciesInvolved": [] + } + ] +} +``` + +
+ +> See the documentation for more details: https://sec-api.io/docs/sec-enforcement-actions-database-api + +## SEC Litigation Releases Database API + +Access SEC litigation releases that announce civil lawsuits filed by the SEC in federal courts. + +```js +const { secLitigationsApi } = require('sec-api'); + +secLitigationsApi.setApiKey('YOUR_API_KEY'); + +const data = await secLitigationsApi.getData({ + query: 'releasedAt:[2024-01-01 TO 2024-12-31]', + from: '0', + size: '50', + sort: [{ releasedAt: { order: 'desc' } }], +}); +// response: { total, data } +``` + +
+ Example Response + +```json +{ + "total": { "value": 288, "relation": "eq" }, + "data": [ + { + "id": "d459bd679554a02194c7c5f272f138fa", + "releaseNo": "LR-26206", + "releasedAt": "2024-12-31T01:53:13-05:00", + "url": "https://www.sec.gov/enforcement-litigation/litigation-releases/lr-26206", + "title": "Dale B. Chappell, et al.", + "subTitle": "SEC Charges Humanigen's CEO and Chief Scientific Officer with Insider Trading", + "caseCitations": [ + "Securities and Exchange Commission v. Dale B. Chappell, et al., No. 23-civ-03769 (D.N.J. second amended complaint filed May 20, 2024)" + ], + "resources": [ + { "label": "SEC Complaint", "url": "https://www.sec.gov/files/litigation/complaints/2024/comp26206.pdf" } + ], + "summary": "The SEC has charged Humanigen's CEO Cameron Durrant and Chief Scientific Officer Dale B. Chappell with insider trading for selling company stock based on nonpublic information about the FDA's likely rejection of their COVID-19 drug, resulting in significant avoided losses.", + "tags": ["insider trading", "biopharmaceutical", "antifraud"], + "entities": [ + { "name": "Cameron Durrant", "type": "individual", "role": "defendant" }, + { "name": "Dale B. Chappell", "type": "individual", "role": "defendant" }, + { "name": "Humanigen, Inc.", "type": "company", "role": "other", "cik": "1293310", "ticker": "HGENQ" } + // ... more items + ], + "complaints": [ + "Chappell and Durrant sold Humanigen stock while in possession of material nonpublic information that the FDA was unlikely to approve Emergency Use Authorization for lenzilumab." + // ... more items + ], + "parallelActionsTakenBy": [ + "Department of Justice's Fraud Section", + "U.S. Attorney's Office for the District of New Jersey" + ], + "hasAgreedToSettlement": false, + "hasAgreedToPayPenalty": false, + "penaltyAmounts": [], + "requestedRelief": [ + "permanent injunctions", + "disgorgement of ill-gotten gains with prejudgment interest", + "civil penalties", + "officer and director bars" + ], + "violatedSections": [ + "Section 17(a) of the Securities Act of 1933", + "Section 10(b) of the Securities Exchange Act of 1934", + "Rule 10b-5" + ], + "investigationConductedBy": ["W. Bradley Ney", "Daniel Ball", "George B. Parizek", "Kevin Wu", "Zachary Scrima", "Melissa Robertson", "Pei Y. Chung"], + "litigationLedBy": ["Anna Area", "Daniel Lloyd", "Daniel Ball", "David Nasse"], + "otherAgenciesInvolved": [ + { "name": "Criminal Fraud Section of the U.S. Department of Justice", "country": "United States" } + // ... more items + ] + } + ] +} +``` + +
+ +> See the documentation for more details: https://sec-api.io/docs/sec-litigation-releases-database-api + +## SEC Administrative Proceedings Database API + +Access SEC administrative proceedings, including orders instituting proceedings, settled cases, and hearing outcomes. + +```js +const { secAdminProceedingsApi } = require('sec-api'); + +secAdminProceedingsApi.setApiKey('YOUR_API_KEY'); + +const data = await secAdminProceedingsApi.getData({ + query: 'releasedAt:[2024-01-01 TO 2024-12-31]', + from: '0', + size: '50', + sort: [{ releasedAt: { order: 'desc' } }], +}); +// response: { total, data } +``` + +
+ Example Response + +```json +{ + "total": { "value": 711, "relation": "eq" }, + "data": [ + { + "id": "0ab80b58b2fcf40e7497aa0000759a37", + "releasedAt": "2024-12-31T12:19:45-05:00", + "releaseNo": ["34-102060", "AAER-4554"], + "fileNumbers": ["3-22386"], + "respondents": [ + { "name": "Accell Audit & Compliance, PA", "type": "company", "role": "respondent" } + ], + "respondentsText": "Accell Audit & Compliance, PA", + "resources": [ + { "label": "primary", "url": "https://www.sec.gov/files/litigation/admin/2024/34-102060.pdf" } + ], + "title": "ORDER INSTITUTING PUBLIC ADMINISTRATIVE PROCEEDINGS PURSUANT TO RULE 102(e) OF THE COMMISSION'S RULES OF PRACTICE, MAKING FINDINGS, AND IMPOSING REMEDIAL SANCTIONS", + "summary": "The SEC has instituted public administrative proceedings against Accell Audit & Compliance, PA, resulting in its suspension from appearing or practicing before the Commission due to its involvement in fraudulent financial reporting with Ignite International Brands, Ltd.", + "tags": ["fraudulent financial reporting", "accounting misconduct"], + "entities": [ + { "name": "Accell Audit & Compliance, PA", "type": "company", "role": "respondent" }, + { "name": "Ignite International Brands, Ltd.", "type": "company", "role": "related party" } + ], + "complaints": [ + "Accell failed to exercise due professional care or skepticism, or to otherwise obtain sufficient appropriate audit evidence..." + // ... more items + ], + "parallelActionsTakenBy": [], + "hasAgreedToSettlement": true, + "hasAgreedToPayPenalty": true, + "penaltyAmounts": [ + { "penaltyAmount": "75000", "penaltyAmountText": "$75,000", "imposedOn": "Accell Audit & Compliance, PA" } + ], + "requestedRelief": [], + "violatedSections": ["Section 10(b) of the Exchange Act", "Rule 10b-5"], + "orders": ["Accell is suspended from appearing or practicing before the Commission as an accountant."], + "investigationConductedBy": [], + "litigationLedBy": [], + "otherAgenciesInvolved": [] + } + ] +} +``` + +
+ +> See the documentation for more details: https://sec-api.io/docs/sec-administrative-proceedings-database-api + +## AAER Database API + +Access Accounting and Auditing Enforcement Releases (AAERs) issued by the SEC against companies and individuals for accounting fraud and auditing violations. + +```js +const { aaerApi } = require('sec-api'); + +aaerApi.setApiKey('YOUR_API_KEY'); + +const data = await aaerApi.getData({ + query: 'dateTime:[2020-01-01 TO 2024-12-31]', + from: '0', + size: '50', + sort: [{ dateTime: { order: 'desc' } }], +}); +// response: { total, data } +``` + +
+ Example Response + +```json +{ + "total": { "value": 427, "relation": "eq" }, + "data": [ + { + "id": "b2dfd65355cdf4c4a629103a211882ce", + "dateTime": "2024-12-31T12:19:45-05:00", + "aaerNo": "AAER-4554", + "releaseNo": ["34-102060"], + "respondents": [ + { "name": "Accell Audit & Compliance, PA", "type": "company" } + ], + "respondentsText": "Accell Audit & Compliance, PA", + "urls": [ + { "type": "primary", "url": "https://www.sec.gov/files/litigation/admin/2024/34-102060.pdf" } + ], + "summary": "The SEC has instituted public administrative proceedings against Accell Audit & Compliance, PA, resulting in a suspension and a $75,000 penalty for failing to exercise due professional care in auditing Ignite International Brands, Ltd.'s financial statements.", + "tags": ["auditing misconduct", "fraudulent financial reporting"], + "entities": [ + { "name": "Accell Audit & Compliance, PA", "type": "company", "role": "respondent" }, + { "name": "Ignite International Brands, Ltd.", "type": "company", "role": "entity audited" } + ], + "complaints": [ + "Accell failed to exercise due professional care or skepticism, or to obtain sufficient appropriate audit evidence..." + // ... more items + ], + "parallelActionsTakenBy": [], + "hasAgreedToSettlement": true, + "hasAgreedToPayPenalty": true, + "penaltyAmounts": [ + { "penaltyAmount": "75000", "penaltyAmountText": "$75,000", "imposedOn": "Accell Audit & Compliance, PA" } + ], + "requestedRelief": ["suspension from appearing or practicing before the Commission"], + "violatedSections": ["Section 10(b) of the Exchange Act", "Rule 10b-5"], + "otherAgenciesInvolved": [] + } + ] +} +``` + +
+ +> See the documentation for more details: https://sec-api.io/docs/aaer-database-api + +## SRO Filings Database API + +Access Self-Regulatory Organization (SRO) filings, including rule proposals and amendments from exchanges like NYSE and NASDAQ. + +```js +const { sroFilingsApi } = require('sec-api'); + +sroFilingsApi.setApiKey('YOUR_API_KEY'); + +const data = await sroFilingsApi.getData({ + query: 'sro:NYSE', + from: '0', + size: '50', + sort: [{ issueDate: { order: 'desc' } }], +}); +// response: { total, data } +``` + +
+ Example Response + +```json +{ + "total": { "value": 7963, "relation": "eq" }, + "data": [ + { + "id": "dea4e1fa1371b4b91e08c7c3f5f42eae", + "releaseNumber": "34-105132", + "issueDate": "2026-03-31", + "fileNumber": "SR-NYSEAMER-2026-25", + "sro": "NYSE American LLC (NYSEAMER)", + "details": "Notice of Filing and Immediate Effectiveness of a Proposed Rule Change to Modify the NYSE American Options Fee Schedule...", + "commentsDue": "21 days after publication in the Federal Register.", + "urls": [ + { "type": "34-105132", "url": "https://www.sec.gov/files/rules/sro/nyseamer/2026/34-105132.pdf" }, + { "type": "Exhibit 5", "url": "https://www.sec.gov/files/rules/sro/nyseamer/2026/34-105132-ex5.pdf" }, + { "type": "Submit a Comment on SR-NYSEAMER-2026-25", "url": "https://www.sec.gov/comments/sr-nyseamer-2026-25/notice-filing-immediate-effectiveness-proposed-rule-change-modify-nyse-american-options-fee-schedule" } + ] + } + ] +} +``` + +
+ +> See the documentation for more details: https://sec-api.io/docs/sro-filings-database-api + +## CUSIP/CIK/Ticker Mapping API + +Map between CUSIP numbers, CIK codes, and ticker symbols. Supports lookup by: `cik`, `ticker`, `cusip`, `name`, `exchange`, `sector`, `industry`. + +```js +const { mappingApi } = require('sec-api'); + +mappingApi.setApiKey('YOUR_API_KEY'); + +// Resolve by ticker +const byTicker = await mappingApi.resolve('ticker', 'TSLA'); + +// Resolve by CIK +const byCik = await mappingApi.resolve('cik', '1318605'); + +// Resolve by CUSIP +const byCusip = await mappingApi.resolve('cusip', '88160R101'); + +// Resolve by company name +const byName = await mappingApi.resolve('name', 'Tesla'); + +// Resolve by exchange +const byExchange = await mappingApi.resolve('exchange', 'NASDAQ'); +// response: [...] array of matching entities +``` + +
+ Example Response + +```json +[ + { + "name": "TESLA INC", + "ticker": "TSLA", + "cik": "1318605", + "cusip": "88160R101", + "exchange": "NASDAQ", + "isDelisted": false, + "category": "Domestic Common Stock", + "sector": "Consumer Cyclical", + "industry": "Auto Manufacturers", + "sic": "3711", + "sicSector": "Manufacturing", + "sicIndustry": "Motor Vehicles & Passenger Car Bodies", + "famaSector": "", + "famaIndustry": "Automobiles and Trucks", + "currency": "USD", + "location": "California; U.S.A", + "id": "eaeafc4ffc04a49da153adebf1f6960a" + } +] +``` + +
+ +> See the documentation for more details: https://sec-api.io/docs/mapping-api + +## EDGAR Entities Database + +Search and access the complete EDGAR entity database, including all companies, funds, and individuals registered with the SEC. + +```js +const { edgarEntitiesApi } = require('sec-api'); + +edgarEntitiesApi.setApiKey('YOUR_API_KEY'); + +const data = await edgarEntitiesApi.getData({ + query: 'name:"Tesla"', + from: '0', + size: '50', + sort: [{ cikUpdatedAt: { order: 'desc' } }], +}); +// response: { total, data } +``` + +
+ Example Response + +```json +{ + "total": { "value": 1, "relation": "eq" }, + "data": [ + { + "id": "1318605", + "cik": "1318605", + "cikUpdatedAt": "2026-02-27T19:00:21-05:00", + "name": "Tesla, Inc.", + "nameUpdatedAt": "2026-02-27T19:00:21-05:00", + "businessAddress": { + "street1": "1 TESLA ROAD", + "city": "AUSTIN", + "state": "TX", + "stateName": "TEXAS", + "zip": "78725" + }, + "businessAddressUpdatedAt": "2026-02-27T19:00:21-05:00", + "mailingAddress": { + "street1": "1 TESLA ROAD", + "city": "AUSTIN", + "state": "TX", + "stateName": "TEXAS", + "zip": "78725" + }, + "mailingAddressUpdatedAt": "2026-02-27T19:00:21-05:00", + "stateOfIncorporation": "TX", + "stateOfIncorporationUpdatedAt": "2026-02-27T19:00:21-05:00", + "phone": "512-516-8177", + "phoneUpdatedAt": "2026-02-27T19:00:21-05:00", + "irsNo": "912197729", + "irsNoUpdatedAt": "2026-02-27T19:00:21-05:00", + "fiscalYearEnd": "1231", + "fiscalYearEndUpdatedAt": "2026-02-27T19:00:21-05:00", + "sic": "3711", + "sicUpdatedAt": "2026-02-27T19:00:21-05:00", + "sicLabel": "3711 MOTOR VEHICLES & PASSENGER CAR BODIES", + "sicLabelUpdatedAt": "2026-02-27T19:00:21-05:00", + "cfOffice": "04 Manufacturing", + "cfOfficeUpdatedAt": "2026-02-27T19:00:21-05:00", + "formTypes": { "4": true, "144": true, "DEFA14A": true, "DEF 14A": true, "ARS": true, "PX14A6G": true, "8-K": true, "10-Q": true, "S-8": true, "SCHEDULE 13G/A": true, "10-K": true }, + "formTypesUpdatedAt": "2026-02-27T19:00:21-05:00", + "emergingGrowthCompany": false, + "emergingGrowthCompanyUpdatedAt": "2025-10-02T09:04:54-04:00", + "currentReportingStatus": true, + "currentReportingStatusUpdatedAt": "2025-10-22T21:08:43-04:00", + "interactiveDataCurrent": true, + "interactiveDataCurrentUpdatedAt": "2025-10-22T21:08:43-04:00", + "filerCategory": "Large Accelerated Filer", + "filerCategoryUpdatedAt": "2025-10-22T21:08:43-04:00", + "smallBusiness": false, + "smallBusinessUpdatedAt": "2025-10-22T21:08:43-04:00", + "shellCompany": false, + "shellCompanyUpdatedAt": "2025-10-22T21:08:43-04:00", + "auditorLocationUpdatedAt": "2026-01-28T20:55:03-05:00", + "voluntaryFilerUpdatedAt": "2026-01-28T20:55:03-05:00", + "auditorNameUpdatedAt": "2026-01-28T20:55:03-05:00", + "wellKnownSeasonedIssuerUpdatedAt": "2026-01-28T20:55:03-05:00", + "latestIcfrAuditSource": "0001628280-26-003952", + "wellKnownSeasonedIssuer": true, + "voluntaryFiler": false, + "latestIcfrAuditFiledAt": "2026-01-28T20:55:03-05:00", + "latestIcfrAuditSourceUpdatedAt": "2026-01-28T20:55:03-05:00", + "auditorName": "PricewaterhouseCoopers LLP", + "latestIcfrAuditFiledAtUpdatedAt": "2026-01-28T20:55:03-05:00", + "auditorFirmId": "238", + "auditorFirmIdUpdatedAt": "2026-01-28T20:55:03-05:00", + "auditorLocation": "San Jose, California" + } + ] +} +``` + +
+ +> See the documentation for more details: https://sec-api.io/docs/edgar-entities-database-api diff --git a/config.js b/config.js index b784692..f0ceb22 100644 --- a/config.js +++ b/config.js @@ -30,4 +30,97 @@ module.exports = { extractorApi: { endpoint: 'https://api.sec-api.io/extractor', }, + pdfGeneratorApi: { + endpoint: 'https://api.sec-api.io/filing-reader', + }, + formAdvApi: { + endpoint: 'https://api.sec-api.io/form-adv', + }, + insiderTradingApi: { + endpoint: 'https://api.sec-api.io/insider-trading', + }, + form144Api: { + endpoint: 'https://api.sec-api.io/form-144', + }, + form13FHoldingsApi: { + endpoint: 'https://api.sec-api.io/form-13f/holdings', + }, + form13FCoverPagesApi: { + endpoint: 'https://api.sec-api.io/form-13f/cover-pages', + }, + formNportApi: { + endpoint: 'https://api.sec-api.io/form-nport', + }, + form13DGApi: { + endpoint: 'https://api.sec-api.io/form-13d-13g', + }, + formNcenApi: { + endpoint: 'https://api.sec-api.io/form-ncen', + }, + formNpxApi: { + endpoint: 'https://api.sec-api.io/form-npx', + }, + formS1424B4Api: { + endpoint: 'https://api.sec-api.io/form-s1-424b4', + }, + formDApi: { + endpoint: 'https://api.sec-api.io/form-d', + }, + formCApi: { + endpoint: 'https://api.sec-api.io/form-c', + }, + regASearchApi: { + endpoint: 'https://api.sec-api.io/reg-a/search', + }, + form1AApi: { + endpoint: 'https://api.sec-api.io/reg-a/form-1a', + }, + form1KApi: { + endpoint: 'https://api.sec-api.io/reg-a/form-1k', + }, + form1ZApi: { + endpoint: 'https://api.sec-api.io/reg-a/form-1z', + }, + form8KApi: { + endpoint: 'https://api.sec-api.io/form-8k', + }, + execCompApi: { + endpoint: 'https://api.sec-api.io/compensation', + }, + directorsBoardMembersApi: { + endpoint: 'https://api.sec-api.io/directors-and-board-members', + }, + floatApi: { + endpoint: 'https://api.sec-api.io/float', + }, + subsidiaryApi: { + endpoint: 'https://api.sec-api.io/subsidiaries', + }, + secEnforcementActionsApi: { + endpoint: 'https://api.sec-api.io/sec-enforcement-actions', + }, + secLitigationsApi: { + endpoint: 'https://api.sec-api.io/sec-litigation-releases', + }, + secAdminProceedingsApi: { + endpoint: 'https://api.sec-api.io/sec-administrative-proceedings', + }, + aaerApi: { + endpoint: 'https://api.sec-api.io/aaers', + }, + sroApi: { + endpoint: 'https://api.sec-api.io/sro', + }, + mappingApi: { + endpoint: 'https://api.sec-api.io/mapping', + }, + edgarEntitiesApi: { + endpoint: 'https://api.sec-api.io/edgar-entities', + }, + auditFeesApi: { + endpoint: 'https://api.sec-api.io/audit-fees', + }, + edgarIndexIngestionLogApi: { + endpoint: 'https://api.sec-api.io/edgar-index/ingestion-log', + }, }; diff --git a/examples/api-responses/aaer.json b/examples/api-responses/aaer.json new file mode 100644 index 0000000..ff235ee --- /dev/null +++ b/examples/api-responses/aaer.json @@ -0,0 +1,70 @@ +{ + "total": { + "value": 427, + "relation": "eq" + }, + "data": [ + { + "id": "b2dfd65355cdf4c4a629103a211882ce", + "dateTime": "2024-12-31T12:19:45-05:00", + "aaerNo": "AAER-4554", + "releaseNo": [ + "34-102060" + ], + "respondents": [ + { + "name": "Accell Audit & Compliance, PA", + "type": "company" + } + ], + "respondentsText": "Accell Audit & Compliance, PA", + "urls": [ + { + "type": "primary", + "url": "https://www.sec.gov/files/litigation/admin/2024/34-102060.pdf" + } + ], + "summary": "The SEC has instituted public administrative proceedings against Accell Audit & Compliance, PA, resulting in a suspension and a $75,000 penalty for failing to exercise due professional care in auditing Ignite International Brands, Ltd.'s financial statements.", + "tags": [ + "auditing misconduct", + "fraudulent financial reporting" + ], + "entities": [ + { + "name": "Accell Audit & Compliance, PA", + "type": "company", + "role": "respondent" + }, + { + "name": "Ignite International Brands, Ltd.", + "type": "company", + "role": "entity audited" + } + ], + "complaints": [ + "Accell failed to exercise due professional care or skepticism, or to obtain sufficient appropriate audit evidence for a significant, unusual sale to an Ignite-related party that did not occur during the reporting period.", + "Accell staff knew about, but failed to address, inconsistencies and contradictory evidence, and misrepresented the timing and facts of the supposed sale.", + "Accell issued an unqualified audit opinion on Ignite’s 2020 financial statements, falsely stating its opinion that the statements 'present fairly, in all material respects, the financial position of the company'.", + "Accell’s actions aided and abetted Ignite’s fraudulent financial reporting." + ], + "parallelActionsTakenBy": [], + "hasAgreedToSettlement": true, + "hasAgreedToPayPenalty": true, + "penaltyAmounts": [ + { + "penaltyAmount": "75000", + "penaltyAmountText": "$75,000", + "imposedOn": "Accell Audit & Compliance, PA" + } + ], + "requestedRelief": [ + "suspension from appearing or practicing before the Commission" + ], + "violatedSections": [ + "Section 10(b) of the Exchange Act", + "Rule 10b-5" + ], + "otherAgenciesInvolved": [] + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/audit-fees.json b/examples/api-responses/audit-fees.json new file mode 100644 index 0000000..6d617d8 --- /dev/null +++ b/examples/api-responses/audit-fees.json @@ -0,0 +1,49 @@ +{ + "total": { + "value": 10000, + "relation": "gte" + }, + "data": [ + { + "id": "a522dfd61d00caa01da0b4f4b38607c5", + "accessionNo": "0001717547-26-000026", + "formType": "DEF 14A", + "filedAt": "2026-04-01T08:33:43-04:00", + "periodOfReport": "2026-05-13", + "entities": [ + { + "cik": "1717547", + "ticker": "BRSP", + "companyName": "BrightSpire Capital, Inc. (Filer)", + "irsNo": "384046290", + "fiscalYearEnd": "1231", + "stateOfIncorporation": "MD", + "sic": "6798 Real Estate Investment Trusts", + "act": "34", + "fileNo": "001-38377", + "filmNo": "26824836" + } + ], + "records": [ + { + "year": 2025, + "auditFees": 1251363, + "auditRelatedFees": null, + "taxFees": null, + "allOtherFees": null, + "totalFees": 1251363, + "auditor": "Deloitte & Touche LLP" + }, + { + "year": 2024, + "auditFees": 1487239, + "auditRelatedFees": null, + "taxFees": 714695, + "allOtherFees": null, + "totalFees": 2201934, + "auditor": "Ernst & Young" + } + ] + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/directors-board-members.json b/examples/api-responses/directors-board-members.json new file mode 100644 index 0000000..268278a --- /dev/null +++ b/examples/api-responses/directors-board-members.json @@ -0,0 +1,231 @@ +{ + "total": { + "value": 20, + "relation": "eq" + }, + "data": [ + { + "id": "42fe18db08211769589dc61fbd461443", + "filedAt": "2026-01-08T16:31:36-05:00", + "accessionNo": "0001308179-26-000008", + "cik": "320193", + "ticker": "AAPL", + "entityName": "Apple Inc.", + "directors": [ + { + "name": "Alex Gorsky", + "position": "Former Chair and CEO, Johnson & Johnson; Director", + "age": "65", + "directorClass": "II", + "dateFirstElected": "2021", + "isIndependent": false, + "committeeMemberships": [ + "Nominating Committee", + "People and Compensation Committee" + ], + "qualificationsAndExperience": [ + "executive leadership experience", + "brand marketing expertise", + "experience in health and technology" + ] + }, + { + "name": "Andrea Jung", + "position": "President and CEO, Grameen America; Director", + "age": "67", + "directorClass": "I", + "dateFirstElected": "2008", + "isIndependent": null, + "committeeMemberships": [ + "Nominating Committee", + "People and Compensation Committee (Chair)" + ], + "qualificationsAndExperience": [ + "executive leadership experience", + "global business perspective", + "extensive brand marketing and consumer products experience", + "service as a chair and chief executive officer of a large international public company" + ] + }, + { + "name": "Art Levinson", + "position": "Board Chair; Chair of the Board", + "age": "75", + "directorClass": "", + "dateFirstElected": "2000", + "isIndependent": null, + "committeeMemberships": [ + "Audit Committee", + "People and Compensation Committee" + ], + "qualificationsAndExperience": [ + "Founder and CEO, Calico", + "executive leadership experience", + "financial expertise", + "brand marketing experience", + "expertise in the health sector", + "technology and innovation" + ] + }, + { + "name": "Deirdre O’Brien", + "position": "Senior Vice President, Retail + People", + "age": "59", + "directorClass": "", + "dateFirstElected": "", + "isIndependent": null, + "committeeMemberships": [], + "qualificationsAndExperience": [ + "Oversees Apple’s retail stores and online teams", + "Leads Apple’s People team", + "Joined Apple in July 1988", + "Served in various roles including Vice President, People and Operations" + ] + }, + { + "name": "Kate Adams", + "position": "Senior Vice President, General Counsel and Secretary", + "age": "61", + "directorClass": "", + "dateFirstElected": "November 2017", + "isIndependent": null, + "committeeMemberships": [], + "qualificationsAndExperience": [ + "Oversees all of Apple’s legal matters", + "Experience in corporate governance", + "Experience in intellectual property", + "Experience in litigation", + "Experience in compliance", + "Experience in global security", + "Experience in privacy", + "Former General Counsel of Honeywell International Inc.", + "Partner at the law firm of Sidley Austin LLP" + ] + }, + { + "name": "Kevan Parekh", + "position": "Senior Vice President, Chief Financial Officer", + "age": "54", + "directorClass": "", + "dateFirstElected": "", + "isIndependent": null, + "committeeMemberships": [], + "qualificationsAndExperience": [ + "oversees Apple’s accounting, business support, financial planning and analysis, treasury, investor relations, internal audit, and tax functions", + "joined Apple in June 2013", + "previous positions include Vice President, Financial Planning and Analysis and Vice President, Worldwide Finance for Sales, Marketing, and Retail", + "held various senior leadership roles at Thomson Reuters and General Motors" + ] + }, + { + "name": "Monica Lozano", + "position": "Former President and CEO, College Futures Foundation; Director", + "age": "69", + "directorClass": "I", + "dateFirstElected": "2021", + "isIndependent": null, + "committeeMemberships": [ + "Audit Committee" + ], + "qualificationsAndExperience": [ + "executive leadership experience", + "experience in operations and strategic planning", + "media and marketing experience", + "retired President and Chief Executive Officer of the College Futures Foundation", + "co-founded The Aspen Institute Latinos and Society Program" + ] + }, + { + "name": "Ron Sugar", + "position": "Former Chair and CEO, Northrop Grumman Corporation; Director", + "age": "77", + "directorClass": "I", + "dateFirstElected": "2010", + "isIndependent": null, + "committeeMemberships": [ + "Audit Committee" + ], + "qualificationsAndExperience": [ + "executive leadership experience as a chairman and chief executive officer of a large international public company", + "financial expertise as a former chief financial officer", + "experience in worldwide operations", + "understanding of advanced technology", + "experience with government relations and public policy", + "global business perspective from tenure at global companies and service on other boards" + ] + }, + { + "name": "Sabih Khan", + "position": "Chief Operating Officer", + "age": "59", + "directorClass": "", + "dateFirstElected": "", + "isIndependent": null, + "committeeMemberships": [], + "qualificationsAndExperience": [ + "oversaw Apple’s worldwide operations", + "led global supply chain team", + "managed environmental and social initiatives", + "supervised AppleCare customer service and support", + "held positions of Senior Vice President, Operations and Vice President, Product Operations", + "worked at GE Plastics" + ] + }, + { + "name": "Sue Wagner", + "position": "Co-founder and Director, BlackRock; Chair", + "age": "64", + "directorClass": "I", + "dateFirstElected": "2014", + "isIndependent": null, + "committeeMemberships": [ + "People and Compensation Committee", + "Nominating Committee", + "Audit Committee" + ], + "qualificationsAndExperience": [ + "operational experience and a global business perspective", + "service as chief operating officer of a large multinational public company", + "extensive financial expertise", + "experience in the highly regulated financial services industry", + "co-founder of BlackRock, Inc.", + "served as BlackRock’s Vice Chair", + "member of BlackRock’s Global Executive Committee and Global Operating Committee", + "led the alternative investments and international client businesses" + ] + }, + { + "name": "Tim Cook", + "position": "CEO; Chief Executive Officer", + "age": "65", + "directorClass": "", + "dateFirstElected": "2011", + "isIndependent": null, + "committeeMemberships": [], + "qualificationsAndExperience": [ + "extensive executive leadership experience in the technology industry", + "management of worldwide operations", + "sales, service, and support" + ] + }, + { + "name": "Wanda Austin", + "position": "Former President and CEO, The Aerospace Corporation; Director", + "age": "71", + "directorClass": "I", + "dateFirstElected": "2024", + "isIndependent": true, + "committeeMemberships": [ + "Audit Committee" + ], + "qualificationsAndExperience": [ + "executive leadership experience", + "expertise in advanced technology and innovation", + "experience with environment, cybersecurity, and public policy", + "global business perspective" + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/edgar-entities.json b/examples/api-responses/edgar-entities.json new file mode 100644 index 0000000..e316043 --- /dev/null +++ b/examples/api-responses/edgar-entities.json @@ -0,0 +1,85 @@ +{ + "total": { + "value": 1, + "relation": "eq" + }, + "data": [ + { + "id": "1318605", + "cik": "1318605", + "cikUpdatedAt": "2026-02-27T19:00:21-05:00", + "name": "Tesla, Inc.", + "nameUpdatedAt": "2026-02-27T19:00:21-05:00", + "businessAddress": { + "street1": "1 TESLA ROAD", + "city": "AUSTIN", + "state": "TX", + "stateName": "TEXAS", + "zip": "78725" + }, + "businessAddressUpdatedAt": "2026-02-27T19:00:21-05:00", + "mailingAddress": { + "street1": "1 TESLA ROAD", + "city": "AUSTIN", + "state": "TX", + "stateName": "TEXAS", + "zip": "78725" + }, + "mailingAddressUpdatedAt": "2026-02-27T19:00:21-05:00", + "stateOfIncorporation": "TX", + "stateOfIncorporationUpdatedAt": "2026-02-27T19:00:21-05:00", + "phone": "512-516-8177", + "phoneUpdatedAt": "2026-02-27T19:00:21-05:00", + "irsNo": "912197729", + "irsNoUpdatedAt": "2026-02-27T19:00:21-05:00", + "fiscalYearEnd": "1231", + "fiscalYearEndUpdatedAt": "2026-02-27T19:00:21-05:00", + "sic": "3711", + "sicUpdatedAt": "2026-02-27T19:00:21-05:00", + "sicLabel": "3711 MOTOR VEHICLES & PASSENGER CAR BODIES", + "sicLabelUpdatedAt": "2026-02-27T19:00:21-05:00", + "cfOffice": "04 Manufacturing", + "cfOfficeUpdatedAt": "2026-02-27T19:00:21-05:00", + "formTypes": { + "4": true, + "144": true, + "DEFA14A": true, + "DEF 14A": true, + "ARS": true, + "PX14A6G": true, + "8-K": true, + "10-Q": true, + "S-8": true, + "SCHEDULE 13G/A": true, + "10-K": true + }, + "formTypesUpdatedAt": "2026-02-27T19:00:21-05:00", + "emergingGrowthCompany": false, + "emergingGrowthCompanyUpdatedAt": "2025-10-02T09:04:54-04:00", + "currentReportingStatus": true, + "currentReportingStatusUpdatedAt": "2025-10-22T21:08:43-04:00", + "interactiveDataCurrent": true, + "interactiveDataCurrentUpdatedAt": "2025-10-22T21:08:43-04:00", + "filerCategory": "Large Accelerated Filer", + "filerCategoryUpdatedAt": "2025-10-22T21:08:43-04:00", + "smallBusiness": false, + "smallBusinessUpdatedAt": "2025-10-22T21:08:43-04:00", + "shellCompany": false, + "shellCompanyUpdatedAt": "2025-10-22T21:08:43-04:00", + "auditorLocationUpdatedAt": "2026-01-28T20:55:03-05:00", + "voluntaryFilerUpdatedAt": "2026-01-28T20:55:03-05:00", + "auditorNameUpdatedAt": "2026-01-28T20:55:03-05:00", + "wellKnownSeasonedIssuerUpdatedAt": "2026-01-28T20:55:03-05:00", + "latestIcfrAuditSource": "0001628280-26-003952", + "wellKnownSeasonedIssuer": true, + "voluntaryFiler": false, + "latestIcfrAuditFiledAt": "2026-01-28T20:55:03-05:00", + "latestIcfrAuditSourceUpdatedAt": "2026-01-28T20:55:03-05:00", + "auditorName": "PricewaterhouseCoopers LLP", + "latestIcfrAuditFiledAtUpdatedAt": "2026-01-28T20:55:03-05:00", + "auditorFirmId": "238", + "auditorFirmIdUpdatedAt": "2026-01-28T20:55:03-05:00", + "auditorLocation": "San Jose, California" + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/edgar-index-ingestion-log.json b/examples/api-responses/edgar-index-ingestion-log.json new file mode 100644 index 0000000..2981b7f --- /dev/null +++ b/examples/api-responses/edgar-index-ingestion-log.json @@ -0,0 +1,14 @@ +{ + "lastUpdatedAt": "2025-12-02T21:57:46-05:00", + "total": { + "value": 3041, + "relation": "eq" + }, + "data": [ + { + "accessionNo": "0001193125-25-305761", + "formType": "S-1MEF", + "filedAt": "2025-12-02T21:57:17-05:00" + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/executive-compensation.json b/examples/api-responses/executive-compensation.json new file mode 100644 index 0000000..ba4b2be --- /dev/null +++ b/examples/api-responses/executive-compensation.json @@ -0,0 +1,66 @@ +[ + { + "id": "19b4cc24f7170d4f2a69fe20299e8478", + "cik": "1318605", + "ticker": "TSLA", + "name": "Tom Zhu", + "position": "SVP, APAC and Global Vehicle Manufacturing", + "year": 2024, + "salary": 350000, + "bonus": 0, + "stockAwards": 0, + "optionAwards": 0, + "nonEquityIncentiveCompensation": 0, + "changeInPensionValueAndDeferredEarnings": 0, + "otherCompensation": 168250, + "total": 518250 + }, + { + "id": "0d16240cd4ed290eeb096d007570f3f2", + "cik": "1318605", + "ticker": "TSLA", + "name": "Andrew Baglino", + "position": "Former SVP, Powertrain and Energy Engineering", + "year": 2024, + "salary": 121620, + "bonus": 0, + "stockAwards": 0, + "optionAwards": 0, + "nonEquityIncentiveCompensation": 0, + "changeInPensionValueAndDeferredEarnings": 0, + "otherCompensation": 3000, + "total": 124620 + }, + { + "id": "cf7779d6e76ea8fbb5d95a250758dd93", + "cik": "1318605", + "ticker": "TSLA", + "name": "Elon Musk", + "position": "Technoking of Tesla and Chief Executive Officer", + "year": 2024, + "salary": 0, + "bonus": 0, + "stockAwards": 0, + "optionAwards": 0, + "nonEquityIncentiveCompensation": 0, + "changeInPensionValueAndDeferredEarnings": 0, + "otherCompensation": 0, + "total": 0 + }, + { + "id": "61bb71efb2560e6bcb3ccc5b9870f9c2", + "cik": "1318605", + "ticker": "TSLA", + "name": "Vaibhav Taneja", + "position": "Chief Financial Officer", + "year": 2024, + "salary": 303846, + "bonus": 0, + "stockAwards": 26136809, + "optionAwards": 113029280, + "nonEquityIncentiveCompensation": 0, + "changeInPensionValueAndDeferredEarnings": 0, + "otherCompensation": 3000, + "total": 139472935 + } +] \ No newline at end of file diff --git a/examples/api-responses/float.json b/examples/api-responses/float.json new file mode 100644 index 0000000..08e7291 --- /dev/null +++ b/examples/api-responses/float.json @@ -0,0 +1,1280 @@ +{ + "total": { + "value": 59, + "relation": "eq" + }, + "data": [ + { + "id": "2ff3110e1d6a331323fc8171584b6802", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2026-01-16", + "shareClass": "", + "value": 14681140000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2026-01-30T06:01:32-05:00", + "periodOfReport": "2025-12-27", + "sourceFilingAccessionNo": "0000320193-26-000006" + }, + { + "id": "736081ee32d8abd105e3d9cf4fadc5fb", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2025-10-17", + "shareClass": "", + "value": 14776353000 + } + ], + "publicFloat": [ + { + "period": "2025-03-28", + "shareClass": "", + "value": 3253431000000 + } + ] + }, + "reportedAt": "2025-10-31T06:01:26-04:00", + "periodOfReport": "2025-09-27", + "sourceFilingAccessionNo": "0000320193-25-000079" + }, + { + "id": "7db9401c1ccd605c7929e0535175e167", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2025-07-18", + "shareClass": "", + "value": 14840390000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2025-08-01T06:00:42-04:00", + "periodOfReport": "2025-06-28", + "sourceFilingAccessionNo": "0000320193-25-000073" + }, + { + "id": "fb524a709ba47793e3633846b4f3ebfe", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2025-04-18", + "shareClass": "", + "value": 14935826000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2025-05-02T06:00:46-04:00", + "periodOfReport": "2025-03-29", + "sourceFilingAccessionNo": "0000320193-25-000057" + }, + { + "id": "ee47c3024a1da1c0ff5786fbfdf826d7", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2025-01-17", + "shareClass": "", + "value": 15022073000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2025-01-31T06:01:27-05:00", + "periodOfReport": "2024-12-28", + "sourceFilingAccessionNo": "0000320193-25-000008" + }, + { + "id": "cfd9f6bac914441c82fbfbd979272a3c", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2024-10-18", + "shareClass": "", + "value": 15115823000 + } + ], + "publicFloat": [ + { + "period": "2024-03-29", + "shareClass": "", + "value": 2628553000000 + } + ] + }, + "reportedAt": "2024-11-01T06:01:36-04:00", + "periodOfReport": "2024-09-28", + "sourceFilingAccessionNo": "0000320193-24-000123" + }, + { + "id": "55b4a80fc189b93a7cbc6fabfb9f89fc", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2024-07-19", + "shareClass": "", + "value": 15204137000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2024-08-01T18:03:34-04:00", + "periodOfReport": "2024-06-29", + "sourceFilingAccessionNo": "0000320193-24-000081" + }, + { + "id": "c54b09042148c67bc5cc010c21363d88", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2024-04-19", + "shareClass": "", + "value": 15334082000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2024-05-02T18:04:25-04:00", + "periodOfReport": "2024-03-30", + "sourceFilingAccessionNo": "0000320193-24-000069" + }, + { + "id": "69ffb97145e8de6f0071f284b7083e38", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2024-01-19", + "shareClass": "", + "value": 15441881000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2024-02-01T18:03:38-05:00", + "periodOfReport": "2023-12-30", + "sourceFilingAccessionNo": "0000320193-24-000006" + }, + { + "id": "62f45d7b580777724365b801f20ee26b", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2023-10-20", + "shareClass": "", + "value": 15552752000 + } + ], + "publicFloat": [ + { + "period": "2023-03-31", + "shareClass": "", + "value": 2591165000000 + } + ] + }, + "reportedAt": "2023-11-02T18:08:27-04:00", + "periodOfReport": "2023-09-30", + "sourceFilingAccessionNo": "0000320193-23-000106" + }, + { + "id": "d025be2beca17174aab206ce8dd4d35e", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2023-07-21", + "shareClass": "", + "value": 15634232000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2023-08-03T18:04:43-04:00", + "periodOfReport": "2023-07-01", + "sourceFilingAccessionNo": "0000320193-23-000077" + }, + { + "id": "72d860fb69108b6a5b6099b5e7804c4c", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2023-04-21", + "shareClass": "", + "value": 15728702000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2023-05-04T18:03:52-04:00", + "periodOfReport": "2023-04-01", + "sourceFilingAccessionNo": "0000320193-23-000064" + }, + { + "id": "27e78a07a4d3eb327e86243eb127665e", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2023-01-20", + "shareClass": "", + "value": 15821946000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2023-02-02T18:01:30-05:00", + "periodOfReport": "2022-12-31", + "sourceFilingAccessionNo": "0000320193-23-000006" + }, + { + "id": "de0199316b5aa205e0c9930e02a41da0", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2022-10-14", + "shareClass": "", + "value": 15908118000 + } + ], + "publicFloat": [ + { + "period": "2022-03-25", + "shareClass": "", + "value": 2830067000000 + } + ] + }, + "reportedAt": "2022-10-27T18:01:14-04:00", + "periodOfReport": "2022-09-24", + "sourceFilingAccessionNo": "0000320193-22-000108" + }, + { + "id": "66e517cee30511af673ee5ebcf01177d", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2022-07-15", + "shareClass": "", + "value": 16070752000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2022-07-28T18:06:56-04:00", + "periodOfReport": "2022-06-25", + "sourceFilingAccessionNo": "0000320193-22-000070" + }, + { + "id": "002d1be7acef580149342ad3fd10a863", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2022-04-15", + "shareClass": "", + "value": 16185181000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2022-04-28T18:03:58-04:00", + "periodOfReport": "2022-03-26", + "sourceFilingAccessionNo": "0000320193-22-000059" + }, + { + "id": "eedd52b901ee61ded1e08666f86f9c33", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2022-01-14", + "shareClass": "", + "value": 16319441000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2022-01-27T18:00:58-05:00", + "periodOfReport": "2021-12-25", + "sourceFilingAccessionNo": "0000320193-22-000007" + }, + { + "id": "6f2f78e191d3e503075d88b8b0b6507f", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2021-10-15", + "shareClass": "", + "value": 16406397000 + } + ], + "publicFloat": [ + { + "period": "2021-03-26", + "shareClass": "", + "value": 2021360000000 + } + ] + }, + "reportedAt": "2021-10-28T18:04:28-04:00", + "periodOfReport": "2021-09-25", + "sourceFilingAccessionNo": "0000320193-21-000105" + }, + { + "id": "ffb6730a5b341d6b0e6c823359c1e707", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2021-07-16", + "shareClass": "", + "value": 16530166000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2021-07-27T18:03:42-04:00", + "periodOfReport": "2021-06-26", + "sourceFilingAccessionNo": "0000320193-21-000065" + }, + { + "id": "4abf6b817a3f45d0fbef9224970109a5", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2021-04-16", + "shareClass": "", + "value": 16687631000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2021-04-28T18:02:54-04:00", + "periodOfReport": "2021-03-27", + "sourceFilingAccessionNo": "0000320193-21-000056" + }, + { + "id": "85af3a8aea02a9e5583e32de2006d80f", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2021-01-15", + "shareClass": "", + "value": 16788096000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2021-01-27T18:03:06-05:00", + "periodOfReport": "2020-12-26", + "sourceFilingAccessionNo": "0000320193-21-000010" + }, + { + "id": "732c2ef9a454f80e178173967dbc5ef0", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2020-10-16", + "shareClass": "", + "value": 17001802000 + } + ], + "publicFloat": [ + { + "period": "2020-03-27", + "shareClass": "", + "value": 1070633000000 + } + ] + }, + "reportedAt": "2020-10-29T18:06:25-04:00", + "periodOfReport": "2020-09-26", + "sourceFilingAccessionNo": "0000320193-20-000096" + }, + { + "id": "7e95cf3872f6364d01e914669c969b6e", + "tickers": [ + "AAPL", + "" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2020-07-17", + "shareClass": "", + "value": 4275634000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2020-07-30T19:29:09-04:00", + "periodOfReport": "2020-06-27", + "sourceFilingAccessionNo": "0000320193-20-000062" + }, + { + "id": "90f6c7a0fd36106d902ef694b3296f82", + "tickers": [ + "AAPL", + "" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2020-04-17", + "shareClass": "", + "value": 4334335000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2020-04-30T18:03:10-04:00", + "periodOfReport": "2020-03-28", + "sourceFilingAccessionNo": "0000320193-20-000052" + }, + { + "id": "36853a06f7c0191d1b8c324ca6464ce3", + "tickers": [ + "AAPL", + "" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2020-01-17", + "shareClass": "", + "value": 4375480000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2020-01-28T18:02:44-05:00", + "periodOfReport": "2019-12-28", + "sourceFilingAccessionNo": "0000320193-20-000010" + }, + { + "id": "471953e7a4931c0414584011ad720e77", + "tickers": [ + "AAPL", + "" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2019-10-18", + "shareClass": "", + "value": 4443265000 + } + ], + "publicFloat": [ + { + "period": "2019-03-29", + "shareClass": "", + "value": 874698000000 + } + ] + }, + "reportedAt": "2019-10-30T18:12:36-04:00", + "periodOfReport": "2019-09-28", + "sourceFilingAccessionNo": "0000320193-19-000119" + }, + { + "id": "8daeed32ac6f7c216c0dd3eb234ebf81", + "tickers": [ + "AAPL", + "" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2019-07-19", + "shareClass": "", + "value": 4519180000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2019-07-31T16:31:53-04:00", + "periodOfReport": "2019-06-29", + "sourceFilingAccessionNo": "0000320193-19-000076" + }, + { + "id": "4e5b799e1c59f6badf336f97c5724a3f", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2019-04-22", + "shareClass": "", + "value": 4601075000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2019-05-01T16:32:00-04:00", + "periodOfReport": "2019-03-30", + "sourceFilingAccessionNo": "0000320193-19-000066" + }, + { + "id": "ca479ed42de7176815f4c4347a53967d", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2019-01-18", + "shareClass": "", + "value": 4715280000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2019-01-30T16:31:37-05:00", + "periodOfReport": "2018-12-29", + "sourceFilingAccessionNo": "0000320193-19-000010" + }, + { + "id": "5d2041723203d95646e7978ebd00fced", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2018-10-26", + "shareClass": "", + "value": 4745398000 + } + ], + "publicFloat": [ + { + "period": "2018-03-30", + "shareClass": "", + "value": 828880000000 + } + ] + }, + "reportedAt": "2018-11-05T08:01:40-05:00", + "periodOfReport": "2018-09-29", + "sourceFilingAccessionNo": "0000320193-18-000145" + }, + { + "id": "f024ec5edb45d24687106101e2ae8460", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2018-07-20", + "shareClass": "", + "value": 4829926000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2018-08-01T16:31:48-04:00", + "periodOfReport": "2018-06-30", + "sourceFilingAccessionNo": "0000320193-18-000100" + }, + { + "id": "0651aa0fe1d64ec831b69643dd3c8314", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2018-04-20", + "shareClass": "", + "value": 4915138000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2018-05-02T16:32:12-04:00", + "periodOfReport": "2018-03-31", + "sourceFilingAccessionNo": "0000320193-18-000070" + }, + { + "id": "f76b0e745685a6409a7830d5dfa68d12", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2018-01-19", + "shareClass": "", + "value": 5074013000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2018-02-02T08:01:26-05:00", + "periodOfReport": "2017-12-30", + "sourceFilingAccessionNo": "0000320193-18-000007" + }, + { + "id": "db91e8bb1cc79b9acd902f4fc3c51a03", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2017-10-20", + "shareClass": "", + "value": 5134312000 + } + ], + "publicFloat": [ + { + "period": "2017-03-31", + "shareClass": "", + "value": 747509000000 + } + ] + }, + "reportedAt": "2017-11-03T08:01:37-04:00", + "periodOfReport": "2017-09-30", + "sourceFilingAccessionNo": "0000320193-17-000070" + }, + { + "id": "617db7400399b79f571040dc9d41f797", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2017-07-21", + "shareClass": "", + "value": 5165228000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2017-08-02T16:31:28-04:00", + "periodOfReport": "2017-07-01", + "sourceFilingAccessionNo": "0000320193-17-000009" + }, + { + "id": "a71b32ac00f47aa21a51e66b006b07d0", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2017-04-21", + "shareClass": "", + "value": 5213840000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2017-05-03T16:32:23-04:00", + "periodOfReport": "2017-04-01", + "sourceFilingAccessionNo": "0001628280-17-004790" + }, + { + "id": "00d1c05f0461f23f29010b1c15ab46a2", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2017-01-20", + "shareClass": "", + "value": 5246540000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2017-02-01T16:33:29-05:00", + "periodOfReport": "2016-12-31", + "sourceFilingAccessionNo": "0001628280-17-000717" + }, + { + "id": "9dc7c3b02a6925c76134049e85bf2571", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2016-10-14", + "shareClass": "", + "value": 5332313000 + } + ], + "publicFloat": [ + { + "period": "2016-03-25", + "shareClass": "", + "value": 578807000000 + } + ] + }, + "reportedAt": "2016-10-26T16:42:16-04:00", + "periodOfReport": "2016-09-24", + "sourceFilingAccessionNo": "0001628280-16-020309" + }, + { + "id": "956eacd519a843bb0474a8f5bbe966a4", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2016-07-15", + "shareClass": "", + "value": 5388443000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2016-07-27T16:32:36-04:00", + "periodOfReport": "2016-06-25", + "sourceFilingAccessionNo": "0001628280-16-017809" + }, + { + "id": "ddc88714e5dacc363eb446b549446934", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2016-04-08", + "shareClass": "", + "value": 5477425000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2016-04-27T16:32:53-04:00", + "periodOfReport": "2016-03-26", + "sourceFilingAccessionNo": "0001193125-16-559625" + }, + { + "id": "540f42a8d3028ca73f0df3b9de6c1df6", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2016-01-08", + "shareClass": "", + "value": 5544583000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2016-01-27T16:32:03-05:00", + "periodOfReport": "2015-12-26", + "sourceFilingAccessionNo": "0001193125-16-439878" + }, + { + "id": "e36cda7339828fd4545d49348005d490", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2015-10-09", + "shareClass": "", + "value": 5575331000 + } + ], + "publicFloat": [ + { + "period": "2015-03-27", + "shareClass": "", + "value": 709923000000 + } + ] + }, + "reportedAt": "2015-10-28T16:31:09-04:00", + "periodOfReport": "2015-09-26", + "sourceFilingAccessionNo": "0001193125-15-356351" + }, + { + "id": "f599ff4c28a949d52a3e2382b807b9db", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2015-07-10", + "shareClass": "", + "value": 5702722000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2015-07-22T17:01:17-04:00", + "periodOfReport": "2015-06-27", + "sourceFilingAccessionNo": "0001193125-15-259935" + }, + { + "id": "81ed6e6cae87003bef71ec752c8cbd8b", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2015-04-10", + "shareClass": "", + "value": 5761030000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2015-04-28T17:01:16-04:00", + "periodOfReport": "2015-03-28", + "sourceFilingAccessionNo": "0001193125-15-153166" + }, + { + "id": "9adf04dc33b72a17b7ba2629ba811c82", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2015-01-09", + "shareClass": "", + "value": 5824748000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2015-01-28T16:39:32-05:00", + "periodOfReport": "2014-12-27", + "sourceFilingAccessionNo": "0001193125-15-023697" + }, + { + "id": "67f5430e8a72c6380a44dba48b4dc273", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2014-10-10", + "shareClass": "", + "value": 5864840000 + } + ], + "publicFloat": [ + { + "period": "2014-03-28", + "shareClass": "", + "value": 462522000000 + } + ] + }, + "reportedAt": "2014-10-27T17:11:55-04:00", + "periodOfReport": "2014-09-27", + "sourceFilingAccessionNo": "0001193125-14-383437" + }, + { + "id": "3d3a44bc5a791f1152812450c86536d3", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2014-07-11", + "shareClass": "", + "value": 5987867000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2014-07-23T16:32:48-04:00", + "periodOfReport": "2014-06-28", + "sourceFilingAccessionNo": "0001193125-14-277160" + }, + { + "id": "d2a0c187245a6b025e4e6ad851460a4e", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2014-04-11", + "shareClass": "", + "value": 861381000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2014-04-24T17:02:12-04:00", + "periodOfReport": "2014-03-29", + "sourceFilingAccessionNo": "0001193125-14-157311" + }, + { + "id": "f84bf5d467acd8b2fbb797d567646f72", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2014-01-10", + "shareClass": "", + "value": 891989000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2014-01-28T17:07:27-05:00", + "periodOfReport": "2013-12-28", + "sourceFilingAccessionNo": "0001193125-14-024487" + }, + { + "id": "17742bfc89177286caf6fb3d7689eebe", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2013-10-18", + "shareClass": "", + "value": 899738000 + } + ], + "publicFloat": [ + { + "period": "2013-03-29", + "shareClass": "", + "value": 416005000000 + } + ] + }, + "reportedAt": "2013-10-29T20:38:28-04:00", + "periodOfReport": "2013-09-28", + "sourceFilingAccessionNo": "0001193125-13-416534" + }, + { + "id": "79dc147988ff496afb3947738b04da10", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2013-07-12", + "shareClass": "", + "value": 908497000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2013-07-24T17:02:02-04:00", + "periodOfReport": "2013-06-29", + "sourceFilingAccessionNo": "0001193125-13-300670" + }, + { + "id": "e2db2bfe9f6d6373dcde52f043ed63aa", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2013-04-12", + "shareClass": "", + "value": 938649000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2013-04-23T21:29:23-04:00", + "periodOfReport": "2013-03-30", + "sourceFilingAccessionNo": "0001193125-13-168288" + }, + { + "id": "895d48ae8ff4484ae89c536b207c238d", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2013-01-11", + "shareClass": "", + "value": 939058000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2013-01-24T17:01:37-05:00", + "periodOfReport": "2012-12-29", + "sourceFilingAccessionNo": "0001193125-13-022339" + }, + { + "id": "7cfb4fedeef9b2d6b64fdcb30642c1af", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2012-10-19", + "shareClass": "", + "value": 940692000 + } + ], + "publicFloat": [ + { + "period": "2012-03-30", + "shareClass": "", + "value": 560356000000 + } + ] + }, + "reportedAt": "2012-10-31T17:07:19-04:00", + "sourceFilingAccessionNo": "0001193125-12-444068" + }, + { + "id": "3dea1b6de3ad2b9d47555e9b4544e577", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2012-07-13", + "shareClass": "", + "value": 937406000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2012-07-25T16:39:39-04:00", + "periodOfReport": "2012-06-30", + "sourceFilingAccessionNo": "0001193125-12-314552" + }, + { + "id": "8d0e0e2b70f0adde8604603b5f058a1c", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2012-04-13", + "shareClass": "", + "value": 935062000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2012-04-25T17:01:16-04:00", + "periodOfReport": "2012-03-31", + "sourceFilingAccessionNo": "0001193125-12-182321" + }, + { + "id": "a86b1d0866c0193a1b40ca978315c46e", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2012-01-13", + "shareClass": "", + "value": 932370000 + } + ], + "publicFloat": [] + }, + "reportedAt": "2012-01-25T16:42:11-05:00", + "periodOfReport": "2011-12-31", + "sourceFilingAccessionNo": "0001193125-12-023398" + }, + { + "id": "9b26d18820b836f87035f2804be9789a", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2011-10-14", + "shareClass": "", + "value": 929409000 + } + ], + "publicFloat": [ + { + "period": "2011-03-25", + "shareClass": "", + "value": 322921000000 + } + ] + }, + "reportedAt": "2011-10-26T16:35:25-04:00", + "sourceFilingAccessionNo": "0001193125-11-282113" + }, + { + "id": "4119a04082a67c002a2c7e4f9d5aaa2f", + "tickers": [ + "AAPL" + ], + "cik": "320193", + "float": { + "outstandingShares": [ + { + "period": "2011-07-08", + "shareClass": "", + "value": 927090886 + } + ], + "publicFloat": [] + }, + "reportedAt": "2011-07-20T16:32:13-04:00", + "sourceFilingAccessionNo": "0001193125-11-192493" + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/form-13d-13g.json b/examples/api-responses/form-13d-13g.json new file mode 100644 index 0000000..cd9a6ff --- /dev/null +++ b/examples/api-responses/form-13d-13g.json @@ -0,0 +1,115 @@ +{ + "total": { + "value": 10000, + "relation": "gte" + }, + "filings": [ + { + "id": "a5d7c15340884b72fd2e95a5afde92e9", + "accessionNo": "0001493152-26-014470", + "formType": "SC 13D/A", + "filedAt": "2026-04-01T06:20:43-04:00", + "filers": [ + { + "cik": "1983324", + "name": "Real Messenger Corp (Subject)" + }, + { + "cik": "2099450", + "name": "Ma Kwai Hoi (Filed by)" + } + ], + "nameOfIssuer": "Real Messenger Corporation", + "titleOfSecurities": "Ordinary Shares", + "cusip": [], + "eventDate": "2026-03-25", + "amendmentNo": "1", + "schedule13GFiledPreviously": false, + "owners": [ + { + "name": [ + "Kwai Hoi MA" + ], + "memberOfGroup": { + "a": false, + "b": false + }, + "sourceOfFunds": "OO", + "legalProceedingsDisclosureRequired": false, + "place": "X0", + "soleVotingPower": 7217555, + "sharedVotingPower": 0, + "soleDispositivePower": 7217555, + "sharedDispositivePower": 0, + "aggregateAmountOwned": 7217555, + "isAggregateExcludeShares": false, + "amountAsPercent": 65.86, + "typeOfReportingPerson": [ + "IN" + ] + }, + { + "name": [ + "Bloomington DH Holdings Limited" + ], + "memberOfGroup": { + "a": false, + "b": false + }, + "sourceOfFunds": "OO", + "legalProceedingsDisclosureRequired": false, + "place": "D8", + "soleVotingPower": 5937555, + "sharedVotingPower": 0, + "soleDispositivePower": 5937555, + "sharedDispositivePower": 0, + "aggregateAmountOwned": 5937555, + "isAggregateExcludeShares": false, + "amountAsPercent": 54.18, + "typeOfReportingPerson": [ + "CO" + ] + } + ], + "item1": { + "securityTitle": "Ordinary Shares", + "issuerName": "Real Messenger Corporation", + "issuerPrincipalAddress": { + "street1": "695 Town Center Drive, Suite 1200", + "street2": "", + "city": "Costa Mesa", + "stateOrCountry": "CA", + "zipCode": "92626" + }, + "commentText": "The following constitutes Amendment No. 1 (\"Amendment No. 1\") to the Schedule 13D filed with the Securities and Exchange Commission (\"SEC\") by Kwai Hoi MA and Bloomington DH Holdings Limited on December 19, 2025. This Amendment No. 1 amends and supplements the Schedule 13D as specifically set forth herein." + }, + "item2": { + "filingPersonName": "", + "principalBusinessAddress": "", + "principalJob": "", + "hasBeenConvicted": "", + "convictionDescription": "", + "citizenship": "" + }, + "item3": { + "fundsSource": "Item 3 of the Schedule 13D is supplemented and superseded, as the case may be, as follows:\n\nOn July 17, 2025, the Reporting Persons received a transfer of 1,129,875 Class A Ordinary Shares of the Issuer from Nova Pulsar Holdings Limited, which consists of the shares in conversion of outstanding Notes owed to the Reporting Persons.\n\nOn March 25, 2026, Bloomington DH Holdings Limited entered into a Subscription Agreement with the Issuer, where the Issuer agreed to issue to Bloomington DH Holdings Limited 1,837,680 Class B Ordinary Shares of the Issuer at a price of US$0.5912 per Share, for a total purchase price of US$1,086,438.46. The total purchase price was funded by Kwai Hoi MA in the form of shareholder loans to the Issuer." + }, + "item4": { + "transactionPurpose": "Item 4 of the Schedule 13D is supplemented and superseded, as the case may be, as follows:\n\nOn March 25, 2026, Bloomington DH Holdings Limited entered into a Subscription Agreement with the Issuer, where the Issuer agreed to issue to Bloomington DH Holdings Limited 1,837,680 Class B Ordinary Shares of the Issuer at a price of US$0.5912 per Share, for a total purchase price of US$1,086,438.46." + }, + "item5": { + "percentageOfClassSecurities": "Item 5(a) of the Schedule 13D is supplemented and superseded, as the case may be, as follows:\n\nThe responses of each of the Reporting Persons with respect to Rows 11 and 13 on the cover pages of this Amendment No. 1 that relate to the aggregate number and percentage of Ordinary Shares are incorporated herein by reference. The percentage is calculated based on after giving effect to the transactions contemplated hereby.", + "numberOfShares": "Item 5(b) of the Schedule 13D is supplemented and superseded, as the case may be, as follows:\n\nThe responses of each of the Reporting Persons with respect to Rows 7, 8, 9, and 10 of the cover pages of this Amendment No. 1 that relate to the number of Ordinary Shares as to which each of the Reporting Persons referenced in Item 2 above has sole or shared power to vote or to direct the vote of and sole or shared power to dispose of or to direct the disposition of are incorporated herein by reference.", + "transactionDescription": "Item 5(c) of the Schedule 13D is supplemented and superseded, as the case may be, as follows:\n\nThe information set forth in Item 4 of this Amendment No. 1 is incorporated by reference.", + "listOfShareholders": "Item 5(d) of the Schedule 13D is supplemented and superseded, as the case may be, as follows:\n\nExcept as described in Item 3 of this Amendment No. 1, no person other than the Reporting Persons is known to have the right to receive or the power to direct the receipt of dividends from, or the proceeds from the sale of, the shares of the Issuer's Ordinary Shares beneficially owned by the Reporting Person as reported in this Amendment No. 1.", + "date5PercentOwnership": "Not applicable" + }, + "item6": { + "contractDescription": "" + }, + "item7": { + "filedExhibits": "Subscription Agreement dated March 25, 2026 between the Company and the Purchaser (filed as Exhibit 10.1 to the Company's Current Report on Form 6-K filed on March 26, 2026 and incorporated by reference herein)" + } + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/form-13f-cover-pages.json b/examples/api-responses/form-13f-cover-pages.json new file mode 100644 index 0000000..7948f44 --- /dev/null +++ b/examples/api-responses/form-13f-cover-pages.json @@ -0,0 +1,48 @@ +{ + "total": { + "value": 13, + "relation": "eq" + }, + "data": [ + { + "id": "1ef1c3fa0b53c72620f026f0ab47e7c6", + "accessionNo": "0001350694-26-000001", + "filedAt": "2026-02-13T16:03:50-05:00", + "formType": "13F-HR", + "cik": "1350694", + "crdNumber": "105129", + "secFileNumber": "801-35875", + "form13FFileNumber": "028-11794", + "periodOfReport": "2025-12-31", + "isAmendment": false, + "amendmentInfo": {}, + "filingManager": { + "name": "Bridgewater Associates, LP", + "address": { + "street": "One Nyala Farms Road", + "city": "Westport", + "stateOrCountry": "CT", + "zipCode": 6880 + } + }, + "reportType": "13F HOLDINGS REPORT", + "otherManagersReportingForThisManager": [], + "provideInfoForInstruction5": false, + "signature": { + "name": "Michael Kitson", + "title": "Chief Compliance Officer and Counsel", + "phone": "203-226-3030", + "signature": "/s/Michael Kitson", + "city": "Westport", + "stateOrCountry": "CT", + "signatureDate": "02-13-2026" + }, + "tableEntryTotal": 1040, + "tableEntryTotalAsReported": 1040, + "tableValueTotal": 27421613830, + "tableValueTotalAsReported": 27421613830, + "otherIncludedManagersCount": 0, + "otherIncludedManagers": [] + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/form-13f-holdings.json b/examples/api-responses/form-13f-holdings.json new file mode 100644 index 0000000..f971663 --- /dev/null +++ b/examples/api-responses/form-13f-holdings.json @@ -0,0 +1,155 @@ +{ + "total": { + "value": 209, + "relation": "eq" + }, + "data": [ + { + "id": "289428b455d4eb55f298d84f544d3d61", + "accessionNo": "0001193125-26-054580", + "cik": "1067983", + "ticker": "BRK.B", + "companyName": "BERKSHIRE HATHAWAY INC", + "companyNameLong": "BERKSHIRE HATHAWAY INC (Filer)", + "formType": "13F-HR", + "description": "Form 13F-HR - Quarterly report filed by institutional managers, Holdings", + "filedAt": "2026-02-17T16:05:04-05:00", + "linkToTxt": "https://www.sec.gov/Archives/edgar/data/1067983/000119312526054580/0001193125-26-054580.txt", + "linkToHtml": "https://www.sec.gov/Archives/edgar/data/1067983/000119312526054580/0001193125-26-054580-index.htm", + "linkToXbrl": "", + "linkToFilingDetails": "https://www.sec.gov/Archives/edgar/data/1067983/000119312526054580/xslForm13F_X02/primary_doc.xml", + "entities": [ + { + "companyName": "BERKSHIRE HATHAWAY INC (Filer)", + "cik": "1067983", + "irsNo": "470813844", + "stateOfIncorporation": "DE", + "fiscalYearEnd": "1231", + "type": "13F-HR", + "act": "34", + "fileNo": "028-04545", + "filmNo": "26640865", + "sic": "6331 Fire, Marine & Casualty Insurance", + "undefined": "02 Finance)" + } + ], + "documentFormatFiles": [ + { + "sequence": "1", + "documentUrl": "https://www.sec.gov/Archives/edgar/data/1067983/000119312526054580/xslForm13F_X02/primary_doc.xml", + "type": "13F-HR", + "size": " " + }, + { + "sequence": "1", + "documentUrl": "https://www.sec.gov/Archives/edgar/data/1067983/000119312526054580/primary_doc.xml", + "type": "13F-HR", + "size": "5556" + }, + { + "sequence": "2", + "description": "INFORMATION TABLE FOR FORM 13F", + "documentUrl": "https://www.sec.gov/Archives/edgar/data/1067983/000119312526054580/xslForm13F_X02/50240.xml", + "type": "INFORMATION TABLE", + "size": " " + }, + { + "sequence": "2", + "description": "INFORMATION TABLE FOR FORM 13F", + "documentUrl": "https://www.sec.gov/Archives/edgar/data/1067983/000119312526054580/50240.xml", + "type": "INFORMATION TABLE", + "size": "55376" + }, + { + "sequence": " ", + "description": "Complete submission text file", + "documentUrl": "https://www.sec.gov/Archives/edgar/data/1067983/000119312526054580/0001193125-26-054580.txt", + "type": " ", + "size": "62306" + } + ], + "dataFiles": [], + "seriesAndClassesContractsInformation": [], + "periodOfReport": "2025-12-31", + "effectivenessDate": "2026-02-17", + "holdings": [ + { + "nameOfIssuer": "ALLY FINL INC", + "cusip": "02005N100", + "titleOfClass": "COM", + "value": 576074081, + "shrsOrPrnAmt": { + "sshPrnamt": 12719675, + "sshPrnamtType": "SH" + }, + "investmentDiscretion": "DFND", + "votingAuthority": { + "Sole": 12719675, + "Shared": 0, + "None": 0 + }, + "otherManager": "4", + "ticker": "ALLY", + "cik": "40729" + }, + { + "nameOfIssuer": "ALLY FINL INC", + "cusip": "02005N100", + "titleOfClass": "COM", + "value": 126987499, + "shrsOrPrnAmt": { + "sshPrnamt": 2803875, + "sshPrnamtType": "SH" + }, + "investmentDiscretion": "DFND", + "votingAuthority": { + "Sole": 2803875, + "Shared": 0, + "None": 0 + }, + "otherManager": "2,4,11", + "ticker": "ALLY", + "cik": "40729" + }, + { + "nameOfIssuer": "ALLY FINL INC", + "cusip": "02005N100", + "titleOfClass": "COM", + "value": 191495178, + "shrsOrPrnAmt": { + "sshPrnamt": 4228200, + "sshPrnamtType": "SH" + }, + "investmentDiscretion": "DFND", + "votingAuthority": { + "Sole": 4228200, + "Shared": 0, + "None": 0 + }, + "otherManager": "4,5", + "ticker": "ALLY", + "cik": "40729" + }, + { + "nameOfIssuer": "ALLY FINL INC", + "cusip": "02005N100", + "titleOfClass": "COM", + "value": 142074730, + "shrsOrPrnAmt": { + "sshPrnamt": 3137000, + "sshPrnamtType": "SH" + }, + "investmentDiscretion": "DFND", + "votingAuthority": { + "Sole": 3137000, + "Shared": 0, + "None": 0 + }, + "otherManager": "4,8,11", + "ticker": "ALLY", + "cik": "40729" + } + ] + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/form-144.json b/examples/api-responses/form-144.json new file mode 100644 index 0000000..a9184ec --- /dev/null +++ b/examples/api-responses/form-144.json @@ -0,0 +1,117 @@ +{ + "total": { + "value": 72, + "relation": "eq" + }, + "data": [ + { + "id": "3196e422cd21d5a12a3acf756bb3e0a1", + "accessionNo": "0001950047-26-003078", + "fileNo": "001-34756", + "formType": "144", + "filedAt": "2026-03-30T17:31:46-04:00", + "entities": [ + { + "cik": "1318605", + "ticker": "TSLA", + "companyName": "Tesla, Inc. (Subject)", + "irsNo": "912197729", + "fiscalYearEnd": "1231", + "stateOfIncorporation": "TX", + "sic": "3711 Motor Vehicles & Passenger Car Bodies", + "type": "144", + "act": "33", + "fileNo": "001-34756", + "filmNo": "26813321" + }, + { + "cik": "1331680", + "companyName": "Wilson-Thompson Kathleen (Reporting)", + "type": "144" + } + ], + "issuerInfo": { + "issuerCik": "1318605", + "issuerTicker": "TSLA", + "issuerName": "Tesla, Inc.", + "secFileNumber": "001-34756", + "issuerAddress": { + "street1": "1 Tesla Road", + "city": "Austin", + "stateOrCountry": "TX", + "zipCode": "78725" + }, + "issuerContactPhone": "5125168177", + "nameOfPersonForWhoseAccountTheSecuritiesAreToBeSold": "KATHLEEN WILSON-THOMPSON", + "relationshipsToIssuer": "Director" + }, + "securitiesInformation": [ + { + "securitiesClassTitle": "Common", + "brokerOrMarketMakerDetails": { + "name": "Morgan Stanley Smith Barney LLC Executive Financial Services", + "address": { + "street1": "1 New York Plaza", + "street2": "8th Floor", + "city": "New York", + "stateOrCountry": "NY", + "zipCode": "10004" + } + }, + "numberOfUnitsToBeSold": 25809, + "aggregateMarketValue": 9338470.47, + "noOfUnitsOutstanding": 3752431984, + "approxSaleDate": "2026-03-30", + "securitiesExchangeName": "NASDAQ" + } + ], + "securitiesToBeSold": [ + { + "securitiesClassTitle": "Common", + "acquiredDate": "2026-03-30", + "natureOfAcquisitionTransaction": "Exercise of Stock Options", + "nameOfPersonFromWhomAcquired": "Issuer", + "isGiftTransaction": false, + "amountOfSecuritiesAcquired": 1648, + "paymentDate": "2026-03-30", + "natureOfPayment": "Cash" + }, + { + "securitiesClassTitle": "Common", + "acquiredDate": "2026-03-30", + "natureOfAcquisitionTransaction": "Previously Exercised Stock Options", + "nameOfPersonFromWhomAcquired": "Issuer", + "isGiftTransaction": false, + "amountOfSecuritiesAcquired": 24161, + "paymentDate": "2026-03-30", + "natureOfPayment": "Cash" + } + ], + "nothingToReportFlagOnSecuritiesSoldInPast3Months": false, + "securitiesSoldInPast3Months": [ + { + "sellerDetails": { + "name": "10b5-1 Sales for KATHLEEN WILSON-THOMPSON", + "address": { + "street1": "1 Tesla Road", + "city": "Austin", + "stateOrCountry": "TX", + "zipCode": "78725" + } + }, + "securitiesClassTitle": "Common", + "saleDate": "2026-02-25", + "amountOfSecuritiesSold": 25731, + "grossProceeds": 10692813.68 + } + ], + "noticeSignature": { + "noticeDate": "2026-03-30", + "planAdoptionDates": [ + "2025-11-26" + ], + "signature": "/s/ Kathleen Wilson-Thompson" + } + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/form-8k-item-4-01.json b/examples/api-responses/form-8k-item-4-01.json new file mode 100644 index 0000000..5a28d27 --- /dev/null +++ b/examples/api-responses/form-8k-item-4-01.json @@ -0,0 +1,41 @@ +{ + "total": { + "value": 10000, + "relation": "gte" + }, + "data": [ + { + "id": "7ed33db091e32b437ff9c4571531869d", + "accessionNo": "0001388658-26-000022", + "formType": "8-K", + "filedAt": "2026-03-31T19:49:16-04:00", + "periodOfReport": "2026-03-30", + "cik": "1388658", + "ticker": "IRTC", + "companyName": "iRhythm Holdings, Inc.", + "items": [ + "Item 4.01: Changes in Registrant's Certifying Accountant", + "Item 9.01: Financial Statements and Exhibits" + ], + "item4_01": { + "keyComponents": "iRhythm Holdings, Inc. dismissed PricewaterhouseCoopers LLP as its independent auditor on March 30, 2026, and subsequently engaged KPMG LLP as the new auditor for the fiscal year ending December 31, 2026. There were no disagreements or reportable events with PwC.", + "newAccountantDate": "2026-03-30", + "engagedNewAccountant": true, + "formerAccountantDate": "2026-03-30", + "engagementEndReason": "dismissal", + "formerAccountantName": "PricewaterhouseCoopers LLP", + "newAccountantName": "KPMG LLP", + "consultedNewAccountant": false, + "reportedDisagreements": false, + "reportableEventsExist": false, + "attachments": [ + "Exhibit 16.1" + ], + "reportedIcfrWeakness": false, + "opinionType": "unqualified", + "auditDisclaimer": false, + "approvedChange": true + } + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/form-8k-item-4-02.json b/examples/api-responses/form-8k-item-4-02.json new file mode 100644 index 0000000..3656636 --- /dev/null +++ b/examples/api-responses/form-8k-item-4-02.json @@ -0,0 +1,50 @@ +{ + "total": { + "value": 8546, + "relation": "eq" + }, + "data": [ + { + "id": "1153464e0d82cd42a5773bede05220a8", + "accessionNo": "0001765048-26-000002", + "formType": "8-K", + "filedAt": "2026-03-26T09:53:26-04:00", + "periodOfReport": "2026-03-26", + "cik": "1765048", + "ticker": "GCGJ", + "companyName": "GUOCHUN INTERNATIONAL INC.", + "items": [ + "Item 4.02: Non-Reliance on Previously Issued Financial Statements or a Related Audit Report or Completed Interim Review" + ], + "item4_02": { + "keyComponents": "The Company determined that action should be taken to preclude reliance on previously issued unaudited condensed financial statements for the period ended September 30, 2025, due to an erroneously recorded amount in other general and administrative expenses. The financial statements have been restated to correct this error.", + "identifiedIssues": [ + "Erroneously recorded amount in other general and administrative expenses" + ], + "affectedReportingPeriods": [ + "Q3 2025" + ], + "identifiedBy": [ + "Company" + ], + "restatementIsNecessary": true, + "reasonsForRestatement": [ + "Erroneous recording of other general and administrative expenses" + ], + "impactYetToBeDetermined": true, + "impactOfError": "Decrease in other general and administrative expenses of $8,250, with a corresponding increase in prepayments of $8,250.", + "impactIsMaterial": false, + "materialWeaknessIdentified": false, + "affectedLineItems": [ + "Other General and Administrative Expenses", + "Prepayments" + ], + "netIncomeDecreased": false, + "netIncomeIncreased": false, + "revenueDecreased": false, + "revenueIncreased": false, + "eventClassification": "Financial Restatement Due to Erroneous Recording in General and Administrative Expenses" + } + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/form-8k-item-5-02.json b/examples/api-responses/form-8k-item-5-02.json new file mode 100644 index 0000000..66dee22 --- /dev/null +++ b/examples/api-responses/form-8k-item-5-02.json @@ -0,0 +1,78 @@ +{ + "total": { + "value": 10000, + "relation": "gte" + }, + "data": [ + { + "id": "9589d3da16d0e3bd48e6ebb799dd9988", + "accessionNo": "0001193125-26-135660", + "formType": "8-K", + "filedAt": "2026-04-01T07:00:10-04:00", + "periodOfReport": "2026-04-01", + "cik": "1109354", + "ticker": "BRKR", + "companyName": "BRUKER CORP", + "items": [ + "Item 5.02: Departure of Directors or Certain Officers; Election of Directors; Appointment of Certain Officers: Compensatory Arrangements of Certain Officers", + "Item 9.01: Financial Statements and Exhibits" + ], + "item5_02": { + "keyComponents": "Thierry L. Bernard was appointed as a new director to the Board of Bruker Corporation, expanding the Board to twelve directors. His appointment is effective April 1, 2026, and he will serve until the 2027 Annual Meeting of Stockholders.", + "personnelChanges": [ + { + "type": "appointment", + "effectiveDate": "2026-04-01", + "positions": [ + "Director" + ], + "person": { + "name": "Thierry L. Bernard", + "positionsAtOtherCompanies": [ + "CEO and Managing Director of QIAGEN N.V.", + "Chair of the AdvaMedDx Board of Directors", + "Board Member at Neogen Corporation" + ], + "academicAffiliations": [ + "Sciences Po", + "LSE", + "College of Europe", + "Harvard Business School", + "Centro de Comercio Exterior de Barcelona" + ], + "background": "Joined QIAGEN in February 2015, named CEO in March 2020, previously held roles at bioMérieux SA and other international companies.", + "previousPositions": [ + "Corporate Vice President, Global Commercial Operations, Investor Relations and the Greater China Region at bioMérieux SA" + ] + }, + "compensation": { + "noCompensation": false + }, + "continuedConsultingRole": false, + "termExtended": false, + "termShortened": false, + "compensationIncreased": false, + "compensationDecreased": false, + "disagreements": false, + "interim": false + } + ], + "organizationChanges": { + "organ": "Board of Directors", + "details": "Expansion of the board", + "sizeIncrease": true, + "sizeDecrease": false, + "created": false, + "abolished": false, + "affectedPersonnel": [ + "Thierry L. Bernard" + ] + }, + "attachments": [ + "Form 8-K", + "Company Press Release" + ] + } + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/form-8k.json b/examples/api-responses/form-8k.json new file mode 100644 index 0000000..3656636 --- /dev/null +++ b/examples/api-responses/form-8k.json @@ -0,0 +1,50 @@ +{ + "total": { + "value": 8546, + "relation": "eq" + }, + "data": [ + { + "id": "1153464e0d82cd42a5773bede05220a8", + "accessionNo": "0001765048-26-000002", + "formType": "8-K", + "filedAt": "2026-03-26T09:53:26-04:00", + "periodOfReport": "2026-03-26", + "cik": "1765048", + "ticker": "GCGJ", + "companyName": "GUOCHUN INTERNATIONAL INC.", + "items": [ + "Item 4.02: Non-Reliance on Previously Issued Financial Statements or a Related Audit Report or Completed Interim Review" + ], + "item4_02": { + "keyComponents": "The Company determined that action should be taken to preclude reliance on previously issued unaudited condensed financial statements for the period ended September 30, 2025, due to an erroneously recorded amount in other general and administrative expenses. The financial statements have been restated to correct this error.", + "identifiedIssues": [ + "Erroneously recorded amount in other general and administrative expenses" + ], + "affectedReportingPeriods": [ + "Q3 2025" + ], + "identifiedBy": [ + "Company" + ], + "restatementIsNecessary": true, + "reasonsForRestatement": [ + "Erroneous recording of other general and administrative expenses" + ], + "impactYetToBeDetermined": true, + "impactOfError": "Decrease in other general and administrative expenses of $8,250, with a corresponding increase in prepayments of $8,250.", + "impactIsMaterial": false, + "materialWeaknessIdentified": false, + "affectedLineItems": [ + "Other General and Administrative Expenses", + "Prepayments" + ], + "netIncomeDecreased": false, + "netIncomeIncreased": false, + "revenueDecreased": false, + "revenueIncreased": false, + "eventClassification": "Financial Restatement Due to Erroneous Recording in General and Administrative Expenses" + } + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/form-adv-brochures.json b/examples/api-responses/form-adv-brochures.json new file mode 100644 index 0000000..e3eda2c --- /dev/null +++ b/examples/api-responses/form-adv-brochures.json @@ -0,0 +1,76 @@ +{ + "brochures": [ + { + "versionId": 1033575, + "name": "CONSULTING GROUP ADVISOR PROGRAM BROCHURE", + "dateSubmitted": "2026-03-30", + "url": "https://files.adviserinfo.sec.gov/IAPD/Content/Common/crd_iapd_Brochure.aspx?BRCHR_VRSN_ID=1033575" + }, + { + "versionId": 1033576, + "name": "PORTFOLIO MANAGEMENT AND INSTITUTIONAL CASH ADVISORY PROGRAM BROCHURE", + "dateSubmitted": "2026-03-30", + "url": "https://files.adviserinfo.sec.gov/IAPD/Content/Common/crd_iapd_Brochure.aspx?BRCHR_VRSN_ID=1033576" + }, + { + "versionId": 1033577, + "name": "ALTERNATIVE INVESTMENTS WRAP PROGRAM BROCHURE", + "dateSubmitted": "2026-03-30", + "url": "https://files.adviserinfo.sec.gov/IAPD/Content/Common/crd_iapd_Brochure.aspx?BRCHR_VRSN_ID=1033577" + }, + { + "versionId": 1033578, + "name": "OUTSOURCED CHIEF INVESTMENT OFFICE (OCIO)", + "dateSubmitted": "2026-03-30", + "url": "https://files.adviserinfo.sec.gov/IAPD/Content/Common/crd_iapd_Brochure.aspx?BRCHR_VRSN_ID=1033578" + }, + { + "versionId": 1033579, + "name": "FINANCIAL PLANNING SERVICES PROGRAM BROCHURE", + "dateSubmitted": "2026-03-30", + "url": "https://files.adviserinfo.sec.gov/IAPD/Content/Common/crd_iapd_Brochure.aspx?BRCHR_VRSN_ID=1033579" + }, + { + "versionId": 1033586, + "name": "PRIVATE WEALTH MANAGEMENT CONSULTING SERVICES PROGRAM BROCHURE", + "dateSubmitted": "2026-03-30", + "url": "https://files.adviserinfo.sec.gov/IAPD/Content/Common/crd_iapd_Brochure.aspx?BRCHR_VRSN_ID=1033586" + }, + { + "versionId": 1033581, + "name": "SEPARATE MANAGED ACCOUNT WRAP PROGRAM BROCHURE", + "dateSubmitted": "2026-03-30", + "url": "https://files.adviserinfo.sec.gov/IAPD/Content/Common/crd_iapd_Brochure.aspx?BRCHR_VRSN_ID=1033581" + }, + { + "versionId": 1033582, + "name": "INSTITUTIONAL SERVICES PROGRAM BROCHURE", + "dateSubmitted": "2026-03-30", + "url": "https://files.adviserinfo.sec.gov/IAPD/Content/Common/crd_iapd_Brochure.aspx?BRCHR_VRSN_ID=1033582" + }, + { + "versionId": 1033583, + "name": "SEPARATE MANAGED ACCOUNT COMMISSION-BASED PROGRAM BROCHURE", + "dateSubmitted": "2026-03-30", + "url": "https://files.adviserinfo.sec.gov/IAPD/Content/Common/crd_iapd_Brochure.aspx?BRCHR_VRSN_ID=1033583" + }, + { + "versionId": 1033584, + "name": "SELECT UMA PROGRAM BROCHURE", + "dateSubmitted": "2026-03-30", + "url": "https://files.adviserinfo.sec.gov/IAPD/Content/Common/crd_iapd_Brochure.aspx?BRCHR_VRSN_ID=1033584" + }, + { + "versionId": 1033585, + "name": "MORGAN STANLEY CORE PORTFOLIOS", + "dateSubmitted": "2026-03-30", + "url": "https://files.adviserinfo.sec.gov/IAPD/Content/Common/crd_iapd_Brochure.aspx?BRCHR_VRSN_ID=1033585" + }, + { + "versionId": 1033580, + "name": "GRAYSTONE CONSULTING PROGRAM BROCHURE", + "dateSubmitted": "2026-03-30", + "url": "https://files.adviserinfo.sec.gov/IAPD/Content/Common/crd_iapd_Brochure.aspx?BRCHR_VRSN_ID=1033580" + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/form-adv-direct-owners.json b/examples/api-responses/form-adv-direct-owners.json new file mode 100644 index 0000000..270883d --- /dev/null +++ b/examples/api-responses/form-adv-direct-owners.json @@ -0,0 +1,142 @@ +[ + { + "name": "ZEMLYAK, JAMES MARK", + "ownerType": "I", + "titleStatus": "EXECUTIVE VICE PRESIDENT & DIRECTOR", + "dateTitleStatusAcquired": "2002-08", + "ownershipCode": "NA", + "isControlPerson": true, + "isPublicReporting": false, + "crd": "1586132" + }, + { + "name": "STIFEL FINANCIAL CORP.", + "ownerType": "DE", + "titleStatus": "SHAREHOLDER", + "dateTitleStatusAcquired": "1982-02", + "ownershipCode": "E", + "isControlPerson": true, + "isPublicReporting": true, + "crd": "" + }, + { + "name": "NOLL, DOUGLAS WAYNE", + "ownerType": "I", + "titleStatus": "PRINCIPAL OPERATIONS OFFICER", + "dateTitleStatusAcquired": "1995-06", + "ownershipCode": "NA", + "isControlPerson": false, + "isPublicReporting": false, + "crd": "1614129" + }, + { + "name": "KRUSZEWSKI, RONALD JAMES", + "ownerType": "I", + "titleStatus": "PRESIDENT, CHIEF EXECUTIVE OFFICE & CHAIRMAN OF THE BOARD", + "dateTitleStatusAcquired": "2002-08", + "ownershipCode": "NA", + "isControlPerson": true, + "isPublicReporting": false, + "crd": "1434827" + }, + { + "name": "FISHER, MARK PHILIP", + "ownerType": "I", + "titleStatus": "GENERAL COUNSEL, SECRETARY", + "dateTitleStatusAcquired": "2014-06", + "ownershipCode": "NA", + "isControlPerson": false, + "isPublicReporting": false, + "crd": "4970942" + }, + { + "name": "AYD, PAUL JOSEPH", + "ownerType": "I", + "titleStatus": "CHIEF COMPLIANCE OFFICER - CAPITAL MARKETS", + "dateTitleStatusAcquired": "2015-05", + "ownershipCode": "NA", + "isControlPerson": false, + "isPublicReporting": false, + "crd": "2963853" + }, + { + "name": "HYDE, GINA ELIZABETH", + "ownerType": "I", + "titleStatus": "CHIEF COMPLIANCE OFFICER - CAPITAL MARKETS", + "dateTitleStatusAcquired": "2016-08", + "ownershipCode": "NA", + "isControlPerson": false, + "isPublicReporting": false, + "crd": "2812751" + }, + { + "name": "SCHRICK, FREDERICK RICHARD", + "ownerType": "I", + "titleStatus": "PRINCIPAL FINANCIAL OFFICER", + "dateTitleStatusAcquired": "2017-08", + "ownershipCode": "NA", + "isControlPerson": true, + "isPublicReporting": false, + "crd": "5636488" + }, + { + "name": "BROOKS, PATRICK RODGERS", + "ownerType": "I", + "titleStatus": "ROSFP - CAPITAL MARKETS", + "dateTitleStatusAcquired": "2009-05", + "ownershipCode": "NA", + "isControlPerson": false, + "isPublicReporting": false, + "crd": "2223412" + }, + { + "name": "MELINGER, ADAM SCOTT", + "ownerType": "I", + "titleStatus": "ROSFP - PCG", + "dateTitleStatusAcquired": "2019-08", + "ownershipCode": "NA", + "isControlPerson": false, + "isPublicReporting": false, + "crd": "2373020" + }, + { + "name": "DODSON, CHARLES EDWARD", + "ownerType": "I", + "titleStatus": "CCO ADVISORY SERVICES", + "dateTitleStatusAcquired": "2022-01", + "ownershipCode": "NA", + "isControlPerson": false, + "isPublicReporting": false, + "crd": "1744430" + }, + { + "name": "SLINEY, DAVID DEAN", + "ownerType": "I", + "titleStatus": "SENIOR VICE PRESIDENT & DIRECTOR", + "dateTitleStatusAcquired": "2020-07", + "ownershipCode": "NA", + "isControlPerson": true, + "isPublicReporting": false, + "crd": "2276514" + }, + { + "name": "BRIGHT, GEOFFREY CLYDE JR", + "ownerType": "I", + "titleStatus": "CHIEF COMPLIANCE OFFICER - PRIVATE CLIENT GROUP", + "dateTitleStatusAcquired": "2024-02", + "ownershipCode": "NA", + "isControlPerson": false, + "isPublicReporting": false, + "crd": "4696103" + }, + { + "name": "RAYMOND, CHARLES BRADFORD GREEN", + "ownerType": "I", + "titleStatus": "CO-HEAD GLOBAL INSTITUTIONAL EQUITIES & ADVISORY", + "dateTitleStatusAcquired": "2025-07", + "ownershipCode": "NA", + "isControlPerson": false, + "isPublicReporting": false, + "crd": "2796106" + } +] \ No newline at end of file diff --git a/examples/api-responses/form-adv-firms.json b/examples/api-responses/form-adv-firms.json new file mode 100644 index 0000000..b0bc0ef --- /dev/null +++ b/examples/api-responses/form-adv-firms.json @@ -0,0 +1,624 @@ +{ + "total": { + "value": 1, + "relation": "eq" + }, + "filings": [ + { + "Info": { + "SECRgnCD": "NYRO", + "FirmCrdNb": 361, + "SECNb": "801-16048", + "BusNm": "GOLDMAN SACHS & CO. LLC", + "LegalNm": "GOLDMAN SACHS & CO. LLC", + "UmbrRgstn": "N" + }, + "MainAddr": { + "Strt1": "200 WEST STREET", + "City": "NEW YORK", + "State": "NY", + "Cntry": "United States", + "PostlCd": "10282", + "PhNb": "212-902-1000" + }, + "MailingAddr": {}, + "Rgstn": [ + { + "FirmType": "Registered", + "St": "APPROVED", + "Dt": "1981-05-13" + } + ], + "NoticeFiled": { + "States": [ + { + "RgltrCd": "AL", + "St": "FILED", + "Dt": "1992-10-28" + }, + { + "RgltrCd": "AK", + "St": "FILED", + "Dt": "1997-11-21" + }, + { + "RgltrCd": "AZ", + "St": "FILED", + "Dt": "1997-11-26" + }, + { + "RgltrCd": "AR", + "St": "FILED", + "Dt": "1988-10-19" + }, + { + "RgltrCd": "CA", + "St": "FILED", + "Dt": "1997-07-08" + }, + { + "RgltrCd": "CO", + "St": "FILED", + "Dt": "2001-04-30" + }, + { + "RgltrCd": "DE", + "St": "FILED", + "Dt": "2011-01-24" + }, + { + "RgltrCd": "DC", + "St": "FILED", + "Dt": "2001-04-30" + }, + { + "RgltrCd": "GA", + "St": "FILED", + "Dt": "2003-02-27" + }, + { + "RgltrCd": "ID", + "St": "FILED", + "Dt": "1997-11-14" + }, + { + "RgltrCd": "IL", + "St": "FILED", + "Dt": "1988-12-12" + }, + { + "RgltrCd": "IN", + "St": "FILED", + "Dt": "1988-09-06" + }, + { + "RgltrCd": "IA", + "St": "FILED", + "Dt": "1999-01-01" + }, + { + "RgltrCd": "KS", + "St": "FILED", + "Dt": "1997-11-18" + }, + { + "RgltrCd": "KY", + "St": "FILED", + "Dt": "1997-11-24" + }, + { + "RgltrCd": "LA", + "St": "FILED", + "Dt": "2001-10-08" + }, + { + "RgltrCd": "ME", + "St": "FILED", + "Dt": "1989-01-20" + }, + { + "RgltrCd": "MD", + "St": "FILED", + "Dt": "1992-01-01" + }, + { + "RgltrCd": "MA", + "St": "FILED", + "Dt": "2001-04-30" + }, + { + "RgltrCd": "MI", + "St": "FILED", + "Dt": "2001-04-30" + }, + { + "RgltrCd": "MN", + "St": "FILED", + "Dt": "1998-01-02" + }, + { + "RgltrCd": "MS", + "St": "FILED", + "Dt": "1997-11-17" + }, + { + "RgltrCd": "MT", + "St": "FILED", + "Dt": "1997-11-26" + }, + { + "RgltrCd": "NE", + "St": "FILED", + "Dt": "1999-11-24" + }, + { + "RgltrCd": "NV", + "St": "FILED", + "Dt": "1991-01-02" + }, + { + "RgltrCd": "NJ", + "St": "FILED", + "Dt": "1988-09-15" + }, + { + "RgltrCd": "NM", + "St": "FILED", + "Dt": "1989-01-25" + }, + { + "RgltrCd": "NY", + "St": "FILED", + "Dt": "1988-10-26" + }, + { + "RgltrCd": "NC", + "St": "FILED", + "Dt": "2001-04-03" + }, + { + "RgltrCd": "ND", + "St": "FILED", + "Dt": "1988-10-18" + }, + { + "RgltrCd": "OH", + "St": "FILED", + "Dt": "1999-11-19" + }, + { + "RgltrCd": "OK", + "St": "FILED", + "Dt": "1998-01-01" + }, + { + "RgltrCd": "OR", + "St": "FILED", + "Dt": "1988-11-18" + }, + { + "RgltrCd": "PA", + "St": "FILED", + "Dt": "1998-01-01" + }, + { + "RgltrCd": "PR", + "St": "FILED", + "Dt": "1996-11-01" + }, + { + "RgltrCd": "RI", + "St": "FILED", + "Dt": "1997-11-17" + }, + { + "RgltrCd": "SC", + "St": "FILED", + "Dt": "1988-10-24" + }, + { + "RgltrCd": "TN", + "St": "FILED", + "Dt": "1997-09-19" + }, + { + "RgltrCd": "UT", + "St": "FILED", + "Dt": "1997-10-09" + }, + { + "RgltrCd": "VT", + "St": "FILED", + "Dt": "1997-11-24" + }, + { + "RgltrCd": "VA", + "St": "FILED", + "Dt": "1998-02-03" + }, + { + "RgltrCd": "WV", + "St": "FILED", + "Dt": "1988-09-06" + }, + { + "RgltrCd": "WI", + "St": "FILED", + "Dt": "1997-11-17" + }, + { + "RgltrCd": "WY", + "St": "FILED", + "Dt": "2018-01-16" + }, + { + "RgltrCd": "VI", + "St": "FILED", + "Dt": "2008-02-28" + }, + { + "RgltrCd": "MO", + "St": "FILED", + "Dt": "1997-11-19" + }, + { + "RgltrCd": "WA", + "St": "FILED", + "Dt": "1998-12-29" + }, + { + "RgltrCd": "TX", + "St": "FILED", + "Dt": "2001-04-30" + }, + { + "RgltrCd": "NH", + "St": "FILED", + "Dt": "1988-10-26" + }, + { + "RgltrCd": "HI", + "St": "FILED", + "Dt": "1997-11-14" + }, + { + "RgltrCd": "CT", + "St": "FILED", + "Dt": "1997-09-26" + }, + { + "RgltrCd": "FL", + "St": "FILED", + "Dt": "1993-06-14" + }, + { + "RgltrCd": "SD", + "St": "FILED", + "Dt": "1988-10-21" + } + ] + }, + "Filing": [ + { + "Dt": "2026-03-31", + "FormVrsn": "10/2021" + } + ], + "FormInfo": { + "Part1A": { + "Item1": { + "WebAddrs": { + "WebAddrs": [ + "https://www.linkedin.com/showcase/goldman-sachs--private-wealth-management", + "https://privatewealth.goldmansachs.com/us/en/home", + "HTTP://X.COM/GOLDMANSACHS", + "https://www.instagram.com/goldmansachsprivatewealth/?hl=en", + "HTTP://WWW.GOLDMANSACHS.COM", + "HTTP://FACEBOOK.COM/GOLDMANSACHS", + "HTTPS://WWW.LINKEDIN.COM/COMPANY/GOLDMAN-SACHS", + "HTTP://WWW.GS.COM", + "https://www.instagram.com/goldmansachs/" + ], + "WebAddr": "https://www.instagram.com/goldmansachs/" + }, + "Q1F5": 18, + "Q1I": "Y", + "Q1M": "Y", + "Q1N": "N", + "Q1O": "Y", + "Q1ODesc": "More than $50 billion", + "Q1P": "FOR8UP27PHTHYVLBNG30" + }, + "Item2A": { + "Q2A1": "Y", + "Q2A2": "N", + "Q2A4": "N", + "Q2A5": "N", + "Q2A6": "N", + "Q2A7": "N", + "Q2A8": "N", + "Q2A9": "N", + "Q2A10": "N", + "Q2A11": "N", + "Q2A12": "N", + "Q2A13": "N" + }, + "Item2B": {}, + "Item3A": { + "OrgFormNm": "Limited Liability Company" + }, + "Item3B": { + "Q3B": "DECEMBER" + }, + "Item3C": { + "StateCD": "NY", + "CntryNm": "United States" + }, + "Item5A": { + "TtlEmp": 2268 + }, + "Item5B": { + "Q5B1": 1765, + "Q5B2": 1698, + "Q5B3": 0, + "Q5B4": 0, + "Q5B5": 60, + "Q5B6": 1 + }, + "Item5C": { + "Q5C1": "2355", + "Q5C2": 2 + }, + "Item5D": { + "Q5DA1": 0, + "Q5DA3": 0, + "Q5DB1": 29104, + "Q5DB3": 50962159253, + "Q5DC1": 0, + "Q5DC3": 0, + "Q5DD1": 0, + "Q5DD3": 0, + "Q5DE1": 0, + "Q5DE3": 0, + "Q5DF1": 0, + "Q5DF3": 0, + "Q5DG1": 9, + "Q5DG3": 4729043, + "Q5DH1": 1040, + "Q5DH3": 17527757435, + "Q5DI1": 1, + "Q5DI2": "Fewer than 5 clients", + "Q5DI3": 5787207, + "Q5DJ1": 0, + "Q5DJ3": 0, + "Q5DK1": 28, + "Q5DK3": 288850139, + "Q5DL1": 0, + "Q5DL3": 0, + "Q5DM1": 506, + "Q5DM3": 16937232904, + "Q5DN1": 15580, + "Q5DN3": 47917712945, + "Q5DN3Oth": "GS TRUST COMPANY, INDIAN TRIBES" + }, + "Item5E": { + "Q5E1": "Y", + "Q5E2": "N", + "Q5E3": "N", + "Q5E4": "Y", + "Q5E5": "Y", + "Q5E6": "Y", + "Q5E7": "Y", + "Q5E7Oth": "EXECUTION CHARGES, CUSTODY, MANAGEMENT FEE" + }, + "Item5F": { + "Q5F1": "Y", + "Q5F2A": 133354336653, + "Q5F2B": 289892273, + "Q5F2C": 133644228926, + "Q5F2D": 46265, + "Q5F2E": 4, + "Q5F2F": 46269, + "Q5F3": 9078887461 + }, + "Item5G": { + "Q5G1": "Y", + "Q5G2": "Y", + "Q5G3": "N", + "Q5G4": "Y", + "Q5G5": "Y", + "Q5G6": "N", + "Q5G7": "Y", + "Q5G8": "Y", + "Q5G9": "N", + "Q5G10": "N", + "Q5G11": "Y", + "Q5G12": "N" + }, + "Item5H": { + "Q5H": "1-10" + }, + "Item5I": { + "Q5I1": "Y", + "Q5I2A": 0, + "Q5I2B": 0, + "Q5I2C": 0 + }, + "Item5J": { + "Q5J1": "Y", + "Q5J2": "Y" + }, + "Item5K": { + "Q5K1": "Y", + "Q5K2": "Y", + "Q5K3": "Y", + "Q5K4": "Y" + }, + "Item5L": { + "Q5L1A": "Y", + "Q5L1B": "Y", + "Q5L1C": "Y", + "Q5L1D": "N", + "Q5L1E": "Y", + "Q5L2": "Y", + "Q5L3": "Y", + "Q5L4": "N" + }, + "Item6A": { + "Q6A1": "Y", + "Q6A2": "N", + "Q6A3": "Y", + "Q6A4": "Y", + "Q6A5": "N", + "Q6A6": "N", + "Q6A7": "N", + "Q6A8": "N", + "Q6A9": "Y", + "Q6A10": "Y", + "Q6A11": "N", + "Q6A12": "N", + "Q6A13": "N", + "Q6A14": "N" + }, + "Item6B": { + "Q6B1": "Y", + "Q6B2": "N", + "Q6B3": "Y" + }, + "Item7A": { + "Q7A1": "Y", + "Q7A2": "Y", + "Q7A3": "N", + "Q7A4": "Y", + "Q7A5": "N", + "Q7A6": "Y", + "Q7A7": "Y", + "Q7A8": "Y", + "Q7A9": "Y", + "Q7A10": "N", + "Q7A11": "N", + "Q7A12": "Y", + "Q7A13": "Y", + "Q7A14": "N", + "Q7A15": "N", + "Q7A16": "Y" + }, + "Item7B": { + "Q7B": "N" + }, + "Item8A": { + "Q8A1": "Y", + "Q8A2": "Y", + "Q8A3": "Y" + }, + "Item8B": { + "Q8B1": "Y", + "Q8B2": "Y", + "Q8B3": "Y" + }, + "Item8C": { + "Q8C1": "Y", + "Q8C2": "Y", + "Q8C3": "Y", + "Q8C4": "Y" + }, + "Item8D": { + "Q8D": "Y" + }, + "Item8E": { + "Q8E": "Y" + }, + "Item8F": { + "Q8F": "Y" + }, + "Item8G": { + "Q8G1": "Y", + "Q8G2": "Y" + }, + "Item8H": { + "Q8H1": "Y", + "Q8H2": "Y" + }, + "Item8I": { + "Q8I": "N" + }, + "Item9A": { + "Q9A1A": "Y", + "Q9A1B": "Y", + "Q9A2A": 132356397074, + "Q9A2B": 46194 + }, + "Item9B": { + "Q9B1A": "N", + "Q9B1B": "N", + "Q9B2A": 0, + "Q9B2B": 0 + }, + "Item9C": { + "Q9C1": "Y", + "Q9C2": "Y", + "Q9C3": "Y", + "Q9C4": "Y" + }, + "Item9D": { + "Q9D1": "Y", + "Q9D2": "Y" + }, + "Item9E": { + "Q9E": "2025-07" + }, + "Item9F": { + "Q9F": 91 + }, + "Item10A": { + "Q10A": "N" + }, + "Item11": { + "Q11": "Y" + }, + "Item11A": { + "Q11A1": "N", + "Q11A2": "Y" + }, + "Item11B": { + "Q11B1": "Y", + "Q11B2": "Y" + }, + "Item11C": { + "Q11C1": "Y", + "Q11C2": "Y", + "Q11C3": "N", + "Q11C4": "Y", + "Q11C5": "Y" + }, + "Item11D": { + "Q11D1": "Y", + "Q11D2": "Y", + "Q11D3": "N", + "Q11D4": "Y", + "Q11D5": "Y" + }, + "Item11E": { + "Q11E1": "Y", + "Q11E2": "Y", + "Q11E3": "N", + "Q11E4": "N" + }, + "Item11F": { + "Q11F": "Y" + }, + "Item11G": { + "Q11G": "Y" + }, + "Item11H": { + "Q11H1A": "Y", + "Q11H1B": "Y", + "Q11H1C": "Y", + "Q11H2": "Y" + } + } + }, + "id": 361 + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/form-adv-indirect-owners.json b/examples/api-responses/form-adv-indirect-owners.json new file mode 100644 index 0000000..9111467 --- /dev/null +++ b/examples/api-responses/form-adv-indirect-owners.json @@ -0,0 +1,167 @@ +[ + { + "name": "CORIENT PARTNERS LLC", + "ownerType": "DE", + "entityOwned": "CORIENT PRIVATE WEALTH LLC", + "status": "OWNER", + "dateStatusAcquired": "2022-02", + "ownershipCode": "E", + "isControlPerson": true, + "isPublicReporting": false, + "crd": "" + }, + { + "name": "CORIENT HOLDINGS INC", + "ownerType": "DE", + "entityOwned": "CORIENT MANAGEMENT LLC", + "status": "OWNER", + "dateStatusAcquired": "2023-07", + "ownershipCode": "F", + "isControlPerson": true, + "isPublicReporting": false, + "crd": "" + }, + { + "name": "CI FINANCIAL CORP.", + "ownerType": "FE", + "entityOwned": "CORIENT HOLDINGS INC", + "status": "OWNER", + "dateStatusAcquired": "2019-11", + "ownershipCode": "E", + "isControlPerson": true, + "isPublicReporting": false, + "crd": "" + }, + { + "name": "CORIENT MANAGEMENT LLC", + "ownerType": "FE", + "entityOwned": "CORIENT PARTNERS LLC", + "status": "OWNER", + "dateStatusAcquired": "2023-12", + "ownershipCode": "E", + "isControlPerson": true, + "isPublicReporting": false, + "crd": "" + }, + { + "name": "MC CIF WEALTH MANAGEMENT (UK) LTD", + "ownerType": "FE", + "entityOwned": "CI FINANCIAL CORP.", + "status": "OWNER", + "dateStatusAcquired": "2025-08", + "ownershipCode": "E", + "isControlPerson": true, + "isPublicReporting": false, + "crd": "" + }, + { + "name": "MC ACCELERATE HOLDINGS (UK) LP", + "ownerType": "FE", + "entityOwned": "MC CIF WEALTH MANAGEMENT (UK) LTD", + "status": "OWNER", + "dateStatusAcquired": "2025-08", + "ownershipCode": "E", + "isControlPerson": true, + "isPublicReporting": false, + "crd": "" + }, + { + "name": "MC ACCELERATE CO-INVEST (UK) LP", + "ownerType": "FE", + "entityOwned": "MC ACCELERATE HOLDINGS (UK) LP", + "status": "OWNER", + "dateStatusAcquired": "2025-08", + "ownershipCode": "E", + "isControlPerson": true, + "isPublicReporting": false, + "crd": "" + }, + { + "name": "MC CIF WEALTH MANAGEMENT HOLDINGS (UK) LTD", + "ownerType": "FE", + "entityOwned": "MC ACCELERATE CO-INVEST (UK) LP", + "status": "OWNER", + "dateStatusAcquired": "2025-08", + "ownershipCode": "D", + "isControlPerson": true, + "isPublicReporting": false, + "crd": "" + }, + { + "name": "MC MANAGER HOLDCO CIF (UK) LTD", + "ownerType": "FE", + "entityOwned": "MC CIF WEALTH MANAGEMENT HOLDINGS (UK) LTD", + "status": "OWNER", + "dateStatusAcquired": "2025-08", + "ownershipCode": "D", + "isControlPerson": true, + "isPublicReporting": false, + "crd": "" + }, + { + "name": "MUBADALA CAPITAL LP (UK)", + "ownerType": "FE", + "entityOwned": "MC MANAGER HOLDCO CIF (UK) LTD", + "status": "OWNER", + "dateStatusAcquired": "2025-08", + "ownershipCode": "E", + "isControlPerson": true, + "isPublicReporting": false, + "crd": "" + }, + { + "name": "MDC CAPITAL MANAGEMENT LLC (UAE)", + "ownerType": "FE", + "entityOwned": "MUBADALA CAPITAL LP (UK)", + "status": "OWNER", + "dateStatusAcquired": "2025-08", + "ownershipCode": "E", + "isControlPerson": true, + "isPublicReporting": false, + "crd": "" + }, + { + "name": "MUBADALA CAPITAL LLC (UAE)", + "ownerType": "FE", + "entityOwned": "MDC CAPITAL MANAGEMENT LLC (UAE)", + "status": "OWNER", + "dateStatusAcquired": "2025-08", + "ownershipCode": "E", + "isControlPerson": true, + "isPublicReporting": false, + "crd": "" + }, + { + "name": "MAMOURA DIVERSIFIED GLOBAL HOLDING PJSC (UAE)", + "ownerType": "FE", + "entityOwned": "MUBADALA CAPITAL LLC (UAE)", + "status": "OWNER", + "dateStatusAcquired": "2025-08", + "ownershipCode": "E", + "isControlPerson": true, + "isPublicReporting": false, + "crd": "" + }, + { + "name": "MUBADALA INVESTMENT COMPANY PJSC (UAE)", + "ownerType": "FE", + "entityOwned": "MAMOURA DIVERSIFIED GLOBAL HOLDING PJSC (UAE)", + "status": "OWNER", + "dateStatusAcquired": "2025-08", + "ownershipCode": "E", + "isControlPerson": true, + "isPublicReporting": false, + "crd": "" + }, + { + "name": "GOVERNMENT OF ABU DHABI", + "ownerType": "FE", + "entityOwned": "MUBADALA INVESTMENT COMPANY PJSC (UAE)", + "status": "OWNER", + "dateStatusAcquired": "2025-08", + "ownershipCode": "E", + "isControlPerson": true, + "isPublicReporting": false, + "crd": "" + } +] \ No newline at end of file diff --git a/examples/api-responses/form-adv-individuals.json b/examples/api-responses/form-adv-individuals.json new file mode 100644 index 0000000..93ea6fb --- /dev/null +++ b/examples/api-responses/form-adv-individuals.json @@ -0,0 +1,114 @@ +{ + "total": { + "value": 10000, + "relation": "gte" + }, + "filings": [ + { + "Info": { + "lastNm": "Nebot", + "firstNm": "Roman", + "indvlPK": 8213636, + "actvAGReg": "Y", + "link": "https://adviserinfo.sec.gov/individual/summary/8213636" + }, + "OthrNms": { + "OthrNm": [ + { + "lastNm": "Nebot creus", + "firstNm": "Roman", + "midNm": "D" + } + ] + }, + "CrntEmps": { + "CrntEmp": [ + { + "CrntRgstns": { + "CrntRgstn": [ + { + "regAuth": "FL", + "regCat": "RA", + "st": "APPROVED", + "stDt": "2026-02-02" + }, + { + "regAuth": "TX", + "regCat": "RA", + "st": "APPROVED", + "stDt": "2026-02-06" + } + ] + }, + "BrnchOfLocs": { + "BrnchOfLoc": [ + { + "str1": "200 South Biscayne Boulevard", + "str2": "Suite 1100", + "city": "Miami", + "state": "FL", + "cntry": "United States", + "postlCd": "33131" + } + ] + }, + "orgNm": "MORGAN STANLEY", + "orgPK": 149777, + "str1": "2000 WESTCHESTER AVENUE", + "city": "PURCHASE", + "state": "NY", + "cntry": "United States", + "postlCd": "10577-2530" + } + ] + }, + "Exms": { + "Exm": [ + { + "exmCd": "S66", + "exmNm": "Uniform Combined State Law Examination", + "exmDt": "2025-12-08" + } + ] + }, + "Dsgntns": {}, + "PrevRgstns": {}, + "EmpHss": { + "EmpHs": [ + { + "fromDt": "02/2019", + "toDt": "01/2026", + "orgNm": "Santander Internacional S.A.", + "city": "Miami", + "state": "FL" + }, + { + "fromDt": "09/1997", + "toDt": "02/2019", + "orgNm": "Santander Espa�a S.A.", + "city": "Barcelona" + }, + { + "fromDt": "01/2026", + "orgNm": "Morgan Stanley Smith Barney LLC", + "city": "Miami", + "state": "FL" + }, + { + "fromDt": "02/2026", + "orgNm": "Morgan Stanley Private Bank, N.A", + "city": "New York", + "state": "NY" + } + ] + }, + "OthrBuss": { + "OthrBus": { + "desc": "*680514- own house; Investment related: Yes; Spain; Rental Property; Sole Proprietor/Owner (proprietor, partner, officer, director, employee, trustee, agent); 09/2014; During business hours: 0; After business hours: 0; propietor *682268- inmobiliaria mocrebo sl; Investment related: Yes; Spain; Real Estate, passive inherited minority ownership in a familiy land-holding entity (underveloped agricultural land, non-income producing); Officer (proprietor, partner, officer, director, employee, trustee, agent); 07/1999; During business hours: 0; After business hours: 0; Administrative *682359- roman david nebot creus and my wife monica arnan colome; Investment related: Yes; Spain; Rental Property; Sole Proprietor/Owner (proprietor, partner, officer, director, employee, trustee, agent); 07/2021; During business hours: 0; After business hours: 0.1; occasional administrative tasks limited to maintenance coordination and communication with local property manager and tennat. No active busiiness operations, no employees, no marketing activity, and no financial advisory services provided" + } + }, + "DRPs": {}, + "id": 8213636 + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/form-adv-private-funds.json b/examples/api-responses/form-adv-private-funds.json new file mode 100644 index 0000000..22e6238 --- /dev/null +++ b/examples/api-responses/form-adv-private-funds.json @@ -0,0 +1,410 @@ +[ + { + "1a-nameOfFund": "EI FUND II LLC", + "1b-fundIdentificationNumber": "805-4502496130", + "2-lawOrganizedUnder": { + "state": "Missouri", + "country": "United States" + }, + "3a-namesOfGeneralPartnerManagerTrusteeDirector": [ + "STIFEL NICOLAUS & COMPANY, INC." + ], + "3b-filingAdvisers": "No Information Filed", + "4-1-exclusionUnder3c1": false, + "4-2-exclusionUnder3c7": true, + "5-nameCountryOfForeignFinancialRegAuthority": [], + "6a-isMasterFundInMasterFeederArrangement": false, + "6b-nameIdOfFeederFunds": [], + "6c-isFeederFundInMasterFeederAgreement": true, + "6d-nameIdOfMasterFund": "EI FUND V, LP", + "7a-f-feederFundDetails": [], + "8a-isFundOfFunds": true, + "8b-investsInFundsManagedByYouRelatedPerson": false, + "9-investsInSecuritiesAccordingTo6e": false, + "10-typeOfFund": { + "selectedTypes": [ + "other private fund" + ], + "otherFundType": "FEEDER INTO PRIVATE EQUITY FUND" + }, + "11-grossAssetValue": 2027469, + "12-minInvestmentCommitment": 100000, + "13-numberOfBeneficialOwners": 25, + "14-percentageOwnedByYou": 0, + "15a-percentageOwnedByFundsOfFunds": 0, + "15b-salesAreLimited": false, + "16-percentageOwnedByNonUnitedStatesPersons": 0, + "17a-isSubadviser": false, + "17b-nameAndSecFileNumber": "No Information Filed", + "18a-investmentAdvisersAdviseFund": false, + "18b-otherAdvisers": [], + "19-clientsAreSolicited": true, + "20-percentageClientsInvestedInFund": 0, + "21-fundReliedOnExemption": true, + "22-formDFileNumbers": [ + "021-151919" + ], + "23a-1-financialStatementsAreSubjectToAnnualAudit": true, + "23a-2-financialStatementsPreparedWithUsGaap": true, + "23b-f-auditors": [ + { + "23b-name": "KATZ SAPPER MILLER", + "23c-location": { + "city": "INDIANAPOLIS", + "state": "Indiana", + "country": "United States" + }, + "23d-isIndependentPublicAccountant": true, + "23e-isRegistered": true, + "23e-boardAssignedNumber": "2804", + "23f-isSubjectToInspection": true + } + ], + "23g-financialStatementsDistributedToInvestors": true, + "23h-reportsIncludeUnqualifiedOpinions": "yes", + "24a-fundUsesPrimeBrokers": false, + "24b-e-primeBrokers": [], + "25a-fundUsesCustodians": true, + "25b-g-custodians": [ + { + "25b-legalName": "STIFEL, NICOLAUS & COMPANY, INCORPORATED", + "25c-businessName": "STIFEL, NICOLAUS & COMPANY, INCORPORATED", + "25d-location": { + "city": "ST. LOUIS", + "state": "Missouri", + "country": "United States" + }, + "25e-isRelatedPerson": true, + "25f-1-secRegistrationNumber": "8 - 1447", + "25f-2-crdNumber": "793", + "25g-legalEntityIdentifier": "" + } + ], + "26a-fundUsesAdministrators": true, + "26b-f-administrators": [ + { + "26b-name": "HALL KISTLER & COMPANY", + "26c-location": { + "city": "CANTON", + "state": "Ohio", + "country": "United States" + }, + "26d-isRelatedPerson": false, + "26e-statementsProvidedTo": "no investors", + "26f-statementsSentBy": "ADMINISTRATOR PREPARES INVESTOR ACCOUNT STATEMENTS, AND STIFEL NICOLAUS SENDS THE STATEMENTS TO INVESTORS." + } + ], + "27-percentageOfAssetsValuedNotByRelatedPerson": 100, + "28a-fundUsesMarketers": false, + "28b-g-marketers": [] + }, + { + "1a-nameOfFund": "INTERNATIONAL SELECT INVESTMENTS LLC", + "1b-fundIdentificationNumber": "805-3139813148", + "2-lawOrganizedUnder": { + "state": "Indiana", + "country": "United States" + }, + "3a-namesOfGeneralPartnerManagerTrusteeDirector": [ + "STIFEL NICOLAUS & COMPANY, INC." + ], + "3b-filingAdvisers": "No Information Filed", + "4-1-exclusionUnder3c1": false, + "4-2-exclusionUnder3c7": true, + "5-nameCountryOfForeignFinancialRegAuthority": [], + "6a-isMasterFundInMasterFeederArrangement": false, + "6b-nameIdOfFeederFunds": [], + "6c-isFeederFundInMasterFeederAgreement": false, + "6d-nameIdOfMasterFund": "", + "7a-f-feederFundDetails": [], + "8a-isFundOfFunds": true, + "8b-investsInFundsManagedByYouRelatedPerson": false, + "9-investsInSecuritiesAccordingTo6e": true, + "10-typeOfFund": { + "selectedTypes": [ + "other private fund" + ], + "otherFundType": "FUND OF HEDGE FUNDS" + }, + "11-grossAssetValue": 0, + "12-minInvestmentCommitment": 200000, + "13-numberOfBeneficialOwners": 0, + "14-percentageOwnedByYou": 0, + "15a-percentageOwnedByFundsOfFunds": 0, + "15b-salesAreLimited": false, + "16-percentageOwnedByNonUnitedStatesPersons": 0, + "17a-isSubadviser": false, + "17b-nameAndSecFileNumber": "No Information Filed", + "18a-investmentAdvisersAdviseFund": false, + "18b-otherAdvisers": [], + "19-clientsAreSolicited": true, + "20-percentageClientsInvestedInFund": 0, + "21-fundReliedOnExemption": true, + "22-formDFileNumbers": [ + "021-87139" + ], + "23a-1-financialStatementsAreSubjectToAnnualAudit": true, + "23a-2-financialStatementsPreparedWithUsGaap": true, + "23b-f-auditors": [ + { + "23b-name": "KATZ SAPPER MILLER", + "23c-location": { + "city": "INDIANAPOLIS", + "state": "Indiana", + "country": "United States" + }, + "23d-isIndependentPublicAccountant": true, + "23e-isRegistered": true, + "23e-boardAssignedNumber": "2804", + "23f-isSubjectToInspection": true + } + ], + "23g-financialStatementsDistributedToInvestors": true, + "23h-reportsIncludeUnqualifiedOpinions": "yes", + "24a-fundUsesPrimeBrokers": true, + "24b-e-primeBrokers": [ + { + "24b-name": "STIFEL, NICOLAUS & COMPANY, INCORPORATED", + "24c-1-secRegistrationNumber": "8 - 1447", + "24c-2-crdNumber": "793", + "24d-location": { + "city": "ST. LOUIS", + "state": "Missouri", + "country": "United States" + }, + "24e-actsAsCustodian": true + } + ], + "25a-fundUsesCustodians": true, + "25b-g-custodians": [ + { + "25b-legalName": "STIFEL, NICOLAUS & COMPANY, INCORPORATED", + "25c-businessName": "STIFEL, NICOLAUS & COMPANY, INCORPORATED", + "25d-location": { + "city": "ST. LOUIS", + "state": "Missouri", + "country": "United States" + }, + "25e-isRelatedPerson": true, + "25f-1-secRegistrationNumber": "8 - 1447", + "25f-2-crdNumber": "793", + "25g-legalEntityIdentifier": "" + } + ], + "26a-fundUsesAdministrators": true, + "26b-f-administrators": [ + { + "26b-name": "SEI ARCHWAY TECHNOLOGY PARTNERS, LLC", + "26c-location": { + "city": "INDIANAPOLIS", + "state": "Indiana", + "country": "United States" + }, + "26d-isRelatedPerson": false, + "26e-statementsProvidedTo": "all investors", + "26f-statementsSentBy": "SEI ARCHWAY TECHNOLOGY PARTNERS PREPARES THE STATEMENTS, BUT STIFEL NICOLAUS MAILS THE STATEMENTS" + } + ], + "27-percentageOfAssetsValuedNotByRelatedPerson": 100, + "28a-fundUsesMarketers": false, + "28b-g-marketers": [] + }, + { + "1a-nameOfFund": "KCP ACCESS FUND LP", + "1b-fundIdentificationNumber": "805-2148796559", + "2-lawOrganizedUnder": { + "state": "Delaware", + "country": "United States" + }, + "3a-namesOfGeneralPartnerManagerTrusteeDirector": [ + "KCP FUND GENERAL PARTNER LLC" + ], + "3b-filingAdvisers": "No Information Filed", + "4-1-exclusionUnder3c1": false, + "4-2-exclusionUnder3c7": true, + "5-nameCountryOfForeignFinancialRegAuthority": [], + "6a-isMasterFundInMasterFeederArrangement": false, + "6b-nameIdOfFeederFunds": [], + "6c-isFeederFundInMasterFeederAgreement": true, + "6d-nameIdOfMasterFund": "ACCESS HOLDINGS FUND I LLP", + "7a-f-feederFundDetails": [], + "8a-isFundOfFunds": true, + "8b-investsInFundsManagedByYouRelatedPerson": false, + "9-investsInSecuritiesAccordingTo6e": false, + "10-typeOfFund": { + "selectedTypes": [ + "other private fund" + ], + "otherFundType": "FEEDER INTO PRIVATE EQUITY FUND" + }, + "11-grossAssetValue": 6416699, + "12-minInvestmentCommitment": 100000, + "13-numberOfBeneficialOwners": 11, + "14-percentageOwnedByYou": 0, + "15a-percentageOwnedByFundsOfFunds": 0, + "15b-salesAreLimited": false, + "16-percentageOwnedByNonUnitedStatesPersons": 0, + "17a-isSubadviser": false, + "17b-nameAndSecFileNumber": "No Information Filed", + "18a-investmentAdvisersAdviseFund": false, + "18b-otherAdvisers": [], + "19-clientsAreSolicited": true, + "20-percentageClientsInvestedInFund": 0, + "21-fundReliedOnExemption": true, + "22-formDFileNumbers": [ + "021-390314" + ], + "23a-1-financialStatementsAreSubjectToAnnualAudit": true, + "23a-2-financialStatementsPreparedWithUsGaap": true, + "23b-f-auditors": [ + { + "23b-name": "KATZ SAPPER MILLER", + "23c-location": { + "city": "INDIANAPOLIS", + "state": "Indiana", + "country": "United States" + }, + "23d-isIndependentPublicAccountant": true, + "23e-isRegistered": true, + "23e-boardAssignedNumber": "2804", + "23f-isSubjectToInspection": true + } + ], + "23g-financialStatementsDistributedToInvestors": true, + "23h-reportsIncludeUnqualifiedOpinions": "yes", + "24a-fundUsesPrimeBrokers": false, + "24b-e-primeBrokers": [], + "25a-fundUsesCustodians": true, + "25b-g-custodians": [ + { + "25b-legalName": "STIFEL, NICOLAUS & COMPANY, INCORPORATED", + "25c-businessName": "STIFEL, NICOLAUS & COMPANY, INCORPORATED", + "25d-location": { + "city": "ST. LOUIS", + "state": "Missouri", + "country": "United States" + }, + "25e-isRelatedPerson": true, + "25f-1-secRegistrationNumber": "8 - 1447", + "25f-2-crdNumber": "793", + "25g-legalEntityIdentifier": "" + } + ], + "26a-fundUsesAdministrators": true, + "26b-f-administrators": [ + { + "26b-name": "HALL KISTLER & COMPANY", + "26c-location": { + "city": "CANTON", + "state": "Ohio", + "country": "United States" + }, + "26d-isRelatedPerson": false, + "26e-statementsProvidedTo": "no investors", + "26f-statementsSentBy": "ADMINISTRATOR PREPARES INVESTOR ACCOUNT STATEMENTS, AND STIFEL NICOLAUS SENDS THE STATEMENTS TO INVESTORS." + } + ], + "27-percentageOfAssetsValuedNotByRelatedPerson": 100, + "28a-fundUsesMarketers": false, + "28b-g-marketers": [] + }, + { + "1a-nameOfFund": "KCP ACCOLADE FUND LP", + "1b-fundIdentificationNumber": "805-6829455057", + "2-lawOrganizedUnder": { + "state": "Delaware", + "country": "United States" + }, + "3a-namesOfGeneralPartnerManagerTrusteeDirector": [ + "KCP FUND GENERAL PARTNER LLC" + ], + "3b-filingAdvisers": "No Information Filed", + "4-1-exclusionUnder3c1": false, + "4-2-exclusionUnder3c7": true, + "5-nameCountryOfForeignFinancialRegAuthority": [], + "6a-isMasterFundInMasterFeederArrangement": false, + "6b-nameIdOfFeederFunds": [], + "6c-isFeederFundInMasterFeederAgreement": false, + "6d-nameIdOfMasterFund": "", + "7a-f-feederFundDetails": [], + "8a-isFundOfFunds": true, + "8b-investsInFundsManagedByYouRelatedPerson": false, + "9-investsInSecuritiesAccordingTo6e": false, + "10-typeOfFund": { + "selectedTypes": [ + "other private fund" + ], + "otherFundType": "FEEDER INTO PRIVATE EQUITY FUND" + }, + "11-grossAssetValue": 16582496, + "12-minInvestmentCommitment": 100000, + "13-numberOfBeneficialOwners": 27, + "14-percentageOwnedByYou": 0, + "15a-percentageOwnedByFundsOfFunds": 0, + "15b-salesAreLimited": false, + "16-percentageOwnedByNonUnitedStatesPersons": 0, + "17a-isSubadviser": false, + "17b-nameAndSecFileNumber": "No Information Filed", + "18a-investmentAdvisersAdviseFund": false, + "18b-otherAdvisers": [], + "19-clientsAreSolicited": true, + "20-percentageClientsInvestedInFund": 0, + "21-fundReliedOnExemption": true, + "22-formDFileNumbers": [ + "021-417548" + ], + "23a-1-financialStatementsAreSubjectToAnnualAudit": true, + "23a-2-financialStatementsPreparedWithUsGaap": true, + "23b-f-auditors": [ + { + "23b-name": "KATZ SAPPER MILLER", + "23c-location": { + "city": "INDIANAPOLIS", + "state": "Indiana", + "country": "United States" + }, + "23d-isIndependentPublicAccountant": true, + "23e-isRegistered": true, + "23e-boardAssignedNumber": "2804", + "23f-isSubjectToInspection": true + } + ], + "23g-financialStatementsDistributedToInvestors": true, + "23h-reportsIncludeUnqualifiedOpinions": "yes", + "24a-fundUsesPrimeBrokers": false, + "24b-e-primeBrokers": [], + "25a-fundUsesCustodians": true, + "25b-g-custodians": [ + { + "25b-legalName": "STIFEL, NICOLAUS & COMPANY, INCORPORATED", + "25c-businessName": "STIFEL, NICOLAUS & COMPANY, INCORPORATED", + "25d-location": { + "city": "ST. LOUIS", + "state": "Missouri", + "country": "United States" + }, + "25e-isRelatedPerson": true, + "25f-1-secRegistrationNumber": "8 - 1447", + "25f-2-crdNumber": "793", + "25g-legalEntityIdentifier": "" + } + ], + "26a-fundUsesAdministrators": true, + "26b-f-administrators": [ + { + "26b-name": "HALL KISTLER & COMPANY", + "26c-location": { + "city": "CANTON", + "state": "Ohio", + "country": "United States" + }, + "26d-isRelatedPerson": false, + "26e-statementsProvidedTo": "no investors", + "26f-statementsSentBy": "ADMINISTRATOR PREPARES INVESTOR ACCOUNT STATEMENTS, & STIFEL NICOLAUS SENDS THE STATEMENT TO INVESTORS." + } + ], + "27-percentageOfAssetsValuedNotByRelatedPerson": 100, + "28a-fundUsesMarketers": false, + "28b-g-marketers": [] + } +] \ No newline at end of file diff --git a/examples/api-responses/form-c.json b/examples/api-responses/form-c.json new file mode 100644 index 0000000..0f97adc --- /dev/null +++ b/examples/api-responses/form-c.json @@ -0,0 +1,145 @@ +{ + "total": { + "value": 10000, + "relation": "gte" + }, + "data": [ + { + "id": "5ed83df80bfdb0dd611508c07e138867", + "accessionNo": "0002103209-26-000005", + "fileNo": "020-36757", + "formType": "C/A", + "filedAt": "2026-03-31T18:45:06-04:00", + "cik": "2103209", + "ticker": "", + "companyName": "GigaWatt, Inc", + "issuerInformation": { + "isAmendment": false, + "natureOfAmendment": "Campaign Page Updates", + "issuerInfo": { + "nameOfIssuer": "GigaWatt, Inc.", + "legalStatus": { + "legalStatusForm": "Corporation", + "jurisdictionOrganization": "CA", + "dateIncorporation": "09-17-2025" + }, + "issuerAddress": { + "street1": "2386 E Walnut Ave", + "city": "Fullerton", + "stateOrCountry": "CA", + "zipCode": "92831" + }, + "issuerWebsite": "https://www.gigawattinc.com/" + }, + "isCoIssuer": false, + "companyName": "StartEngine Primary, LLC", + "commissionCik": "0001725012", + "commissionFileNumber": "008-70060" + }, + "offeringInformation": { + "compensationAmount": "7 - 13 percent", + "financialInterest": "One percent (1%) of securities of the total amount of investments raised in the offering, along the same terms as investors.", + "securityOfferedType": "Other", + "securityOfferedOtherDesc": "Class B Common Stock", + "noOfSecurityOffered": 10000, + "price": 2, + "priceDeterminationMethod": "N/A", + "offeringAmount": 20000, + "overSubscriptionAccepted": true, + "overSubscriptionAllocationType": "Other", + "descOverSubscription": "At issuer's discretion, with priority given to StartEngine Owners", + "maximumOfferingAmount": 1235000, + "deadlineDate": "04-23-2026" + }, + "annualReportDisclosureRequirements": { + "currentEmployees": 21, + "totalAssetMostRecentFiscalYear": 2559852, + "totalAssetPriorFiscalYear": 2169710, + "cashEquiMostRecentFiscalYear": 521671, + "cashEquiPriorFiscalYear": 575133, + "actReceivedMostRecentFiscalYear": 11126, + "actReceivedPriorFiscalYear": 2779, + "shortTermDebtMostRecentFiscalYear": 2659535, + "shortTermDebtPriorFiscalYear": 2311008, + "longTermDebtMostRecentFiscalYear": 707533, + "longTermDebtPriorFiscalYear": 748955, + "revenueMostRecentFiscalYear": 7485272, + "revenuePriorFiscalYear": 9788210, + "costGoodsSoldMostRecentFiscalYear": 5091719, + "costGoodsSoldPriorFiscalYear": 6836396, + "taxPaidMostRecentFiscalYear": 537, + "taxPaidPriorFiscalYear": 4631, + "netIncomeMostRecentFiscalYear": 83037, + "netIncomePriorFiscalYear": 45926, + "issueJurisdictionSecuritiesOffering": [ + "AL", + "AK", + "AZ", + "AR", + "CA", + "CO", + "CT", + "DC", + "DE", + "FL", + "GA", + "HI", + "ID", + "IL", + "IN", + "IA", + "KS", + "KY", + "LA", + "ME", + "MD", + "MA", + "MI", + "MN", + "MS", + "MO", + "MT", + "NE", + "NV", + "NH", + "NJ", + "NM", + "NY", + "NC", + "ND", + "OH", + "OK", + "OR", + "PA", + "PR", + "RI", + "SC", + "SD", + "TN", + "TX", + "UT", + "VT", + "VA", + "WA", + "WV", + "WI", + "WY" + ] + }, + "signatureInfo": { + "issuerSignature": { + "issuer": "GigaWatt, Inc.", + "issuerSignature": "Deep G. Patel", + "issuerTitle": "Founder, CEO, Board Member, Principal Accounting Officer" + }, + "signaturePersons": [ + { + "personSignature": "Deep G. Patel", + "personTitle": "Founder, CEO, Board Member, Principal Accounting Officer", + "signatureDate": "03-31-2026" + } + ] + } + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/form-d.json b/examples/api-responses/form-d.json new file mode 100644 index 0000000..1258708 --- /dev/null +++ b/examples/api-responses/form-d.json @@ -0,0 +1,166 @@ +{ + "total": { + "value": 10000, + "relation": "gte" + }, + "offerings": [ + { + "schemaVersion": "X0708", + "submissionType": "D/A", + "testOrLive": "LIVE", + "primaryIssuer": { + "cik": "0001925002", + "entityName": "Fund I, a series of Material Ventures, LP", + "issuerAddress": { + "street1": "119 SOUTH MAIN STREET", + "street2": "SUITE 220", + "city": "SEATTLE", + "stateOrCountry": "WA", + "stateOrCountryDescription": "WASHINGTON", + "zipCode": "98104" + }, + "issuerPhoneNumber": "3603409337", + "jurisdictionOfInc": "DELAWARE", + "issuerPreviousNameList": [ + { + "previousName": [ + "None" + ] + } + ], + "edgarPreviousNameList": [ + { + "value": "None" + } + ], + "entityType": "Limited Partnership", + "yearOfInc": { + "withinFiveYears": true, + "value": "2021" + } + }, + "relatedPersonsList": { + "relatedPersonInfo": [ + { + "relatedPersonName": { + "firstName": "Ltd.", + "lastName": "Belltower Fund Group" + }, + "relatedPersonAddress": { + "street1": "119 South Main Street", + "street2": "Suite 220", + "city": "Seattle", + "stateOrCountry": "WA", + "stateOrCountryDescription": "WASHINGTON", + "zipCode": "98104" + }, + "relatedPersonRelationshipList": { + "relationship": [ + "Director" + ] + }, + "relationshipClarification": "Manager of the general partner of the Issuer" + }, + { + "relatedPersonName": { + "firstName": "LLC", + "lastName": "Fund GP," + }, + "relatedPersonAddress": { + "street1": "119 South Main Street", + "street2": "Suite 220", + "city": "Seattle", + "stateOrCountry": "WA", + "stateOrCountryDescription": "WASHINGTON", + "zipCode": "98104" + }, + "relatedPersonRelationshipList": { + "relationship": [ + "Director" + ] + }, + "relationshipClarification": "General partner of the Issuer" + } + ] + }, + "offeringData": { + "industryGroup": { + "industryGroupType": "Pooled Investment Fund", + "investmentFundInfo": { + "investmentFundType": "Venture Capital Fund", + "is40Act": false + } + }, + "issuerSize": { + "revenueRange": "Decline to Disclose" + }, + "federalExemptionsExclusions": { + "item": [ + "06b", + "3C", + "3C.1" + ] + }, + "typeOfFiling": { + "newOrAmendment": { + "isAmendment": true, + "previousAccessionNumber": "0001976600-23-000006" + }, + "dateOfFirstSale": { + "value": "2022-04-01" + } + }, + "durationOfOffering": { + "moreThanOneYear": true + }, + "typesOfSecuritiesOffered": { + "isPooledInvestmentFundType": true + }, + "businessCombinationTransaction": { + "isBusinessCombinationTransaction": false + }, + "minimumInvestmentAccepted": 25000, + "salesCompensationList": {}, + "offeringSalesAmounts": { + "totalOfferingAmount": 10000000, + "totalAmountSold": 5254355, + "totalRemaining": 4745645 + }, + "investors": { + "hasNonAccreditedInvestors": false, + "totalNumberAlreadyInvested": 47 + }, + "salesCommissionsFindersFees": { + "salesCommissions": { + "dollarAmount": 0 + }, + "findersFees": { + "dollarAmount": 0 + } + }, + "useOfProceeds": { + "grossProceedsUsed": { + "dollarAmount": 0, + "isEstimate": true + }, + "clarificationOfResponse": "The manager of the general partner of the Issuer will receive a portion of a management fee as specified in the Issuer's partnership agreement." + }, + "signatureBlock": { + "authorizedRepresentative": false, + "signature": [ + { + "issuerName": "Fund I, a series of Material Ventures, LP", + "signatureName": "/s/ Abraham Wilson", + "nameOfSigner": "Abraham Wilson", + "signatureTitle": "Authorized Person of the Agent of Issuer's GP", + "signatureDate": "2026-03-31" + } + ] + } + }, + "accessionNo": "0001925002-26-000003", + "filedAt": "2026-03-31T20:56:04-04:00", + "id": "eafcfda4b7698259276857a92943d990" + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/form-ncen.json b/examples/api-responses/form-ncen.json new file mode 100644 index 0000000..104c9fc --- /dev/null +++ b/examples/api-responses/form-ncen.json @@ -0,0 +1,196 @@ +{ + "total": { + "value": 10000, + "relation": "gte" + }, + "data": [ + { + "id": "8673f62b218d47bba6c85d8c101caba8", + "accessionNo": "0001639553-26-000002", + "fileNo": "811-23054", + "formType": "N-CEN", + "filedAt": "2026-03-16T17:18:30-04:00", + "periodOfReport": "2025-12-31", + "entities": [ + { + "cik": "1639553", + "companyName": "Variable Annuity-8 Series Account (of Empower Life & Annuity Insurance Co of New York) (Filer)", + "irsNo": "132690792", + "fiscalYearEnd": "1231", + "stateOfIncorporation": "NY", + "act": "40", + "fileNo": "811-23054", + "filmNo": "26757950" + } + ], + "seriesClass": { + "reportClass": [ + { + "classIds": [ + "C000158471", + "C000158472" + ] + } + ] + }, + "generalInfo": { + "reportEndingPeriod": "2025-12-31", + "isReportPeriodLt12": false + }, + "registrantInfo": { + "registrantFullName": "Variable Annuity-8 Series Account (of Empower Life & Annuity Insurance Co of New York)", + "investmentCompFileNo": "811-23054", + "registrantCik": "1639553", + "registrantLei": "00000000000000000000", + "registrantStreet1": "370 Lexington Ave, Suite 703", + "registrantCity": "New York", + "registrantZipCode": "10017", + "registrantState": "NY", + "registrantCountry": "US", + "registrantPhoneNumber": "800-537-2033", + "websites": [ + "N/A" + ], + "locationBooksRecords": [ + { + "officeName": "Empower Annuity Insurance Company of America", + "officeAddress1": "8515 East Orchard Road", + "officeCity": "Greenwood Village", + "officeState": "CO", + "officeCountry": "US", + "officeRecordsZipCode": "80111", + "officePhone": "303-737-3000", + "booksRecordsDesc": "All accounts, books, or other documents required to be maintained by Section 31(a) of the Investment Company Act of 1940 and the rules promulgated thereunder." + } + ], + "isRegistrantFirstFiling": false, + "isRegistrantLastFiling": false, + "familyInvCompFullName": "Empower Funds, Inc.", + "isRegistrantFamilyInvComp": true, + "registrantClassificationType": "N-4", + "isSecuritiesActRegistration": true, + "chiefComplianceOfficers": [ + { + "ccoName": "Ahmed Abdul-Jaleel", + "crdNumber": "008065071", + "ccoStreet1": "8515 East Orchard Road", + "ccoCity": "Greenwood Village", + "ccoState": "CO", + "ccoCountry": "US", + "ccoZipCode": "80111", + "ccoPhone": "XXXXXX", + "isCcoChangedSinceLastFiling": true, + "ccoEmployers": [ + { + "ccoEmployerName": "N/A", + "ccoEmployerId": "N/A" + } + ] + } + ], + "isRegistrantSubmittedMatter": false, + "isPreviousLegalProceeding": false, + "isPreviousProceedingTerminated": false, + "isFinancialSupportDuringPeriod": false, + "isExemptionFromAct": false, + "principalUnderwriters": [ + { + "principalUnderwriterName": "Empower Financial Services, Inc.", + "principalUnderwriterFileNo": "008-33854", + "principalUnderwriterCrdNumber": "000013109", + "principalUnderwriterLei": "N/A", + "principalUnderWriterState": "CO", + "principalUnderWriterCountry": "US", + "isPrincipalUnderwriterAffiliatedWithRegistrant": true + } + ], + "isUnderwriterHiredOrTerminated": false, + "publicAccountants": [ + { + "publicAccountantName": "Deloitte & Touche LLP", + "pcaobNumber": "34", + "publicAccountantLei": "549300FJV7IV1ZHGAV28", + "publicAccountantState": "CO", + "publicAccountantCountry": "US" + } + ], + "isPublicAccountantChanged": false, + "isOpinionOffered": false, + "isMaterialChange": false, + "isAccountingPrincipleChange": false + }, + "unitInvestmentTrust": { + "depositors": [ + { + "depositorName": "Empower Life & Annuity Insurance Company of New York", + "depositorCrdNo": "N/A", + "depositorLei": "0PLSTTA4SUBLGLKEJ576", + "depositorState": "NY", + "depositorCountry": "US", + "depositorUltimateParentName": "Power Corporation of Canada" + } + ], + "uitAdmins": [ + { + "uitAdminName": "Empower Life & Annuity Insurance Company of New York", + "uitAdminLei": "0PLSTTA4SUBLGLKEJ576", + "uitAdminState": "NY", + "uitAdminCountry": "US", + "isUitAdminAffiliated": true, + "isUitAdminSubAdmin": false + } + ], + "isUitAdminHiredTerminated": false, + "registrantSeparateInsuranceAccount": { + "isRegistrantSeparateInsuranceAccount": true, + "separateAccountSeriesId": "S000050203" + }, + "numOfContracts": 20, + "contractSecurities": [ + { + "separateAccountSecurityName": "Empower SecureFoundation II Variable Annuity", + "separateAccountContractId": "C000158471", + "separateAccountTotalAsset": 1100626.28, + "numContractsSold": 0, + "grossPremiumReceived": 8.4, + "grossPremiumReceivedSection1035": 0, + "numContractsAffected": 0, + "contractValueRedeemed": 92145.22, + "contractValueRedeemedSection1035": 0, + "numContractsAffectedRedeemed": 0 + }, + { + "separateAccountSecurityName": "Empower SecureFoundation II Variable Annuity IRA", + "separateAccountContractId": "C000158472", + "separateAccountTotalAsset": 0, + "numContractsSold": 0, + "grossPremiumReceived": 0, + "grossPremiumReceivedSection1035": 0, + "numContractsAffected": 0, + "contractValueRedeemed": 0, + "contractValueRedeemedSection1035": 0, + "numContractsAffectedRedeemed": 0 + } + ], + "isRule6C7Reliance": false, + "isRule11A2Reliance": false, + "isRule12D1Dash4Reliance": false, + "isRule12D1GReliance": false + }, + "attachmentsTab": { + "isLegalProceedings": false, + "isProvisionFinancialSupport": false, + "isIPAReportInternalControl": false, + "isChangeAccPrinciples": false, + "isInfoRequiredEO": false, + "isOtherInfoRequired": false + }, + "signature": { + "registrantSignedName": "Variable Annuity-8 Series Account (of Empower Life & Annuity Insurance Co of New York)", + "signedDate": "2026-03-16", + "signature": "/s/ Elaina Ditillo", + "title": "Counsel" + } + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/form-nport.json b/examples/api-responses/form-nport.json new file mode 100644 index 0000000..45e53ca --- /dev/null +++ b/examples/api-responses/form-nport.json @@ -0,0 +1,314 @@ +{ + "total": { + "value": 10000, + "relation": "gte" + }, + "filings": [ + { + "submissionType": "NPORT-P", + "filerInfo": { + "filer": { + "issuerCredentials": { + "cik": "0001552947", + "ccc": "XXXXXXXX" + } + }, + "seriesClassInfo": { + "seriesId": "S000075330", + "classId": [ + "C000234270", + "C000234271", + "C000234272" + ] + } + }, + "genInfo": { + "regName": "Two Roads Shared Trust", + "regFileNumber": "811-22718", + "regCik": "0001552947", + "regLei": "549300REHU8QC2CK4V30", + "regStreet1": "225 PICTORIA DRIVE", + "regStreet2": "SUITE 450", + "regCity": "CINCINNATI", + "regStateConditional": { + "regCountry": "US", + "regState": "US-OH" + }, + "regZipOrPostalCode": "45246", + "regPhone": "402-895-1600", + "seriesName": "Holbrook Structured Credit Income Fund", + "seriesId": "S000075330", + "seriesLei": "549300VN9LSTDZVMEG10", + "repPdEnd": "2026-04-30", + "repPdDate": "2026-01-31", + "isFinalFiling": "N" + }, + "fundInfo": { + "totAssets": 589656494.57, + "totLiabs": 26303874.88, + "netAssets": 563352619.69, + "assetsAttrMiscSec": 0, + "assetsInvested": 0, + "amtPayOneYrBanksBorr": 0, + "amtPayOneYrCtrldComp": 0, + "amtPayOneYrOthAffil": 0, + "amtPayOneYrOther": 0, + "amtPayAftOneYrBanksBorr": 0, + "amtPayAftOneYrCtrldComp": 0, + "amtPayAftOneYrOthAffil": 0, + "amtPayAftOneYrOther": 0, + "delayDeliv": 0, + "standByCommit": 0, + "liquidPref": 0, + "cshNotRptdInCorD": 0, + "curMetrics": { + "curMetric": [ + { + "curCd": "USD", + "intrstRtRiskdv01": { + "period10Yr": 16013.864121, + "period1Yr": 11247.59154, + "period30Yr": 4288.904006, + "period3Mon": 797.324692, + "period5Yr": 73979.610662 + }, + "intrstRtRiskdv100": { + "period10Yr": 1606509.028942, + "period1Yr": 1101438.779831, + "period30Yr": 435795.28333, + "period3Mon": 82265.418559, + "period5Yr": 7395155.726345 + } + } + ] + }, + "creditSprdRiskInvstGrade": { + "period10Yr": 19059.318464, + "period1Yr": 10289.915308, + "period30Yr": 4867.597881, + "period3Mon": 130.272532, + "period5Yr": 73099.636591 + }, + "creditSprdRiskNonInvstGrade": { + "period10Yr": 1101.107886, + "period1Yr": 11563.009059, + "period30Yr": 815.163831, + "period3Mon": 17920.825732, + "period5Yr": 6039.88695 + }, + "isNonCashCollateral": "N", + "returnInfo": { + "monthlyTotReturns": { + "monthlyTotReturn": [ + { + "classId": "C000234270", + "rtn1": 0.47, + "rtn2": 0.51, + "rtn3": 0.55 + }, + { + "classId": "C000234271", + "rtn1": 0.49, + "rtn2": 0.64, + "rtn3": 0.47 + }, + { + "classId": "C000234272", + "rtn1": 0.51, + "rtn2": 0.66, + "rtn3": 0.49 + } + ] + }, + "othMon1": { + "netRealizedGain": 7903.87, + "netUnrealizedAppr": 41040.49 + }, + "othMon2": { + "netRealizedGain": 351039.84, + "netUnrealizedAppr": -303753.72 + }, + "othMon3": { + "netRealizedGain": 13348.82, + "netUnrealizedAppr": 370504.63 + } + }, + "mon1Flow": { + "redemption": 20566862.72, + "reinvestment": 2200048.38, + "sales": 29009934.75 + }, + "mon2Flow": { + "redemption": 28416519.67, + "reinvestment": 2121607.35, + "sales": 45362488.84 + }, + "mon3Flow": { + "redemption": 15947059.37, + "reinvestment": 2848443.49, + "sales": 35033302.63 + } + }, + "invstOrSecs": [ + { + "name": "A&D MORTGAGE TRUST 2023-NQM2", + "lei": "N/A", + "title": "ADMT 2023-NQM2 A1", + "cusip": "00002DAA7", + "identifiers": { + "isin": { + "value": "US00002DAA72" + } + }, + "balance": 1287717.11, + "units": "PA", + "curCd": "USD", + "valUSD": 1289380.97, + "pctVal": 0.228876360015, + "payoffProfile": "Long", + "assetCat": "ABS-O", + "issuerCat": "CORP", + "invCountry": "US", + "isRestrictedSec": "Y", + "fairValLevel": "2", + "debtSec": { + "maturityDt": "2068-05-25", + "couponKind": "Floating", + "annualizedRt": 6.131999, + "isDefault": "N", + "areIntrstPmntsInArrs": "N", + "isPaidKind": "N" + }, + "securityLending": { + "isCashCollateral": "N", + "isNonCashCollateral": "N", + "isLoanByFund": "N" + } + }, + { + "name": "A&D MORTGAGE TRUST 2025-NQM1", + "lei": "984500CE0D9FE0NM4277", + "title": "ADMT 2025-NQM5 A1", + "cusip": "00250AAC8", + "identifiers": { + "isin": { + "value": "US00250AAC80" + } + }, + "balance": 795399.76, + "units": "PA", + "curCd": "USD", + "valUSD": 800085.86, + "pctVal": 0.142022213447, + "payoffProfile": "Long", + "assetCat": "ABS-O", + "issuerCat": "CORP", + "invCountry": "US", + "isRestrictedSec": "Y", + "fairValLevel": "2", + "debtSec": { + "maturityDt": "2070-12-25", + "couponKind": "Floating", + "annualizedRt": 5.119999, + "isDefault": "N", + "areIntrstPmntsInArrs": "N", + "isPaidKind": "N" + }, + "securityLending": { + "isCashCollateral": "N", + "isNonCashCollateral": "N", + "isLoanByFund": "N" + } + }, + { + "name": "Atlas Senior Loan Fund X Ltd/Llc", + "lei": "N/A", + "title": "ATCLO 2018-10A D", + "cusip": "04942JAJ0", + "identifiers": { + "isin": { + "value": "US04942JAJ07" + } + }, + "balance": 9240000, + "units": "PA", + "curCd": "USD", + "valUSD": 9287382.72, + "pctVal": 1.648591378719, + "payoffProfile": "Long", + "assetCat": "ABS-CBDO", + "issuerCat": "CORP", + "invCountry": "KY", + "isRestrictedSec": "Y", + "fairValLevel": "2", + "debtSec": { + "maturityDt": "2031-01-15", + "couponKind": "Floating", + "annualizedRt": 6.6838, + "isDefault": "N", + "areIntrstPmntsInArrs": "N", + "isPaidKind": "N" + }, + "securityLending": { + "isCashCollateral": "N", + "isNonCashCollateral": "N", + "isLoanByFund": "N" + } + }, + { + "name": "Atlas Senior Loan Fund XII Ltd.", + "lei": "N/A", + "title": "ATCLO 2018-12A D", + "cusip": "04942UAL0", + "identifiers": { + "isin": { + "value": "US04942UAL08" + } + }, + "balance": 5000000, + "units": "PA", + "curCd": "USD", + "valUSD": 5019555, + "pctVal": 0.891014761369, + "payoffProfile": "Long", + "assetCat": "ABS-CBDO", + "issuerCat": "CORP", + "invCountry": "KY", + "isRestrictedSec": "Y", + "fairValLevel": "2", + "debtSec": { + "maturityDt": "2031-10-24", + "couponKind": "Floating", + "annualizedRt": 6.999631, + "isDefault": "N", + "areIntrstPmntsInArrs": "N", + "isPaidKind": "N" + }, + "securityLending": { + "isCashCollateral": "N", + "isNonCashCollateral": "N", + "isLoanByFund": "N" + } + } + ], + "explntrNotes": { + "explntrNote": [ + { + "note": "Returns are reported without deducting sales loads and redemption fees, if any.", + "noteItem": "B.5.a" + } + ] + }, + "signature": { + "dateSigned": "2026-02-27", + "nameOfApplicant": "Two Roads Shared Trust", + "signature": "Laura Szalyga", + "signerName": "Laura Szalyga", + "title": "Treasurer" + }, + "accessionNo": "0000910472-26-005164", + "filedAt": "2026-03-31T18:33:58-04:00", + "id": "1c5bc84d9ba331b75060ca605cf257f2" + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/form-npx-metadata.json b/examples/api-responses/form-npx-metadata.json new file mode 100644 index 0000000..93634d4 --- /dev/null +++ b/examples/api-responses/form-npx-metadata.json @@ -0,0 +1,70 @@ +{ + "total": { + "value": 2, + "relation": "eq" + }, + "data": [ + { + "id": "723cc6d725f186bd4436136332d7fc98", + "accessionNo": "0001021408-25-003152", + "formType": "N-PX", + "filedAt": "2025-08-25T14:01:44-04:00", + "periodOfReport": "2025-06-30", + "cik": "884546", + "ticker": "", + "companyName": "CHARLES SCHWAB INVESTMENT MANAGEMENT INC", + "proxyVotingRecordsAttached": true, + "headerData": { + "submissionType": "N-PX", + "filerInfo": { + "registrantType": "IM", + "filer": { + "issuerCredentials": { + "cik": "0000884546" + } + }, + "flags": { + "overrideInternetFlag": false, + "confirmingCopyFlag": false + }, + "periodOfReport": "06/30/2025" + } + }, + "formData": { + "coverPage": { + "yearOrQuarter": "YEAR", + "reportCalendarYear": "2025", + "reportingPerson": { + "name": "Charles Schwab Investment Management Inc", + "phoneNumber": "4156677000", + "address": { + "street1": "211 Main Street", + "city": "San Francisco", + "stateOrCountry": "CA", + "zipCode": "94105" + } + }, + "agentForService": {}, + "reportInfo": { + "reportType": "INSTITUTIONAL MANAGER VOTING REPORT", + "confidentialTreatment": false + }, + "fileNumber": "028-03128", + "explanatoryInformation": { + "explanatoryChoice": false + } + }, + "summaryPage": { + "otherIncludedManagersCount": 0 + }, + "signaturePage": { + "reportingPerson": "Charles Schwab Investment Management Inc", + "txSignature": "Omar Aguilar", + "txPrintedSignature": "Omar Aguilar", + "txTitle": "Chief Executive Officer", + "txAsOfDate": "08/20/2025" + } + } + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/form-npx-voting-records.json b/examples/api-responses/form-npx-voting-records.json new file mode 100644 index 0000000..b03e840 --- /dev/null +++ b/examples/api-responses/form-npx-voting-records.json @@ -0,0 +1,89 @@ +{ + "id": "723cc6d725f186bd4436136332d7fc98", + "accessionNo": "0001021408-25-003152", + "formType": "N-PX", + "filedAt": "2025-08-25T14:01:44-04:00", + "periodOfReport": "2025-06-30", + "cik": "884546", + "ticker": "", + "companyName": "CHARLES SCHWAB INVESTMENT MANAGEMENT INC", + "proxyVotingRecordsAttached": true, + "headerData": { + "submissionType": "N-PX", + "filerInfo": { + "registrantType": "IM", + "filer": { + "issuerCredentials": { + "cik": "0000884546" + } + }, + "flags": { + "overrideInternetFlag": false, + "confirmingCopyFlag": false + }, + "periodOfReport": "06/30/2025" + } + }, + "formData": { + "coverPage": { + "yearOrQuarter": "YEAR", + "reportCalendarYear": "2025", + "reportingPerson": { + "name": "Charles Schwab Investment Management Inc", + "phoneNumber": "4156677000", + "address": { + "street1": "211 Main Street", + "city": "San Francisco", + "stateOrCountry": "CA", + "zipCode": "94105" + } + }, + "agentForService": {}, + "reportInfo": { + "reportType": "INSTITUTIONAL MANAGER VOTING REPORT", + "confidentialTreatment": false + }, + "fileNumber": "028-03128", + "explanatoryInformation": { + "explanatoryChoice": false + } + }, + "summaryPage": { + "otherIncludedManagersCount": 0 + }, + "signaturePage": { + "reportingPerson": "Charles Schwab Investment Management Inc", + "txSignature": "Omar Aguilar", + "txPrintedSignature": "Omar Aguilar", + "txTitle": "Chief Executive Officer", + "txAsOfDate": "08/20/2025" + } + }, + "proxyVotingRecords": [ + { + "issuerName": "10x Genomics, Inc.", + "cusip": "88025U109", + "meetingDate": "06/03/2025", + "voteDescription": "To approve, on a non-binding, advisory basis, the compensation of our named executive officers.", + "voteCategories": { + "voteCategory": [ + { + "categoryType": "SECTION 14A SAY-ON-PAY VOTES" + } + ] + }, + "voteSource": "ISSUER", + "sharesVoted": 653315, + "sharesOnLoan": 0, + "vote": { + "voteRecord": [ + { + "howVoted": "AGAINST", + "sharesVoted": 653315, + "managementRecommendation": "AGAINST" + } + ] + } + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/form-s1-424b4.json b/examples/api-responses/form-s1-424b4.json new file mode 100644 index 0000000..928d963 --- /dev/null +++ b/examples/api-responses/form-s1-424b4.json @@ -0,0 +1,157 @@ +{ + "total": { + "value": 5, + "relation": "eq" + }, + "data": [ + { + "id": "f838c5f9775441d7aa3b04e087e0e469", + "filedAt": "2021-11-12T17:00:47-05:00", + "accessionNo": "0001193125-21-328239", + "formType": "424B4", + "cik": "1874178", + "ticker": "RIVN", + "entityName": "Rivian Automotive, Inc. / DE", + "filingUrl": "https://www.sec.gov/Archives/edgar/data/1874178/000119312521328239/d157488d424b4.htm", + "tickers": [ + { + "ticker": "RIVN", + "type": "Class A Common Stock", + "exchange": "Nasdaq" + } + ], + "securities": [ + { + "name": "153,000,000 Shares Class A Common Stock" + }, + { + "name": "Class B common stock" + } + ], + "publicOfferingPrice": { + "perShare": 78, + "perShareText": "$78.0000", + "total": 11934000000, + "totalText": "$11,934,000,000" + }, + "underwritingDiscount": { + "perShare": 1.1098, + "perShareText": "$1.1098", + "total": 169799400, + "totalText": "$169,799,400" + }, + "proceedsBeforeExpenses": { + "perShare": 76.8902, + "perShareText": "$76.8902", + "total": 11764200600, + "totalText": "$11,764,200,600" + }, + "underwriters": [ + { + "name": "Morgan Stanley & Co. LLC" + }, + { + "name": "Goldman Sachs & Co. LLC" + }, + { + "name": "J.P. Morgan Securities LLC" + }, + { + "name": "Barclays Capital Inc." + }, + { + "name": "Deutsche Bank Securities Inc." + }, + { + "name": "Allen & Company LLC" + }, + { + "name": "BofA Securities, Inc." + }, + { + "name": "Mizuho Securities USA LLC" + }, + { + "name": "Wells Fargo Securities, LLC" + }, + { + "name": "Nomura Securities International, Inc." + }, + { + "name": "Piper Sandler & Co." + }, + { + "name": "RBC Capital Markets, LLC" + }, + { + "name": "Robert W. Baird & Co. Incorporated" + }, + { + "name": "Wedbush Securities Inc." + }, + { + "name": "Academy Securities, Inc." + }, + { + "name": "Blaylock Van, LLC" + }, + { + "name": "Cabrera Capital Markets LLC" + }, + { + "name": "C.L. King & Associates, Inc." + }, + { + "name": "Loop Capital Markets LLC" + }, + { + "name": "Samuel A. Ramirez & Company, Inc." + }, + { + "name": "Siebert Williams Shank & Co., LLC" + }, + { + "name": "Tigress Financial Partners, LLC" + } + ], + "lawFirms": [ + { + "name": "Latham & Watkins LLP", + "location": "" + }, + { + "name": "Skadden, Arps, Slate, Meagher & Flom LLP", + "location": "" + } + ], + "auditors": [ + { + "name": "KPMG LLP" + } + ], + "management": [ + { + "name": "Robert J. Scaringe", + "age": 38, + "position": "Founder and Chief Executive Officer, Chairman of the Board of Directors" + }, + { + "name": "Claire McDonough", + "age": 40, + "position": "Chief Financial Officer" + }, + { + "name": "Jiten Behl", + "age": 39, + "position": "Chief Growth Officer" + } + ], + "employees": { + "total": 9195, + "asOfDate": "2021-10-31", + "perDivision": [], + "perRegion": [] + } + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/full-text-search.json b/examples/api-responses/full-text-search.json new file mode 100644 index 0000000..93856ec --- /dev/null +++ b/examples/api-responses/full-text-search.json @@ -0,0 +1,41 @@ +{ + "total": { + "value": 3, + "relation": "eq" + }, + "filings": [ + { + "accessionNo": "0001104659-21-080527", + "cik": "1535955", + "companyNameLong": "Lipocine Inc. (LPCN) (CIK 0001535955)", + "ticker": "LPCN", + "description": "EXHIBIT 99.1", + "formType": "8-K", + "type": "EX-99.1", + "filingUrl": "https://www.sec.gov/Archives/edgar/data/1535955/000110465921080527/tm2119438d1_ex99-1.htm", + "filedAt": "2021-06-14" + }, + { + "accessionNo": "0001104659-21-080525", + "cik": "1535955", + "companyNameLong": "Lipocine Inc. (LPCN) (CIK 0001535955)", + "ticker": "LPCN", + "description": "EXHIBIT 99.1", + "formType": "8-K", + "type": "EX-99.1", + "filingUrl": "https://www.sec.gov/Archives/edgar/data/1535955/000110465921080525/tm2119156d1_ex99-1.htm", + "filedAt": "2021-06-14" + }, + { + "accessionNo": "0001104659-21-080527", + "cik": "1535955", + "companyNameLong": "Lipocine Inc. (LPCN) (CIK 0001535955)", + "ticker": "LPCN", + "description": "FORM 8-K", + "formType": "8-K", + "type": "8-K", + "filingUrl": "https://www.sec.gov/Archives/edgar/data/1535955/000110465921080527/tm2119438d1_8k.htm", + "filedAt": "2021-06-14" + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/insider-trading-form3.json b/examples/api-responses/insider-trading-form3.json new file mode 100644 index 0000000..b85958a --- /dev/null +++ b/examples/api-responses/insider-trading-form3.json @@ -0,0 +1,53 @@ +{ + "total": { + "value": 10000, + "relation": "gte" + }, + "transactions": [ + { + "id": "9ec6b4513d930d643aa7bd45821be7ab", + "accessionNo": "0001975035-26-000012", + "filedAt": "2026-04-01T08:46:43-04:00", + "schemaVersion": "X0607", + "documentType": "3", + "periodOfReport": "2026-03-31", + "notSubjectToSection16": false, + "issuer": { + "cik": "1653242", + "name": "Bank of N.T. Butterfield & Son Ltd", + "tradingSymbol": "NTB" + }, + "reportingOwner": { + "cik": "2120720", + "name": "Henton Andrew Michael", + "address": { + "street1": "59 FRONT STREET", + "city": "HAMILTON", + "zipCode": "HM 12" + }, + "relationship": { + "isDirector": true, + "isOfficer": false, + "isTenPercentOwner": false, + "isOther": false + } + }, + "nonDerivativeTable": { + "holdings": [ + { + "securityTitle": "Bank of N.T. Butterfield & Son Ltd", + "coding": {}, + "postTransactionAmounts": { + "sharesOwnedFollowingTransaction": 667 + }, + "ownershipNature": { + "directOrIndirectOwnership": "D" + } + } + ] + }, + "ownerSignatureName": "Tara Hidalgo, by power of attorney for Andr", + "ownerSignatureNameDate": "2026-04-01" + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/insider-trading-form5.json b/examples/api-responses/insider-trading-form5.json new file mode 100644 index 0000000..47afcac --- /dev/null +++ b/examples/api-responses/insider-trading-form5.json @@ -0,0 +1,75 @@ +{ + "total": { + "value": 10000, + "relation": "gte" + }, + "transactions": [ + { + "id": "00101d987e5fd4e6d2bdcd1d9c17b170", + "accessionNo": "0001213900-26-031111", + "filedAt": "2026-03-18T18:49:54-04:00", + "schemaVersion": "X0609", + "documentType": "5", + "periodOfReport": "2025-12-28", + "notSubjectToSection16": false, + "issuer": { + "cik": "1838987", + "name": "SunPower Inc.", + "tradingSymbol": "SPWR" + }, + "reportingOwner": { + "cik": "1253573", + "name": "MAIER LOTHAR", + "address": { + "street1": "C/O SUNPOWER INC.", + "street2": "45600 NORTHPORT LOOP EAST", + "city": "FREMONT", + "state": "CA", + "zipCode": "94538" + }, + "relationship": { + "isDirector": true, + "isOfficer": false, + "isTenPercentOwner": false, + "isOther": false + } + }, + "nonDerivativeTable": { + "transactions": [ + { + "securityTitle": "Common Stock", + "transactionDate": "2025-05-23", + "coding": { + "formType": "4", + "code": "A", + "equitySwapInvolved": false + }, + "timeliness": "L", + "amounts": { + "shares": 243169, + "pricePerShare": 0, + "pricePerShareFootnoteId": [ + "F1" + ], + "acquiredDisposedCode": "A" + }, + "postTransactionAmounts": { + "sharesOwnedFollowingTransaction": 243169 + }, + "ownershipNature": { + "directOrIndirectOwnership": "D" + } + } + ] + }, + "footnotes": [ + { + "id": "F1", + "text": "On May 23, 2025, the Company granted the Reporting Person 243,169 restricted stock units pursuant to the Company's 2023 Equity Incentive Plan, as amended (the \"Plan\"), each of which fully vested into one share of common stock on the grant date, subject to the terms and conditions of the Plan." + } + ], + "ownerSignatureName": "/s/ Lothar Maier", + "ownerSignatureNameDate": "2026-03-17" + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/insider-trading.json b/examples/api-responses/insider-trading.json new file mode 100644 index 0000000..e8d0b8b --- /dev/null +++ b/examples/api-responses/insider-trading.json @@ -0,0 +1,168 @@ +{ + "total": { + "value": 837, + "relation": "eq" + }, + "transactions": [ + { + "id": "b5e3ff9eca7a16f1b7fef6aef6767fbc", + "accessionNo": "0001104659-26-025379", + "filedAt": "2026-03-09T19:00:14-04:00", + "schemaVersion": "X0508", + "documentType": "4", + "periodOfReport": "2026-03-05", + "notSubjectToSection16": false, + "issuer": { + "cik": "1318605", + "name": "Tesla, Inc.", + "tradingSymbol": "TSLA" + }, + "reportingOwner": { + "cik": "1771340", + "name": "Taneja Vaibhav", + "address": { + "street1": "C/O TESLA, INC.", + "street2": "1 TESLA ROAD", + "city": "AUSTIN", + "state": "TX", + "zipCode": "78725" + }, + "relationship": { + "isDirector": false, + "isOfficer": true, + "officerTitle": "Chief Financial Officer", + "isTenPercentOwner": false, + "isOther": false + } + }, + "nonDerivativeTable": { + "transactions": [ + { + "securityTitle": "Common Stock", + "transactionDate": "2026-03-05", + "coding": { + "formType": "4", + "code": "M", + "equitySwapInvolved": false, + "footnoteId": [ + "F1" + ] + }, + "amounts": { + "shares": 6538, + "pricePerShare": 0, + "acquiredDisposedCode": "A" + }, + "postTransactionAmounts": { + "sharesOwnedFollowingTransaction": 20371, + "sharesOwnedFollowingTransactionFootnoteId": [ + "F2" + ] + }, + "ownershipNature": { + "directOrIndirectOwnership": "D" + } + }, + { + "securityTitle": "Common Stock", + "transactionDate": "2026-03-06", + "coding": { + "formType": "4", + "code": "S", + "equitySwapInvolved": false, + "footnoteId": [ + "F3" + ] + }, + "amounts": { + "shares": 2264.5, + "pricePerShare": 397.031, + "acquiredDisposedCode": "D" + }, + "postTransactionAmounts": { + "sharesOwnedFollowingTransaction": 18106.5 + }, + "ownershipNature": { + "directOrIndirectOwnership": "D" + } + } + ], + "holdings": [ + { + "securityTitle": "Common Stock", + "coding": {}, + "postTransactionAmounts": { + "sharesOwnedFollowingTransaction": 111000 + }, + "ownershipNature": { + "directOrIndirectOwnership": "I", + "natureOfOwnership": "See Footnote", + "natureOfOwnershipFootnoteId": [ + "F4" + ] + } + } + ] + }, + "derivativeTable": { + "transactions": [ + { + "securityTitle": "Restricted Stock Unit", + "conversionOrExercisePrice": 0, + "transactionDate": "2026-03-05", + "coding": { + "formType": "4", + "code": "M", + "equitySwapInvolved": false + }, + "exerciseDateFootnoteId": [ + "F5" + ], + "expirationDateFootnoteId": [ + "F5" + ], + "underlyingSecurity": { + "title": "Common Stock", + "shares": 6538 + }, + "amounts": { + "shares": 6538, + "pricePerShare": 0, + "acquiredDisposedCode": "D" + }, + "postTransactionAmounts": { + "sharesOwnedFollowingTransaction": 65382 + }, + "ownershipNature": { + "directOrIndirectOwnership": "D" + } + } + ] + }, + "footnotes": [ + { + "id": "F1", + "text": "Shares of the Issuer's common stock were issued to the reporting person upon the vesting of restricted stock units on March 5, 2026." + }, + { + "id": "F2", + "text": "The amount of securities beneficially owned includes 76 shares acquired on February 27, 2026, under the Tesla, Inc. Employee Stock Purchase Plan." + }, + { + "id": "F3", + "text": "PURSUANT TO THE ISSUER'S EQUITY PLAN AND POLICIES, THESE SHARES OF COMMON STOCK WERE AUTOMATICALLY WITHHELD AND SOLD BY THE ISSUER TO SATISFY THE REPORTING PERSON'S TAX WITHHOLDING OBLIGATIONS RELATED TO THE VESTING OF RESTRICTED STOCK UNITS REPORTED HEREIN." + }, + { + "id": "F4", + "text": "55,500 shares are held directly by the reporting person in GRATs, for which the reporting person is a trustee, and 55,500 shares are held directly by the spouse of the reporting person in GRATs, for which the spouse of the reporting person is a trustee." + }, + { + "id": "F5", + "text": "1/16 of the total restricted stock units initially subject to this award vested on December 5, 2024 and 1/16th of the total units initially subject to this award vest every quarter thereafter, so that all such shares subject to this award will be fully vested on September 5, 2028." + } + ], + "ownerSignatureName": "By: Aaron Beckman, Power of Attorney For: Vaibhav Taneja", + "ownerSignatureNameDate": "2026-03-09" + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/mapping.json b/examples/api-responses/mapping.json new file mode 100644 index 0000000..03ffa78 --- /dev/null +++ b/examples/api-responses/mapping.json @@ -0,0 +1,21 @@ +[ + { + "name": "TESLA INC", + "ticker": "TSLA", + "cik": "1318605", + "cusip": "88160R101", + "exchange": "NASDAQ", + "isDelisted": false, + "category": "Domestic Common Stock", + "sector": "Consumer Cyclical", + "industry": "Auto Manufacturers", + "sic": "3711", + "sicSector": "Manufacturing", + "sicIndustry": "Motor Vehicles & Passenger Car Bodies", + "famaSector": "", + "famaIndustry": "Automobiles and Trucks", + "currency": "USD", + "location": "California; U.S.A", + "id": "eaeafc4ffc04a49da153adebf1f6960a" + } +] \ No newline at end of file diff --git a/examples/api-responses/reg-a-form-1a.json b/examples/api-responses/reg-a-form-1a.json new file mode 100644 index 0000000..e37470d --- /dev/null +++ b/examples/api-responses/reg-a-form-1a.json @@ -0,0 +1,130 @@ +{ + "total": { + "value": 1954, + "relation": "eq" + }, + "data": [ + { + "id": "3049ff20a7a655422f33f02c192c75bf", + "accessionNo": "0001493152-26-012984", + "fileNo": "024-12729", + "formType": "1-A", + "filedAt": "2026-03-26T17:11:42-04:00", + "cik": "1587603", + "ticker": "", + "companyName": "WINNERS, INC.", + "employeesInfo": [ + { + "issuerName": "Winners, Inc.", + "jurisdictionOrganization": "NV", + "yearIncorporation": "2007", + "cik": "0001587603", + "sicCode": 7990, + "irsNum": "26-0764832", + "fullTimeEmployees": 0, + "partTimeEmployees": 2 + } + ], + "issuerInfo": { + "street1": "401 RYLAND STREET", + "street2": "SUITE 200-A", + "city": "RENO", + "stateOrCountry": "NV", + "zipCode": "89502", + "phoneNumber": "917-767-0075", + "connectionName": "Jim Byrd", + "industryGroup": "Other", + "cashEquivalents": 537, + "investmentSecurities": 0, + "accountsReceivable": 200000, + "propertyPlantEquipment": 0, + "totalAssets": 475537, + "accountsPayable": 483052, + "longTermDebt": 355718, + "totalLiabilities": 838770, + "totalStockholderEquity": -363233, + "totalLiabilitiesAndEquity": 475537, + "totalRevenues": 495, + "costAndExpensesApplToRevenues": 0, + "depreciationAndAmortization": 0, + "netIncome": -978989, + "earningsPerShareBasic": 0, + "earningsPerShareDiluted": 0 + }, + "commonEquity": [ + { + "commonEquityClassName": "Common", + "outstandingCommonEquity": 53115625, + "commonCusipEquity": "97478A304", + "publiclyTradedCommonEquity": "OTCID" + } + ], + "preferredEquity": [ + { + "preferredEquityClassName": "Series A Preferred", + "outstandingPreferredEquity": 0, + "preferredCusipEquity": "000000000", + "publiclyTradedPreferredEquity": "NA" + } + ], + "debtSecurities": [ + { + "debtSecuritiesClassName": "NA", + "outstandingDebtSecurities": 0, + "cusipDebtSecurities": "000000000", + "publiclyTradedDebtSecurities": "NA" + } + ], + "issuerEligibility": { + "certifyIfTrue": true + }, + "applicationRule262": { + "certifyIfNotDisqualified": true + }, + "summaryInfo": { + "indicateTier1Tier2Offering": "Tier1", + "financialStatementAuditStatus": "Unaudited", + "securitiesOfferedTypes": [ + "Equity (common or preferred stock)" + ], + "offerDelayedContinuousFlag": true, + "offeringYearFlag": false, + "offeringAfterQualifFlag": false, + "offeringBestEffortsFlag": true, + "solicitationProposedOfferingFlag": false, + "resaleSecuritiesAffiliatesFlag": false, + "securitiesOffered": 10000000, + "outstandingSecurities": 53115625, + "pricePerSecurity": 0.5, + "issuerAggregateOffering": 5000000, + "securityHolderAggegate": 0, + "qualificationOfferingAggregate": 0, + "concurrentOfferingAggregate": 0, + "totalAggregateOffering": 5000000, + "legalServiceProviderName": "James S. Byrd, P.A.", + "legalFees": 115000, + "estimatedNetAmount": 4885000, + "clarificationResponses": "In payment for legal fees related to this Offering, the Company will issue 200,000 shares of stock to James S. Byrd, P.A., at the price of $.50 per share, under this Regulation A Offering once qualified." + }, + "juridictionSecuritiesOffered": { + "jurisdictionsOfSecOfferedNone": true, + "issueJuridicationSecuritiesOffering": [ + "FL", + "NY" + ] + }, + "securitiesIssued": [ + { + "securitiesIssuerName": "Winners, Inc.", + "securitiesIssuerTitle": "Series A Convertible Preferred Stock", + "securitiesIssuedTotalAmount": 149346690, + "securitiesPrincipalHolderAmount": 0, + "securitiesIssuedAggregateAmount": "$1,345,935 valued at $0.10 per share for settlement of monies owed; 12,490,000 Shares of MoneyLine Sports, Inc. plus $200,000.00 as part of September 30, 2025 Reorganization and Stock Purchase Agreement." + } + ], + "unregisteredSecuritiesAct": { + "securitiesActExcemption": "15 U.S.C. s. 77d(a)(2); Regulation D 506(b)" + } + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/reg-a-form-1k.json b/examples/api-responses/reg-a-form-1k.json new file mode 100644 index 0000000..658b62a --- /dev/null +++ b/examples/api-responses/reg-a-form-1k.json @@ -0,0 +1,73 @@ +{ + "total": { + "value": 4, + "relation": "eq" + }, + "data": [ + { + "id": "9e7259d5bfcc20d7bdf19c7037ab1186", + "accessionNo": "0001493152-25-009865", + "fileNo": "24R-00472", + "formType": "1-K", + "filedAt": "2025-03-11T16:38:05-04:00", + "periodOfReport": "2024-12-31", + "cik": "1786471", + "ticker": "", + "companyName": "Aptera Motors Corp", + "item1": { + "formIndication": "Annual Report", + "fiscalYearEnd": "12-31-2024", + "street1": "5818 El Camino Real", + "city": "Carlsbad", + "stateOrCountry": "CA", + "zipCode": "92008", + "phoneNumber": "858-371-3151", + "issuedSecuritiesTitle": [ + "Class B Common Stock" + ] + }, + "item1Info": [ + { + "issuerName": "Aptera Motors Corp.", + "cik": "0001786471", + "jurisdictionOrganization": "DE", + "irsNum": "83-4079594" + } + ], + "item2": { + "regArule257": false + }, + "summaryInfo": [ + { + "commissionFileNumber": "024-11479", + "offeringQualificationDate": "05-19-2021", + "offeringCommenceDate": "05-19-2021", + "qualifiedSecuritiesSold": 14000000, + "offeringSecuritiesSold": 12630689, + "pricePerSecurity": 8.02, + "aggregrateOfferingPrice": 101297126, + "aggregrateOfferingPriceHolders": 0, + "underwrittenSpName": [ + "Dalmore Group, LLC / OpenDeal Broker LLC" + ], + "underwriterFees": 1012971, + "auditorSpName": [ + "dbbMcKennon" + ], + "auditorFees": 150000, + "legalSpName": [ + "CrowdCheck Law LLP/ Sheppard Mullin" + ], + "legalFees": 90000, + "blueSkySpName": [ + "Various State Fees" + ], + "blueSkyFees": 80000, + "crdNumberBrokerDealer": "000136352", + "issuerNetProceeds": 99964154, + "clarificationResponses": "The offering was open for three years. The amounts in this form reflect all three years. Price per security is the avg price over the period." + } + ] + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/reg-a-form-1z.json b/examples/api-responses/reg-a-form-1z.json new file mode 100644 index 0000000..6ce7c84 --- /dev/null +++ b/examples/api-responses/reg-a-form-1z.json @@ -0,0 +1,68 @@ +{ + "total": { + "value": 361, + "relation": "eq" + }, + "data": [ + { + "id": "9b9dfa9d1532fbe9150cea549881f0cc", + "accessionNo": "0001683168-26-002068", + "fileNo": "024-12157", + "formType": "1-Z/A", + "filedAt": "2026-03-23T06:02:42-04:00", + "cik": "1585380", + "ticker": "INKW", + "companyName": "Greene Concepts, Inc", + "item1": { + "issuerName": "Greene Concepts, Inc.", + "street1": "13195 U.S. Highway 221 N", + "city": "Marion", + "stateOrCountry": "NC", + "zipCode": "28752", + "phone": "844-889-2837", + "commissionFileNumber": [ + "024-12157" + ] + }, + "summaryInfoOffering": [ + { + "offeringQualificationDate": "04-03-2023", + "offeringCommenceDate": "04-03-2023", + "offeringSecuritiesQualifiedSold": 4500000000, + "offeringSecuritiesSold": 3047136365, + "pricePerSecurity": 0.0006, + "portionSecuritiesSoldIssuer": 1972001, + "portionSecuritiesSoldSecurityholders": 0, + "legalSpName": [ + "Donnell Suares/Newlan Law Firm, PLLC" + ], + "legalFees": 37500, + "blueSkySpName": [ + "State Regulators" + ], + "blueSkyFees": 2500, + "issuerNetProceeds": 1932001 + } + ], + "certificationSuspension": [ + { + "securitiesClassTitle": "Common Stock", + "certificationFileNumber": [ + "024-12157" + ], + "approxRecordHolders": 5050 + } + ], + "signatureTab": [ + { + "cik": "0001585380", + "regulationIssuerName1": "Greene Concepts, Inc.", + "regulationIssuerName2": "Greene Concepts, Inc.", + "signatureBy": "/s/ Leonard Greene", + "date": "03-23-2026", + "title": "Chief Executive Officer" + } + ] + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/reg-a-search.json b/examples/api-responses/reg-a-search.json new file mode 100644 index 0000000..0cc3b13 --- /dev/null +++ b/examples/api-responses/reg-a-search.json @@ -0,0 +1,90 @@ +{ + "total": { + "value": 1419, + "relation": "eq" + }, + "data": [ + { + "id": "af09549e0cb0775585c3481d61f8e471", + "accessionNo": "0001829126-24-008673", + "fileNo": "24R-00889", + "formType": "1-Z", + "filedAt": "2024-12-31T17:27:40-05:00", + "cik": "1973742", + "ticker": "", + "companyName": "Worldwide Stages, Inc.", + "item1": { + "issuerName": "Worldwide Stages, Inc.", + "street1": "5000 Northfield Lane", + "city": "Spring Hill", + "stateOrCountry": "TN", + "zipCode": "37174", + "phone": "615-341-5900", + "commissionFileNumber": [ + "024-12301" + ] + }, + "summaryInfoOffering": [ + { + "offeringQualificationDate": "08-10-2023", + "offeringCommenceDate": "08-10-2023", + "offeringSecuritiesQualifiedSold": 7500000, + "offeringSecuritiesSold": 3870, + "pricePerSecurity": 10, + "portionSecuritiesSoldIssuer": 30960, + "portionSecuritiesSoldSecurityholders": 7740, + "underwrittenSpName": [ + "-" + ], + "underwriterFees": 0, + "salesCommissionsSpName": [ + "Dalmore Group, LLC" + ], + "salesCommissionsFee": 387, + "findersSpName": [ + "-" + ], + "findersFees": 0, + "auditorSpName": [ + "Fruci & Associates II, PLLC" + ], + "auditorFees": 40000, + "legalSpName": [ + "Nelson Mullins Riley & Scarborough" + ], + "legalFees": 132500, + "promoterSpName": [ + "-" + ], + "promotersFees": 0, + "blueSkySpName": [ + "Guarrd, Inc." + ], + "blueSkyFees": 4750, + "crdNumberBrokerDealer": "000154559", + "issuerNetProceeds": 25900.4, + "clarificationResponses": "Net proceeds represents amount received by issuer ($30,960) after subtracting its share of commissions ($309.60) and blue sky compliance costs ($4,750)." + } + ], + "certificationSuspension": [ + { + "securitiesClassTitle": "Class B Common Stock", + "certificationFileNumber": [ + "024-12301" + ], + "approxRecordHolders": 15 + } + ], + "signatureTab": [ + { + "cik": "0001973742", + "regulationIssuerName1": "Worldwide Stages, Inc.", + "regulationIssuerName2": "Worldwide Stages, Inc.", + "signatureBy": "/s/ Kelly Frey, Sr.", + "date": "12-31-2024", + "title": "Chief Executive Officer" + } + ] + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/sec-administrative-proceedings.json b/examples/api-responses/sec-administrative-proceedings.json new file mode 100644 index 0000000..1c5a547 --- /dev/null +++ b/examples/api-responses/sec-administrative-proceedings.json @@ -0,0 +1,78 @@ +{ + "total": { + "value": 711, + "relation": "eq" + }, + "data": [ + { + "id": "0ab80b58b2fcf40e7497aa0000759a37", + "releasedAt": "2024-12-31T12:19:45-05:00", + "releaseNo": [ + "34-102060", + "AAER-4554" + ], + "fileNumbers": [ + "3-22386" + ], + "respondents": [ + { + "name": "Accell Audit & Compliance, PA", + "type": "company", + "role": "respondent" + } + ], + "respondentsText": "Accell Audit & Compliance, PA", + "resources": [ + { + "label": "primary", + "url": "https://www.sec.gov/files/litigation/admin/2024/34-102060.pdf" + } + ], + "title": "ORDER INSTITUTING PUBLIC ADMINISTRATIVE PROCEEDINGS PURSUANT TO RULE 102(e) OF THE COMMISSION’S RULES OF PRACTICE, MAKING FINDINGS, AND IMPOSING REMEDIAL SANCTIONS", + "summary": "The SEC has instituted public administrative proceedings against Accell Audit & Compliance, PA, resulting in its suspension from appearing or practicing before the Commission due to its involvement in fraudulent financial reporting with Ignite International Brands, Ltd.", + "tags": [ + "fraudulent financial reporting", + "accounting misconduct" + ], + "entities": [ + { + "name": "Accell Audit & Compliance, PA", + "type": "company", + "role": "respondent" + }, + { + "name": "Ignite International Brands, Ltd.", + "type": "company", + "role": "related party" + } + ], + "complaints": [ + "Accell failed to exercise due professional care or skepticism, or to otherwise obtain sufficient appropriate audit evidence for a significant, unusual sale to an Ignite-related party that purportedly took place on the last day of the 2020 fiscal year, but in fact did not occur during the reporting period.", + "Accell staff knew about, but failed to address, inconsistencies and contradictory evidence, and misrepresented the timing and facts of the supposed sale to its Engagement Quality Control Reviewer.", + "Accell issued an unqualified audit opinion on Ignite’s 2020 financial statements, falsely stating its opinion that the statements 'present fairly, in all material respects, the financial position of the company' as of December 31, 2020.", + "Accell’s actions aided and abetted Ignite’s fraudulent financial reporting." + ], + "parallelActionsTakenBy": [], + "hasAgreedToSettlement": true, + "hasAgreedToPayPenalty": true, + "penaltyAmounts": [ + { + "penaltyAmount": "75000", + "penaltyAmountText": "$75,000", + "imposedOn": "Accell Audit & Compliance, PA" + } + ], + "requestedRelief": [], + "violatedSections": [ + "Section 10(b) of the Exchange Act", + "Rule 10b-5" + ], + "orders": [ + "Accell is suspended from appearing or practicing before the Commission as an accountant." + ], + "investigationConductedBy": [], + "litigationLedBy": [], + "otherAgenciesInvolved": [] + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/sec-enforcement-actions.json b/examples/api-responses/sec-enforcement-actions.json new file mode 100644 index 0000000..1f50b84 --- /dev/null +++ b/examples/api-responses/sec-enforcement-actions.json @@ -0,0 +1,84 @@ +{ + "total": { + "value": 137, + "relation": "eq" + }, + "data": [ + { + "id": "7efc54567587f7930a3e3c1919b5ed8e", + "releaseNo": "2024-212", + "releasedAt": "2024-12-20T17:25:11-05:00", + "url": "https://www.sec.gov/newsroom/press-releases/2024-212", + "title": "Tai Mo Shan to Pay $123 Million for Negligently Misleading Investors About Stability of Terra USD", + "resources": [ + { + "label": "SEC Order", + "url": "https://www.sec.gov/files/litigation/admin/2024/33-11349.pdf" + } + ], + "summary": "The SEC charged Tai Mo Shan Limited with misleading investors about the stability of Terra USD and acting as a statutory underwriter for LUNA crypto assets, resulting in a $123 million settlement.", + "tags": [ + "disclosure fraud", + "crypto", + "unregistered securities" + ], + "entities": [ + { + "name": "Tai Mo Shan Limited", + "type": "company", + "role": "defendant" + }, + { + "name": "Terraform Labs PTE Ltd.", + "type": "company", + "role": "other" + }, + { + "name": "Do Kwon", + "type": "individual", + "role": "other" + } + ], + "complaints": [ + "Tai Mo Shan misled investors about the stability of Terra USD.", + "Tai Mo Shan acted as a statutory underwriter in distributing LUNA crypto assets." + ], + "parallelActionsTakenBy": [], + "hasAgreedToSettlement": true, + "hasAgreedToPayPenalty": true, + "penaltyAmounts": [ + { + "penaltyAmount": "73452756", + "penaltyAmountText": "$73,452,756", + "imposedOn": "Tai Mo Shan Limited" + }, + { + "penaltyAmount": "12916153", + "penaltyAmountText": "$12,916,153", + "imposedOn": "Tai Mo Shan Limited" + }, + { + "penaltyAmount": "36726378", + "penaltyAmountText": "$36,726,378", + "imposedOn": "Tai Mo Shan Limited" + } + ], + "requestedRelief": [ + "disgorgement of profits", + "prejudgment interest", + "civil penalties", + "cease and desist from violations" + ], + "violatedSections": [ + "registration and fraud provisions" + ], + "investigationConductedBy": [ + "Liz Canizares", + "Derek Kleinmann", + "Daniel Sinnreich" + ], + "litigationLedBy": [], + "otherAgenciesInvolved": [] + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/sec-litigation-releases.json b/examples/api-responses/sec-litigation-releases.json new file mode 100644 index 0000000..0b3967e --- /dev/null +++ b/examples/api-responses/sec-litigation-releases.json @@ -0,0 +1,118 @@ +{ + "total": { + "value": 288, + "relation": "eq" + }, + "data": [ + { + "id": "d459bd679554a02194c7c5f272f138fa", + "releaseNo": "LR-26206", + "releasedAt": "2024-12-31T01:53:13-05:00", + "url": "https://www.sec.gov/enforcement-litigation/litigation-releases/lr-26206", + "title": "Dale B. Chappell, et al.", + "subTitle": "SEC Charges Humanigen’s CEO and Chief Scientific Officer with Insider Trading", + "caseCitations": [ + "Securities and Exchange Commission v. Dale B. Chappell, et al., No. 23-civ-03769 (D.N.J. second amended complaint filed May 20, 2024)" + ], + "resources": [ + { + "label": "SEC Complaint", + "url": "https://www.sec.gov/files/litigation/complaints/2024/comp26206.pdf" + } + ], + "summary": "The SEC has charged Humanigen's CEO Cameron Durrant and Chief Scientific Officer Dale B. Chappell with insider trading for selling company stock based on nonpublic information about the FDA's likely rejection of their COVID-19 drug, resulting in significant avoided losses.", + "tags": [ + "insider trading", + "biopharmaceutical", + "antifraud" + ], + "entities": [ + { + "name": "Cameron Durrant", + "type": "individual", + "role": "defendant" + }, + { + "name": "Dale B. Chappell", + "type": "individual", + "role": "defendant" + }, + { + "name": "Humanigen, Inc.", + "type": "company", + "role": "other", + "cik": "1293310", + "ticker": "HGENQ" + }, + { + "name": "Black Horse Capital LP", + "type": "fund", + "role": "defendant" + }, + { + "name": "Black Horse Capital Master Fund Ltd.", + "type": "fund", + "role": "defendant" + }, + { + "name": "Cheval Holdings, Ltd.", + "type": "fund", + "role": "defendant" + } + ], + "complaints": [ + "Chappell and Durrant sold Humanigen stock while in possession of material nonpublic information that the FDA was unlikely to approve Emergency Use Authorization for lenzilumab.", + "Chappell and three investment vehicles under his control sold more than 3.8 million shares of Humanigen for more than $68 million.", + "Durrant sold more than 80,000 shares for more than $1.68 million.", + "Chappell avoided losses of more than $38 million while Durrant avoided losses of more than $1 million." + ], + "parallelActionsTakenBy": [ + "Department of Justice’s Fraud Section", + "U.S. Attorney’s Office for the District of New Jersey" + ], + "hasAgreedToSettlement": false, + "hasAgreedToPayPenalty": false, + "penaltyAmounts": [], + "requestedRelief": [ + "permanent injunctions", + "disgorgement of ill-gotten gains with prejudgment interest", + "civil penalties", + "officer and director bars" + ], + "violatedSections": [ + "Section 17(a) of the Securities Act of 1933", + "Section 10(b) of the Securities Exchange Act of 1934", + "Rule 10b-5" + ], + "investigationConductedBy": [ + "W. Bradley Ney", + "Daniel Ball", + "George B. Parizek", + "Kevin Wu", + "Zachary Scrima", + "Melissa Robertson", + "Pei Y. Chung" + ], + "litigationLedBy": [ + "Anna Area", + "Daniel Lloyd", + "Daniel Ball", + "David Nasse" + ], + "otherAgenciesInvolved": [ + { + "name": "Criminal Fraud Section of the U.S. Department of Justice", + "country": "United States" + }, + { + "name": "United States Attorney’s Office for the District of New Jersey", + "country": "United States" + }, + { + "name": "Federal Bureau of Investigation", + "country": "United States" + } + ] + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/sro-filings.json b/examples/api-responses/sro-filings.json new file mode 100644 index 0000000..f6891c9 --- /dev/null +++ b/examples/api-responses/sro-filings.json @@ -0,0 +1,31 @@ +{ + "total": { + "value": 7963, + "relation": "eq" + }, + "data": [ + { + "id": "dea4e1fa1371b4b91e08c7c3f5f42eae", + "releaseNumber": "34-105132", + "issueDate": "2026-03-31", + "fileNumber": "SR-NYSEAMER-2026-25", + "sro": "NYSE American LLC (NYSEAMER)", + "details": "Notice of Filing and Immediate Effectiveness of a Proposed Rule Change to Modify the NYSE American Options Fee Schedule to Eliminate Certain Incentive Programs and Increase the Limit on the Maximum Combined Floor Broker Credits Paid on QCC Trades and...", + "commentsDue": "21 days after publication in the Federal Register.", + "urls": [ + { + "type": "34-105132", + "url": "https://www.sec.gov/files/rules/sro/nyseamer/2026/34-105132.pdf" + }, + { + "type": "Exhibit 5", + "url": "https://www.sec.gov/files/rules/sro/nyseamer/2026/34-105132-ex5.pdf" + }, + { + "type": "Submit a Comment on SR-NYSEAMER-2026-25", + "url": "https://www.sec.gov/comments/sr-nyseamer-2026-25/notice-filing-immediate-effectiveness-proposed-rule-change-modify-nyse-american-options-fee-schedule" + } + ] + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/subsidiary.json b/examples/api-responses/subsidiary.json new file mode 100644 index 0000000..a4ea3f3 --- /dev/null +++ b/examples/api-responses/subsidiary.json @@ -0,0 +1,94 @@ +{ + "total": { + "value": 26, + "relation": "eq" + }, + "data": [ + { + "id": "53b6eca92223fed0008eae2e5e2ec8f1", + "accessionNo": "0000320193-25-000079", + "filedAt": "2025-10-31T06:01:26-04:00", + "cik": "320193", + "ticker": "AAPL", + "companyName": "Apple Inc.", + "subsidiaries": [ + { + "name": "Apple Asia Limited", + "jurisdiction": "Hong Kong" + }, + { + "name": "Apple Asia LLC", + "jurisdiction": "Delaware, U.S." + }, + { + "name": "Apple Canada Inc.", + "jurisdiction": "Canada" + }, + { + "name": "Apple Computer Trading (Shanghai) Co., Ltd.", + "jurisdiction": "China" + }, + { + "name": "Apple Distribution International Limited", + "jurisdiction": "Ireland" + }, + { + "name": "Apple India Private Limited", + "jurisdiction": "India" + }, + { + "name": "Apple Insurance Company, Inc.", + "jurisdiction": "Arizona, U.S." + }, + { + "name": "Apple Japan, Inc.", + "jurisdiction": "Japan" + }, + { + "name": "Apple Korea Limited", + "jurisdiction": "South Korea" + }, + { + "name": "Apple Operations International Limited", + "jurisdiction": "Ireland" + }, + { + "name": "Apple Operations Limited", + "jurisdiction": "Ireland" + }, + { + "name": "Apple Operations Mexico, S.A. de C.V.", + "jurisdiction": "Mexico" + }, + { + "name": "Apple Pty Limited", + "jurisdiction": "Australia" + }, + { + "name": "Apple Services Pte. Ltd.", + "jurisdiction": "Singapore" + }, + { + "name": "Apple South Asia (Thailand) Limited", + "jurisdiction": "Thailand" + }, + { + "name": "Apple South Asia Pte. Ltd.", + "jurisdiction": "Singapore" + }, + { + "name": "Apple Vietnam Limited Liability Company", + "jurisdiction": "Vietnam" + }, + { + "name": "Braeburn Capital, Inc.", + "jurisdiction": "Nevada, U.S." + }, + { + "name": "iTunes K.K.", + "jurisdiction": "Japan" + } + ] + } + ] +} \ No newline at end of file diff --git a/index.js b/index.js index aaf2dde..7ef5eae 100755 --- a/index.js +++ b/index.js @@ -1,8 +1,6 @@ #!/usr/bin/env node -// const io = require('socket.io-client'); const config = require('./config'); -// const events = require('events'); const axios = require('axios'); const store = { apiKey: '' }; @@ -11,57 +9,46 @@ const setApiKey = (apiKey) => { store.apiKey = apiKey; }; -/* - * Stream API +/** + * Retry wrapper with backoff for handling 429 (too many requests) errors. */ -// const streamApiStore = {}; - -// const initSocket = (apiKey) => { -// const uri = config.io.server + '/' + config.io.namespace.allFilings; -// const params = { -// query: { apiKey }, -// transports: ['websocket'], // ensure traffic goes through load balancer -// }; -// streamApiStore.socket = io(uri, params); -// streamApiStore.socket.on('connect', () => -// console.log('Socket connected to', uri), -// ); -// streamApiStore.socket.on('filing', handleNewFiling); -// streamApiStore.socket.on('filings', handleNewFilings); -// streamApiStore.socket.on('error', console.error); -// }; - -// const handleNewFiling = (filing) => { -// streamApiStore.eventEmitter.emit('filing', filing); -// }; - -// const handleNewFilings = (filings) => { -// streamApiStore.eventEmitter.emit('filings', filings); -// }; - -// const close = () => { -// if (streamApiStore.socket.close) { -// streamApiStore.socket.close(); -// } -// }; - -// const connect = (apiKey) => { -// setApiKey(apiKey); -// initSocket(apiKey); -// streamApiStore.eventEmitter = new events.EventEmitter(); -// modules.streamApi.on = streamApiStore.eventEmitter.on; -// return streamApiStore.eventEmitter; -// }; +const withRetry = async (fn, maxRetries = 3) => { + for (let i = 0; i < maxRetries; i++) { + try { + return await fn(); + } catch (error) { + if (error.response && error.response.status === 429 && i < maxRetries - 1) { + await new Promise((resolve) => setTimeout(resolve, 500 * (i + 1))); + continue; + } + throw error; + } + } +}; -/* - * Query API +/** + * Helper: POST query to endpoint with token as query param, return JSON. */ +const postWithToken = async (endpoint, query) => { + const url = endpoint + '?token=' + store.apiKey; + return withRetry(async () => { + const { data } = await axios.post(url, query); + return data; + }); +}; /** - * Query filings - * - * @param {String} query The query string - * @returns {Object} The response from the API + * Helper: GET endpoint with token as query param, return JSON. + */ +const getWithToken = async (url) => { + return withRetry(async () => { + const { data } = await axios.get(url); + return data; + }); +}; + +/* + * Query API */ const getFilingsQuery = async (query) => { const options = { @@ -72,7 +59,6 @@ const getFilingsQuery = async (query) => { }; const { data } = await axios(options); - return data; }; @@ -88,7 +74,6 @@ const getFilingsFullText = async (query) => { }; const { data } = await axios(options); - return data; }; @@ -99,8 +84,6 @@ const removeIxbrlRenderingQuery = (urlPath) => { return urlPath.replace('/ix?doc=/', '/').replace('/ix.xhtml?doc=/', '/'); }; -// in: https://www.sec.gov/Archives/edgar/data/2065821/0001213900-25-073836-index-headers.html -// out: /2065821/000121390025073836/0001213900-25-073836-index-headers.html const edgarFileUrlToUrlPath = (edgarFileUrl) => { return edgarFileUrl.replace(/.*\/edgar\/data\//, '/'); }; @@ -115,11 +98,7 @@ const addLeadingSlash = (urlPath) => { const getFile = async ( edgarFileUrl, params = { - // true: decompress gzip response - // false: return raw gzip buffer decompress: true, - // true: return string for text content-types, buffer for others (PDFs, images, etc) - // false: return raw buffer for all content-types autoConvertToString: true, }, ) => { @@ -143,7 +122,6 @@ const getFile = async ( return data; } - // check content-type to determine how buffer response should be returned const contentType = headers['content-type']; if (contentType && contentType.includes('text')) { @@ -160,7 +138,7 @@ const getFilingContent = async (url, type = 'html') => { let _url; if (type === 'pdf') { - _url = config.renderApi.endpoint + +'&type=' + type + '&url=' + url; + _url = config.renderApi.endpoint + '&type=' + type + '&url=' + url; } else { const filename = url.replace( 'https://www.sec.gov/Archives/edgar/data/', @@ -175,10 +153,27 @@ const getFilingContent = async (url, type = 'html') => { }; const { data } = await axios(options); - return data; }; +/** + * PDF Generator API + */ +const getPdf = async (url) => { + const fileUrl = url.replace(/ix\?doc=\//, ''); + const requestUrl = + config.pdfGeneratorApi.endpoint + + '?type=pdf&url=' + + fileUrl + + '&token=' + + store.apiKey; + + return withRetry(async () => { + const { data } = await axios.get(requestUrl, { responseType: 'arraybuffer' }); + return data; + }); +}; + /** * XBRL-to-JSON converter and parser */ @@ -202,7 +197,6 @@ const xbrlToJson = async ({ htmUrl, xbrlUrl, accessionNo } = {}) => { } const { data } = await axios.get(requestUrl); - return data; }; @@ -219,20 +213,257 @@ const getSection = async (filingUrl, section = '1A', returnType = 'text') => { `?token=${store.apiKey}&url=${filingUrl}&item=${section}&type=${returnType}`; const { data } = await axios.get(requestUrl); - return data; }; /** - * Helpers + * Mapping API + */ +const MAPPING_SUPPORTED_PARAMS = [ + 'cik', + 'ticker', + 'cusip', + 'name', + 'exchange', + 'sector', + 'industry', +]; + +const resolve = async (parameter, value) => { + if (!MAPPING_SUPPORTED_PARAMS.includes(parameter.toLowerCase())) { + throw new Error( + 'Parameter not supported. Supported parameters: ' + + MAPPING_SUPPORTED_PARAMS.join(', '), + ); + } + + const url = + config.mappingApi.endpoint + + '/' + + parameter.toLowerCase() + + '/' + + value + + '?token=' + + store.apiKey; + + return getWithToken(url); +}; + +/** + * Form ADV API + */ +const getAdvFirms = async (query) => { + return postWithToken(config.formAdvApi.endpoint + '/firm', query); +}; + +const getAdvIndividuals = async (query) => { + return postWithToken(config.formAdvApi.endpoint + '/individual', query); +}; + +const getAdvDirectOwners = async (crd) => { + const url = + config.formAdvApi.endpoint + + '/schedule-a-direct-owners/' + + crd + + '?token=' + + store.apiKey; + return getWithToken(url); +}; + +const getAdvIndirectOwners = async (crd) => { + const url = + config.formAdvApi.endpoint + + '/schedule-b-indirect-owners/' + + crd + + '?token=' + + store.apiKey; + return getWithToken(url); +}; + +const getAdvPrivateFunds = async (crd) => { + const url = + config.formAdvApi.endpoint + + '/schedule-d-7-b-1/' + + crd + + '?token=' + + store.apiKey; + return getWithToken(url); +}; + +const getAdvBrochures = async (crd) => { + const url = + config.formAdvApi.endpoint + + '/brochures/' + + crd + + '?token=' + + store.apiKey; + return getWithToken(url); +}; + +/** + * Executive Compensation API + */ +const getExecComp = async (parameter) => { + if (typeof parameter === 'string') { + const url = + config.execCompApi.endpoint + + '/' + + parameter.toUpperCase() + + '?token=' + + store.apiKey; + return getWithToken(url); + } else if (typeof parameter === 'object') { + return postWithToken(config.execCompApi.endpoint, parameter); + } else { + throw new Error('Invalid parameter. Provide a ticker string or a query object.'); + } +}; + +/** + * Float API (Outstanding Shares & Public Float) + */ +const getFloat = async ({ ticker, cik } = {}) => { + if (!ticker && !cik) { + throw new Error('Please provide either a ticker or cik parameter.'); + } + + const searchTerm = ticker ? '&ticker=' + ticker : '&cik=' + cik; + const url = config.floatApi.endpoint + '?token=' + store.apiKey + searchTerm; + + return getWithToken(url); +}; + +/** + * Form N-PX API + */ +const getNpxMetadata = async (query) => { + return postWithToken(config.formNpxApi.endpoint, query); +}; + +const getNpxVotingRecords = async (accessionNo) => { + const url = + config.formNpxApi.endpoint + + '/' + + accessionNo + + '?token=' + + store.apiKey; + return getWithToken(url); +}; + +/** + * Simple POST-based API wrappers + */ +const getInsiderTrading = async (query) => { + return postWithToken(config.insiderTradingApi.endpoint, query); +}; + +const getForm144 = async (query) => { + return postWithToken(config.form144Api.endpoint, query); +}; + +const getForm13FHoldings = async (query) => { + return postWithToken(config.form13FHoldingsApi.endpoint, query); +}; + +const getForm13FCoverPages = async (query) => { + return postWithToken(config.form13FCoverPagesApi.endpoint, query); +}; + +const getFormNport = async (query) => { + return postWithToken(config.formNportApi.endpoint, query); +}; + +const getForm13DG = async (query) => { + return postWithToken(config.form13DGApi.endpoint, query); +}; + +const getFormNcen = async (query) => { + return postWithToken(config.formNcenApi.endpoint, query); +}; + +const getFormS1424B4 = async (query) => { + return postWithToken(config.formS1424B4Api.endpoint, query); +}; + +const getFormD = async (query) => { + return postWithToken(config.formDApi.endpoint, query); +}; + +const getFormC = async (query) => { + return postWithToken(config.formCApi.endpoint, query); +}; + +const getRegASearch = async (query) => { + return postWithToken(config.regASearchApi.endpoint, query); +}; + +const getForm1A = async (query) => { + return postWithToken(config.form1AApi.endpoint, query); +}; + +const getForm1K = async (query) => { + return postWithToken(config.form1KApi.endpoint, query); +}; + +const getForm1Z = async (query) => { + return postWithToken(config.form1ZApi.endpoint, query); +}; + +const getForm8K = async (query) => { + return postWithToken(config.form8KApi.endpoint, query); +}; + +const getDirectorsAndBoardMembers = async (query) => { + return postWithToken(config.directorsBoardMembersApi.endpoint, query); +}; + +const getSubsidiaries = async (query) => { + return postWithToken(config.subsidiaryApi.endpoint, query); +}; + +const getSecEnforcementActions = async (query) => { + return postWithToken(config.secEnforcementActionsApi.endpoint, query); +}; + +const getSecLitigations = async (query) => { + return postWithToken(config.secLitigationsApi.endpoint, query); +}; + +const getSecAdminProceedings = async (query) => { + return postWithToken(config.secAdminProceedingsApi.endpoint, query); +}; + +const getAaer = async (query) => { + return postWithToken(config.aaerApi.endpoint, query); +}; + +const getSroFilings = async (query) => { + return postWithToken(config.sroApi.endpoint, query); +}; + +const getEdgarEntities = async (query) => { + return postWithToken(config.edgarEntitiesApi.endpoint, query); +}; + +const getAuditFees = async (query) => { + return postWithToken(config.auditFeesApi.endpoint, query); +}; + +const getIngestionLog = async (date) => { + const url = + config.edgarIndexIngestionLogApi.endpoint + + '/' + + date + + '?token=' + + store.apiKey; + return getWithToken(url); +}; + +/** + * Exports */ const modules = { setApiKey, - // streamApi: { - // setApiKey, - // connect, - // close, - // }, queryApi: { setApiKey, getFilings: getFilingsQuery, @@ -249,6 +480,10 @@ const modules = { setApiKey, getFilingContent, }, + pdfGeneratorApi: { + setApiKey, + getPdf, + }, xbrlApi: { setApiKey, xbrlToJson, @@ -257,22 +492,140 @@ const modules = { setApiKey, getSection, }, + mappingApi: { + setApiKey, + resolve, + }, + formAdvApi: { + setApiKey, + getFirms: getAdvFirms, + getIndividuals: getAdvIndividuals, + getDirectOwners: getAdvDirectOwners, + getIndirectOwners: getAdvIndirectOwners, + getPrivateFunds: getAdvPrivateFunds, + getBrochures: getAdvBrochures, + }, + insiderTradingApi: { + setApiKey, + getData: getInsiderTrading, + }, + form144Api: { + setApiKey, + getData: getForm144, + }, + form13FHoldingsApi: { + setApiKey, + getData: getForm13FHoldings, + }, + form13FCoverPagesApi: { + setApiKey, + getData: getForm13FCoverPages, + }, + formNportApi: { + setApiKey, + getData: getFormNport, + }, + form13DGApi: { + setApiKey, + getData: getForm13DG, + }, + formNcenApi: { + setApiKey, + getData: getFormNcen, + }, + formNpxApi: { + setApiKey, + getMetadata: getNpxMetadata, + getVotingRecords: getNpxVotingRecords, + }, + formS1424B4Api: { + setApiKey, + getData: getFormS1424B4, + }, + formDApi: { + setApiKey, + getData: getFormD, + }, + formCApi: { + setApiKey, + getData: getFormC, + }, + regASearchApi: { + setApiKey, + getData: getRegASearch, + }, + form1AApi: { + setApiKey, + getData: getForm1A, + }, + form1KApi: { + setApiKey, + getData: getForm1K, + }, + form1ZApi: { + setApiKey, + getData: getForm1Z, + }, + form8KApi: { + setApiKey, + getData: getForm8K, + }, + execCompApi: { + setApiKey, + getData: getExecComp, + }, + directorsBoardMembersApi: { + setApiKey, + getData: getDirectorsAndBoardMembers, + }, + floatApi: { + setApiKey, + getFloat, + }, + subsidiaryApi: { + setApiKey, + getData: getSubsidiaries, + }, + secEnforcementActionsApi: { + setApiKey, + getData: getSecEnforcementActions, + }, + secLitigationsApi: { + setApiKey, + getData: getSecLitigations, + }, + secAdminProceedingsApi: { + setApiKey, + getData: getSecAdminProceedings, + }, + aaerApi: { + setApiKey, + getData: getAaer, + }, + sroFilingsApi: { + setApiKey, + getData: getSroFilings, + }, + edgarEntitiesApi: { + setApiKey, + getData: getEdgarEntities, + }, + auditFeesApi: { + setApiKey, + getData: getAuditFees, + }, + edgarIndexApi: { + setApiKey, + getIngestionLog, + }, }; module.exports = modules; /** - * Command Line Execution - Stream API + * Command Line Execution */ if (require.main === module) { - // const apiKey = process.argv[2]; - // const emitter = connect(apiKey); - // let messageCounter = 0; - // emitter.on('filing', (filing) => { - // // console.log(JSON.stringify(filing, null, 1)) - // messageCounter++; - // console.log(filing.id, filing.formType, filing.filedAt, messageCounter); - // }); console.log( 'sec-api npm package working. Please import the package and use the provided methods to interact with the API.', ); diff --git a/index.mjs b/index.mjs new file mode 100644 index 0000000..a4e82fa --- /dev/null +++ b/index.mjs @@ -0,0 +1,44 @@ +import secApi from './index.js'; + +export const { + setApiKey, + queryApi, + fullTextSearchApi, + downloadApi, + renderApi, + pdfGeneratorApi, + xbrlApi, + extractorApi, + mappingApi, + formAdvApi, + insiderTradingApi, + form144Api, + form13FHoldingsApi, + form13FCoverPagesApi, + formNportApi, + form13DGApi, + formNcenApi, + formNpxApi, + formS1424B4Api, + formDApi, + formCApi, + regASearchApi, + form1AApi, + form1KApi, + form1ZApi, + form8KApi, + execCompApi, + directorsBoardMembersApi, + floatApi, + subsidiaryApi, + secEnforcementActionsApi, + secLitigationsApi, + secAdminProceedingsApi, + aaerApi, + sroFilingsApi, + edgarEntitiesApi, + auditFeesApi, + edgarIndexApi, +} = secApi; + +export default secApi; diff --git a/package.json b/package.json index 7a2d7b2..df12b6d 100644 --- a/package.json +++ b/package.json @@ -3,8 +3,14 @@ "version": "4.0.0", "description": "SEC-API.io JavaScript Library", "main": "index.js", + "exports": { + ".": { + "import": "./index.mjs", + "require": "./index.js" + } + }, "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "test": "node tests/index.js" }, "repository": { "type": "git", diff --git a/tests/index.js b/tests/index.js new file mode 100644 index 0000000..2687bd7 --- /dev/null +++ b/tests/index.js @@ -0,0 +1,371 @@ +const fs = require('fs'); +const path = require('path'); +const secApi = require('../index'); + +// Load API key from .env +const envFile = fs.readFileSync(path.join(__dirname, '..', '.env'), 'utf-8'); +const apiKey = envFile.match(/SEC_API_IO_API_KEY=(.+)/)[1].trim(); + +// Set API key for all APIs +secApi.setApiKey(apiKey); + +let passed = 0; +let failed = 0; + +async function test(name, fn) { + try { + await fn(); + passed++; + console.log(` ✅ ${name}`); + } catch (err) { + failed++; + console.log(` ❌ ${name}`); + console.log(` ${err.message}`); + } +} + +function assert(condition, message) { + if (!condition) throw new Error(message || 'Assertion failed'); +} + +(async () => { + console.log('\nQuery API'); + await test('getFilings returns results', async () => { + const result = await secApi.queryApi.getFilings({ + query: 'formType:"10-Q" AND ticker:AAPL', + from: '0', + size: '1', + sort: [{ filedAt: { order: 'desc' } }], + }); + assert(result.filings && result.filings.length > 0, 'No filings returned'); + }); + + console.log('\nFull-Text Search API'); + await test('getFilings returns results', async () => { + const result = await secApi.fullTextSearchApi.getFilings({ + query: '"LPCN 1154"', + formTypes: ['8-K', '10-Q'], + startDate: '2021-01-01', + endDate: '2021-06-14', + }); + assert(result.filings && result.filings.length > 0, 'No filings returned'); + }); + + console.log('\nDownload API'); + await test('getFile downloads filing content', async () => { + const content = await secApi.downloadApi.getFile( + 'https://www.sec.gov/Archives/edgar/data/1318605/000162828025045968/tsla-20250930.htm', + ); + assert(typeof content === 'string', 'Expected string content'); + assert(content.length > 1000, 'Content too short'); + }); + + console.log('\nXBRL-to-JSON API'); + await test('xbrlToJson converts by accession number', async () => { + const result = await secApi.xbrlApi.xbrlToJson({ + accessionNo: '0000320193-20-000096', + }); + assert(result.CoverPage, 'Missing CoverPage'); + assert(result.StatementsOfIncome, 'Missing StatementsOfIncome'); + }); + + console.log('\nExtractor API'); + await test('getSection extracts 10-K section', async () => { + const text = await secApi.extractorApi.getSection( + 'https://www.sec.gov/Archives/edgar/data/1318605/000156459021004599/tsla-10k_20201231.htm', + '1A', + 'text', + ); + assert(typeof text === 'string', 'Expected string'); + assert(text.length > 100, 'Section text too short'); + }); + + console.log('\nMapping API'); + await test('resolve ticker returns company data', async () => { + const result = await secApi.mappingApi.resolve('ticker', 'TSLA'); + assert(Array.isArray(result), 'Expected array'); + assert(result.length > 0, 'No results'); + assert(result[0].ticker === 'TSLA', 'Wrong ticker'); + }); + + console.log('\nInsider Trading API'); + await test('getData returns insider transactions', async () => { + const result = await secApi.insiderTradingApi.getData({ + query: 'issuer.tradingSymbol:TSLA', + from: '0', + size: '1', + sort: [{ filedAt: { order: 'desc' } }], + }); + assert( + result.transactions && result.transactions.length > 0, + 'No transactions returned', + ); + }); + + console.log('\nForm 144 API'); + await test('getData returns Form 144 filings', async () => { + const result = await secApi.form144Api.getData({ + query: 'entities.ticker:TSLA', + from: '0', + size: '1', + sort: [{ filedAt: { order: 'desc' } }], + }); + assert(result.data, 'No data property'); + }); + + console.log('\nForm 13F Holdings API'); + await test('getData returns 13F holdings', async () => { + const result = await secApi.form13FHoldingsApi.getData({ + query: 'cik:1067983', + from: '0', + size: '1', + sort: [{ filedAt: { order: 'desc' } }], + }); + assert(result.data && result.data.length > 0, 'No data returned'); + }); + + console.log('\nForm 13F Cover Pages API'); + await test('getData returns 13F cover pages', async () => { + const result = await secApi.form13FCoverPagesApi.getData({ + query: 'cik:1067983', + from: '0', + size: '1', + sort: [{ filedAt: { order: 'desc' } }], + }); + assert(result.data && result.data.length > 0, 'No data returned'); + }); + + console.log('\nForm 13D/13G API'); + await test('getData returns 13D/13G filings', async () => { + const result = await secApi.form13DGApi.getData({ + query: 'accessionNo:*', + from: '0', + size: '1', + sort: [{ filedAt: { order: 'desc' } }], + }); + assert(result.filings, 'No filings property'); + }); + + console.log('\nForm N-PORT API'); + await test('getData returns N-PORT filings', async () => { + const result = await secApi.formNportApi.getData({ + query: 'fundInfo.totAssets:[100000000 TO *]', + from: '0', + size: '1', + sort: [{ filedAt: { order: 'desc' } }], + }); + assert(result.filings && result.filings.length > 0, 'No filings returned'); + }); + + console.log('\nForm N-CEN API'); + await test('getData returns N-CEN filings', async () => { + const result = await secApi.formNcenApi.getData({ + query: 'accessionNo:*', + from: '0', + size: '1', + sort: [{ filedAt: { order: 'desc' } }], + }); + assert(result.data, 'No data property'); + }); + + console.log('\nForm N-PX API'); + await test('getMetadata returns N-PX metadata', async () => { + const result = await secApi.formNpxApi.getMetadata({ + query: 'cik:884546', + from: '0', + size: '1', + sort: [{ filedAt: { order: 'desc' } }], + }); + assert(result.data, 'No data property'); + }); + + console.log('\nForm S-1/424B4 API'); + await test('getData returns S-1 filings', async () => { + const result = await secApi.formS1424B4Api.getData({ + query: 'ticker:RIVN', + from: '0', + size: '1', + sort: [{ filedAt: { order: 'desc' } }], + }); + assert(result.data, 'No data property'); + }); + + console.log('\nForm D API'); + await test('getData returns Form D filings', async () => { + const result = await secApi.formDApi.getData({ + query: 'offeringData.offeringSalesAmounts.totalOfferingAmount:[1000000 TO *]', + from: '0', + size: '1', + sort: [{ filedAt: { order: 'desc' } }], + }); + assert(result.offerings, 'No offerings property'); + }); + + console.log('\nForm C API'); + await test('getData returns Form C filings', async () => { + const result = await secApi.formCApi.getData({ + query: 'id:*', + from: '0', + size: '1', + sort: [{ filedAt: { order: 'desc' } }], + }); + assert(result.data, 'No data property'); + }); + + console.log('\nReg A Search API'); + await test('getData returns Reg A filings', async () => { + const result = await secApi.regASearchApi.getData({ + query: 'filedAt:[2024-01-01 TO 2024-12-31]', + from: '0', + size: '1', + sort: [{ filedAt: { order: 'desc' } }], + }); + assert(result.data, 'No data property'); + }); + + console.log('\nForm 8-K API'); + await test('getData returns 8-K filings', async () => { + const result = await secApi.form8KApi.getData({ + query: 'item4_01:* AND filedAt:[2024-01-01 TO 2024-12-31]', + from: '0', + size: '1', + sort: [{ filedAt: { order: 'desc' } }], + }); + assert(result.data, 'No data property'); + }); + + console.log('\nForm ADV API'); + await test('getFirms returns advisory firms', async () => { + const result = await secApi.formAdvApi.getFirms({ + query: 'Info.BusNm:"Bridgewater"', + from: '0', + size: '1', + sort: [{ 'Info.FirmCrdNb': { order: 'desc' } }], + }); + assert(result.filings && result.filings.length > 0, 'No filings returned'); + }); + + console.log('\nExecutive Compensation API'); + await test('getData by ticker returns compensation data', async () => { + const result = await secApi.execCompApi.getData('TSLA'); + assert(Array.isArray(result), 'Expected array'); + assert(result.length > 0, 'No results'); + }); + + console.log('\nDirectors & Board Members API'); + await test('getData returns directors data', async () => { + const result = await secApi.directorsBoardMembersApi.getData({ + query: 'ticker:AAPL', + from: '0', + size: '1', + sort: [{ filedAt: { order: 'desc' } }], + }); + assert(result.data, 'No data property'); + }); + + console.log('\nFloat API'); + await test('getFloat returns share data', async () => { + const result = await secApi.floatApi.getFloat({ ticker: 'AAPL' }); + assert(result && result.data, 'No data returned'); + }); + + console.log('\nSubsidiary API'); + await test('getData returns subsidiary data', async () => { + const result = await secApi.subsidiaryApi.getData({ + query: 'ticker:AAPL', + from: '0', + size: '1', + sort: [{ filedAt: { order: 'desc' } }], + }); + assert(result.data, 'No data property'); + }); + + console.log('\nSEC Enforcement Actions API'); + await test('getData returns enforcement actions', async () => { + const result = await secApi.secEnforcementActionsApi.getData({ + query: 'releasedAt:[2024-01-01 TO 2024-12-31]', + from: '0', + size: '1', + sort: [{ releasedAt: { order: 'desc' } }], + }); + assert(result.data && result.data.length > 0, 'No data returned'); + }); + + console.log('\nSEC Litigation Releases API'); + await test('getData returns litigation releases', async () => { + const result = await secApi.secLitigationsApi.getData({ + query: 'releasedAt:[2024-01-01 TO 2024-12-31]', + from: '0', + size: '1', + sort: [{ releasedAt: { order: 'desc' } }], + }); + assert(result.data && result.data.length > 0, 'No data returned'); + }); + + console.log('\nSEC Administrative Proceedings API'); + await test('getData returns admin proceedings', async () => { + const result = await secApi.secAdminProceedingsApi.getData({ + query: 'releasedAt:[2024-01-01 TO 2024-12-31]', + from: '0', + size: '1', + sort: [{ releasedAt: { order: 'desc' } }], + }); + assert(result.data && result.data.length > 0, 'No data returned'); + }); + + console.log('\nAAER API'); + await test('getData returns AAERs', async () => { + const result = await secApi.aaerApi.getData({ + query: 'dateTime:[2020-01-01 TO 2024-12-31]', + from: '0', + size: '1', + sort: [{ dateTime: { order: 'desc' } }], + }); + assert(result.data && result.data.length > 0, 'No data returned'); + }); + + console.log('\nSRO Filings API'); + await test('getData returns SRO filings', async () => { + const result = await secApi.sroFilingsApi.getData({ + query: 'sro:NYSE', + from: '0', + size: '1', + sort: [{ issueDate: { order: 'desc' } }], + }); + assert(result.data && result.data.length > 0, 'No data returned'); + }); + + console.log('\nEDGAR Entities API'); + await test('getData returns entities', async () => { + const result = await secApi.edgarEntitiesApi.getData({ + query: 'name:"Tesla"', + from: '0', + size: '1', + sort: [{ cikUpdatedAt: { order: 'desc' } }], + }); + assert(result.data && result.data.length > 0, 'No data returned'); + }); + + console.log('\nAudit Fees API'); + await test('getData returns audit fees', async () => { + const result = await secApi.auditFeesApi.getData({ + query: 'cik:1318605', + from: '0', + size: '1', + sort: [{ filedAt: { order: 'desc' } }], + }); + assert(result.data, 'No data property'); + }); + + console.log('\nEDGAR Index Ingestion Log API'); + await test('getIngestionLog returns filings for a date', async () => { + const result = await secApi.edgarIndexApi.getIngestionLog('2025-12-02'); + assert(result.data && result.data.length > 0, 'No data returned'); + }); + + // Summary + console.log( + `\n${passed + failed} tests, ${passed} passed, ${failed} failed\n`, + ); + process.exit(failed > 0 ? 1 : 0); +})(); From 090f33bcf294f075dd9b7e455bb9bc02a90e9efc Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Wed, 1 Apr 2026 09:26:26 -0400 Subject: [PATCH 26/39] 4.0.1 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 27aa9a4..93825a4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "sec-api", - "version": "4.0.0", + "version": "4.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "sec-api", - "version": "4.0.0", + "version": "4.0.1", "license": "MIT", "dependencies": { "axios": "^1.13.5" diff --git a/package.json b/package.json index df12b6d..d29f5f1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sec-api", - "version": "4.0.0", + "version": "4.0.1", "description": "SEC-API.io JavaScript Library", "main": "index.js", "exports": { From 3af7a7be8e676f08e332dac11bdf321db16501ee Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Wed, 1 Apr 2026 10:12:12 -0400 Subject: [PATCH 27/39] Add missing Form ADV Schedule D APIs and split 13F Holdings/Cover Page docs - Add 3 missing Form ADV endpoints: Schedule D 1.B (other business names), 5.K (separately managed accounts), 7.A (financial industry affiliations) - Add tests for all Form ADV methods (was only testing getFirms) - Add example API response files for the 3 new endpoints - Split 13F Holdings Database README section into separate 13F Holdings and 13F Cover Pages subsections with dedicated example responses - Fix 13F Cover Page example to use actual API response data - Reorder Schedule D sections in README by section number - Rename insider-trading example response file --- README.md | 228 +- ...m-adv-financial-industry-affiliations.json | 4286 +++++++++++++++++ .../form-adv-other-business-names.json | 413 ++ .../form-adv-separately-managed-accounts.json | 203 + ...rading.json => insider-trading-form4.json} | 0 index.js | 33 + tests/index.js | 45 + 7 files changed, 5196 insertions(+), 12 deletions(-) create mode 100644 examples/api-responses/form-adv-financial-industry-affiliations.json create mode 100644 examples/api-responses/form-adv-other-business-names.json create mode 100644 examples/api-responses/form-adv-separately-managed-accounts.json rename examples/api-responses/{insider-trading.json => insider-trading-form4.json} (100%) diff --git a/README.md b/README.md index e5b59e7..84f0549 100644 --- a/README.md +++ b/README.md @@ -1273,6 +1273,145 @@ const indirectOwners = await formAdvApi.getIndirectOwners('326262');
+### Get Other Business Names (Schedule D, Section 1.B) + +```js +const otherBusinessNames = await formAdvApi.getOtherBusinessNames('149777'); +// response: [...] array of other business names +``` + +
+ Example Response + +```json +[ + { + "name": "MORGAN STANLEY SMITH BARNEY", + "jurisdictions": ["AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "DC", "FL", "GA", "GU", "HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD", "MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ", "NM", "NY", "NC", "ND", "OH", "OK", "OR", "PA", "PR", "RI", "SC", "SD", "TN", "TX", "UT", "VT", "VI", "VA", "WA", "WV", "WI", "WY"] + }, + { + "name": "MORGAN STANLEY WEALTH MANAGEMENT", + "jurisdictions": ["AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "DC", "FL", "GA", "GU", "HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD", "MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ", "NM", "NY", "NC", "ND", "OH", "OK", "OR", "PA", "PR", "RI", "SC", "SD", "TN", "TX", "UT", "VT", "VI", "VA", "WA", "WV", "WI", "WY"] + } + // ... more business names +] +``` + +
+ +### Get Separately Managed Accounts (Schedule D, Section 5.K) + +Retrieve details about separately managed accounts, including asset type distributions, borrowings, derivative exposures, and custodians. + +```js +const smaData = await formAdvApi.getSeparatelyManagedAccounts('149777'); +// response: { ... } separately managed account details +``` + +
+ Example Response + +```json +{ + "1-separatelyManagedAccounts": { + "a": { + "i-exchangeTradedEquity": { "midYear": "58 %", "endOfYear": "58 %" }, + "ii-nonExchangeTradedEquity": { "midYear": "0 %", "endOfYear": "0 %" }, + "iii-usGovernmentBonds": { "midYear": "2 %", "endOfYear": "2 %" }, + "iv-usStateAndLocalBonds": { "midYear": "2 %", "endOfYear": "2 %" }, + "v-sovereignBonds": { "midYear": "0 %", "endOfYear": "0 %" }, + "vi-investmentGradeCorporateBonds": { "midYear": "4 %", "endOfYear": "4 %" }, + "vii-nonInvestmentGradeCorporateBonds": { "midYear": "0 %", "endOfYear": "0 %" }, + "viii-derivatives": { "midYear": "0 %", "endOfYear": "0 %" }, + "ix-registeredInvestmentCompanies": { "midYear": "26 %", "endOfYear": "25 %" }, + "x-pooledInvestmentVehicles": { "midYear": "4 %", "endOfYear": "4 %" }, + "xi-cash": { "midYear": "3 %", "endOfYear": "4 %" }, + "xii-other": { "midYear": "1 %", "endOfYear": "1 %" }, + "other": "STRUCTURED INVESTMENTS AND ANNUITIES" + } + }, + "2-borrowingsAndDerivatives": { + "a-i-midYear": { + "regulatoryAssetsUnderManagement": { + "lessThan10": "$ 1,556,490,216,199", + "between10And149": "$ 113,832,393,489", + "moreThan150": "$ 16,522,479,023" + }, + "borrowings": { + "lessThan10": "$ 1,640,415,435", + "between10And149": "$ 53,635,978,014", + "moreThan150": "$ 67,201,944,992" + }, + "derivativeExposures": { + "lessThan10": { "interestRate": "0 %", "foreignExchange": "0 %", "credit": "0 %", "equity": "4 %", "commodity": "0 %", "other": "0 %" }, + "between10And149": { "interestRate": "0 %", "foreignExchange": "0 %", "credit": "0 %", "equity": "58 %", "commodity": "0 %", "other": "0 %" }, + "moreThan150": { "interestRate": "0 %", "foreignExchange": "0 %", "credit": "0 %", "equity": "185 %", "commodity": "0 %", "other": "0 %" } + } + } + // ... end of year data also included + }, + "3-custodiansForSeparatelyManagedAccounts": [ + { + "a-legalName": "MORGAN STANLEY SMITH BARNEY LLC", + "b-businessName": "MORGAN STANLEY", + "c-locations": [{ "city": "PURCHASE", "state": "New York", "country": "United States" }], + "d-isRelatedPerson": true, + "e-secRegistrationNumber": "8 - 68191", + "f-lei": "", + "g-amountHeldAtCustodian": "$ 1,733,996,722,410" + } + ] +} +``` + +
+ +### Get Financial Industry Affiliations (Schedule D, Section 7.A) + +Retrieve related persons and financial industry affiliations, such as affiliated broker-dealers, investment advisers, insurance companies, and pooled investment vehicle sponsors. + +```js +const affiliations = await formAdvApi.getFinancialIndustryAffiliations('149777'); +// response: [...] array of financial industry affiliations +``` + +
+ Example Response + +```json +[ + { + "1-nameOfRelatedPerson": "MS CAPITAL PARTNERS ADVISER INC.", + "2-businessName": "MS CAPITAL PARTNERS ADVISER INC.", + "3-secFileNumber": "80169426", + "4a-crdNumber": "147521", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": ["b-otherAdviser", "f-commodityPoolOperator"], + "6-controlsRelatedPerson": false, + "7-underCommonControl": false, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": true, + "12-shareSameLocation": false + } + // ... more affiliations +] +``` + +
+ ### Get Private Funds (Schedule D, Section 7.B.1) ```js @@ -1862,28 +2001,22 @@ const data = await form144Api.getData({ Access Form 13F filings that disclose quarterly holdings of institutional investment managers with over $100 million in assets under management. Separate endpoints are available for holdings data and cover pages. +### 13F Holdings + +Query individual stock positions reported in 13F-HR filings, including issuer name, CUSIP, share count, market value, and voting authority. + ```js -const { form13FHoldingsApi, form13FCoverPagesApi } = require('sec-api'); +const { form13FHoldingsApi } = require('sec-api'); form13FHoldingsApi.setApiKey('YOUR_API_KEY'); -form13FCoverPagesApi.setApiKey('YOUR_API_KEY'); -// Search 13F holdings const holdings = await form13FHoldingsApi.getData({ query: 'cik:1067983', from: '0', size: '50', sort: [{ filedAt: { order: 'desc' } }], }); - -// Search 13F cover pages -const coverPages = await form13FCoverPagesApi.getData({ - query: 'cik:1067983', - from: '0', - size: '10', - sort: [{ filedAt: { order: 'desc' } }], -}); -// response (both): { total, data } +// response: { total, data } ```
@@ -1957,6 +2090,77 @@ const coverPages = await form13FCoverPagesApi.getData({
+### 13F Cover Pages + +Query cover page data from 13F filings, including the filing manager's name, report type, total holdings count, and aggregate portfolio value. + +```js +const { form13FCoverPagesApi } = require('sec-api'); + +form13FCoverPagesApi.setApiKey('YOUR_API_KEY'); + +const coverPages = await form13FCoverPagesApi.getData({ + query: 'cik:1067983', + from: '0', + size: '10', + sort: [{ filedAt: { order: 'desc' } }], +}); +// response: { total, data } +``` + +
+ Example Response + +```json +{ + "total": { "value": 13, "relation": "eq" }, + "data": [ + { + "id": "1ef1c3fa0b53c72620f026f0ab47e7c6", + "accessionNo": "0001350694-26-000001", + "filedAt": "2026-02-13T16:03:50-05:00", + "formType": "13F-HR", + "cik": "1350694", + "crdNumber": "105129", + "secFileNumber": "801-35875", + "form13FFileNumber": "028-11794", + "periodOfReport": "2025-12-31", + "isAmendment": false, + "amendmentInfo": {}, + "filingManager": { + "name": "Bridgewater Associates, LP", + "address": { + "street": "One Nyala Farms Road", + "city": "Westport", + "stateOrCountry": "CT", + "zipCode": 6880 + } + }, + "reportType": "13F HOLDINGS REPORT", + "otherManagersReportingForThisManager": [], + "provideInfoForInstruction5": false, + "signature": { + "name": "Michael Kitson", + "title": "Chief Compliance Officer and Counsel", + "phone": "203-226-3030", + "signature": "/s/Michael Kitson", + "city": "Westport", + "stateOrCountry": "CT", + "signatureDate": "02-13-2026" + }, + "tableEntryTotal": 1040, + "tableEntryTotalAsReported": 1040, + "tableValueTotal": 27421613830, + "tableValueTotalAsReported": 27421613830, + "otherIncludedManagersCount": 0, + "otherIncludedManagers": [] + } + ] +} +``` + +
+ > See the documentation for more details: https://sec-api.io/docs/form-13-f-filings-institutional-holdings-api ## Form 13D 13G API diff --git a/examples/api-responses/form-adv-financial-industry-affiliations.json b/examples/api-responses/form-adv-financial-industry-affiliations.json new file mode 100644 index 0000000..552e3c0 --- /dev/null +++ b/examples/api-responses/form-adv-financial-industry-affiliations.json @@ -0,0 +1,4286 @@ +[ + { + "1-nameOfRelatedPerson": "MS CAPITAL PARTNERS ADVISER INC.", + "2-businessName": "MS CAPITAL PARTNERS ADVISER INC.", + "3-secFileNumber": "80169426", + "4a-crdNumber": "147521", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "b-otherAdviser", + "f-commodityPoolOperator" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": false, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": true, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MORGAN STANLEY PRIVATE EQUITY ASIA, INC.", + "2-businessName": "MORGAN STANLEY PRIVATE EQUITY ASIA, INC.", + "3-secFileNumber": "80163987", + "4a-crdNumber": "134366", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "b-otherAdviser", + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MORGAN STANLEY INVESTMENT MANAGEMENT INC.", + "2-businessName": "MORGAN STANLEY INVESTMENT MANAGEMENT INC.", + "3-secFileNumber": "80115757", + "4a-crdNumber": "110353", + "4b-cikNumbers": [ + "1230193" + ], + "5-typesOfRelatedPerson": [ + "b-otherAdviser", + "f-commodityPoolOperator", + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": true, + "10b-foreignRegulator": [ + "Bahamas - Securities Commission of the Bahamas", + "China, People's Republic of - China Securities Regulatory Commission ", + "India - Securities and Exchange Board of India", + "South Korea - Financial Supervisory Commission / Financial Supervisory Service" + ], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "CONSULTING GROUP ADVISORY SERVICES LLC", + "2-businessName": "CONSULTING GROUP ADVISORY SERVICES LLC", + "3-secFileNumber": "80164791", + "4a-crdNumber": "137463", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "b-otherAdviser" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": true, + "12-shareSameLocation": true + }, + { + "1-nameOfRelatedPerson": "MORGAN STANLEY BANK, N.A.", + "2-businessName": "MORGAN STANLEY BANK, NA", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [ + "1871769" + ], + "5-typesOfRelatedPerson": [ + "h-bankingThriftingInstitution" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": true, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "201 S. MAIN STREET", + "street2": "5TH FLOOR", + "city": "SALT CITY CITY", + "state": "Utah", + "zipCode": "84111", + "country": "United States" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": true, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MORGAN STANLEY PRIVATE BANK, NATIONAL ASSOCIATION", + "2-businessName": "MORGAN STANLEY PRIVATE BANK, NATIONAL ASSOCIATION", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [ + "1534177" + ], + "5-typesOfRelatedPerson": [ + "h-bankingThriftingInstitution" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": true, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "2000 WESTCHESTER AVE", + "street2": "", + "city": "PURCHASE", + "state": "New York", + "zipCode": "10577", + "country": "United States" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": true, + "12-shareSameLocation": true + }, + { + "1-nameOfRelatedPerson": "MORGAN STANLEY & CO. LLC", + "2-businessName": "MORGAN STANLEY & CO. LLC", + "3-secFileNumber": "815869", + "4a-crdNumber": "8209", + "4b-cikNumbers": [ + "1359291" + ], + "5-typesOfRelatedPerson": [ + "a-brokerBealer", + "g-futuresCommissionMerchant" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": true, + "10b-foreignRegulator": [ + "Other - CANADA - MONTREAL EXCHANGE AND BOURSE DE MONTREAL", + "Other - MEXICO - MEXICAN DERIVATIVES EXCHANGE" + ], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": true + }, + { + "1-nameOfRelatedPerson": "CERES MANAGED FUTURES LLC", + "2-businessName": "CERES MANAGED FUTURES LLC", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "f-commodityPoolOperator", + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MORGAN STANLEY PRIVATE EQUITY ASIA V GP ONT, L.P.", + "2-businessName": "MORGAN STANLEY PRIVATE EQUITY ASIA V GP ONT, L.P.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "f-commodityPoolOperator", + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MSREF VII GLOBAL-GP (CAYMAN), L.P.", + "2-businessName": "MSREF VII GLOBAL-GP (CAYMAN), L.P.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MSREF VII GLOBAL-GP (U.S.), L.L.C.", + "2-businessName": "MSREF VII GLOBAL-GP (U.S.), L.L.C.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP CRYSTAL-SMA I SLP LP", + "2-businessName": "AIP CRYSTAL-SMA I SLP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "b-otherAdviser" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": true, + "9b-exemption": "ABA 2005 NO ACTION LETTER", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": true + }, + { + "1-nameOfRelatedPerson": "AIP GLOBAL DIVERSIFIED ALTERNATIVES V GP LP", + "2-businessName": "AIP GLOBAL DIVERSIFIED ALTERNATIVES V GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP GLOBAL DIVERSIFIED VI GP LP", + "2-businessName": "AIP GLOBAL DIVERSIFIED VI GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP GLOBAL INCOME I GP LP", + "2-businessName": "AIP GLOBAL INCOME I GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS TACTICAL VALUE FUND GP LP", + "2-businessName": "MS TACTICAL VALUE FUND GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": true + }, + { + "1-nameOfRelatedPerson": "MORGAN STANLEY PRIVATE EQUITY ASIA IV, L.L.C.", + "2-businessName": "MORGAN STANLEY PRIVATE EQUITY ASIA IV, L.L.C.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "f-commodityPoolOperator", + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MSREF VII GLOBAL-GP, L.P.", + "2-businessName": "MSREF VII GLOBAL-GP, L.P.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "f-commodityPoolOperator", + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MORGAN STANLEY FIXED INCOME GP INC.", + "2-businessName": "MORGAN STANLEY FIXED INCOME GP INC.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP COMPREHENSIVE SECONDARIES I GP LP", + "2-businessName": "AIP COMPREHENSIVE SECONDARIES I GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP COMPREHENSIVE SECONDARIES II GP LP", + "2-businessName": "AIP COMPREHENSIVE SECONDARIES II GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP GLOBAL INCOME II SLP LP", + "2-businessName": "AIP GLOBAL INCOME II SLP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "b-otherAdviser" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": true, + "9b-exemption": "ABA 2005 NO ACTION LETTER", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP OPPORTUNISTIC ACI I GP LP", + "2-businessName": "AIP OPPORTUNISTIC ACI I GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP GLOBAL IMPACT I GP LP", + "2-businessName": "AIP GLOBAL IMPACT I GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP OPPORTUNISTIC ALTERNATIVES GP LP", + "2-businessName": "AIP OPPORTUNISTIC ALTERNATIVES GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP OPPORTUNISTIC SECONDARIES I SLP LP", + "2-businessName": "AIP OPPORTUNISTIC SECONDARIES I SLP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "b-otherAdviser" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": true, + "9b-exemption": "ABA 2005 NO ACTION LETTER", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP RE FOF II GP LP", + "2-businessName": "AIP RE FOF II GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "GLOBAL DIVERSIFIED ALTERNATIVES III GP LP", + "2-businessName": "GLOBAL DIVERSIFIED ALTERNATIVES III GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "GLOBAL DIVERSIFIED ALTERNATIVES IV GP LP", + "2-businessName": "GLOBAL DIVERSIFIED ALTERNATIVES IV GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "GLOBAL DIVERSIFIED ALTERNATIVES IV SLP GP LTD", + "2-businessName": "GLOBAL DIVERSIFIED ALTERNATIVES IV SLP GP LTD", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "b-otherAdviser" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": true, + "9b-exemption": "ABA 2005 NO ACTION LETTER", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MORGAN STANLEY REAL ESTATE ADVISOR, INC.", + "2-businessName": "MORGAN STANLEY REAL ESTATE ADVISOR, INC.", + "3-secFileNumber": "80162377", + "4a-crdNumber": "127488", + "4b-cikNumbers": [ + "1404783" + ], + "5-typesOfRelatedPerson": [ + "b-otherAdviser", + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP ASIA-SMA GP LP", + "2-businessName": "AIP ASIA-SMA GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP ASIA-SMA II SLP LP", + "2-businessName": "AIP ASIA-SMA II SLP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "b-otherAdviser" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": true, + "9b-exemption": "ABA 2005 NO ACTION LETTER", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP BRICKYARD GP LP", + "2-businessName": "AIP BRICKYARD GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP DIAMOND-SMA I SLP LP", + "2-businessName": "AIP DIAMOND-SMA I SLP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "b-otherAdviser" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": true, + "9b-exemption": "ABA 2005 NO ACTION LETTER", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP GATEWAY II GP LP", + "2-businessName": "AIP GATEWAY II GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP GLOBAL DIVERSIFIED VII SLP LP", + "2-businessName": "AIP GLOBAL DIVERSIFIED VII SLP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "b-otherAdviser" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": true, + "9b-exemption": "ABA 2005 NO ACTION LETTER", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP GRANITE-SMA GP LP", + "2-businessName": "AIP GRANITE-SMA GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP MBAR SLP LP", + "2-businessName": "AIP MBAR SLP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "b-otherAdviser" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": true, + "9b-exemption": "ABA 2005 NO ACTION LETTER", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP MCS VALUE SLP LP", + "2-businessName": "AIP MCS VALUE SLP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "b-otherAdviser" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": true, + "9b-exemption": "ABA 2005 NO ACTION LETTER", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP MEDYARD GP LP", + "2-businessName": "AIP MEDYARD GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP NML-SMA GP LP", + "2-businessName": "AIP NML-SMA GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP OPPORTUNISTIC ACI II SLP GP LP", + "2-businessName": "AIP OPPORTUNISTIC ACI II SLP GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": true, + "9b-exemption": "ABA 2005 NO ACTION LETTER", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP RE FOF 2009 GP LP", + "2-businessName": "AIP RE FOF 2009 GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP RE FOF 2010 GP LP", + "2-businessName": "AIP RE FOF 2010 GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP SOUTHYARD GP INC.", + "2-businessName": "AIP SOUTHYARD GP INC.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP TRANSITIONAL DIVERSIFIED ALTERNATIVES GP LP", + "2-businessName": "AIP TRANSITIONAL DIVERSIFIED ALTERNATIVES GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "FLINT CAPITAL PARTNERS GP LP", + "2-businessName": "FLINT CAPITAL PARTNERS GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "GPF PRIVATE EQUITY GP LP", + "2-businessName": "GPF PRIVATE EQUITY GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "GTB CAPITAL PARTNERS GP LP", + "2-businessName": "GTB CAPITAL PARTNERS GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MESA WEST DSA, LLC", + "2-businessName": "MESA WEST DSA, LLC", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "b-otherAdviser" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS CAPITAL PARTNERS VI GP INC.", + "2-businessName": "MS CAPITAL PARTNERS VI GP INC.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS CAPITAL PARTNERS VII GP INC.", + "2-businessName": "MS CAPITAL PARTNERS VII GP INC.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MORGAN STANLEY INSURANCE SERVICES INC.", + "2-businessName": "MORGAN STANLEY INSURANCE SERVICES INC.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "l-insuranceCompany" + ], + "6-controlsRelatedPerson": true, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MORGAN STANLEY PRIVATE EQUITY ASIA III, INC.", + "2-businessName": "MORGAN STANLEY PRIVATE EQUITY ASIA III, INC.", + "3-secFileNumber": "80167700", + "4a-crdNumber": "143479", + "4b-cikNumbers": [ + "1522733" + ], + "5-typesOfRelatedPerson": [ + "b-otherAdviser", + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MORGAN STANLEY PRIVATE EQUITY ASIA III, L.L.C.", + "2-businessName": "MORGAN STANLEY PRIVATE EQUITY ASIA III, L.L.C.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [ + "1522732" + ], + "5-typesOfRelatedPerson": [ + "f-commodityPoolOperator", + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MORGAN STANLEY PRIVATE EQUITY ASIA IV, INC.", + "2-businessName": "MORGAN STANLEY PRIVATE EQUITY ASIA IV, INC.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MORGAN STANLEY PRIVATE EQUITY ASIA V, INC.", + "2-businessName": "MORGAN STANLEY PRIVATE EQUITY ASIA V, INC.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MORGAN STANLEY PRIVATE EQUITY ASIA, LLC", + "2-businessName": "MORGAN STANLEY PRIVATE EQUITY ASIA, LLC", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "f-commodityPoolOperator", + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MORGAN STANLEY ALTERNATIVES HOLDING D INC.", + "2-businessName": "MORGAN STANLEY ALTERNATIVES HOLDING D INC.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS CAPITAL PARTNERS V GP L.P.", + "2-businessName": "MS CAPITAL PARTNERS V GP L.P.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS CAPITAL PARTNERS VIII GP LP", + "2-businessName": "MS CAPITAL PARTNERS VIII GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS CREDIT PARTNERS II GP L.P.", + "2-businessName": "MS CREDIT PARTNERS II GP L.P.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "f-commodityPoolOperator", + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS CREDIT PARTNERS III GP L.P.", + "2-businessName": "MS CREDIT PARTNERS III GP L.P.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "f-commodityPoolOperator", + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS CREDIT PARTNERS III S.A R.L.", + "2-businessName": "MS CREDIT PARTNERS III S.A R.L.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "f-commodityPoolOperator", + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS ENERGY PARTNERS GP INC.", + "2-businessName": "MS ENERGY PARTNERS GP INC.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS ENERGY PARTNERS GP LP", + "2-businessName": "MS ENERGY PARTNERS GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS EXPANSION CAPITAL GP INC.", + "2-businessName": "MS EXPANSION CAPITAL GP INC.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS EXPANSION CAPITAL GP LP", + "2-businessName": "MS EXPANSION CAPITAL GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS EXPANSION CREDIT GP INC.", + "2-businessName": "MS EXPANSION CREDIT GP INC.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS EXPANSION CREDIT GP L.P.", + "2-businessName": "MS EXPANSION CREDIT GP L.P.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS EXPANSION EQUITY GP INC.", + "2-businessName": "MS EXPANSION EQUITY GP INC.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS TACTICAL VALUE FUND GP INC.", + "2-businessName": "MS TACTICAL VALUE FUND GP INC.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": true + }, + { + "1-nameOfRelatedPerson": "MSCP V GP INC.", + "2-businessName": "MSCP V GP INC.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MSCP V OFFSHORE INVESTORS GP LTD.", + "2-businessName": "MSCP V OFFSHORE INVESTORS GP LTD.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MSCVF I GP INC.", + "2-businessName": "MSCVF I GP INC.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MSCVF I GP LP", + "2-businessName": "MSCVF I GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MSREF VII GLOBAL (CAYMAN) II, LTD.", + "2-businessName": "MSREF VII GLOBAL (CAYMAN) II, LTD.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MSREF VIII GLOBAL-GP, L.P.", + "2-businessName": "MSREF VIII GLOBAL-GP, L.P.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "f-commodityPoolOperator", + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MSREF VIII GP, L.L.C.", + "2-businessName": "MSREF VIII GP, L.L.C.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MSREF VIII, INC.", + "2-businessName": "MSREF VIII, INC.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MSREI IX GLOBAL-GP, L.P.", + "2-businessName": "MSREI IX GLOBAL-GP, L.P.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "f-commodityPoolOperator", + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MSREI IX GP, L.L.C.", + "2-businessName": "MSREI IX GP, L.L.C.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "PRIVATE INVESTMENT PARTNERS INC.", + "2-businessName": "PRIVATE INVESTMENT PARTNERS INC.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "SBHU LIFE AGENCY, INC.", + "2-businessName": "SBHU LIFE AGENCY, INC.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "l-insuranceCompany" + ], + "6-controlsRelatedPerson": true, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP COSMIC SLP LP", + "2-businessName": "AIP COSMIC SLP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "b-otherAdviser" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": true, + "9b-exemption": "ABA 2005 NO ACTION LETTER", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "BANCO MORGAN STANLEY S.A.", + "2-businessName": "BANCO MORGAN STANLEY S.A.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "h-bankingThriftingInstitution" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": true, + "10b-foreignRegulator": [ + "Other - BRAZILIAN CENTRAL BANK" + ], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MORGAN STANLEY VENTURE PARTNERS III, L.L.C.", + "2-businessName": "MORGAN STANLEY VENTURE PARTNERS III, L.L.C.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS CREDIT PARTNERS GP INC.", + "2-businessName": "MS CREDIT PARTNERS GP INC.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "f-commodityPoolOperator", + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS CREDIT PARTNERS HOLDINGS INC.", + "2-businessName": "MS CREDIT PARTNERS HOLDINGS INC.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [ + "1790614" + ], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS CREDIT PARTNERS II GP INC.", + "2-businessName": "MS CREDIT PARTNERS II GP INC.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "f-commodityPoolOperator", + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS EXPANSION CREDIT II GP INC.", + "2-businessName": "MS EXPANSION CREDIT II GP INC.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS EXPANSION CREDIT II GP LP", + "2-businessName": "MS EXPANSION CREDIT II GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS EXPANSION EQUITY GP LP", + "2-businessName": "MS EXPANSION EQUITY GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MSDW VENTURE PARTNERS IV, LLC", + "2-businessName": "MSDW VENTURE PARTNERS IV, LLC", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MSDW VP IV HOLDINGS, INC.", + "2-businessName": "MSDW VP IV HOLDINGS, INC.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MSREI X GLOBAL-GP, LP", + "2-businessName": "MSREI X GLOBAL-GP, LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "f-commodityPoolOperator", + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MSREI X GP, L.L.C.", + "2-businessName": "MSREI X GP, L.L.C.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MSVP 2002 FUND, LLC", + "2-businessName": "MSVP 2002 FUND, LLC", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MSVP 2002, INC.", + "2-businessName": "MSVP 2002, INC.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP ASIA-SMA III SLP LP", + "2-businessName": "AIP ASIA-SMA III SLP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "b-otherAdviser" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": false, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP OPPORTUNISTIC SECONDARIES II SLP LP", + "2-businessName": "AIP OPPORTUNISTIC SECONDARIES II SLP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "b-otherAdviser" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "E*TRADE FUTURES L.L.C.", + "2-businessName": "E*TRADE FUTURES L.L.C.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "g-futuresCommissionMerchant" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": true, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MORGAN STANLEY INSTITUTIONAL INVESTMENT ADVISORS LLC", + "2-businessName": "MORGAN STANLEY INSTITUTIONAL INVESTMENT ADVISORS LLC", + "3-secFileNumber": "80169938", + "4a-crdNumber": "149122", + "4b-cikNumbers": [ + "2026079" + ], + "5-typesOfRelatedPerson": [ + "b-otherAdviser" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": true, + "12-shareSameLocation": true + }, + { + "1-nameOfRelatedPerson": "MORGAN STANLEY NEXT LEVEL FUND GP, LLC", + "2-businessName": "MORGAN STANLEY NEXT LEVEL FUND GP, LLC", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP 1GT FUND (LUX) GP S.A.R.L.", + "2-businessName": "AIP 1GT FUND (LUX) GP S.A.R.L.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP 1GT FUND GP LP", + "2-businessName": "AIP 1GT FUND GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP RUBY-SMA I SLP LP", + "2-businessName": "AIP RUBY-SMA I SLP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "b-otherAdviser", + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": true, + "9b-exemption": "ABA 2005 NO ACTION LETTER", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "CT REAL ASSETS SLP LP", + "2-businessName": "CT REAL ASSETS SLP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": true, + "9b-exemption": "ABA 2005 NO ACTION LETTER", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS CAPITAL PARTNERS CV GP LLC", + "2-businessName": "MS CAPITAL PARTNERS CV GP LLC", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS CREDIT PARTNERS IV GP L.P.", + "2-businessName": "MS CREDIT PARTNERS IV GP L.P.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "f-commodityPoolOperator", + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS EXPANSION EQUITY IX GP INC.", + "2-businessName": "MS EXPANSION EQUITY IX GP INC.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS TACTICAL VALUE FUND II GP INC.", + "2-businessName": "MS TACTICAL VALUE FUND II GP INC.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS TACTICAL VALUE FUND II GP LP", + "2-businessName": "MS TACTICAL VALUE FUND II GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS CREDIT PARTNERS IV GP INC.", + "2-businessName": "MS CREDIT PARTNERS IV GP INC.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "f-commodityPoolOperator", + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "OLOMANA REAL ASSETS SLP LP", + "2-businessName": "OLOMANA REAL ASSETS SLP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "b-otherAdviser", + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": true, + "9b-exemption": "ABA 2005 NO ACTION LETTER", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "PARAMETRIC PORTFOLIO ASSOCIATES LLC", + "2-businessName": "PARAMETRIC PORTFOLIO ASSOCIATES", + "3-secFileNumber": "80160485", + "4a-crdNumber": "114310", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "b-otherAdviser", + "f-commodityPoolOperator", + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": true, + "10b-foreignRegulator": [ + "Canada - Alberta Securities Commission", + "Canada - British Columbia Securities Commission", + "Canada - Manitoba Securities Commission", + "Canada - Nova Scotia Securities Commission", + "Canada - Ontario Securities Commission", + "Canada - Quebec, Financial Markets Authority", + "Ireland - Central Bank of Ireland" + ], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "EATON VANCE MANAGEMENT", + "2-businessName": "EATON VANCE MANAGEMENT", + "3-secFileNumber": "80115930", + "4a-crdNumber": "104859", + "4b-cikNumbers": [ + "1076598" + ], + "5-typesOfRelatedPerson": [ + "b-otherAdviser" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": true, + "10b-foreignRegulator": [ + "South Korea - Financial Supervisory Commission / Financial Supervisory Service" + ], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "BOSTON MANAGEMENT AND RESEARCH", + "2-businessName": "BOSTON MANAGEMENT AND RESEARCH", + "3-secFileNumber": "80143127", + "4a-crdNumber": "104853", + "4b-cikNumbers": [ + "877781" + ], + "5-typesOfRelatedPerson": [ + "b-otherAdviser", + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "CALVERT RESEARCH AND MANAGEMENT", + "2-businessName": "CALVERT RESEARCH AND MANAGEMENT", + "3-secFileNumber": "801108378", + "4a-crdNumber": "285127", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "b-otherAdviser" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "ATLANTA CAPITAL MANAGEMENT COMPANY, L.L.C.", + "2-businessName": "ATLANTA CAPITAL", + "3-secFileNumber": "80160673", + "4a-crdNumber": "116719", + "4b-cikNumbers": [ + "1027817" + ], + "5-typesOfRelatedPerson": [ + "b-otherAdviser" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP SEEDLING I SLP LP", + "2-businessName": "AIP SEEDLING I SLP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "b-otherAdviser" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": true, + "9b-exemption": "ABA 2005 NO ACTION LETTER", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP DR SLP LP", + "2-businessName": "AIP DR SLP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "b-otherAdviser", + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": true, + "9b-exemption": "ABA 2005 NO ACTION LETTER", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP GLOBAL VENTURE I SLP LP", + "2-businessName": "AIP GLOBAL VENTURE I SLP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "b-otherAdviser" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": true, + "9b-exemption": "ABA 2005 NO ACTION LETTER", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS CAPITAL PARTNERS VIII GP INC.", + "2-businessName": "MS CAPITAL PARTNERS VIII GP INC.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS EXPANSION EQUITY IX GP LP", + "2-businessName": "MS EXPANSION EQUITY IX GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS CAPITAL PARTNERS VI GP LP", + "2-businessName": "MS CAPITAL PARTNERS VI GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS CAPITAL PARTNERS VII GP LP", + "2-businessName": "MS CAPITAL PARTNERS VII GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MORGAN STANLEY INVESTMENT MANAGEMENT LIMITED", + "2-businessName": "MORGAN STANLEY INVESTMENT MANAGEMENT LIMITED", + "3-secFileNumber": "80126847", + "4a-crdNumber": "105922", + "4b-cikNumbers": [ + "1358504" + ], + "5-typesOfRelatedPerson": [ + "b-otherAdviser", + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": true, + "10b-foreignRegulator": [ + "Denmark - Danish Financial Supervisory Authority", + "Other - UNITED ARAB EMIRATES - ABU DHABI GLOBAL MARKET FINANCIAL SERVICES REGULATORY AUTHORITY", + "South Africa - Financial Services Board", + "South Korea - Financial Supervisory Commission / Financial Supervisory Service", + "United Kingdom - Financial Conduct Authority" + ], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MORGAN STANLEY DISTRIBUTION, INC.", + "2-businessName": "MORGAN STANLEY DISTRIBUTION, INC.", + "3-secFileNumber": "844766", + "4a-crdNumber": "30344", + "4b-cikNumbers": [ + "886116" + ], + "5-typesOfRelatedPerson": [ + "a-brokerBealer" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": true, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MESA WEST CAPITAL, LLC", + "2-businessName": "MESA WEST CAPITAL", + "3-secFileNumber": "80172711", + "4a-crdNumber": "158959", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "b-otherAdviser", + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MESA WEST REAL ESTATE INCOME FUND V GP, L.L.C.", + "2-businessName": "MESA WEST REAL ESTATE INCOME FUND V GP, L.L.C.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MORGAN STANLEY WEALTH MANAGEMENT CANADA INC.", + "2-businessName": "MORGAN STANLEY WEALTH MANAGEMENT CANADA INC.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "a-brokerBealer" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": true, + "10b-foreignRegulator": [ + "Canada - Alberta Securities Commission", + "Canada - British Columbia Securities Commission", + "Canada - Manitoba Securities Commission", + "Canada - New Brunswick Securities Commission", + "Canada - Newfoundland and Labrador, Financial Services Regulation Division", + "Canada - Northwest Territories, Office of the Registrar of Securities", + "Canada - Nova Scotia Securities Commission", + "Canada - Nunavut, Registrar of Securities", + "Canada - Ontario Securities Commission", + "Canada - Prince Edward Island, Securities Office", + "Canada - Quebec, Financial Markets Authority", + "Canada - Saskatchewan Financial Services Commission", + "Canada - Yukon Territories, Registrar of Securities" + ], + "11-shareSupervisedPersons": true, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS CAPITAL PARTNERS W50 CV GP LLC", + "2-businessName": "MS CAPITAL PARTNERS W50 CV GP LLC", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "EATON VANCE DISTRIBUTORS, INC.", + "2-businessName": "EATON VANCE DISTRIBUTORS, INC.", + "3-secFileNumber": "847939", + "4a-crdNumber": "37731", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "a-brokerBealer" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": true, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MORGAN STANLEY VENTURE CAPITAL III INC", + "2-businessName": "MORGAN STANLEY VENTURE CAPITAL III INC", + "3-secFileNumber": "80152909", + "4a-crdNumber": "108708", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "b-otherAdviser", + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS SENIOR LOAN PARTNERS GP INC.", + "2-businessName": "MS SENIOR LOAN PARTNERS GP INC.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "f-commodityPoolOperator", + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS SENIOR LOAN PARTNERS GP L.P.", + "2-businessName": "MS SENIOR LOAN PARTNERS GP L.P.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "f-commodityPoolOperator", + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MSDW VENTURE PARTNERS IV INC", + "2-businessName": "MSDW VENTURE PARTNERS IV INC", + "3-secFileNumber": "80156916", + "4a-crdNumber": "108709", + "4b-cikNumbers": [ + "1230210" + ], + "5-typesOfRelatedPerson": [ + "b-otherAdviser", + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MSIM DELAWARE GP INC.", + "2-businessName": "MSIM DELAWARE GP INC.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP COMPREHENSIVE SECONDARIES III SLP LP", + "2-businessName": "AIP COMPREHENSIVE SECONDARIES III SLP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "b-otherAdviser" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": true, + "9b-exemption": "ABA 2005 NO ACTION LETTER", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP ORION PRIVATE EQUITY SLP LP", + "2-businessName": "AIP ORION PRIVATE EQUITY SLP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "b-otherAdviser" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": true, + "9b-exemption": "ABA 2005 NO ACTION LETTER", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "AIP OPPORTUNISTIC SECONDARIES III SLP LP", + "2-businessName": "AIP OPPORTUNISTIC SECONDARIES III SLP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": true, + "9b-exemption": "ABA 2005 NO ACTION LETTER", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MORGAN STANLEY AIP GP LP", + "2-businessName": "MORGAN STANLEY AIP GP LP", + "3-secFileNumber": "80160699", + "4a-crdNumber": "117050", + "4b-cikNumbers": [ + "1230207" + ], + "5-typesOfRelatedPerson": [ + "b-otherAdviser", + "f-commodityPoolOperator", + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MORGAN STANLEY CAPITAL SERVICES, LLC", + "2-businessName": "MORGAN STANLEY CAPITAL SERVICES, LLC", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "a-brokerBealer", + "d-swapDealer" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MORGAN STANLEY EATON VANCE CLO MANAGER LLC", + "2-businessName": "MORGAN STANLEY | EATON VANCE CLO MANAGER LLC", + "3-secFileNumber": "801118877", + "4a-crdNumber": "309263", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "b-otherAdviser", + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS EXPANSION CREDIT III GP LP", + "2-businessName": "MS EXPANSION CREDIT III GP LP", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS PARTNERS III GP INC.", + "2-businessName": "MS PARTNERS III GP INC.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "f-commodityPoolOperator", + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + }, + { + "1-nameOfRelatedPerson": "MS EXPANSION CREDIT III GP INC.", + "2-businessName": "MS EXPANSION CREDIT III GP INC.", + "3-secFileNumber": "", + "4a-crdNumber": "", + "4b-cikNumbers": [], + "5-typesOfRelatedPerson": [ + "p-sponsorOfPooledInvestmentVehicles" + ], + "6-controlsRelatedPerson": false, + "7-underCommonControl": true, + "8a-relatedPersonActsAsCustodian": false, + "8b-notOperationallyIndependent": false, + "8c-locationOfRelatedPerson": { + "street1": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "country": "" + }, + "9a-exemptFromRegistration": false, + "9b-exemption": "", + "10a-registeredWithForeignRegulator": false, + "10b-foreignRegulator": [], + "11-shareSupervisedPersons": false, + "12-shareSameLocation": false + } +] \ No newline at end of file diff --git a/examples/api-responses/form-adv-other-business-names.json b/examples/api-responses/form-adv-other-business-names.json new file mode 100644 index 0000000..e20a417 --- /dev/null +++ b/examples/api-responses/form-adv-other-business-names.json @@ -0,0 +1,413 @@ +[ + { + "name": "MORGAN STANLEY SMITH BARNEY", + "jurisdictions": [ + "AL", + "AK", + "AZ", + "AR", + "CA", + "CO", + "CT", + "DE", + "DC", + "FL", + "GA", + "GU", + "HI", + "ID", + "IL", + "IN", + "IA", + "KS", + "KY", + "LA", + "ME", + "MD", + "MA", + "MI", + "MN", + "MS", + "MO", + "MT", + "NE", + "NV", + "NH", + "NJ", + "NM", + "NY", + "NC", + "ND", + "OH", + "OK", + "OR", + "PA", + "PR", + "RI", + "SC", + "SD", + "TN", + "TX", + "UT", + "VT", + "VI", + "VA", + "WA", + "WV", + "WI", + "WY" + ] + }, + { + "name": "MORGAN STANLEY WEALTH MANAGEMENT", + "jurisdictions": [ + "AL", + "AK", + "AZ", + "AR", + "CA", + "CO", + "CT", + "DE", + "DC", + "FL", + "GA", + "GU", + "HI", + "ID", + "IL", + "IN", + "IA", + "KS", + "KY", + "LA", + "ME", + "MD", + "MA", + "MI", + "MN", + "MS", + "MO", + "MT", + "NE", + "NV", + "NH", + "NJ", + "NM", + "NY", + "NC", + "ND", + "OH", + "OK", + "OR", + "PA", + "PR", + "RI", + "SC", + "SD", + "TN", + "TX", + "UT", + "VT", + "VI", + "VA", + "WA", + "WV", + "WI", + "WY" + ] + }, + { + "name": "MORGAN STANLEY CONSULTING GROUP", + "jurisdictions": [ + "AL", + "AK", + "AZ", + "AR", + "CA", + "CO", + "CT", + "DE", + "DC", + "FL", + "GA", + "GU", + "HI", + "ID", + "IL", + "IN", + "IA", + "KS", + "KY", + "LA", + "ME", + "MD", + "MA", + "MI", + "MN", + "MS", + "MO", + "MT", + "NE", + "NV", + "NH", + "NJ", + "NM", + "NY", + "NC", + "ND", + "OH", + "OK", + "OR", + "PA", + "PR", + "RI", + "SC", + "SD", + "TN", + "TX", + "UT", + "VT", + "VI", + "VA", + "WA", + "WV", + "WI", + "WY" + ] + }, + { + "name": "CONSULTING GROUP", + "jurisdictions": [ + "AL", + "AK", + "AZ", + "AR", + "CA", + "CO", + "CT", + "DE", + "DC", + "FL", + "GA", + "GU", + "HI", + "ID", + "IL", + "IN", + "IA", + "KS", + "KY", + "LA", + "ME", + "MD", + "MA", + "MI", + "MN", + "MS", + "MO", + "MT", + "NE", + "NV", + "NH", + "NJ", + "NM", + "NY", + "NC", + "ND", + "OH", + "OK", + "OR", + "PA", + "PR", + "RI", + "SC", + "SD", + "TN", + "TX", + "UT", + "VT", + "VI", + "VA", + "WA", + "WV", + "WI", + "WY" + ] + }, + { + "name": "MORGAN STANLEY PRIVATE WEALTH MANAGEMENT", + "jurisdictions": [ + "AL", + "AK", + "AZ", + "AR", + "CA", + "CO", + "CT", + "DE", + "DC", + "FL", + "GA", + "GU", + "HI", + "ID", + "IL", + "IN", + "IA", + "KS", + "KY", + "LA", + "ME", + "MD", + "MA", + "MI", + "MN", + "MS", + "MO", + "MT", + "NE", + "NV", + "NH", + "NJ", + "NM", + "NY", + "NC", + "ND", + "OH", + "OK", + "OR", + "PA", + "PR", + "RI", + "SC", + "SD", + "TN", + "TX", + "UT", + "VT", + "VI", + "VA", + "WA", + "WV", + "WI", + "WY" + ] + }, + { + "name": "MORGAN STANLEY", + "jurisdictions": [ + "AL", + "AK", + "AZ", + "AR", + "CA", + "CO", + "CT", + "DE", + "DC", + "FL", + "GA", + "GU", + "HI", + "ID", + "IL", + "IN", + "IA", + "KS", + "KY", + "LA", + "ME", + "MD", + "MA", + "MI", + "MN", + "MS", + "MO", + "MT", + "NE", + "NV", + "NH", + "NJ", + "NM", + "NY", + "NC", + "ND", + "OH", + "OK", + "OR", + "PA", + "PR", + "RI", + "SC", + "SD", + "TN", + "TX", + "UT", + "VT", + "VI", + "VA", + "WA", + "WV", + "WI", + "WY" + ] + }, + { + "name": "GRAYSTONE CONSULTING", + "jurisdictions": [ + "AL", + "AK", + "AZ", + "AR", + "CA", + "CO", + "CT", + "DE", + "DC", + "FL", + "GA", + "HI", + "ID", + "IL", + "IN", + "IA", + "KS", + "KY", + "LA", + "ME", + "MD", + "MA", + "MI", + "MN", + "MS", + "MO", + "MT", + "NE", + "NV", + "NH", + "NJ", + "NM", + "NY", + "NC", + "ND", + "OH", + "OK", + "OR", + "PA", + "RI", + "SC", + "SD", + "TN", + "TX", + "UT", + "VT", + "VI", + "VA", + "WA", + "WV", + "WI", + "WY" + ] + } +] \ No newline at end of file diff --git a/examples/api-responses/form-adv-separately-managed-accounts.json b/examples/api-responses/form-adv-separately-managed-accounts.json new file mode 100644 index 0000000..accc664 --- /dev/null +++ b/examples/api-responses/form-adv-separately-managed-accounts.json @@ -0,0 +1,203 @@ +{ + "1-separatelyManagedAccounts": { + "a": { + "i-exchangeTradedEquity": { + "midYear": "58 %", + "endOfYear": "58 %" + }, + "ii-nonExchangeTradedEquity": { + "midYear": "0 %", + "endOfYear": "0 %" + }, + "iii-usGovernmentBonds": { + "midYear": "2 %", + "endOfYear": "2 %" + }, + "iv-usStateAndLocalBonds": { + "midYear": "2 %", + "endOfYear": "2 %" + }, + "v-sovereignBonds": { + "midYear": "0 %", + "endOfYear": "0 %" + }, + "vi-investmentGradeCorporateBonds": { + "midYear": "4 %", + "endOfYear": "4 %" + }, + "vii-nonInvestmentGradeCorporateBonds": { + "midYear": "0 %", + "endOfYear": "0 %" + }, + "viii-derivatives": { + "midYear": "0 %", + "endOfYear": "0 %" + }, + "ix-registeredInvestmentCompanies": { + "midYear": "26 %", + "endOfYear": "25 %" + }, + "x-pooledInvestmentVehicles": { + "midYear": "4 %", + "endOfYear": "4 %" + }, + "xi-cash": { + "midYear": "3 %", + "endOfYear": "4 %" + }, + "xii-other": { + "midYear": "1 %", + "endOfYear": "1 %" + }, + "other": "STRUCTURED INVESTMENTS AND ANNUITIES" + }, + "b": { + "i-exchangeTradedEquity": { + "endOfYear": "%" + }, + "ii-nonExchangeTradedEquity": { + "endOfYear": "%" + }, + "iii-usGovernmentBonds": { + "endOfYear": "%" + }, + "iv-usStateAndLocalBonds": { + "endOfYear": "%" + }, + "v-sovereignBonds": { + "endOfYear": "%" + }, + "vi-investmentGradeCorporateBonds": { + "endOfYear": "%" + }, + "vii-nonInvestmentGradeCorporateBonds": { + "endOfYear": "%" + }, + "viii-derivatives": { + "endOfYear": "%" + }, + "ix-registeredInvestmentCompanies": { + "endOfYear": "%" + }, + "x-pooledInvestmentVehicles": { + "endOfYear": "%" + }, + "xi-cash": { + "endOfYear": "%" + }, + "xii-other": { + "endOfYear": "%" + }, + "other": "" + } + }, + "2-borrowingsAndDerivatives": { + "a-i-midYear": { + "regulatoryAssetsUnderManagement": { + "lessThan10": "$ 1,556,490,216,199", + "between10And149": "$ 113,832,393,489", + "moreThan150": "$ 16,522,479,023" + }, + "borrowings": { + "lessThan10": "$ 1,640,415,435", + "between10And149": "$ 53,635,978,014", + "moreThan150": "$ 67,201,944,992" + }, + "derivativeExposures": { + "lessThan10": { + "interestRate": "0 %", + "foreignExchange": "0 %", + "credit": "0 %", + "equity": "4 %", + "commodity": "0 %", + "other": "0 %" + }, + "between10And149": { + "interestRate": "0 %", + "foreignExchange": "0 %", + "credit": "0 %", + "equity": "58 %", + "commodity": "0 %", + "other": "0 %" + }, + "moreThan150": { + "interestRate": "0 %", + "foreignExchange": "0 %", + "credit": "0 %", + "equity": "185 %", + "commodity": "0 %", + "other": "0 %" + } + } + }, + "a-i-optional": "", + "a-ii-endOfYear": { + "regulatoryAssetsUnderManagement": { + "lessThan10": "$ 1,821,351,370,482", + "between10And149": "$ 123,456,784,214", + "moreThan150": "$ 16,815,420,636" + }, + "borrowings": { + "lessThan10": "$ 1,849,322,225", + "between10And149": "$ 57,207,183,075", + "moreThan150": "$ 73,243,668,360" + }, + "derivativeExposures": { + "lessThan10": { + "interestRate": "0 %", + "foreignExchange": "0 %", + "credit": "0 %", + "equity": "4 %", + "commodity": "0 %", + "other": "0 %" + }, + "between10And149": { + "interestRate": "0 %", + "foreignExchange": "0 %", + "credit": "0 %", + "equity": "60 %", + "commodity": "0 %", + "other": "0 %" + }, + "moreThan150": { + "interestRate": "0 %", + "foreignExchange": "0 %", + "credit": "0 %", + "equity": "213 %", + "commodity": "0 %", + "other": "0 %" + } + } + }, + "a-ii-optional": "", + "b": { + "regulatoryAssetsUnderManagement": { + "lessThan10": "$", + "between10And149": "$", + "moreThan150": "$" + }, + "borrowings": { + "lessThan10": "$", + "between10And149": "$", + "moreThan150": "$" + } + } + }, + "3-custodiansForSeparatelyManagedAccounts": [ + { + "a-legalName": "MORGAN STANLEY SMITH BARNEY LLC", + "b-businessName": "MORGAN STANLEY", + "c-locations": [ + { + "city": "PURCHASE", + "state": "New York", + "country": "United States" + } + ], + "d-isRelatedPerson": true, + "e-secRegistrationNumber": "8 - 68191", + "f-lei": "", + "g-amountHeldAtCustodian": "$ 1,733,996,722,410" + } + ] +} \ No newline at end of file diff --git a/examples/api-responses/insider-trading.json b/examples/api-responses/insider-trading-form4.json similarity index 100% rename from examples/api-responses/insider-trading.json rename to examples/api-responses/insider-trading-form4.json diff --git a/index.js b/index.js index 7ef5eae..a00d561 100755 --- a/index.js +++ b/index.js @@ -290,6 +290,36 @@ const getAdvPrivateFunds = async (crd) => { return getWithToken(url); }; +const getAdvOtherBusinessNames = async (crd) => { + const url = + config.formAdvApi.endpoint + + '/schedule-d-1-b/' + + crd + + '?token=' + + store.apiKey; + return getWithToken(url); +}; + +const getAdvSeparatelyManagedAccounts = async (crd) => { + const url = + config.formAdvApi.endpoint + + '/schedule-d-5-k/' + + crd + + '?token=' + + store.apiKey; + return getWithToken(url); +}; + +const getAdvFinancialIndustryAffiliations = async (crd) => { + const url = + config.formAdvApi.endpoint + + '/schedule-d-7-a/' + + crd + + '?token=' + + store.apiKey; + return getWithToken(url); +}; + const getAdvBrochures = async (crd) => { const url = config.formAdvApi.endpoint + @@ -503,6 +533,9 @@ const modules = { getDirectOwners: getAdvDirectOwners, getIndirectOwners: getAdvIndirectOwners, getPrivateFunds: getAdvPrivateFunds, + getOtherBusinessNames: getAdvOtherBusinessNames, + getSeparatelyManagedAccounts: getAdvSeparatelyManagedAccounts, + getFinancialIndustryAffiliations: getAdvFinancialIndustryAffiliations, getBrochures: getAdvBrochures, }, insiderTradingApi: { diff --git a/tests/index.js b/tests/index.js index 2687bd7..ce4b95d 100644 --- a/tests/index.js +++ b/tests/index.js @@ -245,6 +245,51 @@ function assert(condition, message) { assert(result.filings && result.filings.length > 0, 'No filings returned'); }); + await test('getIndividuals returns individual advisors', async () => { + const result = await secApi.formAdvApi.getIndividuals({ + query: 'CrntEmps.CrntEmp.orgPK:149777', + from: '0', + size: '1', + sort: [{ id: { order: 'desc' } }], + }); + assert(result.filings && result.filings.length > 0, 'No filings returned'); + }); + + await test('getDirectOwners returns Schedule A data', async () => { + const result = await secApi.formAdvApi.getDirectOwners('361'); + assert(Array.isArray(result) && result.length > 0, 'No direct owners returned'); + }); + + await test('getIndirectOwners returns Schedule B data', async () => { + const result = await secApi.formAdvApi.getIndirectOwners('149777'); + assert(Array.isArray(result) && result.length > 0, 'No indirect owners returned'); + }); + + await test('getPrivateFunds returns Schedule D 7.B.1 data', async () => { + const result = await secApi.formAdvApi.getPrivateFunds('793'); + assert(Array.isArray(result) && result.length > 0, 'No private funds returned'); + }); + + await test('getOtherBusinessNames returns Schedule D 1.B data', async () => { + const result = await secApi.formAdvApi.getOtherBusinessNames('149777'); + assert(Array.isArray(result) && result.length > 0, 'No other business names returned'); + }); + + await test('getSeparatelyManagedAccounts returns Schedule D 5.K data', async () => { + const result = await secApi.formAdvApi.getSeparatelyManagedAccounts('149777'); + assert(result, 'No separately managed accounts data returned'); + }); + + await test('getFinancialIndustryAffiliations returns Schedule D 7.A data', async () => { + const result = await secApi.formAdvApi.getFinancialIndustryAffiliations('149777'); + assert(Array.isArray(result) && result.length > 0, 'No financial industry affiliations returned'); + }); + + await test('getBrochures returns brochure data', async () => { + const result = await secApi.formAdvApi.getBrochures('149777'); + assert(result.brochures && result.brochures.length > 0, 'No brochures returned'); + }); + console.log('\nExecutive Compensation API'); await test('getData by ticker returns compensation data', async () => { const result = await secApi.execCompApi.getData('TSLA'); From 651ec3ca79a890cd9e02d2be5350497905410781 Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Wed, 1 Apr 2026 10:12:19 -0400 Subject: [PATCH 28/39] 4.0.2 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 93825a4..56334be 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "sec-api", - "version": "4.0.1", + "version": "4.0.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "sec-api", - "version": "4.0.1", + "version": "4.0.2", "license": "MIT", "dependencies": { "axios": "^1.13.5" diff --git a/package.json b/package.json index d29f5f1..86f2a89 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sec-api", - "version": "4.0.1", + "version": "4.0.2", "description": "SEC-API.io JavaScript Library", "main": "index.js", "exports": { From 98ac096b8d0bfff3e7885db3160d21fc918d3491 Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Wed, 1 Apr 2026 11:14:25 -0400 Subject: [PATCH 29/39] 4.0.3 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 56334be..f465f55 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "sec-api", - "version": "4.0.2", + "version": "4.0.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "sec-api", - "version": "4.0.2", + "version": "4.0.3", "license": "MIT", "dependencies": { "axios": "^1.13.5" diff --git a/package.json b/package.json index 86f2a89..d22393b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sec-api", - "version": "4.0.2", + "version": "4.0.3", "description": "SEC-API.io JavaScript Library", "main": "index.js", "exports": { From b62653efe57cffce2588638a3c412ef7e1e69545 Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Wed, 1 Apr 2026 16:28:53 -0400 Subject: [PATCH 30/39] Trim Form ADV README examples and fix links for npmjs.com - Shorten inline Form ADV example responses to reduce README size (146KB -> 135KB) with links to full responses on GitHub - Use absolute GitHub URLs for example response links so they work on npmjs.com (not just GitHub) - Pin axios dependency to exact version 1.13.5 --- README.md | 421 +++++++++------------------------------------------ package.json | 2 +- 2 files changed, 69 insertions(+), 354 deletions(-) diff --git a/README.md b/README.md index 84f0549..07f2adf 100644 --- a/README.md +++ b/README.md @@ -826,7 +826,7 @@ const firms = await formAdvApi.getFirms({ ```
- Example Response + Example Response (shortened) ```json { @@ -851,230 +851,18 @@ const firms = await formAdvApi.getFirms({ }, "MailingAddr": {}, "Rgstn": [ - { - "FirmType": "Registered", - "St": "APPROVED", - "Dt": "1981-05-13" - } + { "FirmType": "Registered", "St": "APPROVED", "Dt": "1981-05-13" } ], "NoticeFiled": { - "States": [ - { "RgltrCd": "AL", "St": "FILED", "Dt": "1992-10-28" }, - { "RgltrCd": "AK", "St": "FILED", "Dt": "1997-11-21" } - // ... more items - ] + "States": [{ "RgltrCd": "AL", "St": "FILED", "Dt": "1992-10-28" }] }, "Filing": [{ "Dt": "2026-03-31", "FormVrsn": "10/2021" }], "FormInfo": { "Part1A": { - "Item1": { - "WebAddrs": { - "WebAddrs": [ - "https://www.linkedin.com/showcase/goldman-sachs--private-wealth-management", - "https://privatewealth.goldmansachs.com/us/en/home" - // ... more items - ], - "WebAddr": "https://www.instagram.com/goldmansachs/" - }, - "Q1F5": 18, - "Q1I": "Y", - "Q1M": "Y", - "Q1N": "N", - "Q1O": "Y", - "Q1ODesc": "More than $50 billion", - "Q1P": "FOR8UP27PHTHYVLBNG30" - }, - "Item2A": { - "Q2A1": "Y", - "Q2A2": "N", - "Q2A4": "N", - "Q2A5": "N", - "Q2A6": "N", - "Q2A7": "N", - "Q2A8": "N", - "Q2A9": "N", - "Q2A10": "N", - "Q2A11": "N", - "Q2A12": "N", - "Q2A13": "N" - }, - "Item2B": {}, - "Item3A": { "OrgFormNm": "Limited Liability Company" }, - "Item3B": { "Q3B": "DECEMBER" }, - "Item3C": { "StateCD": "NY", "CntryNm": "United States" }, + "Item1": { "Q1F5": 18, "Q1ODesc": "More than $50 billion" }, "Item5A": { "TtlEmp": 2268 }, - "Item5B": { - "Q5B1": 1765, - "Q5B2": 1698, - "Q5B3": 0, - "Q5B4": 0, - "Q5B5": 60, - "Q5B6": 1 - }, - "Item5C": { "Q5C1": "2355", "Q5C2": 2 }, - "Item5D": { - "Q5DA1": 0, - "Q5DA3": 0, - "Q5DB1": 29104, - "Q5DB3": 50962159253, - "Q5DC1": 0, - "Q5DC3": 0, - "Q5DD1": 0, - "Q5DD3": 0, - "Q5DE1": 0, - "Q5DE3": 0, - "Q5DF1": 0, - "Q5DF3": 0, - "Q5DG1": 9, - "Q5DG3": 4729043, - "Q5DH1": 1040, - "Q5DH3": 17527757435, - "Q5DI1": 1, - "Q5DI2": "Fewer than 5 clients", - "Q5DI3": 5787207, - "Q5DJ1": 0, - "Q5DJ3": 0, - "Q5DK1": 28, - "Q5DK3": 288850139, - "Q5DL1": 0, - "Q5DL3": 0, - "Q5DM1": 506, - "Q5DM3": 16937232904, - "Q5DN1": 15580, - "Q5DN3": 47917712945, - "Q5DN3Oth": "GS TRUST COMPANY, INDIAN TRIBES" - }, - "Item5E": { - "Q5E1": "Y", - "Q5E2": "N", - "Q5E3": "N", - "Q5E4": "Y", - "Q5E5": "Y", - "Q5E6": "Y", - "Q5E7": "Y", - "Q5E7Oth": "EXECUTION CHARGES, CUSTODY, MANAGEMENT FEE" - }, - "Item5F": { - "Q5F1": "Y", - "Q5F2A": 133354336653, - "Q5F2B": 289892273, - "Q5F2C": 133644228926, - "Q5F2D": 46265, - "Q5F2E": 4, - "Q5F2F": 46269, - "Q5F3": 9078887461 - }, - "Item5G": { - "Q5G1": "Y", - "Q5G2": "Y", - "Q5G3": "N", - "Q5G4": "Y", - "Q5G5": "Y", - "Q5G6": "N", - "Q5G7": "Y", - "Q5G8": "Y", - "Q5G9": "N", - "Q5G10": "N", - "Q5G11": "Y", - "Q5G12": "N" - }, - "Item5H": { "Q5H": "1-10" }, - "Item5I": { "Q5I1": "Y", "Q5I2A": 0, "Q5I2B": 0, "Q5I2C": 0 }, - "Item5J": { "Q5J1": "Y", "Q5J2": "Y" }, - "Item5K": { "Q5K1": "Y", "Q5K2": "Y", "Q5K3": "Y", "Q5K4": "Y" }, - "Item5L": { - "Q5L1A": "Y", - "Q5L1B": "Y", - "Q5L1C": "Y", - "Q5L1D": "N", - "Q5L1E": "Y", - "Q5L2": "Y", - "Q5L3": "Y", - "Q5L4": "N" - }, - "Item6A": { - "Q6A1": "Y", - "Q6A2": "N", - "Q6A3": "Y", - "Q6A4": "Y", - "Q6A5": "N", - "Q6A6": "N", - "Q6A7": "N", - "Q6A8": "N", - "Q6A9": "Y", - "Q6A10": "Y", - "Q6A11": "N", - "Q6A12": "N", - "Q6A13": "N", - "Q6A14": "N" - }, - "Item6B": { "Q6B1": "Y", "Q6B2": "N", "Q6B3": "Y" }, - "Item7A": { - "Q7A1": "Y", - "Q7A2": "Y", - "Q7A3": "N", - "Q7A4": "Y", - "Q7A5": "N", - "Q7A6": "Y", - "Q7A7": "Y", - "Q7A8": "Y", - "Q7A9": "Y", - "Q7A10": "N", - "Q7A11": "N", - "Q7A12": "Y", - "Q7A13": "Y", - "Q7A14": "N", - "Q7A15": "N", - "Q7A16": "Y" - }, - "Item7B": { "Q7B": "N" }, - "Item8A": { "Q8A1": "Y", "Q8A2": "Y", "Q8A3": "Y" }, - "Item8B": { "Q8B1": "Y", "Q8B2": "Y", "Q8B3": "Y" }, - "Item8C": { "Q8C1": "Y", "Q8C2": "Y", "Q8C3": "Y", "Q8C4": "Y" }, - "Item8D": { "Q8D": "Y" }, - "Item8E": { "Q8E": "Y" }, - "Item8F": { "Q8F": "Y" }, - "Item8G": { "Q8G1": "Y", "Q8G2": "Y" }, - "Item8H": { "Q8H1": "Y", "Q8H2": "Y" }, - "Item8I": { "Q8I": "N" }, - "Item9A": { - "Q9A1A": "Y", - "Q9A1B": "Y", - "Q9A2A": 132356397074, - "Q9A2B": 46194 - }, - "Item9B": { "Q9B1A": "N", "Q9B1B": "N", "Q9B2A": 0, "Q9B2B": 0 }, - "Item9C": { "Q9C1": "Y", "Q9C2": "Y", "Q9C3": "Y", "Q9C4": "Y" }, - "Item9D": { "Q9D1": "Y", "Q9D2": "Y" }, - "Item9E": { "Q9E": "2025-07" }, - "Item9F": { "Q9F": 91 }, - "Item10A": { "Q10A": "N" }, - "Item11": { "Q11": "Y" }, - "Item11A": { "Q11A1": "N", "Q11A2": "Y" }, - "Item11B": { "Q11B1": "Y", "Q11B2": "Y" }, - "Item11C": { - "Q11C1": "Y", - "Q11C2": "Y", - "Q11C3": "N", - "Q11C4": "Y", - "Q11C5": "Y" - }, - "Item11D": { - "Q11D1": "Y", - "Q11D2": "Y", - "Q11D3": "N", - "Q11D4": "Y", - "Q11D5": "Y" - }, - "Item11E": { "Q11E1": "Y", "Q11E2": "Y", "Q11E3": "N", "Q11E4": "N" }, - "Item11F": { "Q11F": "Y" }, - "Item11G": { "Q11G": "Y" }, - "Item11H": { - "Q11H1A": "Y", - "Q11H1B": "Y", - "Q11H1C": "Y", - "Q11H2": "Y" - } + "Item5F": { "Q5F2C": 133644228926, "Q5F2F": 46269 } + // ... Items 2A-11H included in full response } }, "id": 361 @@ -1085,6 +873,8 @@ const firms = await formAdvApi.getFirms({
+[Full example response](https://github.com/janlukasschroeder/sec-api/blob/master/examples/api-responses/form-adv-firms.json) + ### Search Individual Advisors ```js @@ -1098,7 +888,7 @@ const individuals = await formAdvApi.getIndividuals({ ```
- Example Response + Example Response (shortened) ```json { @@ -1127,34 +917,11 @@ const individuals = await formAdvApi.getIndividuals({ "regCat": "RA", "st": "APPROVED", "stDt": "2026-02-02" - }, - { - "regAuth": "TX", - "regCat": "RA", - "st": "APPROVED", - "stDt": "2026-02-06" - } - ] - }, - "BrnchOfLocs": { - "BrnchOfLoc": [ - { - "str1": "200 South Biscayne Boulevard", - "str2": "Suite 1100", - "city": "Miami", - "state": "FL", - "cntry": "United States", - "postlCd": "33131" } ] }, "orgNm": "MORGAN STANLEY", - "orgPK": 149777, - "str1": "2000 WESTCHESTER AVENUE", - "city": "PURCHASE", - "state": "NY", - "cntry": "United States", - "postlCd": "10577-2530" + "orgPK": 149777 } ] }, @@ -1167,8 +934,6 @@ const individuals = await formAdvApi.getIndividuals({ } ] }, - "Dsgntns": {}, - "PrevRgstns": {}, "EmpHss": { "EmpHs": [ { @@ -1178,16 +943,11 @@ const individuals = await formAdvApi.getIndividuals({ "city": "Miami", "state": "FL" } - // ... more items ] }, - "OthrBuss": { - "OthrBus": { - "desc": "..." - } - }, "DRPs": {}, "id": 8213636 + // ... also includes: Dsgntns, PrevRgstns, OthrBuss, BrnchOfLocs } ] } @@ -1195,6 +955,8 @@ const individuals = await formAdvApi.getIndividuals({
+[Full example response](https://github.com/janlukasschroeder/sec-api/blob/master/examples/api-responses/form-adv-individuals.json) + ### Get Direct Owners (Schedule A) ```js @@ -1233,6 +995,8 @@ const directOwners = await formAdvApi.getDirectOwners('793'); +[Full example response](https://github.com/janlukasschroeder/sec-api/blob/master/examples/api-responses/form-adv-direct-owners.json) + ### Get Indirect Owners (Schedule B) ```js @@ -1273,6 +1037,8 @@ const indirectOwners = await formAdvApi.getIndirectOwners('326262'); +[Full example response](https://github.com/janlukasschroeder/sec-api/blob/master/examples/api-responses/form-adv-indirect-owners.json) + ### Get Other Business Names (Schedule D, Section 1.B) ```js @@ -1281,24 +1047,48 @@ const otherBusinessNames = await formAdvApi.getOtherBusinessNames('149777'); ```
- Example Response + Example Response (shortened) ```json [ { "name": "MORGAN STANLEY SMITH BARNEY", - "jurisdictions": ["AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "DC", "FL", "GA", "GU", "HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD", "MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ", "NM", "NY", "NC", "ND", "OH", "OK", "OR", "PA", "PR", "RI", "SC", "SD", "TN", "TX", "UT", "VT", "VI", "VA", "WA", "WV", "WI", "WY"] + "jurisdictions": [ + "AL", + "AK", + "AZ", + "AR", + "CA", + "CO", + "CT", + "DE", + "DC", + "FL" + ] }, { "name": "MORGAN STANLEY WEALTH MANAGEMENT", - "jurisdictions": ["AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "DC", "FL", "GA", "GU", "HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD", "MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ", "NM", "NY", "NC", "ND", "OH", "OK", "OR", "PA", "PR", "RI", "SC", "SD", "TN", "TX", "UT", "VT", "VI", "VA", "WA", "WV", "WI", "WY"] + "jurisdictions": [ + "AL", + "AK", + "AZ", + "AR", + "CA", + "CO", + "CT", + "DE", + "DC", + "FL" + ] } - // ... more business names + // ... more business names, each with full list of jurisdictions ] ```
+[Full example response](https://github.com/janlukasschroeder/sec-api/blob/master/examples/api-responses/form-adv-other-business-names.json) + ### Get Separately Managed Accounts (Schedule D, Section 5.K) Retrieve details about separately managed accounts, including asset type distributions, borrowings, derivative exposures, and custodians. @@ -1309,7 +1099,7 @@ const smaData = await formAdvApi.getSeparatelyManagedAccounts('149777'); ```
- Example Response + Example Response (shortened) ```json { @@ -1317,17 +1107,8 @@ const smaData = await formAdvApi.getSeparatelyManagedAccounts('149777'); "a": { "i-exchangeTradedEquity": { "midYear": "58 %", "endOfYear": "58 %" }, "ii-nonExchangeTradedEquity": { "midYear": "0 %", "endOfYear": "0 %" }, - "iii-usGovernmentBonds": { "midYear": "2 %", "endOfYear": "2 %" }, - "iv-usStateAndLocalBonds": { "midYear": "2 %", "endOfYear": "2 %" }, - "v-sovereignBonds": { "midYear": "0 %", "endOfYear": "0 %" }, - "vi-investmentGradeCorporateBonds": { "midYear": "4 %", "endOfYear": "4 %" }, - "vii-nonInvestmentGradeCorporateBonds": { "midYear": "0 %", "endOfYear": "0 %" }, - "viii-derivatives": { "midYear": "0 %", "endOfYear": "0 %" }, - "ix-registeredInvestmentCompanies": { "midYear": "26 %", "endOfYear": "25 %" }, - "x-pooledInvestmentVehicles": { "midYear": "4 %", "endOfYear": "4 %" }, - "xi-cash": { "midYear": "3 %", "endOfYear": "4 %" }, - "xii-other": { "midYear": "1 %", "endOfYear": "1 %" }, - "other": "STRUCTURED INVESTMENTS AND ANNUITIES" + "iii-usGovernmentBonds": { "midYear": "2 %", "endOfYear": "2 %" } + // ... iv through xii also included } }, "2-borrowingsAndDerivatives": { @@ -1343,9 +1124,9 @@ const smaData = await formAdvApi.getSeparatelyManagedAccounts('149777'); "moreThan150": "$ 67,201,944,992" }, "derivativeExposures": { - "lessThan10": { "interestRate": "0 %", "foreignExchange": "0 %", "credit": "0 %", "equity": "4 %", "commodity": "0 %", "other": "0 %" }, - "between10And149": { "interestRate": "0 %", "foreignExchange": "0 %", "credit": "0 %", "equity": "58 %", "commodity": "0 %", "other": "0 %" }, - "moreThan150": { "interestRate": "0 %", "foreignExchange": "0 %", "credit": "0 %", "equity": "185 %", "commodity": "0 %", "other": "0 %" } + "lessThan10": { "interestRate": "0 %", "equity": "4 %" }, + "between10And149": { "equity": "58 %" }, + "moreThan150": { "equity": "185 %" } } } // ... end of year data also included @@ -1354,10 +1135,7 @@ const smaData = await formAdvApi.getSeparatelyManagedAccounts('149777'); { "a-legalName": "MORGAN STANLEY SMITH BARNEY LLC", "b-businessName": "MORGAN STANLEY", - "c-locations": [{ "city": "PURCHASE", "state": "New York", "country": "United States" }], "d-isRelatedPerson": true, - "e-secRegistrationNumber": "8 - 68191", - "f-lei": "", "g-amountHeldAtCustodian": "$ 1,733,996,722,410" } ] @@ -1366,17 +1144,20 @@ const smaData = await formAdvApi.getSeparatelyManagedAccounts('149777');
+[Full example response](https://github.com/janlukasschroeder/sec-api/blob/master/examples/api-responses/form-adv-separately-managed-accounts.json) + ### Get Financial Industry Affiliations (Schedule D, Section 7.A) Retrieve related persons and financial industry affiliations, such as affiliated broker-dealers, investment advisers, insurance companies, and pooled investment vehicle sponsors. ```js -const affiliations = await formAdvApi.getFinancialIndustryAffiliations('149777'); +const affiliations = + await formAdvApi.getFinancialIndustryAffiliations('149777'); // response: [...] array of financial industry affiliations ```
- Example Response + Example Response (shortened) ```json [ @@ -1385,26 +1166,14 @@ const affiliations = await formAdvApi.getFinancialIndustryAffiliations('149777') "2-businessName": "MS CAPITAL PARTNERS ADVISER INC.", "3-secFileNumber": "80169426", "4a-crdNumber": "147521", - "4b-cikNumbers": [], "5-typesOfRelatedPerson": ["b-otherAdviser", "f-commodityPoolOperator"], "6-controlsRelatedPerson": false, "7-underCommonControl": false, "8a-relatedPersonActsAsCustodian": false, - "8b-notOperationallyIndependent": false, - "8c-locationOfRelatedPerson": { - "street1": "", - "street2": "", - "city": "", - "state": "", - "zipCode": "", - "country": "" - }, "9a-exemptFromRegistration": false, - "9b-exemption": "", - "10a-registeredWithForeignRegulator": false, - "10b-foreignRegulator": [], "11-shareSupervisedPersons": true, "12-shareSameLocation": false + // ... also includes: 4b-cikNumbers, 8b, 8c-locationOfRelatedPerson, 9b, 10a, 10b } // ... more affiliations ] @@ -1412,6 +1181,8 @@ const affiliations = await formAdvApi.getFinancialIndustryAffiliations('149777')
+[Full example response](https://github.com/janlukasschroeder/sec-api/blob/master/examples/api-responses/form-adv-financial-industry-affiliations.json) + ### Get Private Funds (Schedule D, Section 7.B.1) ```js @@ -1420,7 +1191,7 @@ const privateFunds = await formAdvApi.getPrivateFunds('793'); ```
- Example Response + Example Response (shortened) ```json [ @@ -1431,18 +1202,10 @@ const privateFunds = await formAdvApi.getPrivateFunds('793'); "3a-namesOfGeneralPartnerManagerTrusteeDirector": [ "STIFEL NICOLAUS & COMPANY, INC." ], - "3b-filingAdvisers": "No Information Filed", - "4-1-exclusionUnder3c1": false, "4-2-exclusionUnder3c7": true, - "5-nameCountryOfForeignFinancialRegAuthority": [], - "6a-isMasterFundInMasterFeederArrangement": false, - "6b-nameIdOfFeederFunds": [], "6c-isFeederFundInMasterFeederAgreement": true, "6d-nameIdOfMasterFund": "EI FUND V, LP", - "7a-f-feederFundDetails": [], "8a-isFundOfFunds": true, - "8b-investsInFundsManagedByYouRelatedPerson": false, - "9-investsInSecuritiesAccordingTo6e": false, "10-typeOfFund": { "selectedTypes": ["other private fund"], "otherFundType": "FEEDER INTO PRIVATE EQUITY FUND" @@ -1450,71 +1213,19 @@ const privateFunds = await formAdvApi.getPrivateFunds('793'); "11-grossAssetValue": 2027469, "12-minInvestmentCommitment": 100000, "13-numberOfBeneficialOwners": 25, - "14-percentageOwnedByYou": 0, - "15a-percentageOwnedByFundsOfFunds": 0, - "15b-salesAreLimited": false, - "16-percentageOwnedByNonUnitedStatesPersons": 0, - "17a-isSubadviser": false, - "17b-nameAndSecFileNumber": "No Information Filed", - "18a-investmentAdvisersAdviseFund": false, - "18b-otherAdvisers": [], - "19-clientsAreSolicited": true, - "20-percentageClientsInvestedInFund": 0, - "21-fundReliedOnExemption": true, - "22-formDFileNumbers": ["021-151919"], - "23a-1-financialStatementsAreSubjectToAnnualAudit": true, - "23a-2-financialStatementsPreparedWithUsGaap": true, "23b-f-auditors": [ { "23b-name": "KATZ SAPPER MILLER", - "23c-location": { - "city": "INDIANAPOLIS", - "state": "Indiana", - "country": "United States" - }, - "23d-isIndependentPublicAccountant": true, - "23e-isRegistered": true, - "23e-boardAssignedNumber": "2804", - "23f-isSubjectToInspection": true + "23d-isIndependentPublicAccountant": true } ], - "23g-financialStatementsDistributedToInvestors": true, - "23h-reportsIncludeUnqualifiedOpinions": "yes", - "24a-fundUsesPrimeBrokers": false, - "24b-e-primeBrokers": [], - "25a-fundUsesCustodians": true, "25b-g-custodians": [ { "25b-legalName": "STIFEL, NICOLAUS & COMPANY, INCORPORATED", - "25c-businessName": "STIFEL, NICOLAUS & COMPANY, INCORPORATED", - "25d-location": { - "city": "ST. LOUIS", - "state": "Missouri", - "country": "United States" - }, - "25e-isRelatedPerson": true, - "25f-1-secRegistrationNumber": "8 - 1447", - "25f-2-crdNumber": "793", - "25g-legalEntityIdentifier": "" - } - ], - "26a-fundUsesAdministrators": true, - "26b-f-administrators": [ - { - "26b-name": "HALL KISTLER & COMPANY", - "26c-location": { - "city": "CANTON", - "state": "Ohio", - "country": "United States" - }, - "26d-isRelatedPerson": false, - "26e-statementsProvidedTo": "no investors", - "26f-statementsSentBy": "ADMINISTRATOR PREPARES INVESTOR ACCOUNT STATEMENTS, AND STIFEL NICOLAUS SENDS THE STATEMENTS TO INVESTORS." + "25e-isRelatedPerson": true } - ], - "27-percentageOfAssetsValuedNotByRelatedPerson": 100, - "28a-fundUsesMarketers": false, - "28b-g-marketers": [] + ] + // ... 28 fields per fund in full response } // ... more funds ] @@ -1522,6 +1233,8 @@ const privateFunds = await formAdvApi.getPrivateFunds('793');
+[Full example response](https://github.com/janlukasschroeder/sec-api/blob/master/examples/api-responses/form-adv-private-funds.json) + ### Get Brochures ```js @@ -1560,6 +1273,8 @@ const brochures = await formAdvApi.getBrochures('149777'); +[Full example response](https://github.com/janlukasschroeder/sec-api/blob/master/examples/api-responses/form-adv-brochures.json) + > See the documentation for more details: https://sec-api.io/docs/investment-adviser-and-adv-api ## Insider Trading Data API diff --git a/package.json b/package.json index d22393b..76cd84d 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ }, "homepage": "https://github.com/janlukasschroeder/sec-api#readme", "dependencies": { - "axios": "^1.13.5" + "axios": "1.13.5" }, "bin": { "sec-api": "./index.js" From 0850943987417c56f6dca5e9afa43a552b8838ab Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Wed, 1 Apr 2026 16:29:04 -0400 Subject: [PATCH 31/39] 4.0.4 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index f465f55..4c31f86 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "sec-api", - "version": "4.0.3", + "version": "4.0.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "sec-api", - "version": "4.0.3", + "version": "4.0.4", "license": "MIT", "dependencies": { "axios": "^1.13.5" diff --git a/package.json b/package.json index 76cd84d..c4e4a23 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sec-api", - "version": "4.0.3", + "version": "4.0.4", "description": "SEC-API.io JavaScript Library", "main": "index.js", "exports": { From ce252ab1d572cea335cc3640d6009b3ff57ed98d Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Wed, 1 Apr 2026 17:26:45 -0400 Subject: [PATCH 32/39] Update README --- README.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 07f2adf..0e90aa4 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,18 @@ # SEC-API.io JavaScript API Library -`sec-api` is a JavaScript library for accessing the complete EDGAR database, including over **20 million SEC filings** from 1993/94 to the present and more than **100 million exhibits and attachments**. + -Download filings and related documents, such as complete submission files, index pages, SGML headers, XML and XBRL files, PDFs, and more, at up to **20 requests per second**, with **no API key required**. +**The industry-standard for SEC & EDGAR data**, trusted by the world's largest hedge funds, investment banks, exchanges, law firms, and universities. Developed by PhDs in finance and physics. + +
+ +[![Documentation](https://img.shields.io/badge/Documentation-sec--api.io-blue)](https://sec-api.io/docs) +[![npm downloads](https://img.shields.io/npm/dm/sec-api)](https://www.npmjs.com/package/sec-api) + +- **20+ million EDGAR filings** and **100+ million exhibits** — from investor presentations, credit agreements, M&A, government contracts, and executive employment agreements to board composition and subsidiaries +- **800,000+ entities, survivorship-bias free** — covers every SEC-regulated filer that ever reported, including delisted companies, dissolved funds, terminated advisors, and entities no longer reporting. From insiders and public/private companies to ETFs, mutual funds, hedge funds, foreign private issuers, BDCs, REITs, shell companies, and more +- **All 500+ EDGAR form types** — annual and quarterly reports (10-K, 10-Q, 20-F, 40-F), proxy statements (DEF 14A) and voting records, registration statements and prospectuses, and everything in between, including form types no longer in use +- **Full historical time range** — from 1993 to present, with data updated in real-time The full API documentation is available at [sec-api.io/docs](https://sec-api.io/docs). From 750565749dae03507e1b5eb93b5e9be93d880639 Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Wed, 1 Apr 2026 17:26:50 -0400 Subject: [PATCH 33/39] 4.0.5 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4c31f86..7bec569 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "sec-api", - "version": "4.0.4", + "version": "4.0.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "sec-api", - "version": "4.0.4", + "version": "4.0.5", "license": "MIT", "dependencies": { "axios": "^1.13.5" diff --git a/package.json b/package.json index c4e4a23..74ded1f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sec-api", - "version": "4.0.4", + "version": "4.0.5", "description": "SEC-API.io JavaScript Library", "main": "index.js", "exports": { From 936a3ae8f16229491bcaf29c52cd85319c6a8528 Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Sun, 12 Apr 2026 10:10:44 -0400 Subject: [PATCH 34/39] Replace axios with zero-dependency HTTP client - Replace axios with built-in https module (zero dependencies) - Add keep-alive agent (FIFO, 10 max sockets, 15s timeout) - Add gzip/deflate/br decompression and 3xx redirect following - Add 429 retry with backoff, skip retry on free-tier exhaustion - Parse API error responses ({ status, error }) into structured errors - Move config.js to config/index.js, remove unused io/downloadApiV1 - Move example.js to examples/scripts/playground.js, add 8 example scripts - Add invalid API key test, module export tests (43 total) - Update README links to match new repo (sec-api-io/sec-api-node) --- .gitignore | 4 +- README.md | 18 +- config.js => config/index.js | 7 - example.js | 140 ----------- examples/scripts/download-api.js | 31 +++ examples/scripts/extractor-api.js | 32 +++ examples/scripts/form-13f-api.js | 38 +++ examples/scripts/full-text-search-api.js | 35 +++ examples/scripts/insider-trading-api.js | 41 ++++ examples/scripts/mapping-api.js | 32 +++ examples/scripts/playground.js | 97 ++++++++ examples/scripts/query-api.js | 35 +++ examples/scripts/xbrl-to-json-api.js | 36 +++ index.js | 100 +++----- modules/http-client.js | 183 +++++++++++++++ package-lock.json | 282 ----------------------- package.json | 12 +- tests/index.js | 131 ++++++++++- 18 files changed, 726 insertions(+), 528 deletions(-) rename config.js => config/index.js (95%) delete mode 100644 example.js create mode 100644 examples/scripts/download-api.js create mode 100644 examples/scripts/extractor-api.js create mode 100644 examples/scripts/form-13f-api.js create mode 100644 examples/scripts/full-text-search-api.js create mode 100644 examples/scripts/insider-trading-api.js create mode 100644 examples/scripts/mapping-api.js create mode 100644 examples/scripts/playground.js create mode 100644 examples/scripts/query-api.js create mode 100644 examples/scripts/xbrl-to-json-api.js create mode 100644 modules/http-client.js diff --git a/.gitignore b/.gitignore index dec1c10..47ff8d2 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,6 @@ node_modules deploy.sh .npmrc .claude -tmp \ No newline at end of file +tmp +TODO.md +/scripts/* \ No newline at end of file diff --git a/README.md b/README.md index 0e90aa4..3d54229 100644 --- a/README.md +++ b/README.md @@ -883,7 +883,7 @@ const firms = await formAdvApi.getFirms({ -[Full example response](https://github.com/janlukasschroeder/sec-api/blob/master/examples/api-responses/form-adv-firms.json) +[Full example response](https://github.com/sec-api-io/sec-api-node/blob/master/examples/api-responses/form-adv-firms.json) ### Search Individual Advisors @@ -965,7 +965,7 @@ const individuals = await formAdvApi.getIndividuals({ -[Full example response](https://github.com/janlukasschroeder/sec-api/blob/master/examples/api-responses/form-adv-individuals.json) +[Full example response](https://github.com/sec-api-io/sec-api-node/blob/master/examples/api-responses/form-adv-individuals.json) ### Get Direct Owners (Schedule A) @@ -1005,7 +1005,7 @@ const directOwners = await formAdvApi.getDirectOwners('793'); -[Full example response](https://github.com/janlukasschroeder/sec-api/blob/master/examples/api-responses/form-adv-direct-owners.json) +[Full example response](https://github.com/sec-api-io/sec-api-node/blob/master/examples/api-responses/form-adv-direct-owners.json) ### Get Indirect Owners (Schedule B) @@ -1047,7 +1047,7 @@ const indirectOwners = await formAdvApi.getIndirectOwners('326262'); -[Full example response](https://github.com/janlukasschroeder/sec-api/blob/master/examples/api-responses/form-adv-indirect-owners.json) +[Full example response](https://github.com/sec-api-io/sec-api-node/blob/master/examples/api-responses/form-adv-indirect-owners.json) ### Get Other Business Names (Schedule D, Section 1.B) @@ -1097,7 +1097,7 @@ const otherBusinessNames = await formAdvApi.getOtherBusinessNames('149777'); -[Full example response](https://github.com/janlukasschroeder/sec-api/blob/master/examples/api-responses/form-adv-other-business-names.json) +[Full example response](https://github.com/sec-api-io/sec-api-node/blob/master/examples/api-responses/form-adv-other-business-names.json) ### Get Separately Managed Accounts (Schedule D, Section 5.K) @@ -1154,7 +1154,7 @@ const smaData = await formAdvApi.getSeparatelyManagedAccounts('149777'); -[Full example response](https://github.com/janlukasschroeder/sec-api/blob/master/examples/api-responses/form-adv-separately-managed-accounts.json) +[Full example response](https://github.com/sec-api-io/sec-api-node/blob/master/examples/api-responses/form-adv-separately-managed-accounts.json) ### Get Financial Industry Affiliations (Schedule D, Section 7.A) @@ -1191,7 +1191,7 @@ const affiliations = -[Full example response](https://github.com/janlukasschroeder/sec-api/blob/master/examples/api-responses/form-adv-financial-industry-affiliations.json) +[Full example response](https://github.com/sec-api-io/sec-api-node/blob/master/examples/api-responses/form-adv-financial-industry-affiliations.json) ### Get Private Funds (Schedule D, Section 7.B.1) @@ -1243,7 +1243,7 @@ const privateFunds = await formAdvApi.getPrivateFunds('793'); -[Full example response](https://github.com/janlukasschroeder/sec-api/blob/master/examples/api-responses/form-adv-private-funds.json) +[Full example response](https://github.com/sec-api-io/sec-api-node/blob/master/examples/api-responses/form-adv-private-funds.json) ### Get Brochures @@ -1283,7 +1283,7 @@ const brochures = await formAdvApi.getBrochures('149777'); -[Full example response](https://github.com/janlukasschroeder/sec-api/blob/master/examples/api-responses/form-adv-brochures.json) +[Full example response](https://github.com/sec-api-io/sec-api-node/blob/master/examples/api-responses/form-adv-brochures.json) > See the documentation for more details: https://sec-api.io/docs/investment-adviser-and-adv-api diff --git a/config.js b/config/index.js similarity index 95% rename from config.js rename to config/index.js index f0ceb22..4be12c0 100644 --- a/config.js +++ b/config/index.js @@ -1,11 +1,4 @@ module.exports = { - io: { - server: 'https://api.sec-api.io:3334', - // server: 'http://localhost:3333', - namespace: { - allFilings: 'all-filings', - }, - }, queryApi: { endpoint: 'https://api.sec-api.io', }, diff --git a/example.js b/example.js deleted file mode 100644 index 9a6c541..0000000 --- a/example.js +++ /dev/null @@ -1,140 +0,0 @@ -const secApi = require('./index'); - -/** - * Set your API key - */ -const yourApiKey = 'YOUR_API_KEY'; - -secApi.setApiKey(yourApiKey); - -/** - * Query API - */ -const { queryApi } = secApi; - -const queryExample = async () => { - const query = { - query: { query_string: { query: 'formType:"10-Q"' } }, - from: '0', - size: '10', - sort: [{ filedAt: { order: 'desc' } }], - }; - - const data = await queryApi.getFilings(query); - - console.log(data); -}; - -// uncomment -// queryExample(); - -/** - * Full-text search API - */ -const { fullTextSearchApi } = secApi; - -const fullTextSearchExample = async () => { - const query = { - query: '"LPCN 1154"', // drug - // formTypes: ['8-K', '10-Q'], - startDate: '2021-01-01', - endDate: '2021-06-14', - }; - - const data = await fullTextSearchApi.getFilings(query); - - console.log(data); -}; - -// uncomment -// fullTextSearchExample(); - -/** - * Download API - */ -const { downloadApi } = secApi; - -const downloadApiExample = async () => { - const filingUrl = - 'https://www.sec.gov/Archives/edgar/data/1318605/000162828025045968/tsla-20250930.htm'; - - const data = await downloadApi.getFile(filingUrl); - - console.log(data.slice(0, 1000)); -}; - -// downloadApiExample(); - -/** - * Render API - */ -const { renderApi } = secApi; - -const renderApiExample = async () => { - const filingUrl = - 'https://www.sec.gov/Archives/edgar/data/1841925/000121390021032758/ea142795-8k_indiesemic.htm'; - - const data = await renderApi.getFilingContent(filingUrl); - - console.log(data); -}; - -// uncomment -// renderApiExample(); - -/** - * Stream API - */ -// const { streamApi } = secApi; - -// uncomment -// streamApi.connect(yourApiKey); -// streamApi.on('filing', (filing) => console.log(filing)); -// streamApi.on('filings', (filings) => console.log(filings)); - -/** - * 10-K/10-Q Section Extraction API - */ -const { extractorApi } = secApi; - -const extractorApiExample = async () => { - const filingUrl = - 'https://www.sec.gov/Archives/edgar/data/1318605/000156459021004599/tsla-10k_20201231.htm'; - - const sectionText = await extractorApi.getSection(filingUrl, '1A', 'text'); - const sectionHtml = await extractorApi.getSection(filingUrl, '1A', 'html'); - - console.log(sectionText); - console.log(sectionHtml); -}; - -// uncomment -// extractorApiExample(); - -/** - * XBRL-to-JSON API - */ -const { xbrlApi } = secApi; - -// xbrlApi.setApiKey('YOUR_API_KEY'); - -// 10-K HTM File URL example -// const xbrlJson = xbrlApi -// .xbrlToJson({ -// htmUrl: -// 'https://www.sec.gov/Archives/edgar/data/320193/000032019320000096/aapl-20200926.htm', -// }) -// .then(console.log); - -// 10-K XBRL File URL Example -// const xbrlJson = xbrlApi -// .xbrlToJson({ -// xbrlUrl: -// 'https://www.sec.gov/Archives/edgar/data/320193/000032019320000096/aapl-20200926_htm.xml', -// }) -// .then(console.log); - -// 10-K Accession Number Example -// const xbrlJson = xbrlApi -// .xbrlToJson({ accessionNo: '0000320193-20-000096' }) -// .then(console.log); diff --git a/examples/scripts/download-api.js b/examples/scripts/download-api.js new file mode 100644 index 0000000..c3376d7 --- /dev/null +++ b/examples/scripts/download-api.js @@ -0,0 +1,31 @@ +const fs = require('fs'); +const path = require('path'); +const secApi = require('../../index'); + +const { log } = console; + +// use .env if present, otherwise fall back to inline key +let apiKey = 'YOUR_API_KEY'; +const envPath = path.join(__dirname, '..', '..', '.env'); +if (fs.existsSync(envPath)) { + const match = fs + .readFileSync(envPath, 'utf-8') + .match(/SEC_API_IO_API_KEY=(.+)/); + if (match) { + apiKey = match[1].trim(); + } +} +secApi.setApiKey(apiKey); + +const main = async () => { + // download a 10-K filing as text + const content = await secApi.downloadApi.getFile( + 'https://www.sec.gov/Archives/edgar/data/1318605/000162828025045968/tsla-20250930.htm', + ); + + log('Content type: ' + typeof content); + log('Content length: ' + content.length + ' characters'); + log('First 200 chars:\n' + content.substring(0, 200)); +}; + +main().catch(log); diff --git a/examples/scripts/extractor-api.js b/examples/scripts/extractor-api.js new file mode 100644 index 0000000..94252a6 --- /dev/null +++ b/examples/scripts/extractor-api.js @@ -0,0 +1,32 @@ +const fs = require('fs'); +const path = require('path'); +const secApi = require('../../index'); + +const { log } = console; + +// use .env if present, otherwise fall back to inline key +let apiKey = 'YOUR_API_KEY'; +const envPath = path.join(__dirname, '..', '..', '.env'); +if (fs.existsSync(envPath)) { + const match = fs + .readFileSync(envPath, 'utf-8') + .match(/SEC_API_IO_API_KEY=(.+)/); + if (match) { + apiKey = match[1].trim(); + } +} +secApi.setApiKey(apiKey); + +const main = async () => { + // extract "Risk Factors" (section 1A) from a Tesla 10-K + const text = await secApi.extractorApi.getSection( + 'https://www.sec.gov/Archives/edgar/data/1318605/000156459021004599/tsla-10k_20201231.htm', + '1A', + 'text', + ); + + log('Section 1A length: ' + text.length + ' characters'); + log('First 500 chars:\n' + text.substring(0, 500)); +}; + +main().catch(log); diff --git a/examples/scripts/form-13f-api.js b/examples/scripts/form-13f-api.js new file mode 100644 index 0000000..024f8a2 --- /dev/null +++ b/examples/scripts/form-13f-api.js @@ -0,0 +1,38 @@ +const fs = require('fs'); +const path = require('path'); +const secApi = require('../../index'); + +const { log } = console; + +// use .env if present, otherwise fall back to inline key +let apiKey = 'YOUR_API_KEY'; +const envPath = path.join(__dirname, '..', '..', '.env'); +if (fs.existsSync(envPath)) { + const match = fs + .readFileSync(envPath, 'utf-8') + .match(/SEC_API_IO_API_KEY=(.+)/); + if (match) { + apiKey = match[1].trim(); + } +} +secApi.setApiKey(apiKey); + +const main = async () => { + // Berkshire Hathaway 13F holdings (CIK: 1067983) + const result = await secApi.form13FHoldingsApi.getData({ + query: 'cik:1067983', + from: '0', + size: '5', + sort: [{ filedAt: { order: 'desc' } }], + }); + + log('Total holdings filings: ' + result.total); + + result.data.forEach((holding) => { + log( + holding.filedAt + ' | ' + holding.nameOfIssuer + ' | $' + holding.value, + ); + }); +}; + +main().catch(log); diff --git a/examples/scripts/full-text-search-api.js b/examples/scripts/full-text-search-api.js new file mode 100644 index 0000000..b0dcc23 --- /dev/null +++ b/examples/scripts/full-text-search-api.js @@ -0,0 +1,35 @@ +const fs = require('fs'); +const path = require('path'); +const secApi = require('../../index'); + +const { log } = console; + +// use .env if present, otherwise fall back to inline key +let apiKey = 'YOUR_API_KEY'; +const envPath = path.join(__dirname, '..', '..', '.env'); +if (fs.existsSync(envPath)) { + const match = fs + .readFileSync(envPath, 'utf-8') + .match(/SEC_API_IO_API_KEY=(.+)/); + if (match) { + apiKey = match[1].trim(); + } +} +secApi.setApiKey(apiKey); + +const main = async () => { + const result = await secApi.fullTextSearchApi.getFilings({ + query: '"artificial intelligence"', + formTypes: ['10-K', '10-Q'], + startDate: '2024-01-01', + endDate: '2024-12-31', + }); + + log('Total filings found: ' + JSON.stringify(result.total)); + + result.filings.forEach((filing) => { + log(filing.filedAt + ' | ' + filing.formType + ' | ' + filing.companyName); + }); +}; + +main().catch(log); diff --git a/examples/scripts/insider-trading-api.js b/examples/scripts/insider-trading-api.js new file mode 100644 index 0000000..cb477bb --- /dev/null +++ b/examples/scripts/insider-trading-api.js @@ -0,0 +1,41 @@ +const fs = require('fs'); +const path = require('path'); +const secApi = require('../../index'); + +const { log } = console; + +// use .env if present, otherwise fall back to inline key +let apiKey = 'YOUR_API_KEY'; +const envPath = path.join(__dirname, '..', '..', '.env'); +if (fs.existsSync(envPath)) { + const match = fs + .readFileSync(envPath, 'utf-8') + .match(/SEC_API_IO_API_KEY=(.+)/); + if (match) { + apiKey = match[1].trim(); + } +} +secApi.setApiKey(apiKey); + +const main = async () => { + const result = await secApi.insiderTradingApi.getData({ + query: 'issuer.tradingSymbol:TSLA AND remark:"award"', + from: '0', + size: '5', + sort: [{ filedAt: { order: 'desc' } }], + }); + + log('Total transactions: ' + result.total); + + result.transactions.forEach((tx) => { + log( + tx.filedAt + + ' | ' + + tx.reportingOwner.name + + ' | ' + + tx.issuer.tradingSymbol, + ); + }); +}; + +main().catch(log); diff --git a/examples/scripts/mapping-api.js b/examples/scripts/mapping-api.js new file mode 100644 index 0000000..cfb2d4f --- /dev/null +++ b/examples/scripts/mapping-api.js @@ -0,0 +1,32 @@ +const fs = require('fs'); +const path = require('path'); +const secApi = require('../../index'); + +const { log } = console; + +// use .env if present, otherwise fall back to inline key +let apiKey = 'YOUR_API_KEY'; +const envPath = path.join(__dirname, '..', '..', '.env'); +if (fs.existsSync(envPath)) { + const match = fs + .readFileSync(envPath, 'utf-8') + .match(/SEC_API_IO_API_KEY=(.+)/); + if (match) { + apiKey = match[1].trim(); + } +} +secApi.setApiKey(apiKey); + +const main = async () => { + // resolve ticker to company details + const result = await secApi.mappingApi.resolve('ticker', 'TSLA'); + + result.forEach((company) => { + log(company.name + ' (CIK: ' + company.cik + ')'); + log(' Exchange: ' + company.exchange); + log(' Sector: ' + company.sector); + log(' Industry: ' + company.industry); + }); +}; + +main().catch(log); diff --git a/examples/scripts/playground.js b/examples/scripts/playground.js new file mode 100644 index 0000000..4fef983 --- /dev/null +++ b/examples/scripts/playground.js @@ -0,0 +1,97 @@ +const fs = require('fs'); +const path = require('path'); +const secApi = require('../../index'); + +const { log } = console; + +// use .env if present, otherwise fall back to inline key +let apiKey = 'YOUR_API_KEY'; +const envPath = path.join(__dirname, '..', '..', '.env'); +if (fs.existsSync(envPath)) { + const match = fs + .readFileSync(envPath, 'utf-8') + .match(/SEC_API_IO_API_KEY=(.+)/); + if (match) { + apiKey = match[1].trim(); + } +} +secApi.setApiKey(apiKey); + +const { + queryApi, + fullTextSearchApi, + downloadApi, + renderApi, + extractorApi, + xbrlApi, +} = secApi; + +const queryExample = async () => { + log('--- Query API ---'); + const data = await queryApi.getFilings({ + query: 'formType:"10-Q" AND ticker:AAPL', + from: '0', + size: '3', + sort: [{ filedAt: { order: 'desc' } }], + }); + data.filings.forEach((f) => { + log(f.filedAt + ' | ' + f.formType + ' | ' + f.companyName); + }); +}; + +const fullTextSearchExample = async () => { + log('\n--- Full-Text Search API ---'); + const data = await fullTextSearchApi.getFilings({ + query: '"LPCN 1154"', + startDate: '2021-01-01', + endDate: '2021-06-14', + }); + data.filings.forEach((f) => { + log(f.filedAt + ' | ' + f.formType + ' | ' + f.companyName); + }); +}; + +const downloadExample = async () => { + log('\n--- Download API ---'); + const data = await downloadApi.getFile( + 'https://www.sec.gov/Archives/edgar/data/1318605/000162828025045968/tsla-20250930.htm', + ); + log('Downloaded ' + data.length + ' characters'); +}; + +const renderExample = async () => { + log('\n--- Render API ---'); + const data = await renderApi.getFilingContent( + 'https://www.sec.gov/Archives/edgar/data/1841925/000121390021032758/ea142795-8k_indiesemic.htm', + ); + log('Rendered ' + data.length + ' characters'); +}; + +const extractorExample = async () => { + log('\n--- Extractor API ---'); + const text = await extractorApi.getSection( + 'https://www.sec.gov/Archives/edgar/data/1318605/000156459021004599/tsla-10k_20201231.htm', + '1A', + 'text', + ); + log('Section 1A: ' + text.length + ' characters'); +}; + +const xbrlExample = async () => { + log('\n--- XBRL-to-JSON API ---'); + const data = await xbrlApi.xbrlToJson({ + accessionNo: '0000320193-20-000096', + }); + log('Sections: ' + Object.keys(data).join(', ')); +}; + +const main = async () => { + await queryExample(); + await fullTextSearchExample(); + await downloadExample(); + await renderExample(); + await extractorExample(); + await xbrlExample(); +}; + +main().catch(log); diff --git a/examples/scripts/query-api.js b/examples/scripts/query-api.js new file mode 100644 index 0000000..4d4ea97 --- /dev/null +++ b/examples/scripts/query-api.js @@ -0,0 +1,35 @@ +const fs = require('fs'); +const path = require('path'); +const secApi = require('../../index'); + +const { log } = console; + +// use .env if present, otherwise fall back to inline key +let apiKey = 'YOUR_API_KEY'; +const envPath = path.join(__dirname, '..', '..', '.env'); +if (fs.existsSync(envPath)) { + const match = fs + .readFileSync(envPath, 'utf-8') + .match(/SEC_API_IO_API_KEY=(.+)/); + if (match) { + apiKey = match[1].trim(); + } +} +secApi.setApiKey(apiKey); + +const main = async () => { + const result = await secApi.queryApi.getFilings({ + query: 'formType:"10-K" AND ticker:TSLA', + from: '0', + size: '5', + sort: [{ filedAt: { order: 'desc' } }], + }); + + log('Total filings found: ' + JSON.stringify(result.total)); + + result.filings.forEach((filing) => { + log(filing.filedAt + ' | ' + filing.formType + ' | ' + filing.companyName); + }); +}; + +main().catch(log); diff --git a/examples/scripts/xbrl-to-json-api.js b/examples/scripts/xbrl-to-json-api.js new file mode 100644 index 0000000..a568b7a --- /dev/null +++ b/examples/scripts/xbrl-to-json-api.js @@ -0,0 +1,36 @@ +const fs = require('fs'); +const path = require('path'); +const secApi = require('../../index'); + +const { log } = console; + +// use .env if present, otherwise fall back to inline key +let apiKey = 'YOUR_API_KEY'; +const envPath = path.join(__dirname, '..', '..', '.env'); +if (fs.existsSync(envPath)) { + const match = fs + .readFileSync(envPath, 'utf-8') + .match(/SEC_API_IO_API_KEY=(.+)/); + if (match) { + apiKey = match[1].trim(); + } +} +secApi.setApiKey(apiKey); + +const main = async () => { + // convert Apple 10-K XBRL to JSON by accession number + const result = await secApi.xbrlApi.xbrlToJson({ + accessionNo: '0000320193-20-000096', + }); + + log('Available sections: ' + Object.keys(result).join(', ')); + + if (result.StatementsOfIncome) { + log('\nStatements of Income keys:'); + Object.keys(result.StatementsOfIncome).forEach((key) => { + log(' ' + key); + }); + } +}; + +main().catch(log); diff --git a/index.js b/index.js index a00d561..b29c4a7 100755 --- a/index.js +++ b/index.js @@ -1,7 +1,13 @@ #!/usr/bin/env node const config = require('./config'); -const axios = require('axios'); +const { + getJson, + postJson, + getBuffer, + getText, + get, +} = require('./modules/http-client'); const store = { apiKey: '' }; @@ -9,72 +15,41 @@ const setApiKey = (apiKey) => { store.apiKey = apiKey; }; -/** - * Retry wrapper with backoff for handling 429 (too many requests) errors. - */ -const withRetry = async (fn, maxRetries = 3) => { - for (let i = 0; i < maxRetries; i++) { - try { - return await fn(); - } catch (error) { - if (error.response && error.response.status === 429 && i < maxRetries - 1) { - await new Promise((resolve) => setTimeout(resolve, 500 * (i + 1))); - continue; - } - throw error; - } - } -}; - /** * Helper: POST query to endpoint with token as query param, return JSON. */ const postWithToken = async (endpoint, query) => { const url = endpoint + '?token=' + store.apiKey; - return withRetry(async () => { - const { data } = await axios.post(url, query); - return data; - }); + return postJson({ url, body: query }); }; /** * Helper: GET endpoint with token as query param, return JSON. */ const getWithToken = async (url) => { - return withRetry(async () => { - const { data } = await axios.get(url); - return data; - }); + return getJson(url); }; /* * Query API */ const getFilingsQuery = async (query) => { - const options = { - method: 'post', + return postJson({ url: config.queryApi.endpoint, + body: query, headers: { Authorization: store.apiKey }, - data: query, - }; - - const { data } = await axios(options); - return data; + }); }; /** * Full-text Search API */ const getFilingsFullText = async (query) => { - const options = { - method: 'post', + return postJson({ url: config.fullTextApi.endpoint, + body: query, headers: { Authorization: store.apiKey }, - data: query, - }; - - const { data } = await axios(options); - return data; + }); }; /** @@ -109,14 +84,7 @@ const getFile = async ( const url = config.downloadApiV2.endpoint + urlPath + '?token=' + store.apiKey; - const options = { - method: 'get', - url, - responseType: 'arraybuffer', - decompress: params.decompress, - }; - - const { data, headers } = await axios(options); + const { data, headers } = await getBuffer(url); if (!params.autoConvertToString) { return data; @@ -147,13 +115,7 @@ const getFilingContent = async (url, type = 'html') => { _url = config.downloadApi.endpoint + filename + '?token=' + store.apiKey; } - const options = { - method: 'get', - url: _url, - }; - - const { data } = await axios(options); - return data; + return getText(_url); }; /** @@ -168,10 +130,8 @@ const getPdf = async (url) => { '&token=' + store.apiKey; - return withRetry(async () => { - const { data } = await axios.get(requestUrl, { responseType: 'arraybuffer' }); - return data; - }); + const { data } = await getBuffer(requestUrl); + return data; }; /** @@ -196,8 +156,7 @@ const xbrlToJson = async ({ htmUrl, xbrlUrl, accessionNo } = {}) => { requestUrl += '&accession-no=' + accessionNo; } - const { data } = await axios.get(requestUrl); - return data; + return getJson(requestUrl); }; /** @@ -212,8 +171,7 @@ const getSection = async (filingUrl, section = '1A', returnType = 'text') => { config.extractorApi.endpoint + `?token=${store.apiKey}&url=${filingUrl}&item=${section}&type=${returnType}`; - const { data } = await axios.get(requestUrl); - return data; + return get(requestUrl); }; /** @@ -322,11 +280,7 @@ const getAdvFinancialIndustryAffiliations = async (crd) => { const getAdvBrochures = async (crd) => { const url = - config.formAdvApi.endpoint + - '/brochures/' + - crd + - '?token=' + - store.apiKey; + config.formAdvApi.endpoint + '/brochures/' + crd + '?token=' + store.apiKey; return getWithToken(url); }; @@ -345,7 +299,9 @@ const getExecComp = async (parameter) => { } else if (typeof parameter === 'object') { return postWithToken(config.execCompApi.endpoint, parameter); } else { - throw new Error('Invalid parameter. Provide a ticker string or a query object.'); + throw new Error( + 'Invalid parameter. Provide a ticker string or a query object.', + ); } }; @@ -372,11 +328,7 @@ const getNpxMetadata = async (query) => { const getNpxVotingRecords = async (accessionNo) => { const url = - config.formNpxApi.endpoint + - '/' + - accessionNo + - '?token=' + - store.apiKey; + config.formNpxApi.endpoint + '/' + accessionNo + '?token=' + store.apiKey; return getWithToken(url); }; diff --git a/modules/http-client.js b/modules/http-client.js new file mode 100644 index 0000000..2d6a7e9 --- /dev/null +++ b/modules/http-client.js @@ -0,0 +1,183 @@ +const https = require('https'); +const zlib = require('zlib'); + +const MAX_REDIRECTS = 5; +const MAX_RETRIES = 3; + +const agent = new https.Agent({ + keepAlive: true, + keepAliveMsecs: 15000, + maxSockets: 10, + scheduling: 'fifo', +}); + +// decompress response stream based on content-encoding header +const decompressStream = (res) => { + const encoding = (res.headers['content-encoding'] || '').toLowerCase(); + if (encoding === 'gzip') { + return res.pipe(zlib.createGunzip()); + } + if (encoding === 'deflate') { + return res.pipe(zlib.createInflate()); + } + if (encoding === 'br') { + return res.pipe(zlib.createBrotliDecompress()); + } + return res; +}; + +// single http request, follows redirects, no retry +const singleRequest = ({ + url, + method = 'GET', + headers = {}, + body, + _redirectCount = 0, +}) => { + return new Promise((resolve, reject) => { + const parsedUrl = new URL(url); + + const req = https.request( + parsedUrl, + { + method, + headers: { 'Accept-Encoding': 'gzip, deflate', ...headers }, + agent, + }, + (res) => { + const status = res.statusCode; + + // follow 3xx redirects + if (status >= 300 && status < 400 && res.headers.location) { + res.resume(); + if (_redirectCount >= MAX_REDIRECTS) { + const error = new Error('Too many redirects'); + error.response = { status }; + reject(error); + return; + } + const redirectUrl = new URL(res.headers.location, url).href; + resolve( + singleRequest({ + url: redirectUrl, + method, + headers, + body, + _redirectCount: _redirectCount + 1, + }), + ); + return; + } + + if (status < 200 || status >= 300) { + const stream = decompressStream(res); + const chunks = []; + stream.on('data', (chunk) => chunks.push(chunk)); + stream.on('end', () => { + const body = Buffer.concat(chunks).toString('utf-8'); + let parsed = {}; + try { + parsed = JSON.parse(body); + } catch (_) { + // not JSON + } + const errorMessage = parsed.error || body; + const error = new Error(errorMessage); + error.response = { + status: parsed.status || status, + httpStatus: status, + error: parsed.error, + }; + reject(error); + }); + stream.on('error', reject); + return; + } + + const stream = decompressStream(res); + const chunks = []; + stream.on('data', (chunk) => chunks.push(chunk)); + stream.on('end', () => { + resolve({ + status, + headers: res.headers, + data: Buffer.concat(chunks), + }); + }); + stream.on('error', reject); + }, + ); + + req.on('error', reject); + + if (body) { + req.write(body); + } + + req.end(); + }); +}; + +// request with automatic 429 retry and backoff +const requestWithRetry = async (options) => { + for (let i = 0; i < MAX_RETRIES; i++) { + try { + return await singleRequest(options); + } catch (error) { + const is429 = error.response && error.response.httpStatus === 429; + const isFreeTierExhausted = + is429 && + error.response.error && + error.response.error.includes('you exceeded the free'); + if (is429 && !isFreeTierExhausted && i < MAX_RETRIES - 1) { + await new Promise((resolve) => setTimeout(resolve, 500 * (i + 1))); + continue; + } + throw error; + } + } +}; + +// GET request, parse response as JSON +const getJson = async (url) => { + const { data } = await requestWithRetry({ url }); + return JSON.parse(data.toString('utf-8')); +}; +module.exports.getJson = getJson; + +// POST JSON body, parse response as JSON +const postJson = async ({ url, body, headers = {} }) => { + const { data } = await requestWithRetry({ + url, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...headers }, + body: JSON.stringify(body), + }); + return JSON.parse(data.toString('utf-8')); +}; +module.exports.postJson = postJson; + +// GET request, return raw Buffer and response headers +const getBuffer = async (url) => { + const { data, headers } = await requestWithRetry({ url }); + return { data, headers }; +}; +module.exports.getBuffer = getBuffer; + +// GET request, return response body as a UTF-8 string +const getText = async (url) => { + const { data } = await requestWithRetry({ url }); + return data.toString('utf-8'); +}; +module.exports.getText = getText; + +// GET request, auto-detect JSON vs text based on content-type header +const get = async (url) => { + const { data, headers } = await requestWithRetry({ url }); + const contentType = headers['content-type'] || ''; + if (contentType.includes('json')) { + return JSON.parse(data.toString('utf-8')); + } + return data.toString('utf-8'); +}; +module.exports.get = get; diff --git a/package-lock.json b/package-lock.json index 7bec569..2485b7f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,291 +8,9 @@ "name": "sec-api", "version": "4.0.5", "license": "MIT", - "dependencies": { - "axios": "^1.13.5" - }, "bin": { "sec-api": "index.js" } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "license": "MIT" - }, - "node_modules/axios": { - "version": "1.13.5", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz", - "integrity": "sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==", - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.15.11", - "form-data": "^4.0.5", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", - "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/form-data": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", - "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "license": "MIT" } } } diff --git a/package.json b/package.json index 74ded1f..d855c8e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "sec-api", "version": "4.0.5", - "description": "SEC-API.io JavaScript Library", + "description": "SEC-API.io TypeScript and JavaScript Library", "main": "index.js", "exports": { ".": { @@ -14,7 +14,7 @@ }, "repository": { "type": "git", - "url": "git+https://github.com/janlukasschroeder/sec-api.git" + "url": "git+https://github.com/sec-api-io/sec-api-node.git" }, "keywords": [ "sec.gov", @@ -41,11 +41,11 @@ "author": "Dr. Jan Schroeder", "license": "MIT", "bugs": { - "url": "https://github.com/janlukasschroeder/sec-api/issues" + "url": "https://github.com/sec-api-io/sec-api-node/issues" }, - "homepage": "https://github.com/janlukasschroeder/sec-api#readme", - "dependencies": { - "axios": "1.13.5" + "homepage": "https://github.com/sec-api-io/sec-api-node#readme", + "engines": { + "node": ">=12" }, "bin": { "sec-api": "./index.js" diff --git a/tests/index.js b/tests/index.js index ce4b95d..64b0697 100644 --- a/tests/index.js +++ b/tests/index.js @@ -29,6 +29,98 @@ function assert(condition, message) { } (async () => { + console.log('\nModule Exports'); + await test('exports all expected API modules', async () => { + const expectedKeys = [ + 'setApiKey', + 'queryApi', + 'fullTextSearchApi', + 'downloadApi', + 'renderApi', + 'pdfGeneratorApi', + 'xbrlApi', + 'extractorApi', + 'mappingApi', + 'formAdvApi', + 'insiderTradingApi', + 'form144Api', + 'form13FHoldingsApi', + 'form13FCoverPagesApi', + 'formNportApi', + 'form13DGApi', + 'formNcenApi', + 'formNpxApi', + 'formS1424B4Api', + 'formDApi', + 'formCApi', + 'regASearchApi', + 'form1AApi', + 'form1KApi', + 'form1ZApi', + 'form8KApi', + 'execCompApi', + 'directorsBoardMembersApi', + 'floatApi', + 'subsidiaryApi', + 'secEnforcementActionsApi', + 'secLitigationsApi', + 'secAdminProceedingsApi', + 'aaerApi', + 'sroFilingsApi', + 'edgarEntitiesApi', + 'auditFeesApi', + 'edgarIndexApi', + ]; + const actualKeys = Object.keys(secApi); + assert( + actualKeys.length === expectedKeys.length, + `Expected ${expectedKeys.length} exports, got ${actualKeys.length}`, + ); + for (const key of expectedKeys) { + assert(actualKeys.includes(key), `Missing export: ${key}`); + } + }); + + await test('each API module exposes setApiKey', async () => { + const apiModules = Object.keys(secApi).filter((k) => k !== 'setApiKey'); + for (const key of apiModules) { + assert( + typeof secApi[key].setApiKey === 'function', + `${key}.setApiKey is not a function`, + ); + } + }); + + console.log('\nError Handling'); + await test('invalid API key returns 403 with error message', async () => { + secApi.setApiKey('invalid-api-key'); + try { + await secApi.queryApi.getFilings({ + query: 'formType:"10-K"', + from: '0', + size: '1', + }); + assert(false, 'Expected request to throw'); + } catch (err) { + assert(err.response, 'Error should have response property'); + assert( + err.response.httpStatus === 403, + 'HTTP status should be 403, got ' + err.response.httpStatus, + ); + assert( + typeof err.response.error === 'string', + 'response.error should be a string', + ); + assert( + err.response.error.length > 0, + 'response.error should not be empty', + ); + console.log(' Response: ' + JSON.stringify(err.response)); + } finally { + secApi.setApiKey(apiKey); + } + }); + console.log('\nQuery API'); await test('getFilings returns results', async () => { const result = await secApi.queryApi.getFilings({ @@ -193,7 +285,8 @@ function assert(condition, message) { console.log('\nForm D API'); await test('getData returns Form D filings', async () => { const result = await secApi.formDApi.getData({ - query: 'offeringData.offeringSalesAmounts.totalOfferingAmount:[1000000 TO *]', + query: + 'offeringData.offeringSalesAmounts.totalOfferingAmount:[1000000 TO *]', from: '0', size: '1', sort: [{ filedAt: { order: 'desc' } }], @@ -257,37 +350,57 @@ function assert(condition, message) { await test('getDirectOwners returns Schedule A data', async () => { const result = await secApi.formAdvApi.getDirectOwners('361'); - assert(Array.isArray(result) && result.length > 0, 'No direct owners returned'); + assert( + Array.isArray(result) && result.length > 0, + 'No direct owners returned', + ); }); await test('getIndirectOwners returns Schedule B data', async () => { const result = await secApi.formAdvApi.getIndirectOwners('149777'); - assert(Array.isArray(result) && result.length > 0, 'No indirect owners returned'); + assert( + Array.isArray(result) && result.length > 0, + 'No indirect owners returned', + ); }); await test('getPrivateFunds returns Schedule D 7.B.1 data', async () => { const result = await secApi.formAdvApi.getPrivateFunds('793'); - assert(Array.isArray(result) && result.length > 0, 'No private funds returned'); + assert( + Array.isArray(result) && result.length > 0, + 'No private funds returned', + ); }); await test('getOtherBusinessNames returns Schedule D 1.B data', async () => { const result = await secApi.formAdvApi.getOtherBusinessNames('149777'); - assert(Array.isArray(result) && result.length > 0, 'No other business names returned'); + assert( + Array.isArray(result) && result.length > 0, + 'No other business names returned', + ); }); await test('getSeparatelyManagedAccounts returns Schedule D 5.K data', async () => { - const result = await secApi.formAdvApi.getSeparatelyManagedAccounts('149777'); + const result = + await secApi.formAdvApi.getSeparatelyManagedAccounts('149777'); assert(result, 'No separately managed accounts data returned'); }); await test('getFinancialIndustryAffiliations returns Schedule D 7.A data', async () => { - const result = await secApi.formAdvApi.getFinancialIndustryAffiliations('149777'); - assert(Array.isArray(result) && result.length > 0, 'No financial industry affiliations returned'); + const result = + await secApi.formAdvApi.getFinancialIndustryAffiliations('149777'); + assert( + Array.isArray(result) && result.length > 0, + 'No financial industry affiliations returned', + ); }); await test('getBrochures returns brochure data', async () => { const result = await secApi.formAdvApi.getBrochures('149777'); - assert(result.brochures && result.brochures.length > 0, 'No brochures returned'); + assert( + result.brochures && result.brochures.length > 0, + 'No brochures returned', + ); }); console.log('\nExecutive Compensation API'); From 9201314032443dcab98daf0b420b78eed13323cc Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Sun, 12 Apr 2026 10:12:15 -0400 Subject: [PATCH 35/39] 4.0.6 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2485b7f..d14b1c2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "sec-api", - "version": "4.0.5", + "version": "4.0.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "sec-api", - "version": "4.0.5", + "version": "4.0.6", "license": "MIT", "bin": { "sec-api": "index.js" diff --git a/package.json b/package.json index d855c8e..2445b70 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sec-api", - "version": "4.0.5", + "version": "4.0.6", "description": "SEC-API.io TypeScript and JavaScript Library", "main": "index.js", "exports": { From 2383efc6683aac86a289ff071ec8c72c6f20a824 Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Mon, 13 Apr 2026 05:44:41 -0400 Subject: [PATCH 36/39] Update README with new banner, entity counts, and quick start - Replace header text/logo with banner image - Update entity count from 800K+ to 1.1M+, included all financial advisors: firm-level RIAs (SEC and state registered), individuals (IARs), ERAs - Expand filing type details with license agreements, cybersecurity incidents, etc. - Reorder imports to show ESM first, add API key signup note - Simplify download example with inline URL and setApiKey call --- README.md | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 3d54229..50a56fb 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,13 @@ -# SEC-API.io JavaScript API Library +# SEC-API.io TypeScript and JavaScript Library - - -**The industry-standard for SEC & EDGAR data**, trusted by the world's largest hedge funds, investment banks, exchanges, law firms, and universities. Developed by PhDs in finance and physics. - -
+![banner](https://sec-api.io/v2/media/product/gh-repo-banner-card-1500x400.png) [![Documentation](https://img.shields.io/badge/Documentation-sec--api.io-blue)](https://sec-api.io/docs) [![npm downloads](https://img.shields.io/npm/dm/sec-api)](https://www.npmjs.com/package/sec-api) -- **20+ million EDGAR filings** and **100+ million exhibits** — from investor presentations, credit agreements, M&A, government contracts, and executive employment agreements to board composition and subsidiaries -- **800,000+ entities, survivorship-bias free** — covers every SEC-regulated filer that ever reported, including delisted companies, dissolved funds, terminated advisors, and entities no longer reporting. From insiders and public/private companies to ETFs, mutual funds, hedge funds, foreign private issuers, BDCs, REITs, shell companies, and more -- **All 500+ EDGAR form types** — annual and quarterly reports (10-K, 10-Q, 20-F, 40-F), proxy statements (DEF 14A) and voting records, registration statements and prospectuses, and everything in between, including form types no longer in use +- **20+ million EDGAR filings** and **100+ million exhibits** — from license agreements, investor presentations, and other Reg FD disclosures, over insider trading, credit & bond agreements, bylaws, IPOs, secondaries & shelf offerings, M&A terms, government contracts, audit reports, SEC enforcement actions, AAERs, and executive employment agreements to board composition, subsidiaries, public float and cybersecurity incidents. +- **1.1M+ entities, survivorship-bias free** — covers every SEC-regulated filer that ever reported, including delisted companies, dissolved funds, terminated advisors, and entities no longer reporting. From insiders and public/private companies to financial advisors, ETFs, mutual funds, hedge funds, money-market funds, institutional investors, foreign private issuers, BDCs, REITs, shell companies, brokers, dealers, asset-backed securities issuers, SROs, and more. +- **All 500+ EDGAR form types** — annual and quarterly reports (10-K, 10-Q, 20-F, 40-F), proxy voting statements (DEF 14A, PRE 14) and voting records, registration statements and prospectuses, and everything in between, including form types no longer in use. - **Full historical time range** — from 1993 to present, with data updated in real-time The full API documentation is available at [sec-api.io/docs](https://sec-api.io/docs). @@ -25,24 +21,25 @@ npm install sec-api Both CommonJS and ESM imports are supported: ```js -const { downloadApi } = require('sec-api'); // CommonJS import { downloadApi } from 'sec-api'; // ESM +const { downloadApi } = require('sec-api'); // CommonJS ``` +Get your free API key on [sec-api.io](https://sec-api.io/signup) and replace `YOUR_API_KEY` with it. + **Download EDGAR Filings Free of Charge** ```js const { downloadApi } = require('sec-api'); -// optional, only needed for higher rate limits. -// downloadApi.setApiKey('YOUR_API_KEY'); - -const filingUrl = - 'https://www.sec.gov/Archives/edgar/data/1318605/000162828025045968/tsla-20250930.htm'; +downloadApi.setApiKey('YOUR_API_KEY'); -const data = await downloadApi.getFile(filingUrl); +// 200 downloads / second per account +const filing = await downloadApi.getFile( + 'https://www.sec.gov/Archives/edgar/data/1318605/000162828025045968/tsla-20250930.htm', +); -console.log(data.slice(0, 1000)); +console.log(filing.slice(0, 1000)); ``` ## Feature Overview From 150849ff8696b2aac81dab913547adf049f4c5d3 Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Mon, 13 Apr 2026 05:45:17 -0400 Subject: [PATCH 37/39] 4.0.7 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index d14b1c2..45b9ab4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "sec-api", - "version": "4.0.6", + "version": "4.0.7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "sec-api", - "version": "4.0.6", + "version": "4.0.7", "license": "MIT", "bin": { "sec-api": "index.js" diff --git a/package.json b/package.json index 2445b70..03badd6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sec-api", - "version": "4.0.6", + "version": "4.0.7", "description": "SEC-API.io TypeScript and JavaScript Library", "main": "index.js", "exports": { From ef8099ff96c0de79a410add6c301f8710f3bd499 Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Wed, 29 Apr 2026 06:38:14 -0400 Subject: [PATCH 38/39] Add bulk datasets API for downloading SEC EDGAR datasets - Add modules/datasets.js with getAll, showAll, getDetails, showDetails, download, sync - download/sync accept both string ('form-10k-content') and object form - Add downloadToFile to http-client: streaming, atomic writes, redirects, skip-if-size-matches - Wire datasetsApi into index.js (top-level setApiKey propagates) and index.mjs - Add 7 dataset tests including real e2e download (50/50 passing) - Add examples/scripts/datasets-api.js - README: Quick Start dataset example + Bulk Datasets subsections (Download, List, Get Details) --- README.md | 194 ++++++++++++++++++++++++++++++- config/index.js | 4 + examples/scripts/datasets-api.js | 40 +++++++ index.js | 11 ++ index.mjs | 1 + modules/datasets.js | 161 +++++++++++++++++++++++++ modules/http-client.js | 119 +++++++++++++++++++ tests/index.js | 143 +++++++++++++++++++++++ 8 files changed, 672 insertions(+), 1 deletion(-) create mode 100644 examples/scripts/datasets-api.js create mode 100644 modules/datasets.js diff --git a/README.md b/README.md index 50a56fb..70a72b5 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ - **20+ million EDGAR filings** and **100+ million exhibits** — from license agreements, investor presentations, and other Reg FD disclosures, over insider trading, credit & bond agreements, bylaws, IPOs, secondaries & shelf offerings, M&A terms, government contracts, audit reports, SEC enforcement actions, AAERs, and executive employment agreements to board composition, subsidiaries, public float and cybersecurity incidents. - **1.1M+ entities, survivorship-bias free** — covers every SEC-regulated filer that ever reported, including delisted companies, dissolved funds, terminated advisors, and entities no longer reporting. From insiders and public/private companies to financial advisors, ETFs, mutual funds, hedge funds, money-market funds, institutional investors, foreign private issuers, BDCs, REITs, shell companies, brokers, dealers, asset-backed securities issuers, SROs, and more. - **All 500+ EDGAR form types** — annual and quarterly reports (10-K, 10-Q, 20-F, 40-F), proxy voting statements (DEF 14A, PRE 14) and voting records, registration statements and prospectuses, and everything in between, including form types no longer in use. -- **Full historical time range** — from 1993 to present, with data updated in real-time +- **Full historical time range** — from 1993 to present, with data updated in real-time. The full API documentation is available at [sec-api.io/docs](https://sec-api.io/docs). @@ -42,6 +42,19 @@ const filing = await downloadApi.getFile( console.log(filing.slice(0, 1000)); ``` +**Download Entire Datasets of SEC Filings** + +```js +const { datasetsApi } = require('sec-api'); + +datasetsApi.setApiKey('YOUR_API_KEY'); + +// downloads all 10-K filings (1993-present) to ./sec-api-datasets/form-10k-content/YYYY/YYYY-MM.zip +await datasetsApi.download('form-10k-content'); +// all 13-F institutional holdings +await datasetsApi.download('form-13f-holdings'); +``` + ## Feature Overview **EDGAR Filing Search & Download APIs** @@ -812,6 +825,185 @@ Download complete datasets for offline analysis and large-scale processing. All | Form DEF 14A - Proxy Statements | DEF 14A | 1994-present | ZIP (HTML, TXT) | | [View all datasets...](https://sec-api.io/datasets) | | | | +### Download a Dataset + +Downloads are atomic (written to a `.tmp` file first, renamed on completion), so interrupted downloads are automatically resumed on the next run. Only new or updated files are downloaded — existing files are skipped if their size matches the remote. This makes it easy to keep a local copy of any dataset in sync with a single line of code. + +```js +const { datasetsApi } = require('sec-api'); + +datasetsApi.setApiKey('YOUR_API_KEY'); + +// first run: downloads all containers to ./sec-api-datasets/form-10k-content/ +await datasetsApi.download('form-10k-content'); + +// subsequent runs: only downloads new or updated containers, skips the rest +await datasetsApi.sync('form-10k-content'); + +// specify a custom directory +await datasetsApi.download({ + name: 'form-10k-content', + path: './my-data/form-10k-content', +}); +``` + +Alternatively, download the entire dataset as a single ZIP file: + +```js +await datasetsApi.download({ name: 'form-10k-content', strategy: 'zip' }); +``` + +Set up a daily cron job or scheduled task to keep your local dataset up to date: + +```js +// sync.js — run daily via cron, e.g.: 0 6 * * * node sync.js +const { datasetsApi } = require('sec-api'); + +datasetsApi.setApiKey('YOUR_API_KEY'); +await datasetsApi.sync({ + name: 'form-10k-content', + path: './my-data/form-10k-content', +}); +``` + +### List Available Datasets + +```js +const { datasetsApi } = require('sec-api'); + +// no API key required — returns raw JSON list +const allDatasets = await datasetsApi.getAll(); +``` + +
+ Example Response (shortened) + +```json +[ + { + "datasetId": "1f11ba9b-e03a-6950-a464-a23fcc53ee6f", + "datasetIdInUrl": "audit-fees", + "name": "Audit Fees", + "description": "Structured dataset of annual audit fees extracted from SEC filings...", + "formTypes": ["DEF 14A"], + "containerFormat": ".jsonl.gz", + "fileTypes": ["JSONL"], + "updatedAt": "2026-04-09T05:00:01.000Z", + "earliestSampleDate": "2001-03-01", + "totalRecords": null, + "totalSize": 9792910 + }, + { + "datasetId": "1f12abbc-262c-65a0-8b3e-1288c41dcc76", + "datasetIdInUrl": "earnings-results-form-8-k-item-2-02", + "name": "Earnings Results - Form 8-K, Item 2.02 (2004-Present)", + "description": "The Form 8-K Item 2.02 Results Dataset contains all disclosures filed on EDGAR...", + "formTypes": ["8-K", "8-K/A"], + "containerFormat": "ZIP", + "fileTypes": ["HTML", "JSON", "TXT", "GIF", "JPG", "PDF"], + "updatedAt": "2026-04-09T07:07:44.885Z", + "earliestSampleDate": "2004-08-01", + "totalRecords": 2242018, + "totalSize": 154607640756 + } +] +``` + +
+ +
+ +Or use `showAll()` for formatted terminal output: + +```js +await datasetsApi.showAll(); +``` + +``` + ID Name Format Size + ────────────────────────────────────────────────── ─────────────────────────────────────────────────────── ────────── ──────────── + audit-fees Audit Fees .jsonl.gz 9.8 MB + earnings-results-form-8-k-item-2-02 Earnings Results - Form 8-K, Item 2.02 (2004-Present) ZIP 154.6 GB + form-10k-content Form 10-K - Annual Reports - Filing Contents ZIP 33.8 GB + form-4 Form 4 – Statement of Changes in Beneficial Ownership .jsonl.gz 912.2 MB + ... + + 490 datasets available. Browse all at https://sec-api.io/datasets +``` + +### Get Dataset Details + +```js +// returns raw JSON object +const details = await datasetsApi.getDetails('form-10k-content'); +``` + +
+ Example Response (shortened) + +```json +{ + "datasetId": "1f11bb55-d58b-6080-bace-e7a62567f4b9", + "datasetDownloadUrl": "https://api.sec-api.io/datasets/form-10k-content.zip", + "name": "Form 10-K - Annual Reports - Filing Contents", + "description": "HTML and TXT files of all Form 10-K filings published since 1993...", + "updatedAt": "2026-04-09T07:07:57.058Z", + "earliestSampleDate": "1993-10-01", + "totalRecords": 303021, + "totalSize": 33809939825, + "formTypes": [ + "10-K", + "10-K/A", + "10-K405", + "10-K405/A", + "10-KSB", + "10-KSB/A", + "10-KT", + "10-KT/A" + ], + "containerFormat": "ZIP", + "fileTypes": ["TXT", "JSON", "HTML", "PAPER"], + "containers": [ + { + "downloadUrl": "https://api.sec-api.io/datasets/form-10k-content/2026/2026-04.zip", + "key": "2026/2026-04.zip", + "size": 15593008, + "records": 167, + "updatedAt": "2026-04-09T07:07:57.058Z" + }, + { + "downloadUrl": "https://api.sec-api.io/datasets/form-10k-content/2026/2026-03.zip", + "key": "2026/2026-03.zip", + "size": 616726590, + "records": 6468, + "updatedAt": "2026-04-02T02:52:01.741Z" + } + ] +} +``` + +
+ +
+ +Or use `showDetails()` for formatted terminal output: + +```js +await datasetsApi.showDetails('form-10k-content'); +``` + +``` + Name: Form 10-K - Annual Reports - Filing Contents + Description: HTML and TXT files of all Form 10-K filings published since 1993... + Updated: 2026-04-09T07:07:57.058Z + Earliest data: 1993-10-01 + Form types: 10-K, 10-K/A, 10-K405, 10-K405/A, 10-KSB, 10-KSB/A, 10-KT, 10-KT/A + Format: ZIP + Total records: 303,021 + Total size: 33.8 GB + Containers: 390 +``` + ## Form ADV API Search and access Form ADV data for registered investment advisers, including firm information, individual advisors, direct/indirect owners, private fund data, and brochures. diff --git a/config/index.js b/config/index.js index 4be12c0..2712572 100644 --- a/config/index.js +++ b/config/index.js @@ -116,4 +116,8 @@ module.exports = { edgarIndexIngestionLogApi: { endpoint: 'https://api.sec-api.io/edgar-index/ingestion-log', }, + datasetsApi: { + indexEndpoint: 'https://api.sec-api.io/bulk/indicies/master/index.json', + detailEndpoint: 'https://api.sec-api.io/datasets', + }, }; diff --git a/examples/scripts/datasets-api.js b/examples/scripts/datasets-api.js new file mode 100644 index 0000000..c1fed5e --- /dev/null +++ b/examples/scripts/datasets-api.js @@ -0,0 +1,40 @@ +const fs = require('fs'); +const path = require('path'); +const secApi = require('../../index'); + +const { log } = console; + +// use .env if present, otherwise fall back to inline key +let apiKey = 'YOUR_API_KEY'; +const envPath = path.join(__dirname, '..', '..', '.env'); +if (fs.existsSync(envPath)) { + const match = fs + .readFileSync(envPath, 'utf-8') + .match(/SEC_API_IO_API_KEY=(.+)/); + if (match) { + apiKey = match[1].trim(); + } +} +secApi.setApiKey(apiKey); + +const main = async () => { + // list all datasets (no API key required) + log('--- All Datasets ---'); + await secApi.datasetsApi.showAll(); + + // show details for one dataset + log('--- Dataset Details: audit-fees ---'); + await secApi.datasetsApi.showDetails('audit-fees'); + + // download a small dataset (commented out to avoid large downloads) + // const files = await secApi.datasetsApi.download({ name: 'audit-fees' }); + // log('Downloaded ' + files.length + ' files'); + + // sync a dataset to a custom path + // await secApi.datasetsApi.sync({ name: 'audit-fees', path: './my-data' }); + + // download as a single zip + // await secApi.datasetsApi.download({ name: 'audit-fees', strategy: 'zip' }); +}; + +main().catch(log); diff --git a/index.js b/index.js index b29c4a7..9207faa 100755 --- a/index.js +++ b/index.js @@ -8,11 +8,13 @@ const { getText, get, } = require('./modules/http-client'); +const datasets = require('./modules/datasets'); const store = { apiKey: '' }; const setApiKey = (apiKey) => { store.apiKey = apiKey; + datasets.setApiKey(apiKey); }; /** @@ -603,6 +605,15 @@ const modules = { setApiKey, getIngestionLog, }, + datasetsApi: { + setApiKey, + getAll: datasets.getAll, + showAll: datasets.showAll, + getDetails: datasets.getDetails, + showDetails: datasets.showDetails, + download: datasets.download, + sync: datasets.sync, + }, }; module.exports = modules; diff --git a/index.mjs b/index.mjs index a4e82fa..60c2520 100644 --- a/index.mjs +++ b/index.mjs @@ -39,6 +39,7 @@ export const { edgarEntitiesApi, auditFeesApi, edgarIndexApi, + datasetsApi, } = secApi; export default secApi; diff --git a/modules/datasets.js b/modules/datasets.js new file mode 100644 index 0000000..8f67974 --- /dev/null +++ b/modules/datasets.js @@ -0,0 +1,161 @@ +const config = require('../config'); +const path = require('path'); +const { getJson, downloadToFile } = require('./http-client'); + +const { log } = console; + +const DEFAULT_DOWNLOAD_DIR = './sec-api-datasets'; + +const store = { apiKey: '' }; + +const setApiKey = (apiKey) => { + store.apiKey = apiKey; +}; +module.exports.setApiKey = setApiKey; + +// list all available datasets, no API key required +const getAll = async () => { + return getJson(config.datasetsApi.indexEndpoint); +}; +module.exports.getAll = getAll; + +// pretty-print all datasets to stdout +const showAll = async () => { + const datasets = await getAll(); + const idCol = 50; + const nameCol = 55; + const fmtCol = 10; + const sizeCol = 12; + log(''); + log( + ' ' + + 'ID'.padEnd(idCol) + + ' ' + + 'Name'.padEnd(nameCol) + + ' ' + + 'Format'.padEnd(fmtCol) + + ' ' + + 'Size'.padStart(sizeCol), + ); + log( + ' ' + + '─'.repeat(idCol) + + ' ' + + '─'.repeat(nameCol) + + ' ' + + '─'.repeat(fmtCol) + + ' ' + + '─'.repeat(sizeCol), + ); + datasets.forEach((ds) => { + const total = ds.totalSize || 0; + const sizeStr = + total >= 1_000_000_000 + ? (total / 1_000_000_000).toFixed(1) + ' GB' + : (total / 1_000_000).toFixed(1) + ' MB'; + const id = (ds.datasetIdInUrl || '').padEnd(idCol); + const name = (ds.name || '').slice(0, nameCol).padEnd(nameCol); + const fmt = (ds.containerFormat || '').padEnd(fmtCol); + log(' ' + id + ' ' + name + ' ' + fmt + ' ' + sizeStr.padStart(sizeCol)); + }); + log(''); + log( + ' ' + + datasets.length + + ' datasets available. Browse all at https://sec-api.io/datasets', + ); + log(''); + return datasets; +}; +module.exports.showAll = showAll; + +// get details for one dataset +const getDetails = async (name) => { + const url = config.datasetsApi.detailEndpoint + '/' + name + '.json'; + try { + return await getJson(url); + } catch (err) { + const all = await getAll(); + const available = all.map((d) => d.datasetIdInUrl).join(', '); + throw new Error( + 'Dataset "' + name + '" not found. Available datasets: ' + available, + ); + } +}; +module.exports.getDetails = getDetails; + +// pretty-print dataset details to stdout +const showDetails = async (name) => { + const ds = await getDetails(name); + const sizeMb = (ds.totalSize || 0) / 1_000_000; + const description = (ds.description || '').slice(0, 100); + log(' Name: ' + ds.name); + log(' Description: ' + description + '...'); + log(' Updated: ' + (ds.updatedAt || 'N/A')); + log(' Earliest data: ' + (ds.earliestSampleDate || 'N/A')); + log(' Form types: ' + (ds.formTypes || []).join(', ')); + log(' Format: ' + (ds.containerFormat || 'N/A')); + log( + ' Total records: ' + + (ds.totalRecords ? ds.totalRecords.toLocaleString() : 'N/A'), + ); + log(' Total size: ' + sizeMb.toFixed(1) + ' MB'); + log(' Containers: ' + (ds.containers || []).length); + return ds; +}; +module.exports.showDetails = showDetails; + +// append api token to a download URL +const appendToken = (url, apiKey) => { + const sep = url.includes('?') ? '&' : '?'; + return url + sep + 'token=' + apiKey; +}; + +// download a dataset. accepts either a dataset name string, or an options +// object { name, path, strategy }. strategy="containers" (default) downloads +// each container file individually for resumable, incremental syncs. +// strategy="zip" downloads the entire dataset as a single zip file. files are +// written atomically; on re-run, files matching the remote size are skipped. +const download = async (nameOrOptions) => { + const options = + typeof nameOrOptions === 'string' + ? { name: nameOrOptions } + : nameOrOptions || {}; + const { name, path: downloadPath, strategy = 'containers' } = options; + const dataset = await getDetails(name); + + if (strategy === 'zip') { + const targetDir = downloadPath || DEFAULT_DOWNLOAD_DIR; + const url = appendToken(dataset.datasetDownloadUrl, store.apiKey); + const dest = path.join(targetDir, name + '.zip'); + return downloadToFile({ + url, + destPath: dest, + expectedSize: dataset.totalSize, + }); + } + + const targetDir = downloadPath || path.join(DEFAULT_DOWNLOAD_DIR, name); + const containers = dataset.containers || []; + const downloaded = []; + + for (const container of containers) { + const url = appendToken(container.downloadUrl, store.apiKey); + const dest = path.join(targetDir, container.key); + await downloadToFile({ + url, + destPath: dest, + expectedSize: container.size, + }); + downloaded.push(dest); + } + + return downloaded; +}; +module.exports.download = download; + +// alias for download — keeps a local copy in sync with the remote +const sync = async (nameOrOptions) => { + return download(nameOrOptions); +}; +module.exports.sync = sync; diff --git a/modules/http-client.js b/modules/http-client.js index 2d6a7e9..65b8976 100644 --- a/modules/http-client.js +++ b/modules/http-client.js @@ -1,5 +1,7 @@ const https = require('https'); const zlib = require('zlib'); +const fs = require('fs'); +const path = require('path'); const MAX_REDIRECTS = 5; const MAX_RETRIES = 3; @@ -181,3 +183,120 @@ const get = async (url) => { return data.toString('utf-8'); }; module.exports.get = get; + +// stream a GET response directly to a file. follows redirects, no decompression +// (file payloads like .zip are already compressed). resolves on completion. +const streamToFile = ({ url, destPath, _redirectCount = 0 }) => { + return new Promise((resolve, reject) => { + const parsedUrl = new URL(url); + + const req = https.request(parsedUrl, { method: 'GET', agent }, (res) => { + const status = res.statusCode; + + // follow 3xx redirects + if (status >= 300 && status < 400 && res.headers.location) { + res.resume(); + if (_redirectCount >= MAX_REDIRECTS) { + const error = new Error('Too many redirects'); + error.response = { status, httpStatus: status }; + reject(error); + return; + } + const redirectUrl = new URL(res.headers.location, url).href; + resolve( + streamToFile({ + url: redirectUrl, + destPath, + _redirectCount: _redirectCount + 1, + }), + ); + return; + } + + if (status < 200 || status >= 300) { + const chunks = []; + res.on('data', (chunk) => chunks.push(chunk)); + res.on('end', () => { + const body = Buffer.concat(chunks).toString('utf-8'); + let parsed = {}; + try { + parsed = JSON.parse(body); + } catch (_) { + // not JSON + } + const errorMessage = parsed.error || body; + const error = new Error(errorMessage); + error.response = { + status: parsed.status || status, + httpStatus: status, + error: parsed.error, + }; + reject(error); + }); + res.on('error', reject); + return; + } + + const fileStream = fs.createWriteStream(destPath); + res.pipe(fileStream); + fileStream.on('finish', () => { + fileStream.close(() => { + return resolve(); + }); + }); + fileStream.on('error', reject); + res.on('error', reject); + }); + + req.on('error', reject); + req.end(); + }); +}; + +// download a URL to a local file with atomic write, retry, and skip-if-exists +// based on expected file size. writes to .tmp then renames on completion. +const downloadToFile = async ({ url, destPath, expectedSize }) => { + if (fs.existsSync(destPath)) { + if ( + expectedSize === undefined || + expectedSize === null || + fs.statSync(destPath).size === expectedSize + ) { + return destPath; + } + } + + const dir = path.dirname(destPath); + if (dir && dir !== '.') { + fs.mkdirSync(dir, { recursive: true }); + } + const tmpPath = destPath + '.tmp'; + + for (let attempt = 0; attempt < MAX_RETRIES; attempt++) { + try { + await streamToFile({ url, destPath: tmpPath }); + fs.renameSync(tmpPath, destPath); + return destPath; + } catch (error) { + if (fs.existsSync(tmpPath)) { + try { + fs.unlinkSync(tmpPath); + } catch (_) { + // ignore cleanup error + } + } + if ( + error.response && + error.response.httpStatus === 429 && + attempt < MAX_RETRIES - 1 + ) { + await new Promise((resolve) => + setTimeout(resolve, 500 * (attempt + 1)), + ); + continue; + } + throw error; + } + } +}; +module.exports.downloadToFile = downloadToFile; diff --git a/tests/index.js b/tests/index.js index 64b0697..cd24c68 100644 --- a/tests/index.js +++ b/tests/index.js @@ -70,6 +70,7 @@ function assert(condition, message) { 'edgarEntitiesApi', 'auditFeesApi', 'edgarIndexApi', + 'datasetsApi', ]; const actualKeys = Object.keys(secApi); assert( @@ -521,6 +522,148 @@ function assert(condition, message) { assert(result.data && result.data.length > 0, 'No data returned'); }); + console.log('\nDatasets API'); + await test('getAll returns list of datasets', async () => { + const datasets = await secApi.datasetsApi.getAll(); + assert(Array.isArray(datasets), 'Expected array'); + assert(datasets.length > 0, 'No datasets returned'); + assert(datasets[0].datasetIdInUrl, 'Dataset missing datasetIdInUrl'); + assert(datasets[0].name, 'Dataset missing name'); + }); + + await test('getDetails returns dataset details with containers', async () => { + const ds = await secApi.datasetsApi.getDetails('audit-fees'); + assert(ds.name, 'Missing name'); + assert(Array.isArray(ds.containers), 'Missing containers array'); + assert(ds.containers.length > 0, 'No containers returned'); + assert(ds.containers[0].downloadUrl, 'Container missing downloadUrl'); + assert(ds.containers[0].key, 'Container missing key'); + }); + + await test('getDetails throws for unknown dataset', async () => { + try { + await secApi.datasetsApi.getDetails('does-not-exist-xyz'); + assert(false, 'Expected to throw'); + } catch (err) { + assert( + err.message.includes('not found'), + 'Expected "not found" in error message', + ); + } + }); + + await test('download accepts a string dataset name', async () => { + // string form should resolve to the same dataset lookup as the object form. + // call with a non-existent name to avoid an actual download — the string + // must propagate through to getDetails which throws "not found". + try { + await secApi.datasetsApi.download('does-not-exist-xyz'); + assert(false, 'Expected to throw'); + } catch (err) { + assert( + err.message.includes('not found'), + 'string form should propagate to getDetails. got: ' + err.message, + ); + } + }); + + await test('download accepts an object with name', async () => { + try { + await secApi.datasetsApi.download({ name: 'does-not-exist-xyz' }); + assert(false, 'Expected to throw'); + } catch (err) { + assert( + err.message.includes('not found'), + 'object form should propagate to getDetails. got: ' + err.message, + ); + } + }); + + await test('sync accepts both string and object forms', async () => { + try { + await secApi.datasetsApi.sync('does-not-exist-xyz'); + assert(false, 'Expected sync(string) to throw'); + } catch (err) { + assert( + err.message.includes('not found'), + 'sync(string) should propagate', + ); + } + try { + await secApi.datasetsApi.sync({ name: 'does-not-exist-xyz' }); + assert(false, 'Expected sync(object) to throw'); + } catch (err) { + assert( + err.message.includes('not found'), + 'sync(object) should propagate', + ); + } + }); + + await test('download streams to disk, verifies size, and skips on re-run', async () => { + const fs = require('fs'); + const path = require('path'); + const { downloadToFile } = require('../modules/http-client'); + + // pick the smallest container from audit-fees to keep the test fast + const ds = await secApi.datasetsApi.getDetails('audit-fees'); + const smallest = ds.containers.reduce((a, b) => (a.size < b.size ? a : b)); + + const tmpDir = path.join(__dirname, 'tmp-download-test'); + const destPath = path.join(tmpDir, smallest.key); + if (fs.existsSync(tmpDir)) { + fs.rmSync(tmpDir, { recursive: true }); + } + + try { + const sep = smallest.downloadUrl.includes('?') ? '&' : '?'; + const url = smallest.downloadUrl + sep + 'token=' + apiKey; + + // first call: actually downloads the file + const start = Date.now(); + await downloadToFile({ + url, + destPath, + expectedSize: smallest.size, + }); + const firstDuration = Date.now() - start; + + assert(fs.existsSync(destPath), 'destination file should exist'); + const stats = fs.statSync(destPath); + assert( + stats.size === smallest.size, + 'downloaded size ' + stats.size + ' != expected ' + smallest.size, + ); + + // tmp file should not exist after atomic rename + assert( + !fs.existsSync(destPath + '.tmp'), + 'tmp file should be cleaned up after rename', + ); + + // second call: should skip (size matches) and return very quickly + const skipStart = Date.now(); + await downloadToFile({ + url, + destPath, + expectedSize: smallest.size, + }); + const skipDuration = Date.now() - skipStart; + assert( + skipDuration < firstDuration, + 'skip should be faster than initial download (' + + skipDuration + + 'ms vs ' + + firstDuration + + 'ms)', + ); + } finally { + if (fs.existsSync(tmpDir)) { + fs.rmSync(tmpDir, { recursive: true }); + } + } + }); + // Summary console.log( `\n${passed + failed} tests, ${passed} passed, ${failed} failed\n`, From 997200e8e6df9d9704598255bf9e70820c2ad801 Mon Sep 17 00:00:00 2001 From: janlukasschroeder Date: Wed, 29 Apr 2026 06:39:00 -0400 Subject: [PATCH 39/39] 4.0.8 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 45b9ab4..e94e69c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "sec-api", - "version": "4.0.7", + "version": "4.0.8", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "sec-api", - "version": "4.0.7", + "version": "4.0.8", "license": "MIT", "bin": { "sec-api": "index.js" diff --git a/package.json b/package.json index 03badd6..c8b94d7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sec-api", - "version": "4.0.7", + "version": "4.0.8", "description": "SEC-API.io TypeScript and JavaScript Library", "main": "index.js", "exports": {