QVeris
Financial Data API Guide

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 workflow for choosing coverage, requesting NAV and holdings, validating fields, and delivering normalized data

Free fund data API: the short answer

Primary task

Resolve the correct legal fund, share class, and listing, then retrieve the specific NAV, price, holdings, fees, distributions, or reference data the workflow needs.

Compare first

Fund types, geography, identifiers, dataset dates, history, holdings completeness, fees, benchmarks, quotas, licensing, and revision behavior.

Validate always

Keep official NAV, exchange price, currency, valuation date, publication time, share class, and source methodology separate.

Production rule

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

NeedFields to verifyCommon constraint
Latest fund NAV APIscheme ID, NAV, date, currencyOften end-of-day, not real time
Historical mutual fund data APIdate range, adjusted series, missing datesHistory and geography vary
Fund holdings APIsecurity ID, weight, report dateHoldings can be delayed
ETF market dataprice, volume, exchange, timestampReal-time access may be licensed
Fund reference and share classeslegal fund ID, class, domicile, currency, status, ticker historyNames and tickers do not uniquely identify a fund
Fees, distributions, and returnsexpense basis, load, distribution dates, reinvestment methodSimilar labels can hide different investor outcomes
Fund status and historylaunch, closure, merger, liquidation, predecessor, revisionsRequired 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 questionOpen-end mutual fundExchange-traded fund
How investors transactOrders 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 fieldsNAV 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.
IdentityLegal 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 cadenceOften 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 returnDepends 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 clockMeaningTypical error
Valuation dateDate for which NAV and underlying asset values were calculated.Using retrieval time as if it were the NAV date.
Publication timeWhen that value became available to users or the provider.Using a value in a historical decision before it was published.
Portfolio report dateDate represented by the security positions and weights.Calling old disclosed holdings the current portfolio.
Holdings disclosure dateWhen the portfolio report became publicly or contractually available.Backtesting with positions before their disclosure date.
Distribution datesDeclaration, 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

Is there a free fund data API?

Yes, open APIs and limited free tiers exist, but coverage, rate limits, licensing, and geography differ. Verify current documentation before integration.

Can I get historical mutual fund NAV data by API?

Some APIs provide dated NAV histories. Check the first available date, missing observations, share class, currency, and adjustment rules.

Do free fund APIs include holdings?

Some do, but holdings can be delayed or available only for certain markets. Store each report date and security identifier.

Is ETF price the same as fund NAV?

No. An ETF trades at a market price and may also publish NAV or indicative NAV. Keep each field and timestamp distinct.

Why does one fund have multiple share classes?

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.

Can a free fund API be used for backtesting?

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.

How often do fund datasets update?

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.

External references