# Bank Compliance Monitor: Regulator Circulars (`maliksaid/regulator-circulars-monitor`) Actor

Monitor regulatory updates and regulator circulars for bank compliance: Fed SR letters, OCC bulletins, FDIC letters, FinCEN AML advisories, Central Bank of Jordan (CBJ) circulars and Saudi NCA cybersecurity controls. Topic tags such as AML and cyber. Monitor mode returns only new documents.

- **URL**: https://apify.com/maliksaid/regulator-circulars-monitor.md
- **Developed by:** [Malik Said](https://apify.com/maliksaid) (community)
- **Categories:** AI, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $24.00 / 1,000 circulars

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

## Bank Compliance Monitor: Regulator Circulars

Regulator Circulars Monitor lists circulars and regulatory documents from six financial and cyber regulators: the Central Bank of Jordan (CBJ), the Saudi National Cybersecurity Authority (NCA), the US Federal Reserve (SR letters), the OCC (bulletins), the FDIC (financial institution letters) and FinCEN (AML advisories). It gives bank compliance teams one feed of regulatory updates in one schema. Each record gives the reference number, the title, the date, the document type, topic tags such as `aml` or `cybersecurity`, and links to the official page. Compliance teams and compliance AI agents use it to track new rules.

The Actor saves metadata and links only. It never copies the document text.

### Regulator circulars covered

| Regulator | Country | What the Actor reads | Documents (21 October 2026) |
|---|---|---|---|
| Central Bank of Jordan (البنك المركزي الأردني) | Jordan | Circulars list, Arabic and English | 692 Arabic, 49 English |
| National Cybersecurity Authority (الهيئة الوطنية للأمن السيبراني) | Saudi Arabia | Regulatory documents: controls, frameworks, standards and guidelines | 19 |
| Federal Reserve Board (`fed`) | United States | Supervision and regulation (SR) letters and consumer affairs (CA) letters, from the official feed | Latest 15 |
| Office of the Comptroller of the Currency (`occ`) | United States | OCC bulletins, from the official feed | Latest 10 |
| Federal Deposit Insurance Corporation (`fdic`) | United States | Financial institution letters (FILs) | Latest 25 |
| Financial Crimes Enforcement Network (`fincen`) | United States | FinCEN advisories on money laundering and financial crime | Latest 15 |

For the four US regulators the Actor reads the newest entries each run. Schedule it daily with Monitor mode on, and you build a full history from then on. More regulators will follow when their terms allow reuse.

### Regulator circulars data you get

| Field | Meaning |
|---|---|
| `regulator`, `regulatorAr` | Regulator name in English and Arabic |
| `country` | ISO country code: `JO`, `SA` or `US` |
| `referenceNumber` | Reference number, such as `10/2/10311` or `ECC-2:2024` |
| `titleAr`, `titleEn` | Title exactly as the regulator publishes it |
| `issueDate` | Issue date. CBJ: when the title states it after "تاريخ" or "Dated". US regulators: the publish date on the feed or list |
| `publishedAt`, `updatedAt` | Publish and last-change dates, when the source gives them (NCA and US regulators) |
| `documentType` | `circular`, `memo`, `form`, `other`, `controls`, `framework or standard`, `guideline`, `SR letter`, `CA letter`, `bulletin`, `financial institution letter` or `advisory` |
| `category` | Sector or subject, when the source gives one |
| `language` | `ar`, `en`, `ar,en` or `es` (a few FinCEN advisories are in Spanish) |
| `pageUrl`, `pageUrlAr` | Official page of the document, or the list page for CBJ |
| `pdfUrl` | Official PDF link |
| `fileUrls` | Every official file link: PDF, Word or Excel |
| `summary` | Short summary from the source, when it gives one (OCC bulletins) |
| `topics` | Topic tags from keyword rules, for example `aml`, `cybersecurity`, `capital`. See the topic list below |
| `id`, `sourceId` | Stable IDs. Monitor mode uses `id` |
| `scrapedAt` | When the Actor collected the record |

Sample record:

```json
{
  "id": "cbj-ar:1600",
  "source": "cbj",
  "regulator": "Central Bank of Jordan",
  "regulatorAr": "البنك المركزي الأردني",
  "country": "JO",
  "sourceId": "1600",
  "referenceNumber": "10/2/10311",
  "titleAr": "التعميم رقم (10/2/10311) تاريخ 22/6/2026 بخصوص اندماج البنك الاستثماري مع بنك الاتحاد",
  "titleEn": null,
  "issueDate": "2026-06-22",
  "publishedAt": null,
  "updatedAt": null,
  "documentType": "circular",
  "category": null,
  "language": "ar",
  "pageUrl": "https://www.cbj.gov.jo/AR/List/%D8%A7%D9%84%D8%AA%D8%B9%D8%A7%D9%85%D9%8A%D9%85",
  "pageUrlAr": "https://www.cbj.gov.jo/AR/List/%D8%A7%D9%84%D8%AA%D8%B9%D8%A7%D9%85%D9%8A%D9%85",
  "pdfUrl": "https://www.cbj.gov.jo/ebv4.0/root_storage/ar/eb_list_page/%D8%A7%D9%84%D8%AA%D8%B9%D9%85%D9%8A%D9%85_%D8%B1%D9%82%D9%85_(10-2-10311)_%D8%A7%D9%84%D9%85%D8%A4%D8%B1%D8%AE_%D9%81%D9%8A_22-6-2026.pdf",
  "fileUrls": ["https://www.cbj.gov.jo/ebv4.0/root_storage/ar/eb_list_page/%D8%A7%D9%84%D8%AA%D8%B9%D9%85%D9%8A%D9%85_%D8%B1%D9%82%D9%85_(10-2-10311)_%D8%A7%D9%84%D9%85%D8%A4%D8%B1%D8%AE_%D9%81%D9%8A_22-6-2026.pdf"],
  "scrapedAt": "2026-10-21T08:54:24.521Z"
}
```

Empty fields and why:

- Central Bank of Jordan: about 35% of titles carry no reference number, and about 44% carry no issue date. The Actor leaves those fields empty. It does not guess.
- Central Bank of Jordan: the Arabic and English lists are separate. One circular can appear as two records, one per language.
- Central Bank of Jordan: links open the circulars list page. The bank has no page per circular.
- NCA: `issueDate` is empty. NCA shows a publish date (`publishedAt`). For many older documents this date is 2 June 2022, which looks like a site migration date.
- US regulators: `pdfUrl` and `fileUrls` are empty. Open `pageUrl` for the letter and its attachments.
- NCA: most documents have no reference code. `referenceNumber` is set only when the page shows one, such as `ECC-2:2024`.

### Regulatory updates monitoring: how to use it

1. Run the Actor with the default input to see the newest 100 documents from all six regulators.
2. Pick **Topics** or **Countries** to narrow the feed. For example topic `aml` and country `US`.
3. Add keywords to keep only matching documents. For example `stablecoin` or `غسل`.
4. Narrow by date or type. **Issued in the last (days)**, **Issued from** and **Issued to** use the issue date, else the publish date; documents with neither date are kept. **Document types** keeps types that contain your words, for example `circular`, `advisory` or `SR letter`. Filtered documents cost nothing.
5. Turn on **Monitor mode** and schedule the Actor daily. Each run then returns only documents it has not returned before.

The Actor reads each regulator in parallel and starts at most one request per second on each site. It keeps NCA document pages for 3 days in a key-value store named `regulator-circulars-cache`, so repeat runs read only new or older pages. New NCA documents have new pages, so they appear on the next run.

### Compliance monitoring topics

Each record gets topic tags from plain keyword rules on the title, summary and category. English words match whole words. Arabic words match inside words. A document can have several topics, or none. Rules can miss or mis-tag a document, so treat tags as a first filter.

| Topic | Covers |
|---|---|
| `aml` | Money laundering, terrorist financing, sanctions, KYC, beneficial ownership |
| `cybersecurity` | Cybersecurity, information security, operational resilience, IT risk |
| `capital` | Capital, Basel, liquidity, stress tests |
| `consumer` | Consumer protection, complaints, fair lending, financial inclusion |
| `payments` | Payments, transfers, cards, cheques, clearing |
| `digital-assets` | Crypto, stablecoins, virtual assets, fintech, AI |
| `fraud` | Fraud and scams |
| `credit` | Loans, credit, mortgages, microfinance |
| `governance` | Governance, risk management, compliance, third-party risk |
| `reporting` | Call reports, reporting forms, financial statements |
| `supervision` | Supervision, examinations, enforcement, licensing, mergers |
| `fx-exchange` | Foreign exchange and money exchange companies |
| `islamic` | Islamic finance |
| `climate` | Climate, ESG, green finance |

### Regulator circulars input options

| Option | Default | Meaning |
|---|---|---|
| Regulators | All six | Which regulators to read: `cbj`, `nca`, `fed`, `occ`, `fdic`, `fincen` |
| Keywords | None | Keep only matching documents |
| Topics | None | Keep only documents tagged with one of these topics |
| Countries | None | Read only regulators from these countries: `JO`, `SA`, `US` |
| Monitor mode | Off | Return only documents not returned before |
| Monitor name | `default` | Name of the monitor memory. The old field name `stateKey` still works |
| Maximum documents | 100 | Stop after this many documents. The Actor takes them from each regulator in turn, newest first. Set 0 for no limit |
| Proxy | Apify Proxy | Needed: the Central Bank of Jordan site does not answer from Apify servers without it |

Documents skipped by Topics, Keywords or Monitor mode are not charged.

### Regulator circulars pricing

The Actor uses pay-per-event pricing:

| Event | Free plan | GOLD plan and higher |
|---|---|---|
| Run start | $0.005 | $0.005 |
| Circular | $0.03 ($30.00 per 1,000) | $0.024 ($24.00 per 1,000) |

| Documents in one run | Free plan | GOLD plan and higher |
|---|---|---|
| 100 | $3.005 | $2.405 |
| 1,000 | $30.005 | $24.005 |

Costs include the run start fee.

Documents skipped by your filters or by monitor mode cost nothing. Check the Pricing tab for the current price.

### Regulator circulars example: input and output

This input reads the Central Bank of Jordan and the NCA and stops at 100 documents:

```json
{
  "sources": ["cbj", "nca"],
  "maxItems": 100
}
```

One English record from that run on 21 October 2026:

```json
{
  "id": "cbj-en:57",
  "source": "cbj",
  "regulator": "Central Bank of Jordan",
  "regulatorAr": "البنك المركزي الأردني",
  "country": "JO",
  "sourceId": "57",
  "referenceNumber": "8/2026",
  "titleAr": null,
  "titleEn": "circular No.(8/2026) Dated 4/6/2026",
  "issueDate": "2026-06-04",
  "publishedAt": null,
  "updatedAt": null,
  "documentType": "circular",
  "category": null,
  "language": "en",
  "pageUrl": "https://www.cbj.gov.jo/EN/List/Circulars",
  "pageUrlAr": null,
  "pdfUrl": "https://www.cbj.gov.jo/ebv4.0/root_storage/en/eb_list_page/circular_no._(8-2026).pdf",
  "fileUrls": [
    "https://www.cbj.gov.jo/ebv4.0/root_storage/en/eb_list_page/circular_no._(8-2026).pdf"
  ],
  "scrapedAt": "2026-10-21T09:24:19.998Z"
}
```

This input keeps only AML documents from the US regulators:

```json
{
  "countries": ["US"],
  "topics": ["aml"],
  "maxItems": 20
}
```

One record from that run on 21 October 2026:

```json
{
  "id": "fincen:/resources/advisories/fincen-advisory-fin-2021-a003",
  "source": "fincen",
  "regulator": "Financial Crimes Enforcement Network (FinCEN)",
  "regulatorAr": "شبكة مكافحة الجرائم المالية الأمريكية",
  "country": "US",
  "sourceId": "FIN-2021-A003",
  "referenceNumber": "FIN-2021-A003",
  "titleAr": null,
  "titleEn": "Advisory on the Financial Action Task Force-Identified Jurisdictions with Anti-Money Laundering and Combating the Financing of Terrorism and Counter-Proliferation Deficiencies",
  "issueDate": "2021-03-11",
  "publishedAt": "2021-03-11",
  "updatedAt": null,
  "documentType": "advisory",
  "category": "Anti-money laundering",
  "language": "en",
  "pageUrl": "https://www.fincen.gov/resources/advisories/fincen-advisory-fin-2021-a003",
  "pageUrlAr": null,
  "pdfUrl": null,
  "fileUrls": [],
  "summary": null,
  "topics": ["aml"],
  "scrapedAt": "2026-10-21T12:54:16.537Z"
}
```

### Regulator circulars FAQ

#### Which regulators does it cover?

The Central Bank of Jordan, the Saudi National Cybersecurity Authority, the US Federal Reserve, the OCC, the FDIC and FinCEN. The table above shows what the Actor reads from each.

#### Why not SAMA, the UAE, Qatar or Bahrain central banks?

SAMA's rulebook blocks automated access in its robots.txt. The central banks of the UAE, Qatar and Bahrain require written permission to reuse their material. The Actor adds a regulator only when its site and terms allow it.

#### Does it download the full text of each circular?

No. It saves the title, reference number, dates and official links. Open `pdfUrl` or `pageUrl` to read the document on the regulator's site.

#### How do I get only new circulars?

Turn on **Monitor mode** and schedule the Actor daily. Each run then returns only documents it has not returned before. Use a different **Monitor name** (`monitorName`) for each watch list.

#### Can I filter by topic?

Yes. Pick **Topics**, such as `aml` or `cybersecurity`. For finer control add **Keywords** in English or Arabic, such as `stablecoin`, `غسل` or `ECC`. Keywords match the title, summary, reference number, type and category.

#### Can an AI agent use it?

Yes. Agents can find and run it through the Apify MCP server or the Apify API. All six regulators share one output schema.

### Regulator circulars in Arabic: ملخص بالعربية

تجمع هذه الأداة التعاميم والوثائق التنظيمية من البنك المركزي الأردني والهيئة الوطنية للأمن السيبراني في المملكة العربية السعودية. وتجمع أيضاً تعاميم أربع جهات رقابية مصرفية في الولايات المتحدة. تضيف الأداة لكل وثيقة وسوماً للموضوع، مثل مكافحة غسل الأموال والأمن السيبراني. يعرض كل سجل رقم المرجع والعنوان والتاريخ ونوع الوثيقة. ويعرض أيضاً رابط الصفحة الرسمية ورابط ملف PDF. فعّل وضع المراقبة وجدول التشغيل يومياً، فتصلك الوثائق الجديدة فقط. تحفظ الأداة العناوين والأرقام والتواريخ والروابط. يبقى نص كل وثيقة على الموقع الرسمي للجهة المصدرة.

### Regulator circulars data sources and use

- All data comes from public pages that need no login.
- The Actor sends a small number of slow requests. A full run reads about 45 pages.
- US federal regulator pages are public information. Each record names the regulator as its source.
- The Actor saves titles, numbers, dates and links. It does not save document text or personal data.
- Titles are copied unchanged, and each record names the regulator as its source.
- The documents belong to the regulators. Read and use them under each regulator's own terms.

### Related Actors

- [Gulf Tenders Radar](https://apify.com/maliksaid/gulf-tenders-radar): public tenders from Oman, Jordan and the UAE.
- [Drug Approvals Monitor](https://apify.com/maliksaid/drug-approvals-monitor): new drug approvals from the FDA, EMA and Health Canada.

### Support

Report a problem in the Issues tab. Include the run link.

# Actor input Schema

## `sources` (type: `array`):

Which regulators to read. Leave empty to read all six.

## `keywords` (type: `array`):

Keep only documents whose title, reference, type or regulator contains at least one keyword. English keywords match whole words. Arabic keywords match anywhere in a word. Leave empty to keep every document.

## `topics` (type: `array`):

Keep only documents tagged with at least one of these topics. Tags come from simple keyword rules on the title, summary and category. Leave empty to keep every topic.

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

Keep only documents whose type contains one of these words, any case. Types today: "SR letter", "CA letter" and "supervisory letter" (Federal Reserve), "bulletin" (OCC), "financial institution letter" (FDIC), "advisory" (FinCEN), "circular", "memo", "form" and "other" (CBJ), "controls", "framework or standard" and "guideline" (NCA). Leave empty for every type.

## `daysBack` (type: `integer`):

Keep only documents issued in the last N days. 0 means any date. Uses the issue date, else the publish date. Documents with neither date are kept.

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

Keep documents issued on or after this date (YYYY-MM-DD). Uses the issue date, else the publish date. Documents with neither date are kept.

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

Keep documents issued on or before this date (YYYY-MM-DD).

## `countries` (type: `array`):

Read only regulators from these countries. Leave empty for all countries.

## `monitorMode` (type: `boolean`):

Return only documents that earlier monitor-mode runs with the same monitor name did not return. Schedule the Actor with this on to get a feed of new circulars.

## `monitorName` (type: `string`):

Name of the memory that monitor mode uses. Use a different name for each separate watch list. Inputs that still send the old field `stateKey` keep working.

## `maxItems` (type: `integer`):

Stop after saving this many documents. The Actor takes them from each regulator in turn, newest first. Set 0 for no limit.

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

Apify Proxy is on by default. The Central Bank of Jordan site does not answer DNS lookups from Apify servers without it.

## Actor input object example

```json
{
  "sources": [
    "cbj",
    "nca",
    "fed",
    "occ",
    "fdic",
    "fincen"
  ],
  "keywords": [],
  "topics": [],
  "documentTypes": [],
  "daysBack": 0,
  "countries": [],
  "monitorMode": false,
  "monitorName": "default",
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "maxItems": 100,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("maliksaid/regulator-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 = {
    "maxItems": 100,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("maliksaid/regulator-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 '{
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call maliksaid/regulator-circulars-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,maliksaid/regulator-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/me3QltVMu8IJ9hmRz/builds/bARom0AHVbqOduBGt/openapi.json
