Fund & ETF Overview API
Retrieve the full profile of any US mutual fund or ETF from a single ticker — expense ratios broken into management fee and other expenses, net and total assets, portfolio turnover, the prospectus investment objective and principal strategy verbatim, and every other share class registered on the same fund. A ticker is a share class, not a fund: VOO and VFIAX share one portfolio and one prospectus but charge 0.03% and 0.04% respectively, and this endpoint returns the class you asked for alongside all four Vanguard 500 Index classes so you can see the spread. The API is free to use.
Use this endpoint to:
https://data.businessquant.com/funds/overview?ticker={ticker}&api_key={api_key}
Related endpoints: Pull the portfolio behind these numbers with the Fund Holdings API, or roll it into sector and country buckets with the Portfolio Exposure API. Track money entering and leaving the fund with the Fund Flows API, and read the prospectus risk disclosures with the Fund Risk Factors API. For SEC registry identifiers and the raw descriptive profile, see the Funds Profile API.
1. Request Parameters
Exactly one identifier is needed. Pass ticker when you know the share class you want, or seriesid when you want the fund and will take its cheapest class.
| Parameter | Description |
|---|---|
| api_key |
Required
Your unique API key for authentication.
|
| ticker |
Conditional Identifier
The fund or ETF ticker. A ticker identifies a share class, not a fund — VOO and VFIAX are two classes of the same portfolio, so the fees you get back are the ones that class charges. Either ticker or seriesid is required.
Example:
ticker=VOO |
| seriesid |
Conditional Identifier
The SEC Series ID of the fund. Resolves to the fund's lowest-cost share class. Use this when you want the fund rather than a particular class, or for funds that have no ticker of their own.
Example:
seriesid=S000002839 |
A ticker resolves to one share class. The metadata block describes the class you asked for — its fees, its class name, its classId. Everything that belongs to the fund rather than the class (objective, strategy, net assets, turnover) is shared across all of them. The data array lists every class on the same seriesId, cheapest first, so switching to a lower-cost class is a one-line lookup.
curl -X GET "https://data.businessquant.com/funds/overview?ticker=VOO&api_key=YOUR_API_KEY"
{
"metadata": {
"ticker": "VOO",
"seriesid": "S000002839",
"classid": "C000092055",
"cik": 1004655,
"fund_name": "Vanguard 500 Index Fund",
"class_name": "ETF Shares",
"gross_expense_ratio_pct": 0.03,
"net_expense_ratio_pct": 0.03,
"net_assets_usd": 1421263311402.89,
"net_assets_asof": "2026-03-31",
"management_fee_pct": 0.02,
"other_expenses_pct": 0.01,
"total_assets_usd": 1423980320891.15,
"portfolio_turnover_pct": 2,
"prospectus_date": "2026-04-28",
"fund_website": "vanguard.com/performance",
"source_accession": "0000036405-26-000181",
"investment_objective": "Vanguard 500 Index Fund (the \"Fund\") seeks to track the performance of a benchmark index that measures the investment return of large-capitalization stocks.",
"principal_strategy": "The Fund employs an indexing investment approach designed to track the performance of the S&P 500 Index (the \"Target Index\"), a widely recognized benchmark of U.S. stock market performance that is dominated by the stocks of large U.S. companies. Under normal circumstances, the Fund invests at least …",
"risk_narrative": "As with any investment, an investment in the Fund could lose money over any time period. The Fund's share price and total return may fluctuate, potentially within a wide range. The principal risks of investing in the Fund are summarized below. Each of the …",
"purchase_and_sale_text": "If you invest directly with Vanguard, you may purchase or redeem shares online through our website (vanguard.com), by mail (The Vanguard Group, P.O. Box 982901, El Paso, TX 79998-2901), or by telephone (800-662-2739). …",
"tax_information_text": "The Fund's distributions may be taxable as ordinary income or capital gains. If you are investing through a tax-advantaged account, such as an IRA or an employer-sponsored retirement or savings plan, special tax rules …",
"share_class_count": 4
},
"data": [
{
"ticker": "VFFSX",
"classid": "C000170274",
"class_name": "Institutional Select Shares",
"management_fee_pct": 0.01,
"other_expenses_pct": 0,
"gross_expense_ratio_pct": 0.01,
"net_expense_ratio_pct": 0.01
},
{
"ticker": "VOO",
"classid": "C000092055",
"class_name": "ETF Shares",
"management_fee_pct": 0.02,
"other_expenses_pct": 0.01,
"gross_expense_ratio_pct": 0.03,
"net_expense_ratio_pct": 0.03
},
{
"ticker": "VFIAX",
"classid": "C000007774",
"class_name": "Admiral Shares",
"management_fee_pct": 0.04,
"other_expenses_pct": 0,
"gross_expense_ratio_pct": 0.04,
"net_expense_ratio_pct": 0.04
},
{
"ticker": "VFINX",
"classid": "C000007773",
"class_name": "Investor Shares",
"management_fee_pct": 0.14,
"other_expenses_pct": 0,
"gross_expense_ratio_pct": 0.14,
"net_expense_ratio_pct": 0.14
}
]
}
2. Response Fields
The response is the standard two-part envelope used across this API: metadata carries everything that is constant for the fund and the share class you asked for, and data carries the rows that vary — here, one row per share class.
metadata
| Field | Type | Description |
|---|---|---|
| ticker | string | The share class ticker that was resolved. |
| seriesid | string | SEC Series ID of the fund. Funds that register no series — certain unit investment trusts such as SPY and DIA — carry a synthetic UIT<cik> key instead. |
| classid | string | SEC Class ID of the resolved share class. Absent for unit investment trusts, which register no classes. |
| cik | integer | SEC Central Index Key of the registrant. |
| fund_name | string | Registered name of the fund, e.g. Vanguard 500 Index Fund. |
| class_name | string | Name of the resolved share class, e.g. ETF Shares or Admiral Shares. |
| management_fee_pct | float | Advisory fee charged by the manager, in percent of assets per year. |
| other_expenses_pct | float | All non-advisory operating expenses, in percent per year. |
| gross_expense_ratio_pct | float | Total annual expense ratio before any fee waiver. |
| net_expense_ratio_pct | float | Expense ratio after contractual waivers — what a holder actually pays. |
| net_assets_usd | float | Net assets of the fund in USD, across all share classes. |
| net_assets_asof | date | Date the net asset figure was reported. |
| total_assets_usd | float | Total assets before liabilities. |
| portfolio_turnover_pct | float | Percentage of the portfolio replaced during the last fiscal year. A pure index fund sits in the low single digits; VOO reports 2%. |
| prospectus_date | date | Date of the prospectus these figures were filed in. |
| fund_website | string | Manager's page for the fund, as given in the prospectus. |
| source_accession | string | SEC accession number of the filing this profile was extracted from. |
| investment_objective | string | The fund's stated objective, verbatim from the prospectus. |
| principal_strategy | string | How the manager intends to meet that objective, verbatim. |
| risk_narrative | string | The prospectus risk summary. The itemised version is on the Fund Risk Factors endpoint. |
| purchase_and_sale_text | string | Minimum investment and redemption terms, verbatim. |
| tax_information_text | string | Prospectus tax disclosure, verbatim. |
| share_class_count | integer | Number of share classes returned in data. |
data — one row per share class
| Field | Type | Description |
|---|---|---|
| ticker | string | Ticker of this class. null for classes that trade without one. |
| classid | string | SEC Class ID. |
| class_name | string | Registered class name. |
| management_fee_pct | float | Advisory fee for this class. |
| other_expenses_pct | float | Non-advisory expenses for this class. |
| gross_expense_ratio_pct | float | Expense ratio before waivers. Rows are sorted on this, cheapest first. |
| net_expense_ratio_pct | float | Expense ratio after waivers. |
Null-valued keys are omitted, not returned as null. A fund that files no turnover figure has no portfolio_turnover_pct key at all rather than one set to null. Read the metadata block defensively — what is present is what the fund actually filed.
3. Response Viewer
A real response for ticker=VOO. Switch between the raw JSON and a rendered view of the share-class table.
API Response — Fund Overview
Vanguard 500 Index Fund · ticker=VOO
| Ticker | Class ID | Class Name | Mgmt Fee | Other Exp. | Gross ER | Net ER |
|---|---|---|---|---|---|---|
| VFFSX | C000170274 | Institutional Select Shares | 0.01% | 0.00% | 0.01% | 0.01% |
| VOO REQUESTED | C000092055 | ETF Shares | 0.02% | 0.01% | 0.03% | 0.03% |
| VFIAX | C000007774 | Admiral Shares | 0.04% | 0.00% | 0.04% | 0.04% |
| VFINX | C000007773 | Investor Shares | 0.14% | 0.00% | 0.14% | 0.14% |
4. More Request Examples
Both identifiers behave the same way; only the resolution differs.
https://data.businessquant.com/funds/overview?ticker=VFIAX&api_key=YOUR_API_KEY
https://data.businessquant.com/funds/overview?seriesid=S000002839&api_key=YOUR_API_KEY
https://data.businessquant.com/funds/overview?ticker=SPY&api_key=YOUR_API_KEY
https://data.businessquant.com/funds/overview?ticker=ARKK&api_key=YOUR_API_KEY
5. Use Cases
What this endpoint is normally the first call in.
Share Class Cost Optimisation
The data array is every class on the same portfolio, sorted by cost. A holder in a 0.55% investor class of a fund whose institutional class charges 0.04% is paying thirteen times as much for identical holdings — and this endpoint surfaces that in one call, with the classId needed to act on it.
Fund Screener Enrichment
Resolve a list of tickers to net assets, expense ratios and turnover to filter a universe before pulling any portfolio data. Pair with the Securities Universe API to enumerate every fund covered.
Fee Drag Modelling
net_expense_ratio_pct is what a holder actually pays after contractual waivers; gross_expense_ratio_pct is what they would pay if the waiver lapses. Model both — waivers expire, and the gap is the downside case.
Prospectus Text For LLM Pipelines
investment_objective and principal_strategy come back as the filer wrote them, with no summarisation, which is what a retrieval pipeline or a fund-classification model needs as input.
Index vs Active Detection
Portfolio turnover separates the two more reliably than a name does. VOO reports 2%; an actively managed thematic ETF routinely reports well north of 50%.
Identifier Resolution
Ticker to seriesId to CIK in one hop, which is what every other endpoint on this page group keys on.
Frequently Asked Questions
The questions developers ask most often about this endpoint.
What is the difference between this and the Funds Profile API?
The Funds Profile API returns the SEC registry record for a fund — identifiers, registrant details, and a descriptive profile drawn from the master ticker table. This endpoint returns the prospectus: fees split into management and other expenses, net assets, turnover, the objective and strategy text, and the full share-class list. Use Funds Profile to resolve identifiers; use this one for economics and narrative.
Why do VOO and VFIAX return different expense ratios for the same fund?
Because they are different share classes of one fund. Both are Vanguard 500 Index Fund on seriesId S000002839 and both hold the identical portfolio, but the ETF class charges 0.03% and the Admiral class 0.04%. A ticker always identifies a class, never a fund, so the fee fields in metadata describe the class you asked for while data lists all of them.
What happens with ETFs like SPY that have no Series ID?
SPY and DIA are unit investment trusts, which register no series and no classes with the SEC. They resolve normally here under a synthetic UIT<cik> key, and their classid is simply absent from the response. Everything else — fees, objective, strategy — is returned as usual.
Is the gross or the net expense ratio the one my holder pays?
The net one. net_expense_ratio_pct is after contractual fee waivers and reimbursements, which is the number quoted on a fund fact sheet. gross_expense_ratio_pct is the ratio the fund would charge with no waiver in place — worth modelling separately, because waivers have expiry dates.
How current is the data?
The figures come from the fund's most recent prospectus and its most recent asset filing; prospectus_date and net_assets_asof in the metadata tell you exactly which. source_accession gives you the SEC accession number of the filing itself if you want to check the original.
Is the Fund & ETF Overview API free to use?
Yes, the API is free to use. Sign up for an API key and start resolving fund tickers to fees, assets and share-class lists immediately — no credit card required.