Choose a Free Fund Data API
for Mutual Funds and ETFs
Free fund data APIs are available through open endpoints and limited free tiers, but no single source covers every fund, ETF, NAV history, and holding.
Free fund data API: the short answer
Resolve the correct legal fund, share class, and listing, then retrieve the specific NAV, price, holdings, fees, distributions, or reference data the workflow needs.
Fund types, geography, identifiers, dataset dates, history, holdings completeness, fees, benchmarks, quotas, licensing, and revision behavior.
Keep official NAV, exchange price, currency, valuation date, publication time, share class, and source methodology separate.
Preserve raw responses, stable IDs, effective dates, revisions, retrieval evidence, and provider terms so every normalized value remains traceable.
Compare free mutual fund and ETF data API coverage
| Need | Fields to verify | Common constraint |
|---|---|---|
| Latest fund NAV API | scheme ID, NAV, date, currency | Often end-of-day, not real time |
| Historical mutual fund data API | date range, adjusted series, missing dates | History and geography vary |
| Fund holdings API | security ID, weight, report date | Holdings can be delayed |
| ETF market data | price, volume, exchange, timestamp | Real-time access may be licensed |
| Fund reference and share classes | legal fund ID, class, domicile, currency, status, ticker history | Names and tickers do not uniquely identify a fund |
| Fees, distributions, and returns | expense basis, load, distribution dates, reinvestment method | Similar labels can hide different investor outcomes |
| Fund status and history | launch, closure, merger, liquidation, predecessor, revisions | Required for continuous histories and unbiased research |
The first comparison should be the fund structure, because a mutual fund record and an ETF listing do not represent the same transaction model. Even when both hold an identical portfolio, the observable prices, identifiers, update times, and investor cash flows differ.
| Data question | Open-end mutual fund | Exchange-traded fund |
|---|---|---|
| How investors transact | Orders are normally processed at a calculated NAV under the fund's dealing rules. | Shares trade intraday on an exchange at bid, ask, and last prices; creation and redemption operate separately. |
| Primary valuation fields | NAV per share, valuation date, publication time, dealing currency, and share class. | Market quote plus official NAV; indicative value may exist but follows a separate methodology and clock. |
| Identity | Legal fund, strategy, share class, currency, distribution policy, load, and investor eligibility. | Legal fund, portfolio, listing, exchange, ticker, trading currency, and primary or secondary venue. |
| Holdings cadence | Often periodic and disclosed after the portfolio date; frequency varies by market and fund. | Can be daily for some products, but timing, completeness, cash, derivatives, and custom-basket treatment still vary. |
| Investor return | Depends on NAV, fees, loads, distributions, class currency, and reinvestment assumptions. | Also depends on market-price premium or discount, bid/ask spread, brokerage costs, and trading time. |
How to use a free fund data API with Python
1. Define the fund universe and required fields
Decide whether the application needs mutual funds, exchange-traded funds, or both. List identifiers, NAV, price, return, holdings, expense ratio, currency, market, history, and update frequency before choosing a source.
2. Inspect authentication, quotas, and reuse terms
“Free” may mean open access, a limited free tier, a trial, or non-commercial use. Read the provider documentation for keys, rate limits, attribution, caching, redistribution, and delayed-data rules.
3. Make a small request and validate the response
curl https://api.mfapi.in/mf/125497/latest is a documented example for a latest mutual fund NAV response. Confirm the scheme name, NAV date, units, and source before using it. Availability and terms can change, so re-check the documentation.
4. Add caching, retries, and provenance
Cache according to the update schedule, use bounded retries only for temporary failures, and store the request URL, retrieval time, source identifiers, and raw response with normalized records.
5. Normalize fund identity and dataset clocks
Model the legal fund, share class, exchange listing, and provider ID separately. Preserve valuation, portfolio, distribution, publication, processed, and retrieval dates as different fields rather than collapsing them into one generic timestamp.
6. Test fund events and revisions
Use samples around distributions, share-class changes, ticker changes, mergers, closures, liquidations, and missing NAV days. Confirm continuity, status, predecessor mapping, and whether corrected records preserve their first publication time.
Validate fund NAV, holdings, and historical data
Do not confuse NAV with an intraday market price
A mutual fund NAV is generally calculated for a valuation date, while an ETF can also trade at an intraday market price. Preserve the field definition, timestamp, currency, share class, and adjustment method instead of treating every “price” as interchangeable.
ETF premium example: if an ETF closes at $50.40 and its official NAV for the same share, currency, and valuation date is $50.00, the closing premium is ($50.40 ÷ $50.00) - 1 = 0.8%. The result is valid only when both values refer to the same fund share class and compatible date. An intraday indicative value observed at 14:00 cannot be substituted for the official close NAV, and a stale NAV can make the apparent premium meaningless.
The same discipline applies to assets under management. AUM may be reported by the fund, calculated for a portfolio date, converted into another currency, or estimated from NAV and shares outstanding. If it is derived, retain the NAV date, share-count date, class or fund scope, foreign-exchange rate, formula, and rounding. Do not compare one share class's net assets with another provider's consolidated fund AUM.
Keep report dates and source provenance
Holdings may be disclosed less frequently than NAV. Store the holdings report date separately from the retrieval time, retain original identifiers, and compare representative records with the provider’s visible source before publishing.
| Dataset clock | Meaning | Typical error |
|---|---|---|
| Valuation date | Date for which NAV and underlying asset values were calculated. | Using retrieval time as if it were the NAV date. |
| Publication time | When that value became available to users or the provider. | Using a value in a historical decision before it was published. |
| Portfolio report date | Date represented by the security positions and weights. | Calling old disclosed holdings the current portfolio. |
| Holdings disclosure date | When the portfolio report became publicly or contractually available. | Backtesting with positions before their disclosure date. |
| Distribution dates | Declaration, ex-distribution, record, and payment dates describe separate stages. | Adding cash on the wrong date or double counting an NAV adjustment. |
Compare like share classes and return definitions
Accumulating and distributing classes, hedged and unhedged classes, institutional and retail classes, and different load structures can follow one strategy while producing different investor cash flows. Compare returns only after aligning currency, fees, distributions, tax assumptions, and reinvestment method.
One fund, three different measures: suppose a distributing share class starts the period with NAV of $20.00, ends with NAV of $20.40, and pays a $0.20 cash distribution. Its simple NAV change is 2.0%, but its distribution-inclusive return is ($20.40 + $0.20) ÷ $20.00 - 1 = 3.0% before tax and any reinvestment timing effect. If shares outstanding also rise from 50 million to 52 million, the additional two million shares represent roughly $40.8 million at the ending NAV—not the entire increase in AUM. Ending AUM is 52m × $20.40 = $1.0608bn; the change from the opening $1.0bn combines portfolio performance, the distribution, and investor subscriptions or redemptions. A production dataset should therefore expose NAV return, total return, share-count change, estimated net flow, and AUM change as separate measures, each with its own date and calculation convention.
Use point-in-time availability for historical research
Store when each NAV, holding, fee, classification, and status record first became available. Historical analysis should include funds and classes that later merged or liquidated and must not use a revised value before its publication time.
How QVeris helps agents use fund data APIs
QVeris helps agents discover, inspect, call, and audit external capabilities. A fund data source remains a third-party capability with its own coverage, terms, and provenance; QVeris does not own or alter the underlying fund data.
Open the QVeris provider details to inspect separate NAV, price, holdings, distribution, and reference-data capabilities. Require the fund and share-class identity, dataset type, date semantics, currency, completeness, revision policy, and license in the tool contract, then preserve call evidence. See the QVeris documentation for integration guidance.
Free fund data API questions
Yes, open APIs and limited free tiers exist, but coverage, rate limits, licensing, and geography differ. Verify current documentation before integration.
Some APIs provide dated NAV histories. Check the first available date, missing observations, share class, currency, and adjustment rules.
Some do, but holdings can be delayed or available only for certain markets. Store each report date and security identifier.
No. An ETF trades at a market price and may also publish NAV or indicative NAV. Keep each field and timestamp distinct.
Classes can differ by currency, hedging, distribution policy, fees, minimum investment, or investor type. Keep class identifiers separate and do not merge values solely because the strategy name matches.
Only if it provides point-in-time availability, historical identifiers and classes, closed or merged funds, corporate events, and revisions. Current survivors plus old NAV is not an unbiased historical universe.
NAV, prices, holdings, fees, classifications, and distributions follow different schedules. Store each dataset's effective and publication dates instead of applying one freshness label to the fund.
