Indian Mutual Fund NAV Scraper (AMFI) avatar

Indian Mutual Fund NAV Scraper (AMFI)

Pricing

from $0.19 / 1,000 fund navs

Go to Apify Store
Indian Mutual Fund NAV Scraper (AMFI)

Indian Mutual Fund NAV Scraper (AMFI)

Net asset values of Indian mutual fund schemes from AMFI's own published files. One row per scheme: scheme code, name, fund house, category, plan, ISINs, the NAV and the trading date it belongs to. Wound-up schemes frozen at an old value are left out. History back to 2010. $0.20 per 1,000 NAV rows.

Pricing

from $0.19 / 1,000 fund navs

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

4 days ago

Last modified

Share

Get the NAVs Indian mutual fund schemes publish through AMFI, each with the trading day it belongs to: one row per scheme with the scheme code, name, fund house, category, plan, option, ISINs and the NAV, or one row per scheme per day in history mode, back to 2010. Name the schemes by AMFI code, fund house, name or category, or take the whole market.

The catch is that AMFI's daily file is a register rather than a price list. On the day we measured it, about 40% of its rows were schemes that had stopped trading, some as far back as 2016, frozen at their last value. Anything older than your age limit is left out and not charged.

InputLatest or history, which schemes (by code, fund house, name or category), and age limits
OutputOne row per scheme, or per scheme per day in history mode: code, name, fund house, category, plan, option, ISINs, NAV and its date
Ceiling50,000 rows and 366 days of history per run
Account neededNone
Price$0.20 per 1,000 NAV rows on the Free plan, a little less on paid plans. The free plan's $5 a month covers about 25,000

🔍 What Indian Mutual Fund NAV Scraper does

In latest mode it reads AMFI's daily file: one row per scheme, carrying that scheme's most recent published NAV. Every row says which trading day its value is for, in navDate, and how many days old that was, in navAgeDays.

The whole file is checked before a single row is billed. If the newest NAV anywhere in it is older than maxFileAgeDays, the run charges nothing and writes a free FILE_STALE row with the date it found, because a file that has stopped moving still downloads normally. If the file's format changes shape, the run stops the same way rather than guessing at columns.

In history mode it reads AMFI's date-ranged report instead, one row per scheme per day. Every row is checked against the dates you asked for, and any outside them are dropped uncharged.

A NAV is struck once per valuation day and published in the evening, India time. There is no live price here, so once a day after the evening refresh is all you need.

Measured on 20 September 2026, on the file covering every scheme:

NAV date on the rowRows
18 September 2026, the previous trading day7,982
20 September 2026, that morning706
Anything earlier, back to April 20165,687
Total rows in the file14,375

The rows dated that same morning are liquid and overnight schemes, which price every calendar day, weekends included.

📋 What data you get from each mutual fund scheme

What you getField
AMFI's scheme code, the scheme name and the fund houseschemeCode, schemeName, fundHouse
The category it is filed under, and its typecategory, categoryType
Plan and optionplan, option
The NAV as a number and as published, in rupeesnav, navRaw, currency
The trading day the NAV is for, and how old it isnavDate, navDateRaw, navAgeDays, navStale
The ISINsisinGrowth, isinReinvestment
Which AMFI file it came from, and how fresh that file issource, filePublishedAt, fileLatestNavDate

▶️ How to scrape Indian mutual fund NAVs

  1. Open Indian Mutual Fund NAV Scraper and click Try for free.
  2. Leave What to read on latest, or pick history and fill History from and History to.
  3. Keep Which schemes on open, the form's starting choice, unless you want every scheme on the register.
  4. Narrow it with Scheme codes (optional) or Fund houses (optional), and set Maximum rows.
  5. Click Start, then download the dataset as CSV, JSON or Excel.

💰 How much does it cost to scrape mutual fund NAVs?

$0.20 per 1,000 NAV rows on the Free plan. Paid plans pay a little less: $0.198 on Starter, $0.196 on Scale and $0.194 on Business. On the free plan, the $5 Apify gives you each month covers about 25,000 NAV rows. The whole live market on a normal day, around 8,700 schemes, comes to under two dollars.

You pay for NAV rows and nothing else per row. The sample row and every diagnostic row are not charged, and neither are schemes your filters drop, schemes past your age limit, history rows outside your range, or any row of a run where the file failed a check. If you set a maximum charge on the run, it stops at that figure instead of going past it.

📥 What you give it

{
"mode": "latest",
"universe": "open",
"fundHouses": ["HDFC Mutual Fund"],
"categoryContains": ["Large Cap"],
"maxItems": 200,
"maxNavAgeDays": 7
}
FieldDefaultWhat it is
modelatestlatest for the daily file, one row per scheme. history for a date range, one row per scheme per day.
universeall, the form starts on openlatest mode only. all (about 14,400 rows), open (about 9,600), close (about 4,700) or interval (about 40). open is the one most people want.
maxItems1000Total rows, 1 to 50,000. Rows come in the file's own order, by category and fund house, so filter rather than raise this.
maxNavAgeDays7latest mode only. A scheme whose last NAV is older than this many days is left out and not charged. 7 covers a weekend and a holiday. Raise it to 20000 for the whole register.
maxFileAgeDays7latest mode only. If nothing in the file is newer than this, the run charges nothing.
schemeCodesnoneAMFI scheme codes exactly as published, such as 119551. The cheapest way to track a fixed set every day.
fundHousesanyPart of the fund house name, any case. HDFC catches HDFC Mutual Fund.
nameContainsanyPart of the scheme name, any case. Several terms mean any of them.
categoryContainsanyPart of the category, any case, such as Large Cap, Liquid or ELSS.
dateFrom6 days before dateTohistory mode only. 2026-09-01 or 01-Sep-2026. A range longer than 366 days is trimmed, and a backwards one swapped, each with a free INPUT_ADJUSTED row saying so.
dateTotodayhistory mode only, same formats.
proxyUrlsnoneLeave it empty for a normal run. Fill it only if you want the traffic to leave through your own servers, as http://user:pass@host:port.

Any input at all starts a real read, even just maxItems. Only a completely empty input, {} sent through the API, returns the free sample row.

📤 What you get back

A real row from a run on 30 September 2026:

{
"ok": true,
"charged": true,
"recordType": "fund",
"schemeCode": "135762",
"schemeName": "Axis Children's Fund",
"fundHouse": "Axis Mutual Fund",
"category": "Open Ended Schemes (Children’s Fund - Childrens' Fund)",
"categoryType": "Open Ended",
"plan": "Direct Plan",
"option": "Growth Option",
"nav": 29.2283,
"navRaw": "29.2283",
"currency": "INR",
"navDate": "2026-09-29",
"navDateRaw": "29-Sep-2026",
"navAgeDays": 1,
"navStale": false,
"isinGrowth": "INF846K01WO1",
"isinReinvestment": null,
"source": "daily-file",
"filePublishedAt": "2026-09-30T02:28:33.000Z",
"scrapedAt": "2026-09-30T02:31:14.544Z",
"fileLatestNavDate": "2026-09-29"
}
FieldHow to read it
schemeCodeAMFI's own code and the key to use. It is stable across days, and it is the same in both modes while the name is not.
schemeNameThe name as the source writes it. The history report folds plan and option into the name, so match on schemeCode.
category, categoryTypeThe category heading AMFI files the scheme under. Several categories appear under two spellings, Equity Scheme - and Equity Schemes -, so filter on a substring.
plan, optionDirect Plan or Regular Plan, and growth, IDCW and the rest as published. option has hundreds of spellings, so treat it as text.
nav, navRawThe NAV in rupees, and the text exactly as published. A value that does not read as a number is left out, never turned into a zero.
navDate, navAgeDaysThe trading day the NAV belongs to, not the day you ran this, and how old that was. On a Monday morning the newest equity NAVs are Friday's.
navStaleAlways false on a row you receive, because anything past your limit is left out.
isinGrowth, isinReinvestmentThe ISINs, null where none is published.
filePublishedAt, fileLatestNavDateWhen the daily file was last written, and the newest NAV date anywhere in it. If the second is not close to today, nothing in the file is current.

🧾 Reading the output

Three kinds of row can share a dataset, and charged is the field that separates them.

RowHow to spot itBilled
A NAVcharged: trueyes
The sample_sample: true, charged: falseno
A diagnostic_diagnostic: true, charged: false, an errorCodeno

The sample row also says recordType: "fund", so filter on charged == true, not on recordType.

CodeWhat it means
FILE_STALEThe file downloaded fine, but its newest NAV is past maxFileAgeDays.
ALL_STALESchemes matched your filters, but every one last published a NAV past maxNavAgeDays. Almost always wound-up schemes.
NO_RESULTSNothing matched your filters, or a history range held no NAVs, such as a weekend.
RANGE_MISMATCHIn history mode, rows came back dated outside your range and were dropped.
INPUT_ADJUSTEDA history range was trimmed or swapped. The row says what changed.
FORMAT_UNRECOGNISED, FORMAT_DRIFTThe file's header or column layout changed, so nothing was read as data.
FEED_HTTP, FEED_UNREACHABLE, FEED_TRUNCATED, FEED_EMPTY, NO_DATEThe file answered with an error, could not be reached, stopped part-way, held no scheme rows, or carried no readable dates.
TIME_BUDGETThe run ran out of time before every row was written.

💡 What people use it for

  • Keeping a portfolio tracker up to date without anyone retyping numbers off a website every evening.
  • Filling in NAV history for a set of schemes after the fact, one run over a date range rather than a request per scheme per day.
  • Reconciling a statement against the published value for the exact date on it, by scheme code.
  • Keeping your own archive. AMFI overwrites the daily file in place, so the only way to have last Tuesday is to have saved last Tuesday.

🚧 What it does not do

  • India only. AMFI publishes Indian schemes, every value in rupees.
  • No live prices. One NAV per valuation day, published in the evening.
  • Only the NAV. No assets under management, expense ratio, holdings, returns or ratings, because none of that is in the file.
  • No advice. It does not rank schemes or calculate returns.
  • No weekend NAVs for most schemes, and none on Indian public holidays, so a short history range can come back empty.
  • Not a spread by default. A low maxItems gives you the first schemes in the file's order, not a sample of the market. Use the filters.
  • History is slow to start. The report is generated when asked for, so a long range can take 20 to 30 seconds before the first row. A month of the whole market is around 160,000 rows.
  • It is not an official AMFI tool. Dami's Studio is independent and is not affiliated with or endorsed by AMFI, or by any other company named on this page.

🧭 Which market data scraper do you need?

If you wantUse
Stock, ETF, index, FX and crypto quotes with daily price historyYahoo Finance Scraper
Coin prices, market caps and rankingsCoinGecko Scraper
Price, liquidity and volume of a DEX trading pairDexScreener Pair Price & Liquidity Scraper
The daily Crypto Fear and Greed reading, back to 2018Crypto Fear and Greed Index Scraper
Large Polymarket trades and the wallets behind themPolymarket Whale Tracker
Company filings by keyword, ticker or CIKSEC EDGAR Scraper
Indian mutual fund NAVs, today's or back to 2010This one

❓ Questions people ask

Is the NAV live?

No, and it cannot be. A fund's NAV is struck once per valuation day from its closing holdings. navDate tells you which day.

Why would a row be dated years ago?

It would not, unless you raised maxNavAgeDays. The file keeps wound-up schemes frozen at their final value, and those are left out by default.

How do I track just a few schemes?

Put their codes in schemeCodes. You pay only for the rows that come back.

How do I find a scheme code?

Run it once with nameContains set to part of the name and read schemeCode off the rows. Names change wording, codes do not.

When should I run it each day?

Once a day in the evening, India time, is the right pace. Key on schemeCode plus navDate to match rows across runs.

Can I call it from code or connect it to an AI assistant?

Yes. The API tab has ready-made code for Python, JavaScript and the command line. For Claude, ChatGPT or another MCP client, connect https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/mutual-fund-nav-scraper. Either way the run happens on your Apify account at the same price.

AMFI publishes these files openly for investors, and they describe funds, not people. Apify's write-up on the legality of web scraping is a good starting point, and we are not lawyers.

🆘 If something breaks

Open the Issues tab on the actor page and send the run ID with the input you used. The errorCode and details on a diagnostic row usually name the reason already.