Request a tool
All toolsAutomationsGuidesMCP serverRequest a toolPlatformsCategories
Indian Mutual Fund NAV Scraper (AMFI) icon

Indian Mutual Fund NAV Scraper (AMFI)

Daily NAV for Indian mutual fund schemes from AMFI. Scheme code, name, fund house, category, NAV and its trading date. History to 2010. No API key.

43 runs on Apify $0.0002 per fund NAV ($0.2 / 1,000)
Run this in the cloudRun on Apify →

Developer & Research Tools

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust mode, universe, maxItems (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Pricing

$0.0002 per fund NAV = $0.2 per 1,000

You are charged forWhenPrice
Fund NAVOne fund with its published NAV and the date that NAV is for. Schemes whose last NAV is older than your age limit are left out and not charged.$0.0002

Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-09-30, and they are what you are actually charged.

Inputs

FieldWhat it doesType
modelatest reads the daily published file and gives you one row per scheme, carrying that scheme's most recent published NAV. history reads AMFI's date-ranged report and gives you one row per scheme per day over the dates you choose.string
universeOnly used when mode is latest. open is open-ended schemes, the ones you can still buy and sell, and is what most people want. all adds the close-ended and interval schemes, most of which stopped trading years ago and are frozen at their final value.string
maxItemsTotal rows to return in this run. You pay per row, so keep this low while you are testing. Rows come back in the file's own order, grouped by category and then by fund house, so cutting a run short with a low number gives you the first categories rather than a spread across the market. Use the filters below if you want particular schemes. Hard ceiling 50,000 per run.integer
maxNavAgeDaysThis is the important setting. AMFI's file is a register of every scheme it has ever listed, so a large share of it is schemes that were wound up years ago and are frozen at their last published value, sitting there looking exactly like a current price. Anything older than this limit is skipped and never charged. The default of 7 days covers a weekend plus a public holiday and leaves you with the live market. Raise it to 20000 if you want the full historical register, in which case every row arrives flagged with its real age.integer
maxFileAgeDaysThe alarm for the case where AMFI's own publishing stops. A file that has not been refreshed for a month still answers normally and still looks healthy, so this checks the newest NAV anywhere in it. If that is older than this limit the run charges nothing at all and returns one free row telling you the date it found. Only used when mode is latest.integer
schemeCodesAMFI scheme codes, exactly as published, for example 119551. This is the cheapest way to follow a specific set of schemes every day: you are charged for the rows that come back and nothing else. If you do not know the codes, run once with a name filter and read them off the rows.array
fundHousesMatch on the fund house name, case-insensitive, matching anywhere in it. HDFC catches HDFC Mutual Fund. Several entries act as any of.array
nameContainsMatch on the scheme name, case-insensitive, matching anywhere in it. Several entries act as any of. Note that the daily file and the history report write scheme names differently, so this is a good way to discover a scheme and a bad way to join across the two.array
categoryContainsMatch on the category heading, case-insensitive. Try Large Cap, Liquid, ELSS, Index Funds, Gold ETF. Use a substring rather than the full heading, because AMFI writes several categories two ways, both Equity Scheme - and Equity Schemes -.array
dateFromOnly used when mode is history. Either 2026-09-01 or 01-Sep-2026. Leave both dates empty and you get the last seven days. One run covers at most 366 days; a longer range is trimmed and the run tells you it did.string
dateToOnly used when mode is history. Same formats as above. AMFI publishes no NAV on weekends or Indian public holidays for most schemes, so a range covering only those days legitimately returns nothing, and no rows are charged.string
proxyUrlsLeave this empty for a normal run. Fill it in only if you want the traffic to leave through proxy servers you already pay for, one URL per line, in the form http://user:pass@host:port.array

What you get

A structured dataset — each result includes fields like:

schemeCodeschemeNamefundHousecategorycategoryTypeplanoptionnavnavRawcurrencynavDatenavAgeDaysisinGrowthisinReinvestment

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

Related tools in Developer & Research Tools

Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.

GitHub Scraper iconDeveloper & Research Tools

GitHub Scraper

Search GitHub repos and users: stars, forks, language, topics, licence, plus user bio, company and followers. No token needed. $0.90 per 1,000 rows.

18 use cases

Stack Overflow / Stack Exchange Scraper iconDeveloper & Research Tools

Stack Overflow / Stack Exchange Scraper

Search Stack Overflow and Stack Exchange by keyword or tag. Score, answer count, views, reputation and body text. $2 per 1,000 questions.

2 use cases

Package Registry Scraper (npm + PyPI) iconDeveloper & Research Tools

Package Registry Scraper (npm + PyPI)

Get npm and PyPI package metadata as JSON. Version, license, author, repo, keywords and npm monthly downloads. $2 per 1,000 packages.

2 use cases

arXiv Scraper iconDeveloper & Research Tools

arXiv Scraper

Search arXiv papers by title, author, abstract or category. Get full abstracts, authors, categories, DOI, dates and PDF links. $2 per 1,000 papers.

2 use cases

OpenAlex Scholarly Works Scraper iconDeveloper & Research Tools

OpenAlex Scholarly Works Scraper

Search 250M+ OpenAlex papers with no API key. Get titles, authors, venue, year, citations, DOI, OA links and full abstracts. $2.00 per 1,000 papers.

2 use cases

Crossref Scholarly Works Scraper iconDeveloper & Research Tools

Crossref Scholarly Works Scraper

Search 150M+ papers on Crossref: DOI, title, authors, journal, publisher, date, citations and abstract. No API key. $1.00 per 1,000 works.

2 use cases

See all Developer & Research Tools →

Indian Mutual Fund NAV Scraper: AMFI's published NAVs, each with the date it belongs to

Name the schemes you want, by AMFI scheme code, fund house, name or category, or take the whole market, and it reads the NAV files the Association of Mutual Funds in India publishes. You get one row per scheme with the scheme code, name, fund house, category, plan, option, ISINs, the NAV and the trading date that NAV is for, or one row per scheme per day in history mode, back to 2010. 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, so 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
Ceiling50,000 rows and 366 days of history per run
Account neededNone
Price$0.20 per 1,000 NAV rows, flat on every plan

🔍 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 you give it

FieldIf you leave it outWhat it does
modelatestlatest for the daily file, one row per scheme. history for a date range, one row per scheme per day.
universealllatest 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.
maxItems1,000Total 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.
proxyUrlsnot usedYour own servers to send the traffic through, as http://user:pass@host:port. Leave it empty unless you need that.
{
  "mode": "latest",
  "universe": "open",
  "fundHouses": ["HDFC Mutual Fund"],
  "categoryContains": ["Large Cap"],
  "maxItems": 200,
  "maxNavAgeDays": 7
}

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 real run:

{
  "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"
}
FieldWhat it is
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.
sourcedaily-file or history-report.
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 itCharged
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.

▶️ How to run it

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?

$0.20 per 1,000 NAV rows, which is $0.0002 a row, flat on every Apify plan. 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 free, and so are schemes your filters drop, schemes past your age limit, history rows outside your range, and every 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 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.

🧭 Which market data scraper do you need?

If you wantUse
Indian mutual fund NAVs with their datesThis one
Stock, index and currency quotes with price historyYahoo Finance Scraper
Crypto prices, market caps and rankingsCoinGecko Scraper
US company filings with the SECSEC EDGAR Scraper

❓ 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.

What happens if the file stops being updated? You get one free FILE_STALE row with the newest date it found, and no rows are charged.

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.

Can I run it on a schedule? Yes. Once a day in the evening, India time, is the right pace. Key on schemeCode plus navDate to match rows across runs.

🆘 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.