# Form N-PORT Data API > The Form N-PORT API returns all portfolio holdings, fund metrics, borrowers and more as reported in Form N-PORT SEC filings. Source: https://sec-api.io/docs/n-port-data-api Form N-PORT (Monthly Portfolio Investments Report) is used by registered management investment companies and exchange-traded funds (ETF) organized as a unit investment trust. An N-PORT filing includes a fund's holdings, performance metrics, assets under management, borrowers and more. The N-PORT filing is publicly filed with the SEC on a quarterly schedule and supersedes form N-Q. The N-PORT Data API returns standardized N-PORT filings data in structured JSON format. All filings are searchable by any N-PORT filing parameter, such as total assets, series/class IDs, monthly returns by class ID, interest rate and credit spread risks and more. Data sample · Fund portfolio holdings | Filed at | Fund | Registrant | Report date | Total assets | Net assets | Holdings | Asset categories | Top holding | Top holding % | Return month 1 (%) | Return month 2 (%) | Return month 3 (%) | Form type | Series ID | CIK | Accession no. | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | 2026-09-29 | GRANDEUR PEAK US STALWARTS FUND | Grandeur Peak Global Trust | 2026-07-31 | $17,191,586.97 | $16,911,991.46 | 48 | Equity-common | ROSEBANK INDUSTRIES PLC | 7.158 | -1.474 | 3.344 | -2.512 | NPORT-P | S000080367 | 0001965454 | 0000910472-26-015644 | | 2026-09-29 | PGIM Target Date 2055 Fund | Prudential Investment Portfolios 5 | 2026-07-31 | $11,839,011.27 | $11,798,244.63 | 8 | Equity-common | Prudential Investment Portfolios 8 | 41.882 | 3.73 | 0.73 | -0.73 | NPORT-P | S000055689 | 0001090155 | 0000940400-26-039067 | | 2026-09-29 | CHANNING INTRINSIC VALUE SMALL-CAP FUND | Valued Advisers Trust | 2026-07-31 | $10,570,292.53 | $10,530,583.48 | 45 | Equity-common; Short-term investment vehicle | AXALTA COATING SYSTEMS LTD | 2.959 | -2.121 | 6.734 | 0.943 | NPORT-P | S000071821 | 0001437249 | 0000910472-26-015529 | | 2026-09-29 | ROCK OAK CORE GROWTH FUND | Oak Associates Funds | 2026-07-31 | $13,591,156.61 | $13,568,545.86 | 34 | Equity-common; Repurchase agreement; Short-term investment vehicle | Mount Vernon Liquid Assets Portfolio, LLC | 7.91 | 1.043 | 3.525 | 2.907 | NPORT-P | S000006543 | 0001050918 | 0000910472-26-015526 | | 2026-09-29 | Calamos Bitcoin 80 Series Structured Alt Protection ETF - July | Calamos ETF Trust | 2026-07-31 | $9,834,258.94 | $4,877,390.30 | 5 | Derivative-equity | 4SPY 270730 C 3.00 | 116.928 | -1.41 | -0.05 | -0.2 | NPORT-P | S000090060 | 0001579881 | 0001410368-26-101696 | | 2026-09-29 | Virtus Seix AAA Private Credit CLO ETF | Virtus ETF Trust II | 2026-07-31 | $19,914,736.43 | $19,909,873.49 | 23 | ABS-CBDO; Loan | HPS PRIVATE CREDIT CLO 2025-3 LLC | 5.048 | 0.359 | 0.343 | 0.424 | NPORT-P | S000088950 | 0001648403 | 0000940400-26-038965 | | 2026-09-29 | AFRICA FUND | Commonwealth International Series Trust | 2026-07-31 | $6,971,903.12 | $6,955,935.60 | 41 | Debt; Equity-common; Short-term investment vehicle | CAPITEC BANK HOLDINGS LTD | 12.316 | 3.656 | -0.738 | -1.653 | NPORT-P | S000034335 | 0000793601 | 0000910472-26-015410 | | 2026-09-29 | Invesco Electric Vehicle Metals Commodity Strategy No K-1 ETF | Invesco Actively Managed Exchange-Traded Commodity Fund Trust | 2026-07-31 | $7,067,355.29 | $7,065,345.05 | 12 | Derivative-commodity; Short-term investment vehicle | Invesco Premier U.S. Government Money Portfolio | 81.194 | 1.745 | -9.875 | 1.845 | NPORT-P | S000075602 | 0001595386 | 0001595386-26-000067 | | 2026-09-29 | Global X U.S. 500 Income Edge ETF | GLOBAL X FUNDS | 2026-07-31 | $5,302,497.67 | $5,283,356.28 | 4 | Equity-common; Derivative-equity | BNY Mellon US Large Cap Core Equity ETF | 58.412 | 0.164 | -0.963 | 4.963 | NPORT-P | S000099732 | 0001432353 | 0002048251-26-008626 | | 2026-09-28 | Innovator Premium Income 15 Buffer ETF - April | Innovator ETFs Trust | 2026-07-31 | $11,524,091.10 | $11,351,291.34 | 10 | Debt; Short-term investment vehicle; Derivative-equity | TREASURY BILL | 97.071 | 0.75 | 0.25 | 0.4 | NPORT-P | S000084453 | 0001415726 | 0000894189-26-028285 | Our system converts the XML data of an N-PORT filing into a standardized JSON format, indexes the data into a large-scale database and exposes the API to access and search the entire N-PORT filings database. This process is performed in real-time and new N-PORT data is available in less than 300 milliseconds after the filing was published on SEC EDGAR. Dataset size: All N-PORT filings in JSON format filed since the introduction in 2019 to present. Data update frequency: New filings are indexed and searchable in 300 milliseconds after they are published on EDGAR. Survivorship bias free: Yes. All Form N-PORT filings, from active and inactive funds, are included. ## API Endpoints ### Form N-PORT Search API The N-PORT Data API allows searching and filtering all N-PORT filings published on the SEC EDGAR database since 2019 to present. The API accepts search queries as JSON formatted payload and returns the matching N-PORT filings in JSON format. The API endpoint is: https://api.sec-api.io/form-nport Supported HTTP methods: `POST` Request and response content type: `JSON` ### Form N-PORT Bulk Dataset Download The complete set of Form N-PORT filings is available for bulk download in compressed JSONL (JSON line) files (`.jsonl.gz`). Each line in a `.jsonl.gz` file represents the full content of a single N-PORT filing in structured JSON format. The dataset is organized by year and month, using the filename format `YYYY-MM.jsonl.gz`, where `YYYY` is the year (e.g., `2024`) and `MM` is the month (e.g., `02` for February). Each `.jsonl.gz` file includes all N-PORT filings with a `filedAt` timestamp that falls within the respective year and month. This timestamp reflects when the filing was accepted by the EDGAR system. New filings are added daily to the bulk dataset between 1:00 AM and 4:00 AM ET. An accompanying `index.json` file provides metadata for all available `.jsonl.gz` files, including: - `key` (string) - The file path, e.g. `2025/2025-03.jsonl.gz`. - `updatedAt` (date) - The last update timestamp, e.g. `2025-04-03T14:06:34.000Z`. - `size` (integer) - The file size in bytes, e.g. `106764954`. The `index.json` file is especially useful for programmatic access and automation, allowing to monitor updates and manage downloads at scale. | Endpoint | Description | HTTP Method | Response Format | | --- | --- | --- | --- | | [/bulk/form-nport/YEAR/YEAR-MONTH.jsonl.gz](#/bulk/form-nport/year/year-month.jsonl.gz) | Gzip-compressed JSONL file containing all N-PORT filings for the specified year and month. | GET | jsonl.gz | | [/bulk/form-nport/index.json](#/bulk/form-nport/index.json) | JSON file containing the paths, file update times and file sizes of all jsonl.gz files of all NPORT data files. | GET | json | #### Bulk Download Endpoint Examples - `https://api.sec-api.io/bulk/form-nport/2025/2025-02.jsonl.gz` - `https://api.sec-api.io/bulk/form-nport/index.json` ### Authentication Use the API key shown in your [user profile after sign up](https://sec-api.io/signup). There are two ways to use your API key. It's either/or. - Set as `Authorization` header. Before making a `POST`request to `https://api.sec-api.io/form-nport`, set the `Authorization` header to `YOUR_API_KEY` - Set as query parameter. Example: `https://api.sec-api.io/form-nport?token=YOUR_API_KEY` In this case, make `POST` requests to the endpoint `https://api.sec-api.io/form-nport?token=YOUR_API_KEY` and not to `https://api.sec-api.io/form-nport`. ## Request Parameters All N-PORT filing properties are searchable. Refer to the complete list of properties in the [Response Structure section](#response-structure) below. You can send a search query as JSON formatted payload to the API using the structure below. **Request parameters:** - `query` (string) - Your search query written in [Lucene syntax](https://sec-api.io/resources/lucene-query-syntax-overview). Boolean operators (AND, OR, NOT), wildcards (*) and nested conditions are fully supported. Query examples: The search expression `"genInfo.regCik:0000842790"` returns all N-PORT filings filed by CIK 0000842790. `"accessionNo:\"0001752724-22-020473\""` returns the filing with accession number 0001752724-22-020473. `"seriesClassInfo.classIds:C000084554"` returns all N-PORT filings covering the class/contract with ID C000084554. `"invstOrSecs.cusip.value:681936BM1"` returns all filings showing an investment in the company with CUSIP 681936BM1. `"fundInfo.totAssets:[5000000000 TO *]"` returns all filings with total assets greater than $5 billion. - `from` (integer) - The start index position of your search. Increase `from` in order to paginate through the results. For example, set `from` to 20 to return search results from position 20 to 30. Default: 0. - `size` (integer) - The number of N-PORT filings to be returned in one response. Default: 10. Max: 10. - `sort` (array) - An array of sort definitions. Each array item defines the sort order, e.g. results to be sorted by filing date. Example: `[{ "fundInformation.totalAssets": { "order": "desc" } }]` sort filings by total assets in descending order. Default:`[{ "filedAt": { "order": "desc" } }]` ### Request Examples Search N-PORT filings by series ID: Find the 10 most recently submitted N-PORT filings for the series ID `S000025654`. ```json { "query": "filerInfo.seriesClassInfo.seriesId:S000025654", "from": "0", "size": "10", "sort": [{"filedAt":{"order":"desc"}}] } ``` Search N-PORT filings by class ID: Find the 10 most recently submitted N-PORT filings referring to the class ID `C000120702`. ```json { "query": "filerInfo.seriesClassInfo.classId:C000120702", "from": "0", "size": "10", "sort": [{"filedAt":{"order":"desc"}}] } ``` Find all portfolio reports of investment companies with total assets exceeding $1 billion, sort the result by the date each N-PORT filing was published on SEC EDGAR, starting with the latest filing. ```json { "query": "fundInfo.totAssets:[100000000 TO *]", "from": "0", "size": "10", "sort": [{"filedAt":{"order":"desc"}}] } ``` Find all portfolio reports of investment companies with investments into Amazon or Apple. ```json { "query": "invstOrSecs.name:(Amazon, Apple)", "from": "0", "size": "10", "sort": [{"filedAt":{"order":"desc"}}] } ``` ## Response Structure **Response type:** JSON - `filings` (array) - An array of N-PORT filings matching your search query. Each array item represents an entire N-PORT filing. - `filedAt` (date) - Filing date and time, e.g. 2021-08-31T07:51:48-04:00 - `accessionNo` (string) - Accession number of the filing, e.g. 0001752724-22-020473 - `submissionType` (string) - The form type. Either `NPORT-P` or `NPORT-P/A`. - `filerInfo` (object) - Information about the filing entity. - `filer` (object) - `fileNumber` (string) - `issuerCredentials` (object) - `cik` (string) - `seriesClassInfo` (array) - Series and class IDs - `seriesId` (string) - Series ID, e.g. S000009165 - `seriesLei` (string) - LEI of the series - `seriesName` (string) - Name of the series, e.g. Alger Weatherbie Specialized Growth Fund - `classIds` (array) - Array of strings containing all class IDs of the series, e.g. ["C000024920", "C000095960"] - `genInfo` (object) - Part A: General Information - `regName` (string) - Name of the filer, e.g. Alger Funds - `regFileNumber` (string) - File number of the filer, e.g. 811-01355 - `regCik` (string) - CIK of the filer, e.g. 0000003521 - `regLei` (string) - LEI of the filer, e.g. 549300GSR7CWA7IW4H72 - `regStreet1` (string) - Street 1 - `regStreet2` (string) - Street 2 - `regZipOrPostalCode` (string) - ZIP code - `regCountry` (string) - `regStateConditional` (object) - `regCountry` (string) - `regState` (string) - `regPhone` (string) - Phone number of filer. - `seriesName` (string) - Series name. - `seriesId` (string) - Series ID. - `seriesLei` (string) - Series LEI. - `repPdEnd` (date) - End of reporting period, e.g. 2020-10-31 - `repPdDate` (date) - Date of reporting period, e.g. 2020-07-31 - `isFinalFiling` (boolean) - `fundInfo` (object) - Part B: Information About the Fund - `totAssets` (float) - Item B.1.a Total assets - `totLiabs` (float) - Item B.1.b Total liabilities - `netAssets` (float) - Item B.1.c Net assets - `assetsAttrMiscSec` (float) - Item B.2.a Assets attributable to miscellaneous securities reported in Part D. - `assetsInvested` (float) - Item B.2.b Assets invested in a Controlled Foreign Corporation for the purpose of investing in certain types of instruments such as, but not limited to, commodities. - `amountsPayableOneYear` (object) - Item B.2.c. Borrowings attributable to amounts payable for notes payable, bonds, and similar debt, as reported pursuant to rule 6-04(13)(a) of Regulation S-X [17 CFR 210.6-04(13)(a)]. Amounts payable within one year. - `banks` (float) - Banks or other financial institutions for borrowings. - `controlledCompanies` (float) - Controlled companies. - `otherAffiliates` (float) - Other affiliates. - `others` (float) - Others. - `amountsPayableAfterOneYear` (object) - Item B.2.c. Amounts payable after one year. - `banks` (float) - Banks or other financial institutions for borrowings. - `controlledCompanies` (float) - Controlled companies. - `otherAffiliates` (float) - Other affiliates. - `others` (float) - Others. - `delayDeliv` (float) - Item B.2.d Payables for investments purchased either (i) on a delayed delivery, when-issued, or other firm commitment basis, or (ii) on a standby commitment basis. (i) On a delayed delivery, when-issued, or other firm commitment basis: - `standByCommit` (float) - Item B.2.d (ii) On a standby commitment basis. - `liquidPref` (float) - Item B.2.e Liquidation preference of outstanding preferred stock issued by the Fund. - `cshNotRptdInCorD` (float) - Item B.2.f. Cash and cash equivalents not reported in Parts C and D. - `curMetrics` (object) - Item B.3. Currency metrics. - `curMetric` (array) - `curCd` (string) - ISO currency metric code, e.g. United States Dollar - `interestRateRiskDv01` (object) - Item B.3.a. Interest Rate Risk (DV01). For each currency for which the Fund had a value of 1% or more of the Fund’s net asset value, provide the change in value of the portfolio resulting from a 1 basis point change in interest rates, for each of the following maturities: 3 month, 1 year, 5 years, 10 years, and 30 years. - `period3Mon` (float) - 3 month. - `period1Yr` (float) - 1 year. - `period5Yr` (float) - 5 years. - `period10Yr` (float) - 10 years. - `period30Yr` (float) - 30 years. - `interestRateRiskDv100` (object) - Item 3.B.b. Interest Rate Risk (DV100). For each currency for which the Fund had a value of 1% or more of the Fund’s net asset value, provide the change in value of the portfolio resulting from a 100 basis point change in interest rates, for each of the following maturities: 3 month, 1 year, 5 years, 10 years, and 30 years. - `period3Mon` (float) - 3 month. - `period1Yr` (float) - 1 year. - `period5Yr` (float) - 5 years. - `period10Yr` (float) - 10 years. - `period30Yr` (float) - 30 years. - `creditSpreadRisk` (object) - Item 3.B.c. Credit Spread Risk (SDV01, CR01 or CS01). Provide the change in value of the portfolio resulting from a 1 basis point change in credit spreads where the shift is applied to the option adjusted spread, aggregated by investment grade and non-investment grade exposures, for each of the following maturities: 3 month, 1 year, 5 years, 10 years, and 30 years. - `investmentGrade` (object) - Investment grade. - `period3Mon` (float) - 3 month. - `period1Yr` (float) - 1 year. - `period5Yr` (float) - 5 years. - `period10Yr` (float) - 10 years. - `period30Yr` (float) - 30 years. - `nonInvestmentGrade` (object) - Non-investment grade. - `period3Mon` (float) - 3 month. - `period1Yr` (float) - 1 year. - `period5Yr` (float) - 5 years. - `period10Yr` (float) - 10 years. - `period30Yr` (float) - 30 years. - `borrowers` (array, optional) - Item B.4.a. For each borrower in any securities lending transaction, provide the following information: - `name` (string) - i. Name of borrower, - `lei` (string) - ii. LEI (if any) of borrower - `aggregateValue` (float) - iii. Aggregate value of all securities on loan to the borrower. - `isNonCashCollateral` (boolean) - Item B.4.b Did any securities lending counterparty provide any non-cash collateral? - `aggregateAmount` (float) - Item B.4.b i. Aggregate principal amount. - `aggregateCollateral` (float) - Item B.4.b ii. Aggregate value of collateral. - `investmentCategory` (string) - Item B.4.b iii. Category of investments that most closely represents the collateral, selected from among the following: asset-backed securities, agency collateralized mortgage obligations, agency debentures and agency strips, agency mortgage-backed securities, U.S. Treasuries (including strips), other instrument. If "other instrument," include a brief description, including, if applicable, whether it is an irrevocable letter of credit. - `returnInfo` (object) - Item B.5 Return information. - `monthlyTotalReturns` (array) - Monthly total returns of the Fund for each of the preceding three months. If the Fund is a Multiple Class Fund, report returns for each class. Such returns shall be calculated in accordance with the methodologies outlined in Item 26(b) (1) of Form N-1A, Instruction 13 to sub-Item 1 of Item 4 of Form N-2, or Item 26(b) (i) of Form N-3, as applicable. - `classId` (string) - Class identification number(s) (if any) of the Class(es) for which returns are reported. - `returnMonth1` (float) - Monthly total returns of the Fund for each of the preceding three months – Month 1. - `returnMonth2` (float) - Monthly total returns of the Fund for each of the preceding three months – Month 2. - `returnMonth3` (float) - Monthly total returns of the Fund for each of the preceding three months – Month 3. - `monthlyReturnCategories` (array) - For each of the preceding three months, monthly net realized gain (loss) and net change in unrealized appreciation (or depreciation) attributable to derivatives for each of the following categories: commodity contracts, credit contracts, equity contracts, foreign exchange contracts, interest rate contracts, and other contracts. Within each such asset category, further report the same information for each of the following types of derivatives instrument: forward, future, option, swaption, swap, warrant, and other. Report in U.S. dollars. Losses and depreciation shall be reported as negative numbers. - `commodityContracts` (object) - Asset category: Commodity Contracts - `creditContracts` (object) - Asset category: Credit Contracts - `equityContracts` (object) - Asset category: Equity Contracts - `foreignExchgContracts` (object) - Asset category: Foreign Exchange Contracts - `interestRtContracts` (object) - Asset category: Interest Rate Contracts - `otherContracts` (object) - Asset category: Other Contracts - `invstOrSecs` (array) - Part C: Schedule of Portfolio Investments - `name` (string) - a. Name of issuer (if any). - `lei` (string) - b. LEI (if any) of issuer. In the case of a holding in a fund that is a series of a series trust, report the LEI of the series. - `title` (string) - c. Title of the issue or description of the investment. - `cusip` (string) - d. CUSIP (if any). - `identifiers` (object) - At least one of the following other identifiers: - `isin` (object, optional) - ISIN, e.g. FR0000120628 - `value` (string) - `ticker` (string, optional) - Ticker, e.g. CS - `value` (string) - `other` (string, optional) - Other identifier, e.g. AXAF1 - `value` (string) - `otherDesc` (string) - `balance` (float) - Balance, e.g. 39542 - `units` (string) - Units, e.g. Number of shares - `descOthUnits` (string) - Description of other units - `curCd` (string) - Currency. Indicate the currency in which the investment is denominated, e.g. United States Dollar - `currencyConditional` (object) - `curCd` (string) - `exchangeRt` (float) - `valUSD` (float) - Value. Report values in U.S. dollars. If currency of investment is not denominated in U.S. dollars, provide the exchange rate used to calculate value, e.g. 6178437.50 - `pctVal` (float) - Percentage value compared to net assets of the Fund, e.g. 0.717838123833 - `payoffProfile` (string) - Indicate payoff profile among the following categories (long, short, N/A). For derivatives, respond N/A to this Item and respond to the relevant payoff profile question in Item C.11. - `assetCat` (string) - Asset type: short-term investment vehicle (e.g., money market fund, liquidity pool, or other cash management vehicle), repurchase agreement, equity-common, equity-preferred, debt, derivative-commodity, derivative-credit, derivative-equity, derivative-foreign exchange, derivative-interest rate, derivatives-other, structured note, loan, ABS-mortgage backed security, ABS-asset backed commercial paper, ABS-collateralized bond/debt obligation, ABS-other, commodity, real estate, other. If “other,” provide a brief description. - `issuerCat` (string) - Issuer type: corporate, U.S. Treasury, U.S. government agency, U.S. government sponsored entity, municipal, non-U.S. sovereign, private fund, registered fund, other. If “other”, provide a brief description. - `invCountry` (string) - Report the ISO country code that corresponds to the country where the issuer is organized, e.g. US - `isRestrictedSec` (boolean) - Is the investment a Restricted Security? - `fairValueLevel` (string) - Indicate the level within the fair value hierarchy in which the fair value measurements fall pursuant to U.S. Generally Accepted Accounting Principles 7 (ASC 820, Fair Value Measurement). Options: 1, 2, 3 or N/A. Report "N/A" if the investment does not have a level associated with it (i.e., net asset value used as the practical expedient). - `debtSec` (object) - Item C.9. Debt Securities. - `maturityDt` (date) - Maturity date. - `couponKind` (string) - Select the category that most closely reflects the coupon type among the following (fixed, floating, variable, none). - `annualizedRt` (float) - Annualized rate. - `isDefault` (boolean) - Currently in default? - `areIntrstPmntsInArrs` (boolean) - Are there any interest payments in arrears or have any coupon payments been legally deferred by the issuer? - `isPaidKind` (boolean) - Is any portion of the interest paid in kind? [Y/N] Enter “N” if the interest may be paid in kind but is not actually paid in kind or if the Fund has the option of electing in-kind payment and has elected to be paid in-kind. - `isMandatoryConvrtbl` (boolean) - Mandatory convertible? - `isContngtConvrtbl` (boolean) - Contingent convertible? - `dbtSecRefInstruments` (object) - Description of the reference instrument, including the name of issuer, title of issue, and currency in which denominated, as well as CUSIP of reference instrument, ISIN (if CUSIP is not available), ticker (if CUSIP and ISIN are not available), or other identifier (if CUSIP, ISIN, and ticker are not available). - `dbtSecRefInstrument` (array) - `name` (string) - `title` (string) - `curCd` (string) - `identifiers` (object) - `cusip` (object) - `isin` (object) - `ticker` (object) - `other` (object) - `currencyInfos` (object) - Conversion ratio per US$1000 notional, or, if bond currency is not in U.S. dollars, per 1000 units of the relevant currency, indicating the relevant currency. If there is more than one conversion ratio, provide each conversion ratio. - `delta` (string) - Delta (if applicable). - `repurchaseAgrmt` (object) - Item C.10. Repurchase and Reverse Repurchase Agreements. - `transCat` (string) - Select the category that reflects the transaction (repurchase, reverse repurchase). Select “repurchase agreement” if the Fund is the cash lender and receives collateral. Select “reverse repurchase agreement” if the Fund is the cash borrower and posts collateral. - `clearedCentCparty` (object) - Cleared by central counterparty? [Y/N] If Y, provide the name of the central counterparty. If N, provide the name and LEI (if any) of counterparty. - `isCleared` (boolean) - `centralCounterparty` (string) - `notClearedCentCparty` (object) - `isTriParty` (boolean) - Tri-party? - `repurchaseRt` (float) - Repurchase rate. - `maturityDt` (date) - Maturity date. - `repurchaseCollaterals` (object) - Provide the following information concerning the securities subject to the repurchase agreement (i.e., collateral). If multiple securities of an issuer are subject to the repurchase agreement, those securities may be aggregated in responding to Items C.10.f.i-iii. - `repurchaseCollateral` (array) - `principalAmt` (float) - Principal amount. - `principalCd` (string) - `collateralVal` (float) - Value of collateral. - `collateralCd` (string) - `invstCat` (string) - Category of investments that most closely represents the collateral, selected from among the following (asset-backed securities; agency collateralized mortgage obligations; agency debentures and agency strips; agency mortgage-backed securities; private label collateralized mortgage obligations; corporate debt securities; equities; money market; U.S. Treasuries (including strips); other instrument). If “other instrument,” include a brief description, including, if applicable, whether it is a collateralized debt obligation, municipal debt, whole loan, or international debt. - `derivativeInfo` (object) - Item C.11. Derivatives. - `fwdDeriv` (object) - Forwards - `counterparties` (array) - Counterparty. Provide the name and LEI (if any) of counterparty (including a central counterparty). Each item has `counterpartyName` (string) and `counterpartyLei` (string; `"N/A"` when unavailable). - `amtCurSold` (float) - Amount of currency sold. - `curSold` (string) - Description of currency sold. - `amtCurPur` (float) - Amount of currency purchased. - `curPur` (string) - Description of currency purchased. - `settlementDt` (date) - Settlement date. - `unrealizedAppr` (float) - Unrealized appreciation or depreciation. Depreciation shall be reported as a negative number. - `payOffProf` (number) - Payoff profile, selected from among the following (long, short). - `descRefInstrmnt` (object) - Description of reference instrument, as required by sub-Item C.11.c.iii. - `expDate` (date) - Expiration date. - `notionalAmt` (float) - Aggregate notional amount or contract value on trade date. - `curCd` (string) - `derivCat` (string) - Type of derivative instrument that most closely represents the investment. - `futrDeriv` (object) - Futures - `counterparties` (array) - Counterparty. Provide the name and LEI (if any) of counterparty (including a central counterparty). Each item has `counterpartyName` (string) and `counterpartyLei` (string; `"N/A"` when unavailable). - `payOffProf` (string) - Payoff profile, selected from among the following (long, short). - `descRefInstrmnt` (object) - Description of reference instrument, as required by sub-Item C.11.c.iii. - `expDate` (date) - Expiration date. - `notionalAmt` (float) - Aggregate notional amount or contract value on trade date. - `curCd` (string) - `unrealizedAppr` (float) - Unrealized appreciation or depreciation. Depreciation shall be reported as a negative number. - `derivCat` (string) - `swapDeriv` (object) - Swaps - `counterparties` (array) - Counterparty. Provide the name and LEI (if any) of counterparty (including a central counterparty). Each item has `counterpartyName` (string) and `counterpartyLei` (string; `"N/A"` when unavailable). - `amtCurSold` (float) - Amount of currency sold. - `curSold` (string) - Description of currency sold. - `amtCurPur` (float) - `curPur` (string) - `settlementDt` (date) - Settlement date. - `unrealizedAppr` (float) - Unrealized appreciation or depreciation. Depreciation shall be reported as a negative number. - `descRefInstrmnt` (object) - Description of reference instrument. For basket swaps, carries an `indexBasketInfo` object with `indexName`, `indexIdentifier`, and `narrativeDesc`; for single-name references, an `otherRefInst` object with `issuerName` and `issueTitle`. - `swapFlag` (string) - `Y` if the swap is traded on a swap execution facility (SEF), `N` otherwise. - `fixedRecDesc` (object) - Description of the fixed leg received. Keys: `amount`, `curCd`, `fixedOrFloating` (`Fixed`), `fixedRt`. - `floatingRecDesc` (object) - Description of the floating leg received. Keys: `rtResetTenors` (a `rtResetTenor` array with `rateTenor`, `rateTenorUnit`, `resetDt`, `resetDtUnit`), `curCd`, `fixedOrFloating` (`Floating`), `floatingRtIndex`, `floatingRtSpread`, `pmntAmt`. - `otherRecDesc` (object) - Description of an other-type leg received (used when the leg is neither a plain fixed nor floating rate, e.g. an index or basket return). - `fixedPmntDesc` (object) - Description of the fixed leg paid. Keys: `amount`, `curCd`, `fixedOrFloating` (`Fixed`), `fixedRt`. - `floatingPmntDesc` (object) - Description of the floating leg paid. Same shape as `floatingRecDesc`. - `otherPmntDesc` (object) - Description of an other-type leg paid (used when the leg is neither a plain fixed nor floating rate). - `terminationDt` (date) - Termination or maturity date. - `upfrontPmnt` (float) - Upfront payments. - `pmntCurCd` (string) - ISO currency code in which the upfront payment is denominated. - `upfrontRcpt` (float) - Upfront receipts. - `rcptCurCd` (string) - ISO currency code in which the upfront receipt is denominated. - `notionalAmt` (float) - Notional amount. - `curCd` (string) - ISO currency code in which the notional amount is denominated. - `derivCat` (string) - Type of derivative instrument that most closely represents the investment. For this object the value is `SWP` (swap). - `optionSwaptionWarrantDeriv` (object) - Options and warrants, including options on a derivative (e.g. swaptions). - `counterparties` (array) - Counterparty. Provide the name and LEI (if any) of counterparty (including a central counterparty). Each item has `counterpartyName` (string) and `counterpartyLei` (string; `"N/A"` when unavailable). - `putOrCall` (string) - Type of option (`Put` or `Call`), as applicable. - `writtenOrPur` (string) - Payoff profile: indicates whether the position is `Written` or `Purchased`. - `descRefInstrmnt` (object) - Description of reference instrument, as required by sub-Item C.11.c.iii. - `shareNo` (float) - Number of shares (or principal amount) of underlying reference instrument per contract. - `exercisePrice` (float) - Exercise price or rate. - `exercisePriceCurCd` (string) - ISO currency code in which the exercise price is denominated (e.g. `USD`). - `expDt` (date) - Expiration date. - `delta` (float) - Delta (only required for options on equities; left blank/null for options on all other reference instruments). - `unrealizedAppr` (float) - Unrealized appreciation or depreciation. Depreciation shall be reported as a negative number. - `derivCat` (string) - Type of derivative instrument that most closely represents the investment (e.g. `OPT` option, `SWO` swaption, `WAR` warrant). - `othDeriv` (object) - Other derivatives — instruments that do not fit any of the other derivative categories (forwards, futures, swaps, options/swaptions/warrants). - `counterparties` (array) - Counterparty. Provide the name and LEI (if any) of counterparty (including a central counterparty). Each item has `counterpartyName` (string) and `counterpartyLei` (string; `"N/A"` when unavailable). - `descRefInstrmnt` (object) - Description of reference instrument, as required by sub-Item C.11.c.iii. - `terminationDt` (date) - Termination or maturity date. - `notionalAmts` (object) - Notional amount(s). Carries a `notionalAmt` array, where each entry has an amount (`amt`) and ISO currency code (`curCd`). - `delta` (float) - Delta (only required for options on equities; left blank/null otherwise). - `unrealizedAppr` (float) - Unrealized appreciation or depreciation. Depreciation shall be reported as a negative number. - `derivCat` (string) - Type of derivative instrument that most closely represents the investment. For this object the value is `OTH` (other). - `othDesc` (string) - Free-text description of the derivative instrument when `derivCat` is `OTH` (e.g. `rights`). - `securityLending` (object) - Item C.12. Securities lending. - `isCashCollateral` (boolean) - a. Does any amount of this investment represent reinvestment of cash collateral received for loaned securities? - `isNonCashCollateral` (boolean) - b. Does any portion of this investment represent that is treated as a Fund asset and received for loaned securities? - `isLoanByFund` (boolean) - c. Is any portion of this investment on loan by the Fund? ### Response Example JSON ```json { "total": { "value": 10000, "relation": "gte" }, "filings": [ { "submissionType": "NPORT-P/A", "accessionNumber": "0001145549-22-060663", "filerInfo": { "filer": { "issuerCredentials": { "cik": "0001750821", "ccc": "XXXXXXXX" } }, "seriesClassInfo": { "seriesId": "S000069692", "classId": [ "C000222265", "C000222266" ] } }, "genInfo": { "regName": "North Square Investments Trust", "regFileNumber": "811-23373", "regCik": "0001750821", "regLei": "549300K2CKCXH4E67T58", "regStreet1": "10 South LaSalle Street", "regStreet2": "Suite 1925", "regCity": "Chicago", "regStateConditional": { "regCountry": "US", "regState": "US-IL" }, "regZipOrPostalCode": "60603", "regPhone": "3128572160", "seriesName": "North Square McKee Bond Fund", "seriesId": "S000069692", "seriesLei": "549300PHHMXSPZQUPF03", "repPdEnd": "2022-10-31", "repPdDate": "2022-07-31", "isFinalFiling": "N" }, "fundInfo": { "totAssets": 127694318.88, "totLiabs": 4923978.88, "netAssets": 122770340, "assetsAttrMiscSec": 0, "assetsInvested": 0, "amtPayOneYrBanksBorr": 0, "amtPayOneYrCtrldComp": 0, "amtPayOneYrOthAffil": 0, "amtPayOneYrOther": 0, "amtPayAftOneYrBanksBorr": 0, "amtPayAftOneYrCtrldComp": 0, "amtPayAftOneYrOthAffil": 0, "amtPayAftOneYrOther": 0, "delayDeliv": 4227285, "standByCommit": 0, "liquidPref": 0, "curMetrics": { "curMetric": [ { "curCd": "USD", "intrstRtRiskdv01": { "period10Yr": 9856.91, "period1Yr": 6715.44, "period30Yr": 11136.99, "period3Mon": 13234.65, "period5Yr": 11291.54 }, "intrstRtRiskdv100": { "period10Yr": 985691.78, "period1Yr": 671546.48, "period30Yr": 1113694.42, "period3Mon": 1323461.45, "period5Yr": 1129157.54 } } ] }, "creditSprdRiskInvstGrade": { "period10Yr": 9687.72, "period1Yr": 5820.36, "period30Yr": 10710.37, "period3Mon": 9920.17, "period5Yr": 11446.13 }, "creditSprdRiskNonInvstGrade": { "period10Yr": 0, "period1Yr": 101.19, "period30Yr": 0, "period3Mon": 21.28, "period5Yr": 35.08 }, "isNonCashCollateral": "N", "returnInfo": { "monthlyTotReturns": { "monthlyTotReturn": [ { "classId": "C000222265", "rtn1": 0.71, "rtn2": -1.3, "rtn3": 2.14 }, { "classId": "C000222266", "rtn1": 0.72, "rtn2": -1.28, "rtn3": 2.16 } ] }, "othMon1": { "netRealizedGain": -221892.91, "netUnrealizedAppr": 987371.06 }, "othMon2": { "netRealizedGain": -497878.98, "netUnrealizedAppr": -1303921.56 }, "othMon3": { "netRealizedGain": -747377.72, "netUnrealizedAppr": 3151751.49 } }, "mon1Flow": { "redemption": -5909235.61, "reinvestment": 162967.53, "sales": 658907.53 }, "mon2Flow": { "redemption": -3483203.47, "reinvestment": 178658.71, "sales": 471975.09 }, "mon3Flow": { "redemption": -3906967.84, "reinvestment": 178311.02, "sales": 4912153.03 } }, "invstOrSecs": [ { "name": "Fannie Mae", "lei": "B1V7KEBTPIMZEU4LTD58", "title": "Fannie Mae Pool", "cusip": "3140X8BP1", "identifiers": { "isin": { "value": "US3140X8BP18" } }, "balance": 138078.19, "units": "PA", "curCd": "USD", "valUSD": 130089.31, "pctVal": 0.1059615132, "payoffProfile": "Long", "assetCat": "ABS-MBS", "issuerCat": "USGSE", "invCountry": "US", "isRestrictedSec": "N", "fairValLevel": "2", "debtSec": { "maturityDt": "2050-10-01", "couponKind": "Fixed", "annualizedRt": 2.5, "isDefault": "N", "areIntrstPmntsInArrs": "N", "isPaidKind": "N" }, "securityLending": { "isCashCollateral": "N", "isNonCashCollateral": "N", "isLoanByFund": "N" } }, { "name": "Fannie Mae", "lei": "B1V7KEBTPIMZEU4LTD58", "title": "Fannie Mae Pool", "cusip": "3140X9AE5", "identifiers": { "isin": { "value": "US3140X9AE52" } }, "balance": 118917.08, "units": "PA", "curCd": "USD", "valUSD": 123144.51, "pctVal": 0.1003047723, "payoffProfile": "Long", "assetCat": "ABS-MBS", "issuerCat": "USGSE", "invCountry": "US", "isRestrictedSec": "N", "fairValLevel": "2", "debtSec": { "maturityDt": "2037-12-01", "couponKind": "Fixed", "annualizedRt": 4, "isDefault": "N", "areIntrstPmntsInArrs": "N", "isPaidKind": "N" }, "securityLending": { "isCashCollateral": "N", "isNonCashCollateral": "N", "isLoanByFund": "N" } }, { "name": "Fannie Mae", "lei": "B1V7KEBTPIMZEU4LTD58", "title": "Fannie Mae Pool", "cusip": "3140X9K95", "identifiers": { "isin": { "value": "US3140X9K957" } }, "balance": 144438.16, "units": "PA", "curCd": "USD", "valUSD": 142437.65, "pctVal": 0.116019594, "payoffProfile": "Long", "assetCat": "ABS-MBS", "issuerCat": "USGSE", "invCountry": "US", "isRestrictedSec": "N", "fairValLevel": "2", "debtSec": { "maturityDt": "2046-06-01", "couponKind": "Fixed", "annualizedRt": 3, "isDefault": "N", "areIntrstPmntsInArrs": "N", "isPaidKind": "N" }, "securityLending": { "isCashCollateral": "N", "isNonCashCollateral": "N", "isLoanByFund": "N" } } // cut for brevity ] } // cut for brevity ] } ``` ### Response Structure of Bulk Download Endpoints #### /bulk/form-nport/YEAR/YEAR-MONTH.jsonl.gz Decompressed JSONL Example ```jsonl {"submissionType":"NPORT-P","filerInfo":{...},"seriesClassInfo":{...},"genInfo":{...},"fundInfo":{...},"invstOrSecs":[{...},...]},...,"accessionNo":"0001752724-25-077616","filedAt":"2025-04-01T17:30:54-04:00","id":"254662305ce9d74fec15622e7dcd19eb"} { ... } { ... } ``` #### /bulk/form-nport/index.json index.json Example ```json [ { "key": "2025/2025-04.jsonl.gz", "updatedAt": "2025-04-03T14:06:44.000Z", "size": 4456349 }, { "key": "2025/2025-03.jsonl.gz", "updatedAt": "2025-04-03T14:06:34.000Z", "size": 106764954 }, // ... more files ] ``` ## FAQ Common questions about querying the Form N-PORT Data API, the response shape, and the bulk archives. ### How do I pull up the most recent monthly portfolio holdings report for a specific mutual fund or ETF? Use the `/form-nport` endpoint and search for the fund you want, then take the newest result. A fund can be identified by the registrant's CIK on the general information object (`genInfo.regCik`), or more precisely by the SEC series identifier of the specific fund (`filerInfo.seriesClassInfo.seriesId`), for example `S000065373`. Restrict the query to that identifier so only that fund's N-PORT filings come back. To get the most recent report, sort the results by filing date in descending order using the `filedAt` field and take the first item. The endpoint returns the full filing, including the reporting period it covers (`genInfo.repPdDate`) and the complete list of holdings (`invstOrSecs`), so the top result is the latest monthly portfolio snapshot the fund has reported. ```json { "query": "filerInfo.seriesClassInfo.seriesId:S000065373", "from": 0, "size": 10, "sort": [{"filedAt":{"order":"desc"}}] } ``` ### How can I retrieve a single portfolio report when I already know its filing accession number? Use the `/form-nport` endpoint and search on the accession number field (`accessionNo`), which uniquely identifies a single filing, for example `0001752724-22-149907`. Because an accession number maps to exactly one filing, the response contains that one N-PORT report. Accession numbers contain hyphens, so they should be treated as an exact phrase when matched so the value is not split into separate tokens. The single matching item in the response includes the full filing content under `genInfo`, `fundInfo`, and `invstOrSecs`. ```json { "query": "accessionNo:\"0001752724-22-149907\"", "from": 0, "size": 10 } ``` ### Which funds report holding a particular company's stock or bond, and how do I search for that across all portfolios? Use the `/form-nport` endpoint and search inside the schedule of portfolio investments, which is the `invstOrSecs` array. Each holding records the issuer name (`invstOrSecs.name`) and an issue title (`invstOrSecs.title`), so you can search by company name such as `Amazon` or `Apple`. Because every N-PORT filing's holdings are indexed, a name match returns every fund that reported that issuer. For a precise match it is better to search on a security identifier rather than a name. Each holding carries a CUSIP (`invstOrSecs.cusip`) and, where available, an ISIN (`invstOrSecs.identifiers.isin.value`), for example a CUSIP like `912828XL9` or an ISIN like `US3140X8BP18`. Matching on one of those identifiers returns the exact funds that hold that specific stock or bond, since identifiers are unambiguous where issuer names vary in spelling. ```json { "query": "invstOrSecs.cusip:912828XL9", "from": 0, "size": 10, "sort": [{"filedAt":{"order":"desc"}}] } ``` ### How do I find all portfolio reports filed between two dates? Use the `/form-nport` endpoint and constrain the filing date field (`filedAt`), which records when EDGAR accepted the filing, to the window you want. The value of `filedAt` should fall between your start date and end date, for example between `2024-01-01` and `2024-03-31`. Results default to newest-first by `filedAt`. Because the endpoint returns at most 10 filings per response, page through larger date ranges by advancing the `from` offset until all matching reports have been retrieved. ```json { "query": "filedAt:[2024-01-01 TO 2024-03-31]", "from": 0, "size": 10, "sort": [{"filedAt":{"order":"desc"}}] } ``` ### How do I see the full list of securities a fund held as of a given reporting period? Use the `/form-nport` endpoint and search for the fund by its series identifier (`filerInfo.seriesClassInfo.seriesId`), then narrow to the report that covers the period you want. Each filing records the date of the reporting period (`genInfo.repPdDate`) and the end of the reporting period (`genInfo.repPdEnd`), so set `genInfo.repPdDate` to the period date you are interested in, such as `2022-07-31`. The matching filing carries the complete schedule of portfolio investments in the `invstOrSecs` array. Each entry describes one position, including the issuer name (`invstOrSecs.name`), the title of the issue (`invstOrSecs.title`), the balance held (`invstOrSecs.balance`), the value in U.S. dollars (`invstOrSecs.valUSD`), and the share of net assets it represents (`invstOrSecs.pctVal`). ```json { "query": "filerInfo.seriesClassInfo.seriesId:S000065373 AND genInfo.repPdDate:2022-07-31", "from": 0, "size": 10, "sort": [{"filedAt":{"order":"desc"}}] } ``` ### How can I find the largest funds by total assets under management? Use the `/form-nport` endpoint and filter on the fund's total assets (`fundInfo.totAssets`), which is reported in U.S. dollars. To find large funds, require `fundInfo.totAssets` to be at or above a threshold such as `5000000000` for funds holding $5 billion or more. To rank the results, sort by `fundInfo.totAssets` in descending order so the biggest funds appear first. Each filing also reports total liabilities (`fundInfo.totLiabs`) and net assets (`fundInfo.netAssets`) if you want to rank by net assets instead of gross assets. ```json { "query": "fundInfo.totAssets:[5000000000 TO *]", "from": 0, "size": 10, "sort": [{"fundInfo.totAssets":{"order":"desc"}}] } ``` ### How do I identify a fund's biggest positions, ranked by their share of net assets? Use the `/form-nport` endpoint and retrieve the fund's filing by its series identifier (`filerInfo.seriesClassInfo.seriesId`). The schedule of portfolio investments is in the `invstOrSecs` array, and every holding records the percentage of the fund's net assets it represents (`invstOrSecs.pctVal`), for example `1.704192601254` for a position worth about 1.7% of net assets. The API sorts whole filings rather than the holdings inside one filing, so to rank a single fund's positions, read the `invstOrSecs` array from its filing and order the entries by `invstOrSecs.pctVal` descending. The holdings with the highest `pctVal` are the fund's largest positions; each entry also carries its dollar value (`invstOrSecs.valUSD`) and issuer name (`invstOrSecs.name`). ```json { "query": "filerInfo.seriesClassInfo.seriesId:S000065373", "from": 0, "size": 10, "sort": [{"filedAt":{"order":"desc"}}] } ``` ### How can I tell whether a fund is using leverage or has outstanding borrowings? Use the `/form-nport` endpoint and look at the fund-level liability and borrowing fields on the `fundInfo` object. Total liabilities are reported in `fundInfo.totLiabs`, which can be compared against net assets (`fundInfo.netAssets`) to gauge how leveraged the fund is. Outstanding borrowings are broken out by who the money is owed to and when it is due. Amounts payable within one year appear in `fundInfo.amtPayOneYrBanksBorr` for bank borrowings, `fundInfo.amtPayOneYrCtrldComp` for controlled companies, `fundInfo.amtPayOneYrOthAffil` for other affiliates, and `fundInfo.amtPayOneYrOther` for others. Amounts payable after one year appear in the matching `fundInfo.amtPayAftOneYrBanksBorr`, `fundInfo.amtPayAftOneYrCtrldComp`, `fundInfo.amtPayAftOneYrOthAffil`, and `fundInfo.amtPayAftOneYrOther` fields. A fund with no leverage reports zeros across these fields; non-zero values indicate borrowings. ```json { "query": "fundInfo.amtPayOneYrBanksBorr:[1 TO *]", "from": 0, "size": 10, "sort": [{"filedAt":{"order":"desc"}}] } ``` ### How do I find a fund's reported monthly performance returns for the trailing three months? Use the `/form-nport` endpoint and retrieve the fund's filing, then read the return information under the fund object. Monthly total returns for the preceding three months are reported per share class in the array `fundInfo.returnInfo.monthlyTotReturns.monthlyTotReturn`. Each entry in that array is tied to a class identifier (`fundInfo.returnInfo.monthlyTotReturns.monthlyTotReturn.classId`) and carries the three trailing monthly returns: month one in `rtn1`, month two in `rtn2`, and month three in `rtn3`. For a multi-class fund there is one entry per class, so match the `classId` to the share class you are interested in to read its returns. ```json { "query": "fundInfo.returnInfo.monthlyTotReturns.monthlyTotReturn.classId:C000222265", "from": 0, "size": 10, "sort": [{"filedAt":{"order":"desc"}}] } ``` ### How can I track money flowing into and out of a fund through new sales and shareholder redemptions? Use the `/form-nport` endpoint and read the monthly flow objects on the fund object. Each N-PORT filing reports flows for the three months it covers in `fundInfo.mon1Flow`, `fundInfo.mon2Flow`, and `fundInfo.mon3Flow`. Each of those objects breaks the activity into three components: money received from new share sales (`fundInfo.mon1Flow.sales`), money paid out for shareholder redemptions (`fundInfo.mon1Flow.redemption`), and amounts from dividend reinvestment (`fundInfo.mon1Flow.reinvestment`). Comparing sales against redemptions month over month shows whether the fund was attracting or losing assets. ```json { "query": "filerInfo.seriesClassInfo.seriesId:S000065373", "from": 0, "size": 10, "sort": [{"filedAt":{"order":"desc"}}] } ``` ### How do I find portfolio reports that cover a specific share class of a fund? Use the `/form-nport` endpoint and search on the class identifier inside the filer information. A series can have several share classes, and the class identifiers are listed in `filerInfo.seriesClassInfo.classId`, for example `C000211458`. Matching on a class identifier returns the N-PORT filings of the series that contains that class. N-PORT reports are filed at the series level rather than per class, so a returned filing covers the whole series. To read class-specific figures, look at the per-class return entries in `fundInfo.returnInfo.monthlyTotReturns.monthlyTotReturn`, where each entry's `classId` matches one share class. ```json { "query": "filerInfo.seriesClassInfo.classId:C000211458", "from": 0, "size": 10, "sort": [{"filedAt":{"order":"desc"}}] } ``` ### How can I find which funds have lent out securities and who borrowed them? Use the `/form-nport` endpoint and look at the borrowers list on the fund object. Funds engaged in securities lending report each counterparty in the `fundInfo.borrowers.borrower` array. A filing with this array populated indicates the fund had securities on loan. Each entry identifies the borrower by name (`fundInfo.borrowers.borrower.name`) and, where available, by legal entity identifier (`fundInfo.borrowers.borrower.lei`), and reports the aggregate value of all securities on loan to that borrower (`fundInfo.borrowers.borrower.aggrVal`). For example a filing might list borrowers such as `GOLDMAN SACHS & CO. LLC` or `BOFA SECURITIES INC.` with their aggregate loan values. ```json { "query": "fundInfo.borrowers.borrower.name:\"GOLDMAN SACHS & CO. LLC\"", "from": 0, "size": 10, "sort": [{"filedAt":{"order":"desc"}}] } ``` ### How do I find funds holding derivatives such as options, futures, swaps, or forward contracts? Use the `/form-nport` endpoint and filter the schedule of portfolio investments by asset category. Each holding records its asset type in `invstOrSecs.assetCat`, and derivative positions carry derivative-specific category codes, for example `DE` for an equity derivative, `DCR` for a credit derivative, `DFE` for a foreign exchange derivative, and `DIR` for an interest rate derivative. Derivative holdings also carry a derivative detail object (`invstOrSecs.derivativeInfo`) with sub-objects identifying the instrument type: forwards in `invstOrSecs.derivativeInfo.fwdDeriv`, futures in `invstOrSecs.derivativeInfo.futrDeriv`, swaps in `invstOrSecs.derivativeInfo.swapDeriv`, and options, swaptions, and warrants in `invstOrSecs.derivativeInfo.optionSwaptionWarrantDeriv`. Searching for the presence of one of these sub-objects returns funds holding that kind of derivative. ```json { "query": "invstOrSecs.assetCat:DE", "from": 0, "size": 10, "sort": [{"filedAt":{"order":"desc"}}] } ``` ### How can I identify a fund's exposure to written versus purchased options? Use the `/form-nport` endpoint and look at the option detail inside each holding's derivative information. Option positions are described in `invstOrSecs.derivativeInfo.optionSwaptionWarrantDeriv`, which records whether the fund wrote or purchased the option in `invstOrSecs.derivativeInfo.optionSwaptionWarrantDeriv.writtenOrPur`, with the value `Written` for options the fund sold and `Purchased` for options the fund bought. The same object records whether each option is a put or a call in `invstOrSecs.derivativeInfo.optionSwaptionWarrantDeriv.putOrCall`, with values `Put` or `Call`. Combining the two fields separates, for example, written calls from purchased puts. Each option holding also carries an exercise price (`invstOrSecs.derivativeInfo.optionSwaptionWarrantDeriv.exercisePrice`) and an expiration date (`invstOrSecs.derivativeInfo.optionSwaptionWarrantDeriv.expDt`). ```json { "query": "invstOrSecs.derivativeInfo.optionSwaptionWarrantDeriv.writtenOrPur:Written", "from": 0, "size": 10, "sort": [{"filedAt":{"order":"desc"}}] } ``` ### How do I find funds with meaningful holdings in companies based in a particular country? Use the `/form-nport` endpoint and filter the schedule of portfolio investments by country of the issuer. Each holding records the ISO country code where the issuer is organized in `invstOrSecs.invCountry`, for example `BR` for Brazil, `TW` for Taiwan, or `CN` for China. To find funds with meaningful exposure rather than a token position, also use the share-of-net-assets field (`invstOrSecs.pctVal`) and require it to be above a threshold for holdings in that country. Combining a country match on `invstOrSecs.invCountry` with a minimum `invstOrSecs.pctVal` returns funds that hold a sizable position in issuers from that country. ```json { "query": "invstOrSecs.invCountry:BR AND invstOrSecs.pctVal:[1 TO *]", "from": 0, "size": 10, "sort": [{"filedAt":{"order":"desc"}}] } ``` ### How can I find funds holding restricted or hard-to-value securities? Use the `/form-nport` endpoint and filter the schedule of portfolio investments on the restricted-security flag. Each holding records whether it is a restricted security in `invstOrSecs.isRestrictedSec`, where the value `Y` marks a restricted position and `N` an unrestricted one. Hard-to-value positions can be found through the fair value hierarchy level (`invstOrSecs.fairValLevel`), which takes values `1`, `2`, `3`, or `N/A`. Level `3` indicates a holding valued with unobservable inputs, which are the hardest to value. Requiring `invstOrSecs.fairValLevel` to be `3`, on its own or together with `invstOrSecs.isRestrictedSec` set to `Y`, returns funds carrying restricted or hard-to-value securities. ```json { "query": "invstOrSecs.isRestrictedSec:Y AND invstOrSecs.fairValLevel:3", "from": 0, "size": 10, "sort": [{"filedAt":{"order":"desc"}}] } ``` ### How do I find bond holdings that are currently in default or behind on interest payments? Use the `/form-nport` endpoint and filter the debt-security detail inside the schedule of portfolio investments. Debt holdings carry a debt-security object (`invstOrSecs.debtSec`), which records whether the security is currently in default in `invstOrSecs.debtSec.isDefault`, with the value `Y` marking a defaulted bond. The same object flags missed or deferred coupon payments in `invstOrSecs.debtSec.areIntrstPmntsInArrs`, where `Y` means there are interest payments in arrears or coupon payments have been legally deferred by the issuer. Requiring `invstOrSecs.debtSec.isDefault` to be `Y` or `invstOrSecs.debtSec.areIntrstPmntsInArrs` to be `Y` returns funds holding distressed bonds. ```json { "query": "invstOrSecs.debtSec.isDefault:Y OR invstOrSecs.debtSec.areIntrstPmntsInArrs:Y", "from": 0, "size": 10, "sort": [{"filedAt":{"order":"desc"}}] } ``` ### How can I find a fund's holdings of fixed-rate versus floating-rate debt and their maturity dates? Use the `/form-nport` endpoint and read the debt-security detail on each holding. The coupon type is recorded in `invstOrSecs.debtSec.couponKind`, which takes values such as `Fixed`, `Floating`, `Variable`, or `None`. Filtering on `invstOrSecs.debtSec.couponKind` separates fixed-rate bonds from floating-rate bonds within a fund's holdings. Each debt holding also reports its maturity date in `invstOrSecs.debtSec.maturityDt`, for example `2025-07-15`, and its annualized coupon rate in `invstOrSecs.debtSec.annualizedRt`. Combining the coupon type with the maturity date shows the rate structure and the maturity profile of the fund's bond positions. ```json { "query": "invstOrSecs.debtSec.couponKind:Fixed", "from": 0, "size": 10, "sort": [{"filedAt":{"order":"desc"}}] } ``` ### How do I assess a bond fund's sensitivity to interest rate changes? Use the `/form-nport` endpoint and read the currency metrics on the fund object. Interest rate risk is reported per currency in the `fundInfo.curMetrics.curMetric` array, where each entry is tied to a currency code (`fundInfo.curMetrics.curMetric.curCd`), such as `USD`. Within each currency entry, the field `intrstRtRiskdv01` reports the change in portfolio value from a 1 basis point move in interest rates, and `intrstRtRiskdv100` reports the change from a 100 basis point move. Both are broken out by maturity bucket, with sub-fields `period3Mon`, `period1Yr`, `period5Yr`, `period10Yr`, and `period30Yr`. Larger absolute values in `fundInfo.curMetrics.curMetric.intrstRtRiskdv01` indicate a portfolio that is more sensitive to interest rate changes. ```json { "query": "fundInfo.curMetrics.curMetric.curCd:USD AND fundInfo.curMetrics.curMetric.intrstRtRiskdv01.period10Yr:[10000 TO *]", "from": 0, "size": 10, "sort": [{"filedAt":{"order":"desc"}}] } ``` ### How can I gauge a fund's exposure to credit spread movements split by investment grade and non-investment grade? Use the `/form-nport` endpoint and read the credit spread risk objects on the fund object. Exposure to a 1 basis point change in credit spreads for investment-grade holdings is reported in `fundInfo.creditSprdRiskInvstGrade`, and for non-investment-grade holdings in `fundInfo.creditSprdRiskNonInvstGrade`. Each of those objects is broken out by maturity bucket, with sub-fields `period3Mon`, `period1Yr`, `period5Yr`, `period10Yr`, and `period30Yr`. Comparing the values in `fundInfo.creditSprdRiskInvstGrade` against those in `fundInfo.creditSprdRiskNonInvstGrade` shows how the fund's spread exposure is split between higher-quality and lower-quality credit. ```json { "query": "fundInfo.creditSprdRiskNonInvstGrade.period10Yr:[1000 TO *]", "from": 0, "size": 10, "sort": [{"filedAt":{"order":"desc"}}] } ``` ### How do I identify amended portfolio reports versus original filings? Use the `/form-nport` endpoint and filter on the form type field (`submissionType`). An original N-PORT report has the value `NPORT-P`, while an amendment has the value `NPORT-P/A`. Searching for `submissionType` equal to `NPORT-P/A` returns only amended reports, and `NPORT-P` returns only originals. When a fund has both an original and one or more amendments for the same period, the reporting period date (`genInfo.repPdDate`) is the same across them, so matching the period and the series identifier (`filerInfo.seriesClassInfo.seriesId`) groups the original together with its amendments. ```json { "query": "submissionType:\"NPORT-P/A\"", "from": 0, "size": 10, "sort": [{"filedAt":{"order":"desc"}}] } ``` ### How can I find the final portfolio report filed by a fund that is winding down? Use the `/form-nport` endpoint and filter on the final-filing flag in the general information object. Each report records whether it is the fund's last N-PORT filing in `genInfo.isFinalFiling`, where the value `Y` marks a final filing and `N` an ongoing one. To find the final report for a particular fund, combine a match on `genInfo.isFinalFiling` set to `Y` with the fund's series identifier (`filerInfo.seriesClassInfo.seriesId`). To find all funds that have wound down, search on `genInfo.isFinalFiling` set to `Y` on its own. ```json { "query": "genInfo.isFinalFiling:Y", "from": 0, "size": 10, "sort": [{"filedAt":{"order":"desc"}}] } ``` ### How do I find funds that hold repurchase or reverse repurchase agreements? Use the `/form-nport` endpoint and filter the schedule of portfolio investments on the repurchase-agreement detail. Holdings that are repo positions carry a repurchase-agreement object (`invstOrSecs.repurchaseAgrmt`), and the transaction type is recorded in `invstOrSecs.repurchaseAgrmt.transCat`, which distinguishes a repurchase agreement, where the fund is the cash lender and receives collateral, from a reverse repurchase agreement, where the fund is the cash borrower and posts collateral. Searching for the presence of `invstOrSecs.repurchaseAgrmt` returns funds holding either kind, and filtering on the value of `invstOrSecs.repurchaseAgrmt.transCat` separates repurchase from reverse repurchase positions. Each repo holding also reports a repurchase rate (`invstOrSecs.repurchaseAgrmt.repurchaseRt`) and a maturity date (`invstOrSecs.repurchaseAgrmt.maturityDt`). ```json { "query": "invstOrSecs.repurchaseAgrmt.transCat:Repurchase", "from": 0, "size": 10, "sort": [{"filedAt":{"order":"desc"}}] } ``` ### How can I break down a fund's portfolio by asset type, such as equities, debt, or cash-like instruments? Use the `/form-nport` endpoint and group the holdings in the schedule of portfolio investments by their asset category. Each holding records its type in `invstOrSecs.assetCat`, with codes such as `EC` for common equity, `EP` for preferred equity, `DBT` for debt securities, and `STIV` for short-term investment vehicles such as money market or cash management positions. To break down one fund's portfolio, read the `invstOrSecs` array from its filing and tally the holdings by `invstOrSecs.assetCat`, summing the value field (`invstOrSecs.valUSD`) or the share-of-net-assets field (`invstOrSecs.pctVal`) within each category. Asset-backed and derivative positions carry their own codes, for example `ABS-MBS` for mortgage-backed securities and `DE` for equity derivatives. ```json { "query": "filerInfo.seriesClassInfo.seriesId:S000065373", "from": 0, "size": 10, "sort": [{"filedAt":{"order":"desc"}}] } ``` ### How do I find money market or short-term cash management positions held by a fund? Use the `/form-nport` endpoint and filter the schedule of portfolio investments on the asset category. Short-term cash management positions, including money market funds, liquidity pools, and similar cash vehicles, carry the asset category code `STIV` in `invstOrSecs.assetCat`. Requiring `invstOrSecs.assetCat` to be `STIV` returns funds holding such positions. Each matching holding records the issuer name (`invstOrSecs.name`), for example a money market deposit account, along with its value in U.S. dollars (`invstOrSecs.valUSD`) and its share of net assets (`invstOrSecs.pctVal`). ```json { "query": "invstOrSecs.assetCat:STIV", "from": 0, "size": 10, "sort": [{"filedAt":{"order":"desc"}}] } ``` ### How can I look up which fund a series or class identifier belongs to, along with the fund family name? Use the `/form-nport` endpoint and search on the series identifier (`filerInfo.seriesClassInfo.seriesId`) or one of its class identifiers (`filerInfo.seriesClassInfo.classId`). Any matching filing identifies the fund: the series name is reported in `genInfo.seriesName`, for example `Innovator S&P 500 Buffer ETF - June`, and the series identifier is repeated in `genInfo.seriesId`. The fund family, meaning the registrant or trust that the series belongs to, is reported in `genInfo.regName`, for example `Innovator ETFs Trust`, together with the registrant's CIK in `genInfo.regCik`. A single filing therefore resolves a series or class identifier to both the fund's name and its fund family. ```json { "query": "filerInfo.seriesClassInfo.seriesId:S000065373", "from": 0, "size": 10, "sort": [{"filedAt":{"order":"desc"}}] } ``` ### How do I page through a large set of matching portfolio reports when there are more results than one response returns? Use the `/form-nport` endpoint with the `from` and `size` parameters to page through results. The `size` parameter sets how many filings come back in one response and has a maximum of 10, which is also the default. The `from` parameter sets the starting offset, so setting `from` to 10 returns the next page of results, `from` to 20 the page after that, and so on. Keep the sort order stable across pages, for example sorting by `filedAt` descending, so filings are not skipped or repeated as you advance the offset. Continue increasing `from` in steps of `size` until a page returns fewer than `size` filings, which marks the end of the result set. ```json { "query": "submissionType:NPORT-P", "from": 10, "size": 10, "sort": [{"filedAt":{"order":"desc"}}] } ``` ### How can I download the entire historical set of portfolio reports for a given month in bulk rather than querying one by one? Use the bulk download endpoint `/bulk/form-nport/YEAR/YEAR-MONTH.jsonl.gz`, which returns a gzip-compressed JSONL file containing every N-PORT filing whose filing date (`filedAt`) falls within that year and month. For example the path `/bulk/form-nport/2025/2025-02.jsonl.gz` returns all filings from February 2025. Each line in the decompressed file is the full JSON of one N-PORT filing, with the same structure as a single result from the `/form-nport` search endpoint, including `genInfo`, `fundInfo`, and `invstOrSecs`. This lets you process a whole month of filings locally instead of paging through search queries one response at a time. ```bash https://api.sec-api.io/bulk/form-nport/2025/2025-02.jsonl.gz?token=YOUR_API_KEY ``` ### How do I programmatically discover which bulk data files are available and when they were last updated? Use the bulk index endpoint `/bulk/form-nport/index.json`, which returns a JSON array describing every available monthly bulk file. Each entry records the file path in `key`, for example `2025/2025-03.jsonl.gz`, which is the path to pass to the `/bulk/form-nport/YEAR/YEAR-MONTH.jsonl.gz` download endpoint. Each entry also records when the file was last refreshed in `updatedAt`, for example `2025-04-03T14:06:34.000Z`, and the file size in bytes in `size`. Reading this index lets an automated process detect which months are available, watch the `updatedAt` timestamps for changes, and decide which files to download. ```bash https://api.sec-api.io/bulk/form-nport/index.json?token=YOUR_API_KEY ``` ### How can I compare a fund's holdings across consecutive quarters to see which positions were added, increased, or sold? Use the `/form-nport` endpoint and retrieve the same fund's filings over time by searching on its series identifier (`filerInfo.seriesClassInfo.seriesId`) and sorting by filing date (`filedAt`). Each filing covers one reporting period, identified by `genInfo.repPdDate`, so two consecutive reports give you the holdings at two points in time. To compare them, match holdings between the two `invstOrSecs` arrays on a stable security identifier, either the CUSIP (`invstOrSecs.cusip`) or the ISIN (`invstOrSecs.identifiers.isin.value`). A security present in the later filing but not the earlier one was added, one present earlier but not later was sold, and for securities present in both, comparing the balance held (`invstOrSecs.balance`) or the value in U.S. dollars (`invstOrSecs.valUSD`) shows whether the position was increased or reduced. ```json { "query": "filerInfo.seriesClassInfo.seriesId:S000065373", "from": 0, "size": 10, "sort": [{"filedAt":{"order":"desc"}}] } ``` ## References For more information about N-PORT filings visit the SEC websites here: - [Form N-PORT General Instructions](https://www.sec.gov/files/formn-port.pdf) - [Investment Company Reporting Modernization FAQ](https://www.sec.gov/investment/investment-company-reporting-modernization-faq) - [Form N-PORT XML Technical Specifications](https://www.sec.gov/submit-filings/technical-specifications#form_n-port)