# MAS Singapore Financial Institutions Directory Scraper (`alwaysprimedev/mas-singapore-financial-institutions-directory-scraper`) Actor

Scrape every MAS-licensed bank, insurer, payment-service provider, capital-markets licensee, and financial adviser in Singapore — with full licence breakdowns, sub-activities, key personnel, and contacts.

- **URL**: https://apify.com/alwaysprimedev/mas-singapore-financial-institutions-directory-scraper.md
- **Developed by:** [Always Prime](https://apify.com/alwaysprimedev) (community)
- **Categories:** Lead generation, Automation, SEO tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

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

## 🏦 MAS Singapore Financial Institutions Directory Scraper

> ⚡️ Every regulated financial institution in Singapore — banks, insurers, payment-service providers, capital-markets licensees, financial advisers, money changers — with their **full licence breakdowns**, key officers, and contact details. Fresh JSON / CSV / Excel in minutes.

![Apify](https://img.shields.io/badge/Apify-Actor-blue) ![Python](https://img.shields.io/badge/Python-3.11-blue) ![Output](https://img.shields.io/badge/Output-JSON%20%7C%20CSV%20%7C%20XLSX-green)

### 🎯 What you get

Built on top of the **MAS Financial Institutions Directory** — Singapore's authoritative register of every entity the Monetary Authority of Singapore has licensed, exempted, recognised, or approved. ~5,000+ institutions across 48 licence categories.

Every record carries:

- 🏷️ **Legal name, MAS ID, jurisdiction of incorporation**
- 📜 **Every licence the institution holds** — not just the one you searched under. A "Full Bank" record will also show its capital-markets services, financial-adviser exemption, trust-company exemption, and SGS primary-dealer status, with the **regulated sub-activities** and **product types** under each licence.
- 👤 **Key personnel** — Chief Executive, CFO, Treasurer, Country Manager — with designations and named officers.
- 📞 **Phone, address, website, Singapore postal code.**
- ⏱️ Timestamped — know exactly when each record was pulled.

### 🚀 Quick start

1. Click **Try for free** above.
2. Tick the licence categories you care about — or leave the default to scrape every institution in the directory.
3. Hit **Start**.
4. Download the data as JSON, CSV, or Excel — or pull it from the Apify API.

That's it. No API keys, no proxy setup, no fiddling.

### 📥 Inputs

| Field | Type | Description |
|---|---|---|
| `categories` | list | MAS licence categories to scrape, exact names (see [the full list](#-licence-categories-supported)). Leave default to sweep all 48. |
| `maxItems` | int | Stop after this many institutions. Set `0` for unlimited. Default: `100`. |
| `startUrls` | list | Optional. Pass specific institution detail URLs to scrape only those. |
| `concurrency` | int | Parallel fetches (1–25). Default: `5`. |

### 📦 Sample output

```json
{
  "id": "3022",
  "slug": "3022-CITIBANK-N-A",
  "url": "https://eservices.mas.gov.sg/fid/institution/detail/3022-CITIBANK-N-A",
  "name": "CITIBANK N.A.",
  "place_of_incorporation": "United States",
  "primary_licence_category": "Full Bank",
  "licences": [
    {
      "name": "Full Bank",
      "description": "",
      "sub_activities": []
    },
    {
      "name": "Exempt Capital Markets Services Entity",
      "description": "",
      "sub_activities": [
        {
          "name": "Dealing In Capital Markets Products",
          "products": [
            "Securities",
            "Collective Investment Schemes",
            "Exchange-Traded Derivatives Contracts",
            "Over-The-Counter Derivatives Contracts",
            "Spot Foreign Exchange Contracts for the Purposes of Leveraged Foreign Exchange Trading"
          ]
        },
        { "name": "Fund Management", "products": [] },
        { "name": "Product Financing", "products": [] },
        { "name": "Providing Custodial Services", "products": [] },
        { "name": "Advising on Corporate Finance", "products": [] }
      ]
    },
    { "name": "Exempt Financial Adviser", "description": "", "sub_activities": [ ... ] },
    { "name": "Exempt Trust Company", "description": "", "sub_activities": [ ... ] },
    { "name": "Designated Payment System Settlement Institution", "description": "", "sub_activities": [ ... ] },
    { "name": "SGS Primary Dealer", "description": "", "sub_activities": [] }
  ],
  "licence_names": [
    "Designated Payment System Settlement Institution",
    "Exempt Capital Markets Services Entity",
    "Exempt Financial Adviser",
    "Exempt Trust Company",
    "Full Bank",
    "SGS Primary Dealer"
  ],
  "key_personnel": [
    { "designation": "Chief Executive",         "names": ["LEE LUNG NIEN"] },
    { "designation": "Chief Financial Officer", "names": ["Teo Mui Eng"] },
    { "designation": "Co-Head of Treasury",     "names": ["Subodh Goel", "Nathan Venkat Varada Swami"] }
  ],
  "website": "http://www.citibank.com.sg",
  "phone": "+65 62255225",
  "address": "8 MARINA VIEW #21-00 ASIA SQUARE TOWER 1 018960",
  "postal_code": "018960",
  "scraped_at": "2026-05-15T14:31:50Z"
}
````

### 💼 Who uses this

| Buyer | Why |
|---|---|
| 🛡️ **AML / KYC / compliance teams** | Authoritative list of regulated SG counterparties + licence scope for onboarding checks. |
| 🤝 **Fintech BD & sales** | Targeted contact list filtered by licence type — every Major Payment Institution, every Capital Markets Services Licensee, every Licensed Financial Adviser. |
| 🔬 **Regtech / market research** | Track licence-mix shifts across the SG financial sector quarter-over-quarter. |
| 📈 **Investors & analysts** | Map the structure of Singapore's regulated finance landscape — branch banks vs. wholesale, life vs. general insurers, payment-services tiers. |
| 🤖 **AI / data products** | Ground LLM outputs on canonical regulator-issued data. |

### 📚 Licence categories supported

Banking & finance — Local Bank • Qualifying Full Bank • Full Bank • Wholesale Bank • Merchant Bank • Finance Company • Representative Office (Banking) • Financial Holding Company (Banking) • SGS Primary Dealer

Capital markets — Capital Markets Services Licensee • Exempt Capital Markets Services Entity • Approved CIS Trustee • Licensed Trust Company • Exempt Trust Company • Approved Exchange • Approved Holding Company • Approved Clearing House • Recognised Market Operator • Recognised Clearing House • Licensed Trade Repository • Central Depository System

Financial advice — Licensed Financial Adviser • Exempt Financial Adviser

Insurance — Direct Insurer (Life/General/Composite) • Reinsurer (Life/General/Composite) • Captive Insurer (Life/General/Composite) • Lloyd's Asia Scheme • Authorised Reinsurer (Life/General/Composite) • Registered Insurance Broker • Exempt Insurance Broker • Approved Insurance Broker • Representative Office (Insurance) • Financial Holding Company (Insurance)

Payments & credit — Credit and Charge Card Licensee • Money-changing Licensee • Standard Payment Institution • Major Payment Institution • Designated Payment System Operator • Designated Payment System Settlement Institution • Licensed Credit Bureau

### 💡 Tips & tricks

- 🎯 **Scrape one category at a time** for cleaner CSV exports — every licence type has its own field structure.
- 🏎️ **Capital Markets Services Licensee** is the largest category (1,500+ records). Bump `concurrency` to 10–15 for a fast sweep.
- 🔁 **Re-run daily / weekly** to catch new licensees and licence changes. The directory is the source of truth, updated by MAS itself.
- 📝 **Open the dataset in Excel** — the `licence_names` column gives you a comma-separated flat list, the nested `licences` column has full structure.

### ❓ FAQ

**Q: Is the data official?**
Yes. It comes straight from the MAS Financial Institutions Directory at `eservices.mas.gov.sg/fid` — MAS's own regulatory register.

**Q: How fresh is each run?**
Live. Every run hits the directory in real time — there is no intermediate cache.

**Q: How big is a full sweep?**
Roughly 5,000 institutions across all 48 licence categories. A complete run takes 15–25 minutes at default concurrency.

**Q: Can I get only new / changed records since yesterday?**
Use `maxItems: 0` with a focused `categories` list — full sweeps are cheap. The directory itself does not expose per-record "last modified" timestamps.

**Q: Does this cover Investor Alert List entries (warning list)?**
No — that's a separate MAS dataset. Open an issue if you'd like a companion actor.

### 📬 Issues / requests

Bug? Field you'd like added? [Open an issue](#) on this actor's page or message the author.

# Actor input Schema

## `categories` (type: `array`):

MAS licence categories to scrape (exact names from the FID directory, e.g. "Full Bank", "Major Payment Institution", "Licensed Financial Adviser"). Leave the default to scrape every category. See the README for the full list.

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

Stop after this many institutions have been queued. Set to 0 for unlimited (scrapes every record in the selected categories — roughly 5,000 across the full directory).

## `startUrls` (type: `array`):

Optional override. Pass specific detail URLs (e.g. https://eservices.mas.gov.sg/fid/institution/detail/3022-CITIBANK-N-A) or category URLs to scrape only those records. Leave empty to use the licence-category filter above.

## `concurrency` (type: `integer`):

Parallel detail fetches. 5 is comfortable; increase up to 25 for faster sweeps of large categories (Capital Markets Services Licensee has 1,500+ records).

## Actor input object example

```json
{
  "categories": [
    "Full Bank",
    "Major Payment Institution",
    "Licensed Financial Adviser"
  ],
  "maxItems": 100,
  "startUrls": [],
  "concurrency": 5
}
```

# Actor output Schema

## `institutions` (type: `string`):

Full dataset as JSON.

## `institutionsCsv` (type: `string`):

Full dataset as CSV.

## `institutionsXlsx` (type: `string`):

Full dataset as Excel.

## `consoleView` (type: `string`):

Browse the dataset in the Apify Console.

# 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 = {
    "categories": [
        "Full Bank",
        "Major Payment Institution",
        "Licensed Financial Adviser"
    ],
    "maxItems": 100,
    "startUrls": [],
    "concurrency": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("alwaysprimedev/mas-singapore-financial-institutions-directory-scraper").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 = {
    "categories": [
        "Full Bank",
        "Major Payment Institution",
        "Licensed Financial Adviser",
    ],
    "maxItems": 100,
    "startUrls": [],
    "concurrency": 5,
}

# Run the Actor and wait for it to finish
run = client.actor("alwaysprimedev/mas-singapore-financial-institutions-directory-scraper").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 '{
  "categories": [
    "Full Bank",
    "Major Payment Institution",
    "Licensed Financial Adviser"
  ],
  "maxItems": 100,
  "startUrls": [],
  "concurrency": 5
}' |
apify call alwaysprimedev/mas-singapore-financial-institutions-directory-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=alwaysprimedev/mas-singapore-financial-institutions-directory-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "MAS Singapore Financial Institutions Directory Scraper",
        "description": "Scrape every MAS-licensed bank, insurer, payment-service provider, capital-markets licensee, and financial adviser in Singapore — with full licence breakdowns, sub-activities, key personnel, and contacts.",
        "version": "0.1",
        "x-build-id": "8Jo3aqB7fabtXOQWB"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/alwaysprimedev~mas-singapore-financial-institutions-directory-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-alwaysprimedev-mas-singapore-financial-institutions-directory-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/alwaysprimedev~mas-singapore-financial-institutions-directory-scraper/runs": {
            "post": {
                "operationId": "runs-sync-alwaysprimedev-mas-singapore-financial-institutions-directory-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/alwaysprimedev~mas-singapore-financial-institutions-directory-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-alwaysprimedev-mas-singapore-financial-institutions-directory-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "categories": {
                        "title": "Licence categories",
                        "type": "array",
                        "description": "MAS licence categories to scrape (exact names from the FID directory, e.g. \"Full Bank\", \"Major Payment Institution\", \"Licensed Financial Adviser\"). Leave the default to scrape every category. See the README for the full list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Maximum records",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Stop after this many institutions have been queued. Set to 0 for unlimited (scrapes every record in the selected categories — roughly 5,000 across the full directory)."
                    },
                    "startUrls": {
                        "title": "Start URLs (advanced)",
                        "type": "array",
                        "description": "Optional override. Pass specific detail URLs (e.g. https://eservices.mas.gov.sg/fid/institution/detail/3022-CITIBANK-N-A) or category URLs to scrape only those records. Leave empty to use the licence-category filter above.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "concurrency": {
                        "title": "Concurrency",
                        "minimum": 1,
                        "maximum": 25,
                        "type": "integer",
                        "description": "Parallel detail fetches. 5 is comfortable; increase up to 25 for faster sweeps of large categories (Capital Markets Services Licensee has 1,500+ records)."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
