/api/v1/nport/{accession}/sectorsSector and industry weights of a filing's holdings
Sums one published N-PORT filing's positions by sector and by industry: weight in percentage points of net assets, US dollar value and position count, plus the unclassified share.
Why use this
Common use case
Computed on read from the filing's published positions; nothing is stored. Each position's ticker is the one GET /api/v1/nport/{accession}/holdings serves: the reported ticker, else the existing valid security mapping for that exact CUSIP. The ticker's sector and industry come from the platform's security reference list through its existing per-ticker lookup, the one the Portfolio sector allocation uses. A ticker whose reference rows disagree is not classified, so nothing is guessed.
weight_pct sums the positions' pct_val exactly as filed, in percentage points of net assets, and value_usd sums val_usd. The sector weights plus the unclassified weight equal the filing's own pct_val total, which can differ from 100 when a fund reports cash, derivatives or liabilities. Industries cover positions that have both a sector and an industry.
unclassified holds positions with no ticker (for example a position filed without a CUSIP, or a cash fund), a ticker absent from the reference list, a ticker with conflicting reference rows, or no sector. The reference list classifies operating companies, so a bond fund is mostly unclassified; its holdings carry asset_cat on GET /api/v1/nport/{accession}/holdings. The sample is iShares Core S&P 500 ETF's filing 0002071691-26-019760 for 2026-06-30 (three of its 11 sectors and 111 industries shown).
Parameters
| Name | In | Required | Default | Allowed | Description | Example |
|---|---|---|---|---|---|---|
| accession | path | required | — | — | SEC accession number of a PUBLISHED filing (superseded or quarantined filings return 404 with the state in error.details). The accession for a fund and month comes from GET /api/v1/nport/by-ticker/{ticker}. | 0002071691-26-019760 |
Response schema
| Field | Type | Nullable | Description |
|---|---|---|---|
| status | string | no | — |
| request_id | string | yes | Optional; omitted when not applicable. |
| timestamp | string | no | Optional; omitted when not applicable. |
| data | object | no | — |
| data.accession_number | string | no | Echoed accession number. |
| data.as_of | string | yes | The filing's reporting date. |
| data.positions | integer | no | Number of position rows in the filing. |
| data.sectors | array | no | One row per sector, largest weight first. |
| data.sectors[].sector | string | no | — |
| data.sectors[].weight_pct | number | no | Sum of the group's pct_val as filed, in percentage points of the fund's net assets (37.71 means 37.71%). |
| data.sectors[].value_usd | number | no | Sum of the group's val_usd as filed, in US dollars. |
| data.sectors[].positions | integer | no | Number of position rows in the group. |
| data.industries | array | no | One row per sector and industry pair, largest weight first. Positions with a sector but no industry count in sectors only. |
| data.industries[].sector | string | no | — |
| data.industries[].industry | string | no | — |
| data.industries[].weight_pct | number | no | Sum of the group's pct_val as filed, in percentage points of the fund's net assets (37.71 means 37.71%). |
| data.industries[].value_usd | number | no | Sum of the group's val_usd as filed, in US dollars. |
| data.industries[].positions | integer | no | Number of position rows in the group. |
| data.unclassified | object | no | Positions with no ticker, a ticker absent from the reference list, a ticker whose reference rows disagree, or no sector. |
| data.unclassified.weight_pct | number | no | Sum of the group's pct_val as filed, in percentage points of the fund's net assets (37.71 means 37.71%). |
| data.unclassified.value_usd | number | no | Sum of the group's val_usd as filed, in US dollars. |
| data.unclassified.positions | integer | no | Number of position rows in the group. |
Sample response
- "status": "success"
- "request_id": "nport-sectors-example"
- "timestamp": "2026-10-19T00:00:00Z"
- "data":
- "accession_number": "0002071691-26-019760"
- "as_of": "2026-06-30"
- "positions": 508
- "sectors":
- "industries":
- "unclassified":
Errors
| Status | Label | Description |
|---|---|---|
| 200 | OK | Request succeeded. |
| 400 | Bad Request | Invalid query, body, or path parameter. |
| 401 | Unauthorized | Missing or invalid Authorization header / api_Token. |
| 402 | Payment Required | Insufficient token balance for this call. Top up |
| 429 | Too Many Requests | Rate limit exceeded for your tier (see /pricing for tier limits). Tier limits |
| 500 | Server Error | Unexpected server-side failure. Retry with backoff; report if persistent. |
Code samples
curl "https://api.finradar.ai/api/v1/nport/0002071691-26-019760/sectors" \
-H "X-API-Key: YOUR_API_KEY"Generate an API key in /account/credentials to run live queries (literal YOUR_API_KEY placeholder shown until then).