How to Analyze ETF Thematic Exposure via API (With a Verifiable Audit Trail)
Analyze ETF thematic exposure via API with sourced industry-group weights and machine-verified prospectus citations, not marketing copy.

Every thematic ETF fact sheet makes the same kind of claim: this fund gives you exposure to artificial intelligence, or robotics, or the next generation of the internet. The fact sheet is marketing copy. The actual portfolio weight in that theme, quarter by quarter, sourced back to a filing a reader can verify, is a different and much harder question, one that most ETF data APIs answer by handing you a sector percentage and calling it a day.
This post is a developer walkthrough of /api/fund/exposure-model, the endpoint StockFit built specifically to close that gap, paired with the quantitative industry-group weighting that backs it up. We will run both against ARKK (ARK Innovation ETF), a fund whose stated theme, “disruptive innovation,” is broad enough that its real portfolio weight is worth checking rather than assuming. Every number and quote below is a verbatim field from a live API response captured the same day this post was written.
The problem with “AI exposure”: marketing copy versus portfolio weight
A typical ETF sector-weighting endpoint, the kind most fundamentals APIs ship, answers one question: what percentage of the fund's assets sits in each broad sector (Technology, Health Care, Financials) as of the most recent holdings snapshot. That is a real, useful number, and it is a straightforward aggregation of the current portfolio. It cannot answer a different question a developer building a fund-research tool actually gets asked: does this fund's portfolio still match what its prospectus says it invests in?
A prospectus describes a fund's strategy in prose, not sector codes. ARKK's 485BPOS filing states its theme as “disruptive innovation” and then breaks that into named sub-themes: genomics, automation and robotics, next generation internet, blockchain and fintech. None of that maps cleanly onto a GICS sector. Turning it into something an application can check, without inventing a classification the fund never claimed, is what /api/fund/exposure-model is for.
Inside the exposure model API: sourced, machine-verified citations
The endpoint reads the fund's own prospectus, N-CSR shareholder report, N-CEN census, and N-PORT holdings, then builds a structured model of the fund's stated mandate, portfolio construction, exposures, implementation, costs, and use cases. Every section and every array item carries a sources array, and every source has three fields: a url pointing at the exact filing on EDGAR, a section naming where in the document the claim comes from, and a quote, twenty to four hundred characters, copied word for word. Before a claim is ever stored, the generation pipeline fetches the filing, strips the HTML, and confirms the quote appears verbatim; a paraphrased or fabricated quote gets rejected and the model regenerated.
curl 'https://api.stockfit.io/api/fund/exposure-model?symbol=ARKK' \
-H 'x-api-key: YOUR_KEY'{
"summary": {
"primaryExposure": "Actively-managed thematic global equity exposure to companies relevant to "disruptive innovation."",
"strategyType": "active",
"sources": [{
"url": "https://www.sec.gov/Archives/edgar/data/1579982/000121390025115285/ea0266434-01_485bpos.htm",
"source": "prospectus",
"section": "Summary — ARK Innovation ETF (ARKK) — Principal Investment Strategies",
"quote": "The Fund is an actively-managed exchange-traded fund (“ETF”) that will invest under normal circumstances primarily (at least 65% of its assets) in domestic and foreign equity securities of companies that are relevant to the Fund's investment theme of disruptive innovation."
}]
},
"exposures": {
"keyHoldingsOrBuckets": [ /* four named sub-themes, see below */ ],
"riskDrivers": ["Disruptive innovation/theme risk...", "Issuer concentration/non-diversified risk...", "..."]
},
"provenance": { "confidence": "medium" }
}The four named sub-themes inside exposures.keyHoldingsOrBuckets, each with its own source quote pulled from the same prospectus:
Not every fund has a cached model the first time you ask. The model is generated lazily: the first request for a fund nobody has queried before returns 202 Accepted with a job ID, and generation runs in the background, typically finishing within a few minutes. Calling VanEck Semiconductor ETF (SMH) for the first time while researching this post returned exactly that:
{
"status": "generating",
"jobId": "6a8a0e98ca53b6c5a7ed0ac8",
"message": "Generating exposure model — this can take a few minutes. Call this endpoint again to retrieve the result."
}Poll the same URL again after a short delay and you get 200 OK with the full model, cached from then on. Popular, frequently-requested funds like ARKK and SPY already have a model ready on the first call. Also worth noting: provenance.confidence varies by fund (ARKK's model above is medium, SPY's is high) as a signal of how much the prospectus language itself left to interpretation versus stated it outright.
Worked example: ARKK's real thematic exposure, quarter by quarter
The exposure model tells you what the fund says it invests in. To check what it actually holds, pair it with /api/fund/composition for the current snapshot and /api/fund/chart/industry-groups for the weight trend. As of the 2026-04-30 N-PORT, ARKK held just 45 positions, concentrated: the top 10 alone are 49.5% of the fund.
| Holding | Symbol | % of ARKK |
|---|---|---|
| Tesla Inc | TSLA | 9.74% |
| Tempus AI Inc | TEM | 5.36% |
| Advanced Micro Devices Inc | AMD | 5.18% |
| CRISPR Therapeutics AG | CRSP | 4.98% |
| Shopify Inc | SHOP | 4.37% |
| Roku Inc | ROKU | 4.33% |
| Robinhood Markets Inc | HOOD | 4.30% |
| Coinbase Global Inc | COIN | 4.23% |
| Circle Internet Group Inc | CRCL | 3.84% |
| Palantir Technologies Inc | PLTR | 3.13% |
Tesla is the largest position at 9.7%, which lines up with the “Energy Transformation” and “Automation Transformation” sub-themes quoted above. Three more names in the top ten, Robinhood, Coinbase, and Circle Internet, are the fintech and crypto-infrastructure companies the prospectus calls out under “Blockchain & Fintech Innovation.” What is less obvious from the fact sheet is Advanced Micro Devices sitting at 5.2%, StockFit's third-largest ARKK position, a chipmaker that has nothing to do with genomics or blockchain and everything to do with the AI buildout the prospectus lists only under a broad “artificial intelligence” mention.
The industry-group weight chart shows exactly when that shift happened. StockFit classifies holdings into eight high-value industry groups from underlying SIC codes; Semiconductors is one of them.
Semiconductors sat under 2% of ARKK for most of 2020 through 2024, occasionally dropping out of the top classifications entirely (the gaps in the orange line above are quarters where the weight was too small to register). Starting in mid-2025 it climbs fast: 3.95% in April 2025, 7.96% in July, 9.31% in October, peaking at 11.58% in January 2026. Software & SaaS tells the inverse story, a rotation out of pure software (peak 41.81% in January 2024) and into the chip layer underneath it. Meanwhile Automotive (mostly Tesla) has stayed a stable 8 to 14% the entire period, the one theme that never went out of style.
Put ARKK's semiconductor line next to the same metric for SPY, the market-cap-weighted S&P 500 fund, and the “AI chip trade” reads as a market-wide phenomenon, not an ARKK-specific bet:
SPY's semiconductor weight climbed steadily and predictably as index constituents like NVIDIA and Broadcom grew into a larger share of the S&P 500, from 3.29% in September 2019 to 14.13% in March 2026. ARKK's line is flatter for longer, then converges toward the same double-digit range in about eighteen months through active reallocation rather than passive drift. Two very different funds arrived in the same place by two structurally different mechanisms, and both are visible in the same endpoint response.
How this differs from a plain ETF sector-weighting API
Most vendors that expose fund data, including Financial Modeling Prep's ETF Sector Weighting and ETF Asset Exposure APIs, answer a numeric question: what percent of assets sits in each sector, or which funds hold a given stock and at what weight. StockFit ships that exact shape too, via /api/fund/chart/industry-groups and /api/fund/reverse-lookup, at a finer industry-group resolution than a broad sector code (Semiconductors as its own line, not folded into Technology).
A percentage-by-sector number is a derived statistic. It does not, and structurally cannot, carry a citation, because there is no single sentence in a filing that says “this fund is 11.58% semiconductors,” that number is computed from raw holdings. The exposure model answers a categorically different question, one that does have a source sentence to point at: what does this fund's own prospectus claim its strategy is. That is the layer with the audit trail; a fund classification with a clickable filing URL, section, and a quote you can Ctrl-F yourself is not something a sector-weighting percentage was ever designed to provide.
Reverse lookup: which other funds hold the same stock
ARKK's AMD position is not unique to thematic funds. /api/fund/reverse-lookup takes any symbol, stock or fund, and returns every fund whose latest N-PORT discloses a position in it, sorted by position value descending. For AMD specifically, 1,639 funds show up:
curl 'https://api.stockfit.io/api/fund/reverse-lookup?symbol=AMD&pageSize=5' \
-H 'x-api-key: YOUR_KEY'{
"totalResults": 1639,
"data": [
{ "fundTicker": "FUSEX", "fundName": "Fidelity 500 Index Fund", "pctVal": 1.294006895301, "fundNetAssets": 832153251408 },
{ "fundTicker": "VTI", "fundName": "Vanguard Total Stock Market Index Fund", "pctVal": 0.528828643201, "fundNetAssets": 1991691212321 },
{ "fundTicker": "VOO", "fundName": "Vanguard 500 Index Fund", "pctVal": 0.593043357656, "fundNetAssets": 1421263311403 },
{ "fundTicker": "QQQ", "fundName": "Invesco QQQ Trust, Series 1", "pctVal": 1.875684474124, "fundNetAssets": 372507306132 },
{ "fundTicker": "VGT", "fundName": "Vanguard Information Technology Index Fund", "pctVal": 3.208815744246, "fundNetAssets": 171805916534 }
// ... 1,634 more
]
}Broad index funds top the list by raw dollar value (Fidelity 500 Index at $10.77B, Vanguard Total Stock Market at $10.53B) simply because they are enormous, not because AMD is a large slice of them; pctVal is the number that actually answers “how exposed is this fund to AMD,” and it tops out at 3.21% for the Vanguard Information Technology fund in this slice. This is the same lookup that powers a “which of my ETFs actually hold this stock” watchlist screen; the dedicated tutorial on finding every ETF that holds a specific stock builds exactly that with the Node.js SDK.
FAQ
Q.What is ETF thematic exposure and how is it different from sector weighting?
Q.How do I analyze an ETF's thematic exposure via API?
Q.What happens if I request an exposure model for a fund that has never been generated?
202 Accepted with a jobId and a message to call again; generation runs in the background and typically finishes within a few minutes. Once generated, the model is cached and every subsequent call returns 200 OK with the full JSON. Frequently-requested funds usually already have a cached model; a fund nobody has queried yet triggers a fresh generation.Q.How is StockFit's exposure model different from a plain ETF sector-weighting API like FMP's?
Q.Can I verify the citations in the exposure model myself?
url, a section, and a quote field. Open the URL, jump to the section, and search for the quote; the generation pipeline already rejects and regenerates any claim whose quote fails a literal match against the fetched, HTML-stripped filing text, so a quote that does not appear verbatim would itself be a bug.Q.How current is the fund industry-group weighting data?
Q.Which StockFit plan includes the exposure model endpoint?
/api/fund/profile and /api/fund/holdings but not the analytical endpoints used in this post.Q.How do I find every ETF or mutual fund that holds a specific stock?
Where the exposure model fits in a bigger fund workflow
The exposure model is one of more than twenty fund endpoints StockFit exposes on the ETF data API; the full tour, from the free-tier /profile call through holdings, flows, overlap, and fee analysis, is in A Deep Lens on Any ETF. For background on the N-PORT and prospectus filings this endpoint reads, see the fund-forms section of the SEC forms field guide. And if you want the general financial snapshot on ARKK itself, AUM, adviser, exchange, alongside the exposure work above, the ARKK insights deep dive covers it. To see this same methodology graded across five funds at once instead of one, see the best AI ETFs 2026 comparison.
For primary-source reading on how the SEC requires funds to disclose strategy and holdings, the EDGAR full-text search at sec.gov/search-filings is where every citation in this post ultimately traces back to, including ARKK's own 485BPOS prospectus.
Ready to build?
Free API key, no credit card. Every endpoint mentioned in this post is available on the free tier.