# IFSCA & GST (CBIC) Circulars Monitor - RegPulse India (`leons0016/india-regulatory-circulars-monitor`) Actor

Monitor new IFSCA and GST (CBIC) circulars and notifications on a schedule. Filters, PDF text, revision alerts and RSS. RBI, SEBI and DGFT are opt-in only. Not affiliated with any regulator. Data from public notices; verify with the original document.

- **URL**: https://apify.com/leons0016/india-regulatory-circulars-monitor.md
- **Developed by:** [Leon s](https://apify.com/leons0016) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $16.00 / 1,000 new or revised circular delivereds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## RBI, SEBI, GST, DGFT & IFSCA Circulars Monitor - RegPulse India

**RegPulse India is a circulars monitor for Indian regulators.** It checks the official publications of the Reserve Bank of India (RBI), the Securities and Exchange Board of India (SEBI), the Central Board of Indirect Taxes and Customs for GST (CBIC), the Directorate General of Foreign Trade (DGFT) and the International Financial Services Centres Authority (IFSCA) on your schedule (RBI, SEBI and DGFT only after you switch on a permission option, see below) and gives you only what is new: circulars, notifications, master directions, guidelines, public and trade notices. It is built for compliance officers, CA and CS firms, law-firm newsletter teams and anyone who feeds Indian regulatory text into a search index or archive.

Publisher: LeonS. Support: atulhritik@hotmail.com.

> **Independent tool, not affiliated with or endorsed by any regulator.** It reads public notices and links every item to its source. **Data from public notices; verify with the original document.** Not legal advice. **RBI, SEBI and DGFT are switched off by default** because their website terms ask for permission before reproduction (SEBI, DGFT) or prohibit caching and framing (RBI); see "Sources that ask for permission" below.

### Why use RegPulse India

- **One schema for several sources.** Reference number, date, department, addressees (not for RBI), document link, page link and a SHA-256 of the document, whatever the regulator's site looks like.
- **Only what is new.** The first run looks back the days you choose (1 to 90); later runs deliver items you have not received yet. Items that do not match your filters are remembered but never delivered and never charged.
- **Revision alerts.** When the file or page of a known circular changes, it is delivered again with `changeType: "revised"` and the previous hash. A changed title alone is not a revision.
- **Rule-based "applicable to" tags with evidence.** 26 entity tags (NBFC, HFC, AIF, stockbroker, mutual fund, GST taxpayer, exporter and more) come from a dictionary of 200+ phrases. Each tag carries the phrase that triggered it (`tagEvidence`), so you can check it. There is no AI in the Actor.
- **Polite and transparent.** robots.txt is obeyed, there is at most one request per second to each host, no logins, no CAPTCHA solving. The exact sources are listed below.

### What is monitored today (and what is not)

| Regulator | Default | Where the Actor reads | What you get |
|---|---|---|---|
| IFSCA | **On** | The JSON list behind the Legal pages (circulars, notifications, guidelines) and the PDFs | The newest 30 entries per category. No terms page was found on the IFSCA site. |
| CBIC (GST) | **On** | The "latest updates" list of the CBIC tax portal and the PDFs | GST circulars and notifications that CBIC highlights (a short list, not the full archive). No terms page was found for the portal host. |
| RBI | **Off (opt-in)** | Official RSS feed of notifications (`rbi.org.in/notifications_rss.xml`) and the notification pages | Title, number, date, department and links of circulars, directions and master directions. The feed holds the 10 newest notices. |
| SEBI | **Off (opt-in)** | Official RSS feed (`sebi.gov.in/sebirss.xml`), item pages and attached PDFs | Circulars, guidelines, public notices, press releases, orders. The feed holds the 30 newest items of all kinds. |
| DGFT | **Off (opt-in)** | The notification, public notice and trade notice tables and the PDFs | Everything on those pages inside your date window. |

#### Sources that ask for permission (RBI, SEBI, DGFT) - off by default

These three regulators' website terms were read on 30 October 2026:

- **RBI** (`rbi.org.in/Scripts/Disclaimer.aspx`): "caching and links to, and the framing of this Web Site or any of the contents are prohibited" except as stated there, "All Rights Reserved", and RBI reserves the right to block access from an internet address. RBI's `robots.txt` answers automated clients with HTTP 418 "You are not authorized to view this page", and the PDF server runs a JavaScript bot challenge.
- **SEBI** (`sebi.gov.in/website-policy.html`): material "may be reproduced free of charge after taking proper permission by sending a mail" to SEBI, accurately, not in a misleading context, with the source acknowledged.
- **DGFT** (`dgft.gov.in`, Website Policies, copyright policy): the same permission wording as SEBI.

None of these pages mentions automated reading, but a paid feed that reproduces their material is close to what the clauses address, and **the publisher of this Actor has not received permission from any of the three**. Therefore they are read only if you switch on the input option **Allow sources that ask for permission** (`allowPermissionRequiredSources`, default `false`). With the option off, a run that lists them reports them under `sourcesNotMonitored` with the code `PERMISSION_REQUIRED` and does not contact them. By switching it on you accept responsibility for using the output within those terms (for example by asking the regulator for permission before you republish anything). Even with the option on:

- **RBI**: only the title, number, date, department and links are delivered. The notice body text is read transiently for your filters and tags and is **not** delivered: there is no text, no `addressees` and no `tagEvidence` for RBI items (the `applicableTo` tags can still be filled).
- Full text for SEBI and DGFT is available only if you also switch on `includeFullText`; it is off by default.

**Not monitored: IRDAI, PFRDA and MCA.** They stay selectable so a saved input keeps working, but each run reports them under `sourcesNotMonitored` and does not fetch them. The robots.txt files of IRDAI and PFRDA disallow crawlers (PFRDA makes an exception for Google only), and MCA answers automated requests with "Access Denied". They can only be added if those policies change.

Because RBI and SEBI publish short feeds (if you opted in), **run the Actor at least once a day** (twice on working days is a good choice); an item that leaves a feed between two runs cannot be seen any more.

### How to use it

1. Open the Actor and press **Try for free**. For a first look keep the prefill (IFSCA and CBIC GST, last 30 days) and press **Start**; it is a short run because the Actor sends at most one request per second to each site.
2. Pick your regulators, document types and filters. Example: regulators IFSCA and CBIC_GST, keywords `KYC` and `outsourcing`, applicable to `NBFC`. To add RBI, SEBI or DGFT, read the section above and switch on **Allow sources that ask for permission**.
3. Set **First run: look back** to 30 days for a backfill and save the input as a **Task**. The Task keeps what was already delivered, so changing filters later is safe.
4. Add a **Schedule** to the Task. Use the cron expression `0 0 9,18 * * *` with the time zone `Asia/Kolkata` (09:00 and 18:00 IST). New schedules start disabled: switch it on.
5. Add an **Integration** (Slack, Gmail, Google Drive, Zapier, Make, n8n or a webhook) on "Run succeeded", and one on "Run failed" so you know if a run breaks.

### Input

| Field | What it does | Default |
|---|---|---|
| `regulators` | IFSCA, CBIC_GST, and (only with the option below) RBI, SEBI, DGFT. IRDAI, PFRDA, MCA are reported as not monitored | IFSCA and CBIC_GST; prefill the same |
| `allowPermissionRequiredSources` | Read RBI, SEBI and DGFT, whose website terms ask for permission or prohibit caching (see above). Without it they are skipped with the code `PERMISSION_REQUIRED` | off |
| `documentTypes` | circular, notification, master_direction, press_release, order, public_notice, trade_notice, guideline, consultation | all except press releases, orders and consultation papers |
| `lookbackDays` | On the first run of a regulator, deliver items of the last N days (1 to 90) | 7 (prefill 30) |
| `keywordsAny`, `keywordsAll`, `excludeKeywords` | Case-insensitive keyword filters on title and text | empty |
| `regex` | Python regular expression on title and text, at most 300 characters, 0.5 s limit per item | none |
| `applicableTo` | Deliver items tagged for these entity types | empty |
| `matchMode` | `and`: keyword and tag filters must both pass; `or`: either is enough | `and` |
| `includeFullText`, `maxTextChars` | Add the extracted text (charged), cut at 1,000 to 2,000,000 characters | off, 200,000 |
| `includeHindi` | Also deliver Hindi documents as separate items (they are linked as `hindiUrl` otherwise) | off |
| `maxResultsPerRun` | Stop after N delivered items (1 to 10,000) | 200 |
| `webhookUrl`, `slackWebhookUrl` | Post the `OUTPUT` JSON / a short Slack message after each run | none |
| `stateKey`, `deliverRevisions`, `perSourceTimeoutSecs` | Share state between runs, switch revision alerts off, time limit per regulator (10 to 1,800 s) | none, on, 180 |

Sample input:

```json
{
  "regulators": ["IFSCA", "CBIC_GST"],
  "documentTypes": ["circular", "master_direction", "notification"],
  "lookbackDays": 30,
  "keywordsAny": ["KYC", "outsourcing"],
  "applicableTo": ["NBFC"],
  "includeFullText": false,
  "maxResultsPerRun": 100
}
```

Text is always read for filtering and tagging, even when `includeFullText` is off; you pay only for text you ask to receive.

### Output

Each new or revised item is one dataset item (sample, abbreviated):

```json
{
  "recordType": "circular",
  "id": "SEBI:HO/38/11/(9)2026-MIRSD-POD/I/24272/2026",
  "regulator": "SEBI",
  "docType": "circular",
  "number": "HO/38/11/(9)2026-MIRSD-POD/I/24272/2026",
  "date": "2026-10-23",
  "title": "Review of regulatory requirement for maintenance of call records of institutional clients by Research Analysts or Research Entities",
  "department": "Market Intermediaries Regulation and Supervision Department",
  "addressees": ["All registered Research Analysts", "Research Analysts Administration and Supervisory Body (RAASB)"],
  "applicableTo": ["RESEARCH_ANALYST"],
  "tagEvidence": {"RESEARCH_ANALYST": "addressee:research analyst"},
  "pdfUrl": "https://www.sebi.gov.in/sebi_data/attachdocs/oct-2026/example.pdf",
  "pages": 4,
  "sha256": "<64 hex characters>",
  "changeType": "new",
  "language": "en",
  "detectedAt": "2026-10-24T09:30:00+00:00",
  "source": "Securities and Exchange Board of India (sebi.gov.in)"
}
```

The values above are an illustration of the shape; real items carry the values of the published document.

- **Dataset views:** *Circulars* (default), *With text* and *Run summary*.
- **Run summary:** the last item of every run (`recordType: "run-summary"`), never charged. It lists, per regulator, how many items were found, in the window, new, revised, delivered, filtered, skipped and failed, the failed sources with an error code, the regulators that are not monitored, and `stoppedReason` (`SPENDING_LIMIT`, `MAX_RESULTS`, `ABORTED` or empty).
- **Key-value store:** `OUTPUT` (summary plus the delivered items without text), `REPORT` (HTML digest grouped by regulator, with "Revised" badges and tag pills) and `RSS` (RSS 2.0 feed of the items delivered in this run; a revised item gets a new `guid` ending in `#<hash>` so readers show it again).
- **Documents:** PDFs are read page by page and the text is joined with a form feed. Scanned pages are read with OCR (English and Hindi) up to 30 pages per document; longer scanned documents are marked `ocrTruncated`.
- **RBI text (only with the opt-in option):** RBI's website terms prohibit caching and framing of its content and state "All Rights Reserved", so RBI notice body text is used for filtering and tags only and is never delivered. RBI items carry the title, number, date, department and links (`textError: "TEXT_NOT_REDISTRIBUTED"`), with empty `addressees` and `tagEvidence`; the `applicableTo` tags may still be filled from the text. RBI's PDF server answers automated clients with a JavaScript challenge, so the `sha256` of an RBI item is the hash of the notice text (`sha256Source: "html"`), not of the PDF.

### Pricing

RegPulse India uses Apify's pay-per-event model. You pay only for what a run does; a schedule makes the bill predictable.

| Event | When it is charged | Price (Bronze) | Silver | Gold |
|---|---|---|---|---|
| `watch-check` | Once per run, after your input was accepted | $0.04 | $0.036 | $0.032 |
| `circular-delivered` | Per new or revised item delivered | $0.02 | $0.018 | $0.016 |
| `full-text-extracted` | Per delivered item that includes text | $0.01 | $0.009 | $0.008 |

Apify also charges its standard Actor start event. Silver and Gold are 10 % and 20 % below Bronze.

```
Monthly = runs x watch-check + delivered items x circular-delivered + items with text x full-text-extracted
runs per month: twice a day = 60, daily = 30, weekdays = 22, weekly = 4.33
```

Worked examples. The item counts are assumptions for illustration; your count depends on your filters. For scale: on 24 October 2026 the RBI feed held 10 notices dated 9 to 23 October, DGFT listed 18 notifications, public notices and trade notices dated in the previous 30 days, and IFSCA listed 4 circulars in that period.

| Customer | Runs | Items | With text | Monthly (Bronze) |
|---|---|---|---|---|
| One source, twice a day | 60 | 20 | 0 | 60 x 0.04 + 20 x 0.02 = **$2.80** |
| All five sources (opt-in on), daily | 30 | 50 | 0 | 30 x 0.04 + 50 x 0.02 = **$2.20** |
| All five sources (opt-in on), twice a day, with text on 30 items | 60 | 50 | 30 | 60 x 0.04 + 50 x 0.02 + 30 x 0.01 = **$3.70** |

- **Items that do not match your filters, items you already received and the run summary are never charged.** A second run with no new items costs one `watch-check`.
- **Invalid input fails the run before any charge.** A source that is down still costs the `watch-check` (the input was valid) and is listed in the summary.
- **Spending limit:** set a maximum cost per run. When it is reached the run stops, saves its state and says so; the items not yet delivered arrive in the next run. The limit must be at least $0.25.
- **Free-plan caps:** on the Apify free plan the Actor monitors the first 2 selected regulators, delivers at most 10 items per run and does not add full text. The run still succeeds and the summary names the cap that applied (`freePlanCaps`).

### Notifications

Open the Actor or Task, go to **Integrations**, add **Slack** and choose "Run succeeded". Message template (up to 4,000 characters):

```handlebars
:newspaper: *RegPulse India* run `{{resource.id}}` finished with status `{{resource.status}}`.
{{resource.statusMessage}}
Digest: https://api.apify.com/v2/key-value-stores/{{resource.defaultKeyValueStoreId}}/records/REPORT
Data: https://api.apify.com/v2/datasets/{{resource.defaultDatasetId}}/items?view=circulars
```

For e-mail, use the **Gmail** integration the same way, or send the `REPORT` record (HTML) onwards with Zapier, Make or n8n. For your own system, set `webhookUrl`: the `OUTPUT` JSON is posted after each run (15 s time limit, 2 retries; a failing webhook never fails the run). To read the RSS feed in a reader, point it at the `RSS` record of the last run's key-value store. Also add a notification on "Run failed".

### Limitations and disclaimers

- **Automated feed. Tags are rule-based hints. Always read the official document. This is not legal advice** and the Actor does not interpret regulations. The tags were checked on 40 hand-labelled examples written together with the dictionary; that checks the rules, it is not a measure of accuracy on real circulars.
- **Coverage is limited to the sources listed above.** Other regulators and other sections of these sites are not monitored. If you opted in to RBI and SEBI, their feeds are short, IFSCA is limited to the newest 30 entries per category, and CBIC's list is a highlight list (the newest GST entry seen on 24 October 2026 was dated 25 July 2026), so a 7-day look-back for GST usually returns nothing.
- robots.txt: RBI does not serve its robots.txt to automated clients (HTTP 418) and the DGFT file server answers it with an AccessDenied error; both are treated as "no rules", as RFC 9309 prescribes for an unavailable file, but a conservative reader may see the RBI answer as a refusal; that is one reason RBI is off by default. A robots.txt that forbids a URL is never overridden.
- Website layouts change. A source whose layout changed is reported with the code `PARSE_EMPTY` and the status message starts with `ATTENTION:`; other sources are still delivered.
- Source attribution is added to the report and RSS. The regulators' own terms govern reuse of their content (SEBI and DGFT ask for permission before reproduction, RBI prohibits caching and framing); you are responsible for how you reuse delivered text. For IFSCA and CBIC no reuse terms were found, so default copyright applies.
- **No affiliation.** RegPulse India is not affiliated with, endorsed by or sponsored by RBI, SEBI, IFSCA, CBIC, DGFT or any other authority. **Data from public notices; verify with the original document.**
- Orders can name persons or companies. Orders are off by default; when on, items keep the title, number, date, links and, if requested, the published text.
- OCR needs the Tesseract data installed in the Actor image; if it is missing the item is delivered with `textError: "PDF_SCANNED_OCR_UNAVAILABLE"`.
- Privacy policy: https://raw.githubusercontent.com/leons0016/ADApps/main/privacy/P3-RegPulseIndia.txt

### FAQ

**How often should I run it?** At least daily; twice a day (for example `0 0 9,18 * * *` in `Asia/Kolkata`) is better because circulars often appear late in the day and the RBI feed only holds 10 items.

**Why did my first run deliver old items?** The first run of a regulator looks back `lookbackDays`. After that, only new or revised items are delivered. If you change the filters, items from the look-back window that were filtered out before are looked at once more.

**Will I be charged again for a circular I already received?** No. Delivered items are remembered in a store in your own account (`leons-regpulse-state`). A revised document is delivered, and charged, as a new `circular-delivered` event.

**How do I reset it?** Disable the schedule and delete the key-value store `leons-regpulse-state` in your account, or use a new `stateKey`.

**Why is the RBI text empty (and why is RBI off)?** RBI's website terms prohibit caching and framing of its content, its robots.txt refuses automated clients and its PDF server blocks automated downloads. RBI is therefore off unless you switch on the permission option, and then RBI items carry metadata and links only (no text, no addressees). The notice text is used transiently for your filters and tags.

**Which tags can I filter on?** NBFC, HFC, scheduled commercial and co-operative banks, small finance and payments banks, payment aggregators, PPI issuers, ARCs, AIFs, mutual funds, stockbrokers, depository participants, investment advisers, research analysts, listed entities, REITs and InvITs, life and general insurers, insurance intermediaries, pension funds, IFSC entities, companies, LLPs, GST taxpayers and exporters/importers. Some tags only make sense for regulators that are not monitored yet.

**What does "revised" mean?** The SHA-256 of the document (or of the notice text for RBI) differs from the one stored. Title-only changes are ignored.

**Does it work with scanned PDFs?** Yes, with OCR (English and Hindi), up to 30 scanned pages per document.

**Who do I contact?** atulhritik@hotmail.com, or open an issue on the Actor's Issues tab.

### Changelog and support

The change history is in the Actor's **Information** tab (CHANGELOG). For questions and bug reports use the **Issues** tab or write to atulhritik@hotmail.com.

Third-party licences and attributions: see `docs/THIRD_PARTY_NOTICES.txt` in the Actor source.

# Changelog

This Actor's version history is a separate document: https://apify.com/leons0016/india-regulatory-circulars-monitor/changelog.md

# Actor input Schema

## `regulators` (type: `array`):

Pick the regulators to monitor, for example IFSCA and CBIC_GST. RBI, SEBI and DGFT are skipped unless 'Allow sources that ask for permission' is on. Free plan: only the first 2 monitored regulators are checked.

## `documentTypes` (type: `array`):

Press releases and orders are many; add them only if you need them. Example: \["circular", "master_direction"].

## `lookbackDays` (type: `integer`):

On the first run of a regulator, items from the last N days are delivered (1 to 90, example 30 for a backfill). Later runs deliver only new items.

## `keywordsAny` (type: `array`):

Deliver if the title or text contains any of these, case-insensitive. Example: KYC, outsourcing. Empty means no keyword filter.

## `keywordsAll` (type: `array`):

Deliver only if all of these appear in the title or text. Example: digital lending, disclosure.

## `excludeKeywords` (type: `array`):

Never deliver items containing these. Example: penalty, compounding.

## `regex` (type: `string`):

Advanced. Python regular expression applied to the title and text, at most 300 characters. Example: \bUPI\b.\*\blimit

## `applicableTo` (type: `array`):

Deliver items tagged for these entity types, for example NBFC. Tags come from text rules; check the tagEvidence field of each item.

## `matchMode` (type: `string`):

AND: an item must pass the keyword filters and the applicable-to filter. OR: either group is enough (only matters when both are set).

## `includeFullText` (type: `boolean`):

Adds the extracted document text to each item (charged per item). Not available on the Apify free plan. RBI text is never delivered, and text of sources that ask for permission is your responsibility (see the README).

## `maxTextChars` (type: `integer`):

Longest text kept per item, in characters (1,000 to 2,000,000). Longer documents are cut and marked textTruncated.

## `includeHindi` (type: `boolean`):

Hindi documents are linked to the English item (hindiUrl). Switch on to deliver them as separate items too.

## `maxResultsPerRun` (type: `integer`):

The run stops delivering after this many items (1 to 10,000). The rest is delivered by the next run. Free plan: at most 10.

## `webhookUrl` (type: `string`):

Optional. The OUTPUT JSON is posted here after each run. Example: https://example.com/hooks/regpulse

## `slackWebhookUrl` (type: `string`):

Optional. A short message with up to 10 new items is posted to this Slack incoming webhook URL.

## `stateKey` (type: `string`):

Optional. Runs with the same key share what was already delivered. Letters, digits, dot, dash and underscore, at most 64. Example: compliance-team

## `deliverRevisions` (type: `boolean`):

When the file or page of a known circular changes, deliver it again with changeType revised.

## `perSourceTimeoutSecs` (type: `integer`):

A regulator that takes longer is marked failed and the others continue (10 to 1,800 seconds).

## `allowPermissionRequiredSources` (type: `boolean`):

Off by default. RBI's terms prohibit caching and framing of its site and its robots.txt refuses bots; SEBI's and DGFT's website policies ask for permission before their material is reproduced. Switch this on only if you accept responsibility for using the output within those terms (for example by obtaining permission before you republish it). The publisher has no permission from these regulators.

## Actor input object example

```json
{
  "regulators": [
    "IFSCA",
    "CBIC_GST"
  ],
  "documentTypes": [
    "circular",
    "notification",
    "master_direction",
    "guideline",
    "public_notice",
    "trade_notice"
  ],
  "lookbackDays": 30,
  "keywordsAny": [],
  "keywordsAll": [],
  "excludeKeywords": [],
  "applicableTo": [],
  "matchMode": "and",
  "includeFullText": false,
  "maxTextChars": 200000,
  "includeHindi": false,
  "maxResultsPerRun": 200,
  "deliverRevisions": true,
  "perSourceTimeoutSecs": 180,
  "allowPermissionRequiredSources": false
}
```

# Actor output Schema

## `circulars` (type: `string`):

New and revised circulars, notifications and directions (default view).

## `withText` (type: `string`):

The same items with the extracted document text (only when full text is switched on).

## `runSummary` (type: `string`):

Per-regulator counts, source errors and the stopped reason of the run.

## `report` (type: `string`):

Digest of the new items grouped by regulator.

## `rss` (type: `string`):

RSS 2.0 feed of the items delivered in this run.

# 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 = {
    "regulators": [
        "IFSCA",
        "CBIC_GST"
    ],
    "lookbackDays": 30
};

// Run the Actor and wait for it to finish
const run = await client.actor("leons0016/india-regulatory-circulars-monitor").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 = {
    "regulators": [
        "IFSCA",
        "CBIC_GST",
    ],
    "lookbackDays": 30,
}

# Run the Actor and wait for it to finish
run = client.actor("leons0016/india-regulatory-circulars-monitor").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "regulators": [
    "IFSCA",
    "CBIC_GST"
  ],
  "lookbackDays": 30
}' |
apify call leons0016/india-regulatory-circulars-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,leons0016/india-regulatory-circulars-monitor"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/bYbXBD52MhEde7nMY/builds/NyXXYPaB3tfBi3q4p/openapi.json
