{
  "openapi": "3.0.1",
  "info": {
    "title": "Indian Mutual Fund NAV Scraper",
    "description": "Indian mutual fund NAV scraper: scheme NAVs from AMFI's own published files. One row per scheme: scheme code, name, fund house, category, plan, ISINs, the daily NAV and the trading date it belongs to. Wound-up schemes are left out. History back to 2010. $0.20 per 1,000 NAV rows.",
    "version": "0.1",
    "x-build-id": "T5JjjedwNgnabcEQC"
  },
  "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."
          },
          "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. 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. This checks the newest NAV anywhere in the file. 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.",
            "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. A range covering only weekends or Indian public holidays returns nothing for most schemes, and no rows are charged."
          },
          "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}