🧪 Skills

Mfapi

--- name: mfapi description: Query Indian mutual fund NAV data, scheme info, and history via the free MFapi.in REST API. homepage: https://www.mfapi.in metadata: { "openclaw": { "emoji": "

v0.1.0
❤️ 0
⬇️ 135
👁 1
Share

Description


name: mfapi description: Query Indian mutual fund NAV data, scheme info, and history via the free MFapi.in REST API. homepage: https://www.mfapi.in metadata: { "openclaw": { "emoji": "₹", "requires": { "bins": ["jq", "curl"] } }, }

MFapi Skill

Query Indian mutual fund data — NAV history, scheme info, search — using the free MFapi.in API.

Setup

No authentication or API keys required. The API is completely free and open.

Ensure curl and jq are installed:

# Debian/Ubuntu
sudo apt install -y curl jq

# macOS
brew install curl jq

What is an ISIN Code?

ISIN (International Securities Identification Number) is a 12-character alphanumeric code that uniquely identifies a security globally (e.g. INF200K01UT4). Indian mutual fund schemes have up to two ISINs:

  • isinGrowth — identifies the Growth option of the scheme
  • isinDivReinvestment — identifies the IDCW (Dividend) Reinvestment option (may be null)

ISIN codes are printed on CAS (Consolidated Account Statements), broker/demat platforms, and AMFI's website. They are stable identifiers — unlike scheme names, they don't change when a fund house rebrands.

Base URL

https://api.mfapi.in

Data is updated 6× daily (10:05 AM, 2:05 PM, 6:05 PM, 9:05 PM, 3:09 AM, 5:05 AM IST).

Usage

Search schemes by name

curl -s "https://api.mfapi.in/mf/search?q=HDFC" | jq '.[] | {schemeCode, schemeName}'

List all schemes (paginated)

curl -s "https://api.mfapi.in/mf?limit=100&offset=0" | jq '.[] | {schemeCode, schemeName}'

Get latest NAV for a scheme

curl -s "https://api.mfapi.in/mf/125497/latest" | jq '{scheme: .meta.scheme_name, nav: .data[0].nav, date: .data[0].date}'

Get NAV history for a scheme

curl -s "https://api.mfapi.in/mf/125497" | jq '{scheme: .meta.scheme_name, records: (.data | length)}'

Get NAV history with date range

curl -s "https://api.mfapi.in/mf/125497?startDate=2023-01-01&endDate=2023-12-31" | jq '.data'

Get latest NAV for all schemes

curl -s "https://api.mfapi.in/mf/latest" | jq '.[:5]'

Response Formats

Latest NAV (/mf/{scheme_code}/latest)

{
  "meta": {
    "fund_house": "HDFC Mutual Fund",
    "scheme_type": "Open Ended Schemes",
    "scheme_category": "Equity Scheme - Large Cap Fund",
    "scheme_code": 125497,
    "scheme_name": "HDFC Top 100 Fund - Direct Plan - Growth",
    "isin_growth": "INF179K01BB2",
    "isin_div_reinvestment": null
  },
  "data": [
    {
      "date": "26-10-2024",
      "nav": "892.45600"
    }
  ],
  "status": "SUCCESS"
}

Search (/mf/search?q=...)

[
  {
    "schemeCode": 125497,
    "schemeName": "HDFC Top 100 Fund - Direct Plan - Growth"
  }
]

Scheme list (/mf)

[
  {
    "schemeCode": 125497,
    "schemeName": "HDFC Top 100 Fund - Direct Plan - Growth",
    "isinGrowth": "INF179K01BB2",
    "isinDivReinvestment": "INF179K01BC0"
  }
]

Endpoints Reference

Method Endpoint Description Parameters
GET /mf/search Search schemes by name q (required)
GET /mf List all schemes (paginated) limit (1–1000), offset (default 0)
GET /mf/{scheme_code} NAV history for a scheme startDate, endDate (ISO 8601)
GET /mf/{scheme_code}/latest Latest NAV for a scheme
GET /mf/latest Latest NAV for all schemes

Get Latest NAV by ISIN (Python)

The API doesn't support querying by ISIN directly. The scripts/get_nav.py script resolves ISIN → scheme code using a locally cached scheme list, then fetches the latest NAV.

How it works

  1. Cache — Downloads the full scheme list (/mf, ~37k schemes) to /tmp/mfapi-schemes.json. Refreshes automatically if the cache is missing or older than 24 hours.
  2. Lookup — Searches isinGrowth and isinDivReinvestment fields in the cache. If no match, refreshes the cache and retries.
  3. Fetch — Uses the resolved scheme code to call /mf/{scheme_code}/latest.

Usage

# Single ISIN
python3 scripts/get_nav.py INF200K01UT4

# Multiple ISINs
python3 scripts/get_nav.py INF200K01UT4 INF846K01DP8

Example output

{
  "isin": "INF200K01UT4",
  "scheme_code": 119800,
  "scheme_name": "SBI Liquid Fund - DIRECT PLAN -Growth",
  "fund_house": "SBI Mutual Fund",
  "category": "Debt Scheme - Liquid Fund",
  "nav": "4277.67540",
  "date": "18-02-2026"
}

When multiple ISINs are passed, the output is a JSON array.

Notes

  • Dates in responses use DD-MM-YYYY format; query params use ISO 8601 (YYYY-MM-DD)
  • NAV values are strings with 5-decimal precision
  • Scheme codes can be found via the search or list endpoints, or from AMFI's website
  • The /mf endpoint returns all ~37,000 schemes; the Python script caches it locally at /tmp/mfapi-schemes.json to avoid repeated large fetches
  • Cache auto-refreshes on ISIN lookup miss or after 24 hours
  • No rate-limit headers are published, but the API asks for fair usage

Examples

# Find all SBI mutual fund schemes
curl -s "https://api.mfapi.in/mf/search?q=SBI" | jq '.[].schemeName'

# Get today's NAV for a known scheme
curl -s "https://api.mfapi.in/mf/119551/latest" | jq '.data[0]'

# Compare NAVs across a year
curl -s "https://api.mfapi.in/mf/125497?startDate=2025-01-01&endDate=2025-12-31" \
  | jq '[.data[0], .data[-1]] | {latest: .[0], oldest: .[1]}'

# Get fund house and category for a scheme
curl -s "https://api.mfapi.in/mf/125497/latest" | jq '.meta | {fund_house, scheme_category}'

# List first 10 Direct Plan Growth schemes matching "Axis"
curl -s "https://api.mfapi.in/mf/search?q=Axis" \
  | jq '[.[] | select(.schemeName | test("Direct.*Growth"))] | .[:10]'

# Get latest NAV by ISIN
python3 scripts/get_nav.py INF200K01UT4

Reviews (0)

Sign in to write a review.

No reviews yet. Be the first to review!

Comments (0)

Sign in to join the discussion.

No comments yet. Be the first to share your thoughts!

Compatible Platforms

Pricing

Free

Related Configs