{
  "openapi": "3.0.1",
  "info": {
    "title": "Indian Mutual Fund NAV Scraper (AMFI)",
    "description": "Net asset values for Indian mutual fund schemes, from AMFI's own published file. One row per scheme: scheme code, name, fund house, category, the NAV and the trading date it belongs to. Wound-up schemes frozen at an old value are left out, not sold as current. History back to 2010.",
    "version": "0.1",
    "x-build-id": "ycl6q1n12EitFUbSX"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/dami_studio~mutual-fund-nav-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-dami_studio-mutual-fund-nav-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/dami_studio~mutual-fund-nav-scraper/runs": {
      "post": {
        "operationId": "runs-sync-dami_studio-mutual-fund-nav-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/dami_studio~mutual-fund-nav-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-dami_studio-mutual-fund-nav-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "mode": {
            "title": "What to read",
            "enum": [
              "latest",
              "history"
            ],
            "type": "string",
            "description": "latest 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."
          },
          "universe": {
            "title": "Which schemes",
            "enum": [
              "all",
              "open",
              "close",
              "interval"
            ],
            "type": "string",
            "description": "Only 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."
          },
          "maxItems": {
            "title": "Maximum rows",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Total 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."
          },
          "maxNavAgeDays": {
            "title": "Skip schemes whose NAV is older than (days)",
            "minimum": 0,
            "maximum": 20000,
            "type": "integer",
            "description": "This 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."
          },
          "maxFileAgeDays": {
            "title": "Refuse the whole file if nothing in it is newer than (days)",
            "minimum": 0,
            "maximum": 20000,
            "type": "integer",
            "description": "The 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."
          },
          "schemeCodes": {
            "title": "Scheme codes (optional)",
            "minItems": 0,
            "maxItems": 5000,
            "type": "array",
            "description": "AMFI 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.",
            "items": {
              "type": "string"
            }
          },
          "fundHouses": {
            "title": "Fund houses (optional)",
            "minItems": 0,
            "maxItems": 100,
            "type": "array",
            "description": "Match on the fund house name, case-insensitive, matching anywhere in it. HDFC catches HDFC Mutual Fund. Several entries act as any of.",
            "items": {
              "type": "string"
            }
          },
          "nameContains": {
            "title": "Scheme name contains (optional)",
            "minItems": 0,
            "maxItems": 100,
            "type": "array",
            "description": "Match 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.",
            "items": {
              "type": "string"
            }
          },
          "categoryContains": {
            "title": "Category contains (optional)",
            "minItems": 0,
            "maxItems": 100,
            "type": "array",
            "description": "Match 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 -.",
            "items": {
              "type": "string"
            }
          },
          "dateFrom": {
            "title": "History from",
            "type": "string",
            "description": "Only 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."
          },
          "dateTo": {
            "title": "History to",
            "type": "string",
            "description": "Only 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 that costs you nothing."
          },
          "proxyUrls": {
            "title": "Your own proxy servers (optional)",
            "minItems": 0,
            "maxItems": 50,
            "type": "array",
            "description": "Leave 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.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}