# 🇮🇳🏦 India RBI Monetary Policy Statements — MPC Tracker (`nexgendata/india-rbi-monetary-policy-statements`) Actor

Structured feed for every RBI MPC Monetary Policy Statement: repo rate, SDF/MSF/CRR/SLR, policy stance, vote breakdown, CPI & GDP forecasts. Bloomberg/Refinitiv alt for Indian rates desks, EM macro funds, FX traders. $0.50/event.

- **URL**: https://apify.com/nexgendata/india-rbi-monetary-policy-statements.md
- **Developed by:** [Stephan Corbeil](https://apify.com/nexgendata) (community)
- **Categories:** Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-usage

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## 🇮🇳🏦 India RBI Monetary Policy Statements — Repo Rate, CRR, SLR, MPC Tracker

Structured data feed for **every Reserve Bank of India Monetary Policy Statement** — the single most-watched event in Indian fixed-income markets. The MPC (Monetary Policy Committee) meets six times a year and each Resolution announces the new **Repo Rate**, **Standing Deposit Facility (SDF) rate**, **Marginal Standing Facility (MSF) rate**, **Bank Rate**, **Cash Reserve Ratio (CRR)**, **Statutory Liquidity Ratio (SLR)**, policy stance (Accommodative / Neutral / Withdrawal of Accommodation), CPI inflation forecasts, real GDP growth forecasts, and the MPC vote breakdown. This Actor scrapes the official RBI press-release feed at `www.rbi.org.in/Scripts/BS_PressReleaseDisplay.aspx`, filters to the canonical Monetary Policy Statements (excluding the post-meeting Minutes, Discussion Papers, monetary-penalty notices, and Working Papers), and returns a structured JSON row per statement. Output is a drop-in replacement for the RBI feeds inside Bloomberg Terminal, Refinitiv Eikon, Trading Economics, and CEIC — at one to two orders of magnitude lower per-event cost.

The MPC's policy decisions move the **10-year G-Sec yield**, the **INR overnight index swap (OIS) curve**, the **MIBOR**, the **USD/INR forwards curve**, and every Indian bank's deposit / lending rates. A real-time, structured alert on a single MPC Statement is worth tens of basis points to a rates desk that mis-positioned ahead of the meeting. This Actor's per-event pricing ($0.50/statement) is built around that reality: rare event, high economic value, premium institutional buyer.

---

### What you get per row

Each dataset row is a single RBI Monetary Policy Statement with these fields:

- **`press_release_id`** — RBI's internal numeric ID (`prid`) used in the URL `BS_PressReleaseDisplay.aspx?prid={id}`. Stable across redeploys.
- **`statement_date`** — ISO date the statement was published (typically the final day of the 2-3 day MPC meeting).
- **`title`** — Full RBI title, e.g. `"Monetary Policy Statement, 2026-27 Resolution of the Monetary Policy Committee April 6 to 8, 2026"`.
- **`mpc_meeting_dates`** — Array of ISO dates spanning the meeting (e.g. `["2026-04-06","2026-04-07","2026-04-08"]`).
- **`repo_rate`** — The new policy Repo Rate in percent (e.g. `5.25`). The rate at which the RBI lends to commercial banks against G-Sec collateral under the Liquidity Adjustment Facility (LAF). The benchmark of benchmarks for every INR-denominated debt instrument.
- **`repo_rate_change_bps`** — Signed integer change in basis points vs. the previous statement (`0` for hold, `-25` for a 25 bps cut, `+50` for a 50 bps hike).
- **`reverse_repo_rate`** — Legacy LAF reverse repo rate. Effectively replaced by the SDF rate in April 2022 — modern statements may not restate it. Pre-2022 statements have it as the primary deposit-side rate.
- **`sdf_rate`** — Standing Deposit Facility rate (introduced April 2022). The rate the RBI pays banks to absorb excess liquidity. Sets the floor of the LAF corridor.
- **`msf_rate`** — Marginal Standing Facility rate. The penal rate at which banks can borrow overnight against excess SLR holdings. Sets the ceiling of the LAF corridor.
- **`bank_rate`** — RBI's discount rate. In the modern framework it tracks the MSF rate but is reported separately and is the legal-reference rate for several penalty provisions under the RBI Act.
- **`crr`** — Cash Reserve Ratio in percent. The fraction of net demand and time liabilities (NDTL) Indian banks must hold as reserves at the RBI. CRR changes are not announced every meeting — the parser returns `null` when the CRR isn't explicitly restated.
- **`slr`** — Statutory Liquidity Ratio in percent. The fraction of NDTL banks must hold in G-Secs / approved securities. Same caveat as CRR — returned when explicitly restated, otherwise `null`.
- **`policy_stance`** — Canonical enum: `accommodative`, `neutral`, `withdrawal` (withdrawal of accommodation), `calibrated_tightening`, `calibrated_easing`, `hawkish`, `dovish`, `unknown`. The stance is the MPC's forward-guidance signal and is often more market-moving than the rate level itself.
- **`inflation_forecast`** — Object: `{"current_year_pct": 4.6, "next_year_pct": null}` — RBI's CPI inflation projections for the current FY and (when stated) the next FY. India's CPI target is 4% ±2%.
- **`gdp_growth_forecast`** — Object: `{"current_year_pct": 6.9, "next_year_pct": null}` — real GDP growth projections.
- **`vote_breakdown`** — Plain-text sentence describing the MPC vote (e.g. `"MPC voted unanimously to keep the policy repo rate ... unchanged at 5.25 per cent."` or `"by a majority of 5:1, the MPC voted to reduce..."`).
- **`full_text`** — Full plain-text body of the statement (typically 10–50 KB; truncated at 200 KB). Returned only when `extractFullText=true`.
- **`source_url`** — Direct link to the original RBI press release page.

---

### 8 use cases

1. **Real-time MPC alert feed for an Indian fixed-income desk** — Pipe Actor results into Slack / Microsoft Teams / PagerDuty within seconds of the MPC Statement going live. A 25-bp surprise vs. consensus moves the 10-year G-Sec yield 5–15 bps in minutes — first-mover edge has measurable P&L value.
2. **OIS / IRS curve repricing** — The repo rate sets the anchor for the INR OIS curve. Sentence-level changes in the policy stance (e.g. dropping the word "calibrated" from the stance) historically reprice the 2y/5y/10y OIS by 8–20 bps. Use the structured `policy_stance` field to drive curve-shape signals.
3. **USD/INR FX positioning** — RBI rate differentials vs. the Fed and a hawkish MPC stance support the rupee on a carry basis. Combine repo_rate with the [Treasury Yields Actor](https://apify.com/nexgendata/treasury-yields-tracker) US 10y to compute the real-rate spread driving USD/INR forwards.
4. **EM macro fund signal generation** — BlackRock GEM, T. Rowe Price EM, PIMCO EM, Ashmore, and similar EM debt funds run quant overlays that consume RBI policy data alongside Banxico, BCB, CBR (when accessible), and BSP statements. Per-event pricing makes it cheap to feed a dozen central-bank trackers into a single quant pipeline.
5. **Hawkishness / sentiment scoring** — Run NLP on the `full_text` field to compute hawk-vs-dove indices (e.g. Bennani-Romelli style) across the MPC's history. Combine with the structured `repo_rate_change_bps` for a labelled time series.
6. **Bloomberg / Refinitiv / Trading Economics cost-out** — Bloomberg Terminal RBI feed runs ~$24K+/year/seat; Refinitiv ~$22K+/year; Trading Economics RBI subscription with API ~$40+/month. For ~8 statements/year of structured RBI data, this Actor's $0.50/event pricing is two orders of magnitude cheaper — ~$3 to backfill a full year, $0.50 for a real-time alert.
7. **Sell-side rates research desk-note generation** — Morgan Stanley / J.P. Morgan / HSBC / Standard Chartered India rates desks produce same-day MPC commentary. Pre-populate a desk-note template with `repo_rate` + `repo_rate_change_bps` + `policy_stance` + `inflation_forecast` + `gdp_growth_forecast` + `vote_breakdown` to cut the time from MPC press conference to client distribution in half.
8. **Academic / RBI-policy research** — Build a clean panel of every RBI MPC decision since 2016 (when the MPC framework went live), join with high-frequency G-Sec / OIS / INR data, and replicate event-study regressions for monetary-policy transmission research.

---

### How this Actor compares (vs. enterprise alternatives)

| Provider | RBI MPC coverage | Structured rates | Stance enum | Forecasts | Annual cost | Per-event cost |
|---|---|---|---|---|---|---|
| **Bloomberg Terminal** | Yes (Indian rates feed) | Yes | Partial | Yes | **~$24,000/year/seat** | (bundled — seat-locked) |
| **Refinitiv Eikon** | Yes (RBI feed) | Yes | Partial | Yes | **~$22,000/year/seat** | (bundled) |
| **Trading Economics** | Yes (RBI subscription) | Yes | No (free text) | Yes (separate dataset) | **~$480+/year/seat** with API | (bundled) |
| **CEIC Database** | Yes (historical, no realtime) | Yes | No | No | **$2,000–$10,000/year** | (bundled) |
| **RBI press release email list (official)** | Yes (free) | No (unstructured PDF + HTML) | No | No | Free | Manual parsing required |
| **This Actor (nexgendata)** | Yes (MPC Statement feed) | Yes (all rates) | Yes (8-value enum) | Yes (CPI + GDP) | **None — PPE** | **$0.50/statement** |

For event-driven, structured RBI MPC intel this Actor is **two orders of magnitude cheaper** than Bloomberg / Refinitiv / Trading Economics, and far cleaner than scraping the RBI press release HTML yourself.

---

### Quick start (JSON input)

```json
{
  "mode": "latest",
  "maxStatements": 6,
  "extractFullText": true
}
````

#### Backfill the full MPC era (October 2016 → today)

```json
{
  "mode": "historical",
  "dateFrom": "2016-10-01",
  "dateTo": "2026-05-15",
  "maxStatements": 100,
  "extractFullText": true
}
```

#### Just the headline numbers (no full text — cheap monitoring)

```json
{
  "mode": "latest",
  "maxStatements": 12,
  "extractFullText": false
}
```

***

### Python SDK

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("nexgendata/india-rbi-monetary-policy-statements").call(run_input={
    "mode": "latest",
    "maxStatements": 6,
    "extractFullText": False,
})
for stmt in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"{stmt['statement_date']}: repo={stmt['repo_rate']}% "
          f"(Δ{stmt['repo_rate_change_bps']:+d} bps) stance={stmt['policy_stance']} "
          f"CPI fcst={stmt['inflation_forecast']['current_year_pct']}% "
          f"GDP fcst={stmt['gdp_growth_forecast']['current_year_pct']}%")
```

### cURL

```bash
curl "https://api.apify.com/v2/acts/nexgendata~india-rbi-monetary-policy-statements/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"mode":"latest","maxStatements":6,"extractFullText":false}'
```

***

### Integrations

Pipe results to **Zapier**, **Make.com**, or **n8n**. Common pairings: Slack / Teams webhook for desk-wide MPC alerts at T+0 from the press release; Snowflake / BigQuery / Databricks for a structured RBI policy time-series; Salesforce / HubSpot enrichment for institutional-investor client coverage; Airtable for the rates research desk's MPC note pipeline; join with the sister [Treasury Yields Tracker](https://apify.com/nexgendata/treasury-yields-tracker) Actor for instant US 10y / India 10y spread monitoring around MPC decisions.

***

### Pricing (Pay Per Event)

| Event | Price |
|---|---|
| Actor start | **$0.005** |
| Per RBI MPC Statement record returned | **$0.50** |

**Cost calculator:**

- 1 statement (real-time alert on the just-released MPC decision) = **$0.51**
- 6 statements (one year of MPC Statements) = **$3.01**
- 12 statements (two years of history) = **$6.01**
- 50 statements (~8 years — covers the modern MPC era since 2016) = **$25.01**
- 100 statements (deep historical backfill) = **$50.01**

The MPC meets ~6×/year — a full year of structured RBI policy data is **$3**, vs. ~$24,000/year for a Bloomberg Terminal seat. For a single real-time alert ahead of the next MPC the $0.50/event cost is rounding error against the P\&L of a properly-positioned rates desk.

***

### FAQ

**Is this the official RBI API?** No. RBI publishes Monetary Policy Statements as press releases at `www.rbi.org.in/Scripts/BS_PressReleaseDisplay.aspx`. This Actor scrapes the public HTML feed, filters to the canonical Monetary Policy Statements (excluding Minutes, Discussion Papers, monetary-penalty notices, etc.), and parses each statement's rate / stance / forecast fields into a structured row.

**How fast is the feed?** MPC Statements typically appear on the RBI press release feed within minutes of the press conference. With the Apify Standby endpoint or a 1-hour scheduled run, you can catch new statements at T+~5 min from publication.

**What's the coverage period?** The formal MPC framework was established in October 2016 under the amended RBI Act. This Actor reliably parses every MPC Resolution / Monetary Policy Statement from October 2016 to today (~50 statements). Pre-2016 monetary policy statements (governor-only decisions) exist in the RBI archive but use a different title convention.

**Why is CRR/SLR sometimes null?** The MPC does not restate CRR and SLR at every meeting — only when changed. The parser returns `null` when the field isn't explicitly stated in the statement text rather than guessing the previous value. Carry-forward logic should live in your downstream pipeline.

**Why use Apify residential proxy with country=IN?** The RBI website occasionally rate-limits and geo-filters aggressive scraping. Routing through Indian residential IPs is the most reliable setup and is the default. You can override `proxyConfiguration` in the input.

**Is the data accurate?** Every field is parsed from the RBI's own press release HTML using defensive regex extraction. Spot checks across 2022 (hiking cycle), 2024 (peak rate), and 2025 (cutting cycle) confirm the policy parameters match the canonical RBI Resolution text exactly. The `full_text` field gives you the raw statement for audit.

**Can I use this data commercially?** RBI press releases are public regulatory documents published by the Reserve Bank of India, a statutory body. Repo / SDF / MSF / CRR / SLR rates and policy stance are public information. Confirm specific commercial-redistribution use cases with your legal team.

***

### Related Actors

- 📈 [Treasury Yields Tracker](https://apify.com/nexgendata/treasury-yields-tracker) — Pair RBI repo decisions with US 10y / India 10y yield deltas for real-time rate-spread monitoring around MPC events.
- 💱 [FX Rates Real-Time](https://apify.com/nexgendata/fx-rates-realtime) — USD/INR, EUR/INR, and major-pair FX rates. Combine with RBI policy stance to drive INR carry-trade positioning.
- 🇮🇳 [NSE India Stock Screener](https://apify.com/nexgendata/nse-screener) — NSE-listed Indian equities. MPC rate decisions move the Nifty Bank index 1–3% on surprise meetings; cross-reference with bank-stock pricing.
- 🇮🇳 [India MCA Companies](https://apify.com/nexgendata/india-mca-companies) — India Ministry of Corporate Affairs filings — pair with RBI policy for corporate-credit / financing-cost analysis.
- 🏦 [Singapore MAS Financial Institutions](https://apify.com/nexgendata/sg-mas-financial-institutions) — APAC central-bank counterpart: MAS regulates Singapore FIs that often hedge into INR rates.
- 📊 [Commodity Futures Tracker](https://apify.com/nexgendata/commodity-futures-tracker) — Oil, gold, rupee-sensitive commodities. RBI policy stance is partly driven by oil-import inflation risk.
- 📰 [Corporate Actions Tracker](https://apify.com/nexgendata/corporate-actions-tracker) — Rate-sensitive corporate actions (refinancings, NCD issues) often cluster around MPC dates.

***

[Try this Actor on Apify →](https://apify.com/nexgendata/india-rbi-monetary-policy-statements) | [Get a free Apify account →](https://apify.com/nexgendata?fpr=2ayu9b)

# Actor input Schema

## `mode` (type: `string`):

How to select which Monetary Policy Statements to scrape. 'latest' returns the most-recent ~14 months of MPC Statements (typically 7-8 statements as the MPC meets ~6×/year). 'historical' lets you specify an explicit dateFrom..dateTo window via the corresponding fields. Use 'latest' for ongoing monitoring / Slack/Snowflake ingestion; use 'historical' for backfills (e.g. all statements since 2016 when the MPC framework was formally established).

## `dateFrom` (type: `string`):

ISO date (YYYY-MM-DD) — only used when mode='historical'. The Actor scans every month from this date forward up to dateTo (or today) and pulls every MPC Statement in the window. The MPC framework went live in October 2016 with the first formal Monetary Policy Resolution; earlier statements (pre-MPC, under the old governor-led framework) are also indexed but have a different title structure. Default empty = ~14 months back from today.

## `dateTo` (type: `string`):

ISO date (YYYY-MM-DD) — only used when mode='historical'. Defaults to today. Use this to bound a backfill (e.g. dateFrom=2020-01-01 dateTo=2023-12-31 for the COVID-era + tightening-cycle statements only).

## `maxStatements` (type: `integer`):

Hard cap on the number of MPC Statements returned this run (1-500). Each statement is one dataset row. Per-event pricing applies per row ($0.50/policy-statement). The MPC meets ~6×/year, so 50 statements covers ~8 years of history; the full archive back to October 2016 is ~50 statements.

## `extractFullText` (type: `boolean`):

If true, include the full plain-text body of each Monetary Policy Statement (typically 10–50 KB per statement) in the output under `full_text`. If false, only the structured rate / forecast / stance fields are returned. Set false for high-volume monitoring use cases where you only care about the headline numbers; set true for NLP / sentiment / hawkishness-scoring pipelines. Text is truncated to 200,000 chars max with a warning.

## `proxyConfiguration` (type: `object`):

Apify proxy settings. RBI's website (www.rbi.org.in) is hosted in India and occasionally rate-limits requests from US/EU IP ranges. The default is Apify Residential proxy with country=IN (India), which is the most reliable setup for hitting the RBI press release feed. Override with country=AS (Asia) or DATACENTER groups if you have a custom routing preference. If proxy creation fails the Actor falls back to a direct connection.

## Actor input object example

```json
{
  "mode": "latest",
  "maxStatements": 6,
  "extractFullText": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "IN"
  }
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mode": "latest",
    "dateFrom": "",
    "dateTo": "",
    "maxStatements": 6,
    "extractFullText": true,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "IN"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("nexgendata/india-rbi-monetary-policy-statements").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "mode": "latest",
    "dateFrom": "",
    "dateTo": "",
    "maxStatements": 6,
    "extractFullText": True,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "IN",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("nexgendata/india-rbi-monetary-policy-statements").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "latest",
  "dateFrom": "",
  "dateTo": "",
  "maxStatements": 6,
  "extractFullText": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "IN"
  }
}' |
apify call nexgendata/india-rbi-monetary-policy-statements --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=nexgendata/india-rbi-monetary-policy-statements",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "🇮🇳🏦 India RBI Monetary Policy Statements — MPC Tracker",
        "description": "Structured feed for every RBI MPC Monetary Policy Statement: repo rate, SDF/MSF/CRR/SLR, policy stance, vote breakdown, CPI & GDP forecasts. Bloomberg/Refinitiv alt for Indian rates desks, EM macro funds, FX traders. $0.50/event.",
        "version": "0.0",
        "x-build-id": "VZTJOItS8uVaDm12G"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/nexgendata~india-rbi-monetary-policy-statements/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-nexgendata-india-rbi-monetary-policy-statements",
                "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/nexgendata~india-rbi-monetary-policy-statements/runs": {
            "post": {
                "operationId": "runs-sync-nexgendata-india-rbi-monetary-policy-statements",
                "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/nexgendata~india-rbi-monetary-policy-statements/run-sync": {
            "post": {
                "operationId": "run-sync-nexgendata-india-rbi-monetary-policy-statements",
                "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": "Mode",
                        "enum": [
                            "latest",
                            "historical"
                        ],
                        "type": "string",
                        "description": "How to select which Monetary Policy Statements to scrape. 'latest' returns the most-recent ~14 months of MPC Statements (typically 7-8 statements as the MPC meets ~6×/year). 'historical' lets you specify an explicit dateFrom..dateTo window via the corresponding fields. Use 'latest' for ongoing monitoring / Slack/Snowflake ingestion; use 'historical' for backfills (e.g. all statements since 2016 when the MPC framework was formally established).",
                        "default": "latest"
                    },
                    "dateFrom": {
                        "title": "Date from (historical mode)",
                        "type": "string",
                        "description": "ISO date (YYYY-MM-DD) — only used when mode='historical'. The Actor scans every month from this date forward up to dateTo (or today) and pulls every MPC Statement in the window. The MPC framework went live in October 2016 with the first formal Monetary Policy Resolution; earlier statements (pre-MPC, under the old governor-led framework) are also indexed but have a different title structure. Default empty = ~14 months back from today."
                    },
                    "dateTo": {
                        "title": "Date to (historical mode)",
                        "type": "string",
                        "description": "ISO date (YYYY-MM-DD) — only used when mode='historical'. Defaults to today. Use this to bound a backfill (e.g. dateFrom=2020-01-01 dateTo=2023-12-31 for the COVID-era + tightening-cycle statements only)."
                    },
                    "maxStatements": {
                        "title": "Max statements returned",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Hard cap on the number of MPC Statements returned this run (1-500). Each statement is one dataset row. Per-event pricing applies per row ($0.50/policy-statement). The MPC meets ~6×/year, so 50 statements covers ~8 years of history; the full archive back to October 2016 is ~50 statements.",
                        "default": 50
                    },
                    "extractFullText": {
                        "title": "Extract full statement text",
                        "type": "boolean",
                        "description": "If true, include the full plain-text body of each Monetary Policy Statement (typically 10–50 KB per statement) in the output under `full_text`. If false, only the structured rate / forecast / stance fields are returned. Set false for high-volume monitoring use cases where you only care about the headline numbers; set true for NLP / sentiment / hawkishness-scoring pipelines. Text is truncated to 200,000 chars max with a warning.",
                        "default": true
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify proxy settings. RBI's website (www.rbi.org.in) is hosted in India and occasionally rate-limits requests from US/EU IP ranges. The default is Apify Residential proxy with country=IN (India), which is the most reliable setup for hitting the RBI press release feed. Override with country=AS (Asia) or DATACENTER groups if you have a custom routing preference. If proxy creation fails the Actor falls back to a direct connection.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "IN"
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            },
                            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
