SEC filings & market structure
Fund Holdings
Returns per-security holdings from SEC Form N-PORT primary documents — one row per investment-or-security line in a mutual fund / ETF / closed-end fund's monthly portfolio report. Use this when the user asks about: which funds hold a specific stock or bond, a fund's complete portfolio composition, fund-level derivative exposure (swaps, options, futures), rep.
Endpoint
GET /v1/fund-holdingsSourceSEC N-PORT primary-document XML
Authx-api-key — a free key works
What it returns
One record per result. Fields (from a live response):
- Identity —
title,issuer_cat,filer_name,filer_cik,name - Subject —
country,cusip,ticker,asset_cat - Dates —
period_ending,scraped_at - Amounts —
balance,value_usd - Provenance —
filing_id - Details —
payoff_profile,derivative_type,is_restricted,is_derivative,units,lei,sec_file_number,currency,filing_type,id,is_amendment,holding_index,pct_of_portfolio,is_non_cash_collateral,is_loaned,fair_val_level,isin
Filters
| filing_id | EDGAR accession number — returns all holdings from one specific N-PORT filing (one fund-month). |
| filer_cik | Fund trust CIK (10-digit, padded with leading zeros). Returns the trust's holdings across all reporting months. |
| filer_name | Case-insensitive substring against fund trust name (e.g., 'iShares', 'Vanguard', 'SPDR'). |
| period_ending | Reporting month-end (YYYY-MM-DD). Restricts results to one reporting period. |
| name | Case-insensitive substring against the holding issuer name (e.g., 'Apple', 'Treasury', 'Goldman Sachs'). |
| cusip | Exact 9-character CUSIP. Most reliable identifier for equity and debt holdings in N-PORT. |
| ticker | Exact ticker symbol if filer included it in the identifiers block (less common than CUSIP). |
| isin | Exact ISIN if filer included it in the identifiers block. |
| asset_cat | Exact asset-category code. Examples: 'EC' common stock, 'DBT' debt, 'DE' equity derivative, 'DIR' rate derivative, 'REPO' repurchase agreement, 'UST'… |
| is_derivative | True returns only derivative rows (asset_cat starting with 'D'). False returns only non-derivative rows. Omit for both. |
| derivative_type | Structural derivative type, derived from which `<derivativeInfo>` child element is present in the filing. |
| country | ISO-2 country code of the holding (e.g., 'US', 'GB', 'JP'). |
| payoff_profile | Filter to long or short positions per N-PORT payoffProfile field. |
| min_value_usd | Minimum fair value in USD. Use to focus on large positions only. |
| min_pct_of_portfolio | Minimum percentage of fund net assets (0-100 scale). Use to focus on concentrated positions. |
| since | ISO date (YYYY-MM-DD). Only holdings whose period_ending >= this date. |
| until | ISO date (YYYY-MM-DD). Only holdings whose period_ending <= this date. |
| sort_by | Default: value_usd. |
| sort_order | Default: desc (largest / most recent first). |
| limit | Maximum records to return. Default 50, max 500. |
Example request
curl "https://api.keyvex.com/v1/fund-holdings?ticker=AAPL&limit=1" \
-H "x-api-key: YOUR_KEY"
Response
{
"results": [
{
"country": "US",
"cusip": "67066G104",
"payoff_profile": "Long",
"derivative_type": null,
"is_restricted": false,
"filing_id": "0000036405-26-000323",
"is_derivative": false,
"units": "NS",
"title": "NVIDIA CORP",
"lei": "549300S4KLFTLO7GSQ80",
"balance": 733080870,
"sec_file_number": "811-02652",
"value_usd": 127849303728,
"currency": "USD",
"filing_type": "NPORT-P",
"issuer_cat": "CORP",
"id": "0000036405-26-000323-2938",
"is_amendment": false,
"ticker": null,
"filer_name": "VANGUARD INDEX FUNDS",
"asset_cat": "EC",
"period_ending": "2026-03-31",
"holding_index": 2938,
"filer_cik": "0000036405",
"pct_of_portfolio": 6.419132792125,
"is_non_cash_collateral": false,
"scraped_at": "2026-06-11T19:49:01.690Z",
"name": "NVIDIA Corp",
"is_loaned": false,
"fair_val_level": 1,
"isin": "US67066G1040"
}
],
"count": 1,
"has_more": true
}
Example questions you can answer
- Every security a given fund holds, with weights.
- Which funds hold a specific bond or derivative?
Related datasets
Query Fund Holdings from your AI
Hand any AI your key + the OpenAPI spec and it can pull this dataset directly. Free key = full data, 60 requests/day.
Get a free key OpenAPI spec → REST docs →