# FinCEN MSB Scraper - Money Services Business Leads (`scrapesage/fincen-msb-scraper`) Actor

Scrape the official FinCEN MSB Registrant Search: every US Money Services Business — money transmitters, check cashers, FX dealers, prepaid-access & money-order firms — with address, MSB activities, multi-state footprint, branches, registration history, lead score & monitoring.

- **URL**: https://apify.com/scrapesage/fincen-msb-scraper.md
- **Developed by:** [Scrape Sage](https://apify.com/scrapesage) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$6.00 / 1,000 msb registrant / lead records

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 web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## FinCEN MSB Scraper — Money Services Business Leads (Money Transmitters, Check Cashers, FX Dealers)

Extract every **registered Money Services Business (MSB)** in the United States straight from the **official FinCEN MSB Registrant Search** — money transmitters, check cashers, foreign-exchange dealers, prepaid-access providers, and money-order / traveler's-check firms — as clean, structured **B2B leads** for fintech, banking, and AML/compliance.

Each record ships the firmographics **plus** what no directory gives you: the exact **MSB activities** the business is registered for, its **multi-state operating footprint**, branch count, full **registration history**, and a derived **lead score**.

No login, no cookies, no browser, no API key — fast HTML extraction direct from FinCEN.

### Why this FinCEN MSB scraper?

The FinCEN MSB registrant list is *the* canonical roster of who is legally doing money-services business in the US — exactly the prospect list that sponsor banks, BaaS platforms, KYC/AML vendors, money-transmitter-license consultants, and correspondent banks need. But the official search only lets you look at one state at a time and returns a raw HTML table. This actor turns it into a **rich, queryable, monitorable dataset**:

| Data | FinCEN site | This actor |
|---|---|---|
| Legal name, DBA, full mailing address | ✅ one state at a time | ✅ all states in one run |
| MSB activities | ⚠️ numeric codes (`409 415 499`) | ✅ decoded labels + boolean flags |
| Money-transmitter / FX / prepaid flags | ❌ | ✅ per-activity booleans |
| Multi-state operating footprint | ⚠️ raw list | ✅ count, nationwide flag, territories served |
| Branch count | ✅ | ✅ |
| Registration history (first / latest filing, count) | ❌ one row per filing | ✅ deduped + aggregated per business |
| Lead score (0–100) + lead signals | ❌ | ✅ |
| Filter by activity, footprint, recency, name, ZIP | ❌ | ✅ |
| "Only new / renewed registrants" monitoring | ❌ | ✅ monitor mode |

### Use cases

- **Lead generation (fintech & banking)** — registered MSBs are active buyers of sponsor banking, money-transmitter licensing, payment rails, KYC/AML/transaction-monitoring software, and compliance consulting. Score them by `leadScore`, target money transmitters (`isMoneyTransmitter`) or nationwide operators (`operatesNationwide`).
- **AML / compliance prospecting** — build a clean book of every check casher, FX dealer, or prepaid-access provider in a state or nationwide, with their full activity profile.
- **Market & competitive intelligence** — map the money-services landscape by state, activity type, and operating footprint; size competitors by branch count and multi-state reach.
- **New-entrant monitoring** — FinCEN MSB registrations must be renewed every two years, so a fresh `latestReceivedDate` is a strong intent signal. Run on a schedule with monitor mode to capture **only new or renewing** money-services businesses as they appear.
- **Risk & due diligence** — verify whether a counterparty is a FinCEN-registered MSB and see exactly what it is registered to do and where.

### How to use

1. [Sign up for Apify](https://console.apify.com/sign-up) — the free plan is enough to try this actor.
2. Open the **FinCEN MSB Scraper**, choose location states (or leave empty for the whole US), add any filters, and click **Start**.
3. Watch results stream into the dataset table.
4. **Export** as JSON, CSV, Excel, XML, or RSS — or pull results programmatically via the [Apify API](https://docs.apify.com/api/v2).

### Input

```json
{
    "locationStates": ["FL", "NY", "TX"],
    "moneyTransmittersOnly": true,
    "newRegistrationsWithinMonths": 12,
    "sortBy": "leadScore",
    "maxResults": 1000
}
```

- **locationStates** — registrant home states (two-letter codes). **Leave empty to scan every US state + DC** (and territories, unless `includeTerritories` is off). Territories (`PR`, `GU`, `VI`…) and foreign codes (Mexican states, Canadian provinces, `XX`) are also accepted.
- **includeTerritories** *(default true)* — when `locationStates` is empty, also scan US territories.
- **cities / zipCodes / businessNameQuery** — narrow by city (exact), ZIP (full or prefix), or name/DBA contains.
- **activities** — keep only MSBs offering any selected activity (Money transmitter, FX dealer, prepaid access, check casher, money orders, traveler's checks, other).
- **moneyTransmittersOnly** *(default false)* — shortcut for activity `409` only.
- **servicesInStates** — keep only MSBs that *operate* in any of these states (based on declared states of operation, not just HQ).
- **nationwideOnly** *(default false)* — only MSBs operating in all 50 states.
- **minActivities / minBranches** — minimum number of MSB activities / branches.
- **registeredAfter / registeredBefore / newRegistrationsWithinMonths** — filter by most-recent registration date.
- **maxResults** *(default 1000)* — cap after dedupe + filtering + sorting.
- **sortBy** — `leadScore` (default), `recentRegistration`, `mostActivities`, `mostBranches`, `mostStates`.
- **monitorMode / monitorKey** — emit only new / renewed registrants since the last run (see below).

### Output

One record per **unique registered MSB** (repeat filings for the same business are deduped and aggregated into a registration history):

```json
{
    "legalName": "Acme Global Remit LLC",
    "dbaName": "Acme Pay",
    "street": "100 Market St Ste 400",
    "city": "Miami",
    "state": "FL",
    "zip": "33131",
    "fullAddress": "100 Market St Ste 400, Miami, FL, 33131",
    "msbActivityCodes": ["409", "415", "413"],
    "msbActivities": [
        "Money transmitter",
        "Dealer in foreign exchange",
        "Seller of prepaid access"
    ],
    "activityCount": 3,
    "isMoneyTransmitter": true,
    "isCheckCasher": false,
    "isForeignExchangeDealer": true,
    "isPrepaidAccess": true,
    "isPrepaidAccessSeller": true,
    "isPrepaidAccessProvider": false,
    "dealsMoneyOrders": false,
    "dealsTravelersChecks": false,
    "statesOfOperation": ["AL", "AZ", "CA", "FL", "NY", "TX", "..."],
    "statesOfOperationCount": 42,
    "usStatesServedCount": 40,
    "operatesNationwide": false,
    "servesTerritories": true,
    "territoriesServed": ["Puerto Rico"],
    "allStatesTerritoriesForeignFlag": "A",
    "foreignLocation": null,
    "branchCount": 6,
    "authSignDate": "2026-03-12",
    "receivedDate": "2026-03-12",
    "firstReceivedDate": "2022-02-01",
    "latestReceivedDate": "2026-03-12",
    "registrationCount": 3,
    "registrationHistory": ["2022-02-01", "2024-02-15", "2026-03-12"],
    "leadScore": 81,
    "leadSignals": [
        "Money transmitter (regulated, high banking/compliance need)",
        "Dealer in foreign exchange",
        "Operates in 42 states",
        "6 branches",
        "Registered/renewed in the last 12 months"
    ],
    "sourceUrl": "https://www.fincen.gov/msb-registrant-search",
    "scrapedAt": "2026-06-20T18:00:00.000Z"
}
```

#### MSB activity codes

| Code | Activity |
|---|---|
| 409 | Money transmitter |
| 415 | Dealer in foreign exchange |
| 414 | Provider of prepaid access |
| 413 | Seller of prepaid access |
| 408 | Check casher (incl. traveler's checks & money orders) |
| 404 | Issuer of money orders |
| 405 | Seller of money orders |
| 401 | Issuer of traveler's checks |
| 402 | Seller of traveler's checks |
| 499 | Other |

### Monitoring — capture only new & renewed registrants

Turn on **monitorMode** and the actor remembers (in a named key-value store) which registrants it has already returned. On the next run it emits **only** businesses that are brand new, or that filed a **newer registration** (a renewal) — each tagged with a `monitorEvent` of `new` or `re_registered`.

- Use a distinct **monitorKey** per saved watch (e.g. one per state or activity type) so monitors don't share state.
- Monitoring is **orthogonal to [Apify Schedules](https://docs.apify.com/platform/schedules)**: the Schedule decides *when* the actor runs; monitor mode decides *what counts as new*. Combine them to drip fresh MSB leads into your CRM automatically.

### Automate & schedule

Run this actor on autopilot and pull results into your own stack:

- **[Apify API](https://docs.apify.com/api/v2)** — start runs, fetch datasets, and manage schedules over REST.
- **[apify-client for JavaScript](https://docs.apify.com/api/client/js/)** and **[apify-client for Python](https://docs.apify.com/api/client/python/)** — official SDKs.
- **[Schedules](https://docs.apify.com/platform/schedules)** — run it daily/weekly with monitor mode to capture only newly registered or renewed money-services businesses.
- **[Webhooks](https://docs.apify.com/platform/integrations/webhooks)** — trigger downstream actions (CRM import, Slack alert, email sequence) the moment a run finishes.

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

const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });

const run = await client.actor('scrapesage/fincen-msb-scraper').call({
    locationStates: ['CA', 'NY', 'FL'],
    moneyTransmittersOnly: true,
    sortBy: 'leadScore',
    maxResults: 1000,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} MSB leads`);
```

### Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

- **[Make](https://docs.apify.com/platform/integrations/make)** — multi-step automation scenarios.
- **[Zapier](https://docs.apify.com/platform/integrations/zapier)** — push new MSB leads straight into your CRM.
- **[Slack](https://docs.apify.com/platform/integrations/slack)** — get notified when a monitored watch finds new registrants.
- **[Google Drive / Sheets](https://docs.apify.com/platform/integrations/drive)** — auto-export every run to a spreadsheet.
- **[Airbyte](https://docs.apify.com/platform/integrations/airbyte)** — pipe results into your data warehouse.
- **[GitHub](https://docs.apify.com/platform/integrations/github)** — trigger runs from commits or releases.

### Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. You can call this actor from Claude, ChatGPT, or any agent framework through the **[Apify MCP server](https://docs.apify.com/platform/integrations/mcp)** — ask your assistant to "list every money transmitter registered in Florida in the last year with their operating-state footprint" and let it run this scraper for you.

### Agent-ready: autonomous payments (x402 & Skyfire)

This actor is **agent-ready** — AI agents can discover it, run it, and **pay for it autonomously**, with no Apify account and no human in the loop. It uses [pay-per-event](https://docs.apify.com/platform/actors/publishing/monetize/pay-per-event) pricing and [limited permissions](https://docs.apify.com/platform/actors/development/permissions), so it qualifies for Apify's agentic-payment standards:

- **[x402](https://docs.apify.com/platform/integrations/x402)** — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp) — no account, no API key.
- **[Skyfire](https://docs.apify.com/platform/integrations/skyfire)** — agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

### More scrapers from scrapesage

Build a complete **financial & government B2B lead-gen stack**:

- **[US Banks & Credit Unions Scraper](https://apify.com/scrapesage/us-banks-credit-unions-scraper)** — FDIC banks + NCUA credit unions with financials, branches & leads.
- **[SBA Loan Leads Scraper](https://apify.com/scrapesage/sba-loan-leads-scraper)** — 7(a) & 504 financed small businesses and their lenders.
- **[Financial Advisor & Broker Scraper](https://apify.com/scrapesage/financial-advisor-scraper)** — FINRA + SEC registered advisors and brokers.
- **[US Business Formation Scraper](https://apify.com/scrapesage/us-business-formation-scraper)** — newly formed LLCs & corporations as fresh B2B leads.
- **[Nonprofit & IRS 990 Scraper](https://apify.com/scrapesage/nonprofit-990-scraper)** — charities, officers, financials & leads.
- **[USAspending Scraper](https://apify.com/scrapesage/usaspending-scraper)** — federal awards, contractors & grant recipients.
- **[FEC Campaign Finance Scraper](https://apify.com/scrapesage/fec-campaign-finance-scraper)** — donors, PACs & lobbying intelligence.
- **[EPA ECHO Scraper](https://apify.com/scrapesage/epa-echo-scraper)** — regulated facilities, violations & compliance leads.

### Tips

- **Whole-US runs**: leaving `locationStates` empty scans 50 states + DC (+ territories) — one request per state, a couple of minutes total. The `maxResults` cap controls output size; with `sortBy: leadScore` the highest-value businesses come first.
- **Target the money-transmitter segment** with `moneyTransmittersOnly` (or `activities: ["409"]`) — the most regulated, highest-LTV buyers.
- **Find everyone licensed in your state** with `servicesInStates` — this catches out-of-state MSBs that operate in your market, not just locally headquartered ones.
- **Recurring monitoring**: combine [Schedules](https://docs.apify.com/platform/schedules) with `monitorMode` to track only newly registered or renewed MSBs.

### FAQ

**Where does the data come from?** The official **[FinCEN MSB Registrant Search](https://www.fincen.gov/msb-registrant-search)** — the public registry every US money-services business must file with under the Bank Secrecy Act. This actor reads the same public results a human would see, with no login or API key.

**Why does a business appear once when it filed several times?** Registrations are renewed every two years, so FinCEN shows one row per filing. The actor deduplicates by business and keeps the latest profile, while preserving the full `registrationHistory` (first/latest received dates and filing count).

**Are emails or phone numbers included?** No — FinCEN's MSB registry does not publish contact emails or phone numbers, only the registered legal name, DBA, mailing address, activities, and operating footprint. The actor never fabricates contact data; every field reflects what FinCEN actually publishes.

**Can I export to Google Sheets, CSV, or Excel?** Yes — one click in the dataset view, or automatically on every run via the [Google Drive integration](https://docs.apify.com/platform/integrations/drive).

**How do I monitor new money-services businesses automatically?** Turn on `monitorMode`, set a `monitorKey`, and create a [Schedule](https://docs.apify.com/platform/schedules). Each run emits only new or renewed registrants; add a [webhook](https://docs.apify.com/platform/integrations/webhooks) or [Zapier zap](https://docs.apify.com/platform/integrations/zapier) to push them into your CRM.

**Is this legal?** This actor collects publicly available registration data published by FinCEN for exactly this purpose (public verification). You are responsible for using the data in compliance with applicable laws and FinCEN's terms.

**A field is null — why?** Some registrants genuinely don't list a DBA, a foreign location, or a branch count. Fields are `null` only when FinCEN doesn't publish that value, not because the scraper skipped them.

### Need help?

Open an issue on the actor's **Issues** tab, or visit the [Apify help center](https://help.apify.com/). Feature requests are welcome — this actor is actively maintained.

# Actor input Schema

## `locationStates` (type: `array`):

Filter by the registrant's physical (home) state — two-letter USPS codes, e.g. <code>CA</code>, <code>TX</code>, <code>NY</code>, <code>FL</code>, <code>WY</code>. US territories (<code>PR</code>, <code>GU</code>, <code>VI</code>…) and foreign codes (Mexican states, Canadian provinces, <code>XX</code>) are also accepted. <b>Leave empty to scan every US state + DC</b> (and territories, unless turned off below).

## `includeTerritories` (type: `boolean`):

When <b>Location states</b> is empty, also scan US territories — Puerto Rico, Guam, US Virgin Islands, American Samoa, N. Mariana Islands, and the Freely Associated States. Turn off for the 50 states + DC only.

## `cities` (type: `array`):

Keep only registrants whose city matches (case-insensitive, exact city name), e.g. <code>Sheridan</code>, <code>Miami</code>, <code>Cheyenne</code>.

## `zipCodes` (type: `array`):

Keep only registrants whose ZIP matches — full ZIP (<code>82801</code>) or a prefix (<code>828</code> matches all 828xx).

## `businessNameQuery` (type: `string`):

Only return registrants whose legal name or DBA contains this text (case-insensitive), e.g. <code>exchange</code>, <code>capital</code>, <code>remit</code>, or a specific company name.

## `activities` (type: `array`):

Keep only registrants offering <b>any</b> of the selected MSB activities. Leave empty for all activity types.

## `moneyTransmittersOnly` (type: `boolean`):

Shortcut for the highest-value, most-regulated segment — only registrants offering <b>Money transmitter</b> (activity 409). These businesses need money-transmitter licensing, sponsor banking, KYC/AML and compliance services.

## `servicesInStates` (type: `array`):

Keep only registrants that offer MSB services in <b>any</b> of these states (two-letter codes) — based on the registrant's declared states of operation, regardless of where it is headquartered. e.g. <code>CA</code> finds every MSB licensed to operate in California.

## `nationwideOnly` (type: `boolean`):

Only registrants that operate in all 50 states — the largest, multi-state-licensed money-services businesses.

## `minActivities` (type: `integer`):

Only registrants offering at least this many distinct MSB activities (1–10). Higher = more full-service.

## `minBranches` (type: `integer`):

Only registrants reporting at least this many branch locations.

## `registeredAfter` (type: `string`):

Only registrants whose most recent registration was received on or after this date (<code>YYYY-MM-DD</code>). Surfaces newer entrants.

## `registeredBefore` (type: `string`):

Only registrants whose most recent registration was received on or before this date (<code>YYYY-MM-DD</code>).

## `newRegistrationsWithinMonths` (type: `integer`):

Shortcut to keep only registrants whose most recent registration was received within this many months — high-intent new / renewing money-services businesses.

## `maxResults` (type: `integer`):

Maximum number of registrant records to return in this run (after dedupe, filtering and sorting).

## `sortBy` (type: `string`):

<b>Lead score</b> = highest-value / highest-intent first (recommended). Or rank by most recent registration, most activities, most branches, or widest operating footprint.

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

Remember which registrants were already returned (in a named key-value store) and emit ONLY businesses that are <b>new</b> or have a <b>newer registration</b> (renewal) since the last run — each tagged with a <code>monitorEvent</code> (<code>new</code> or <code>re\_registered</code>). FinCEN updates the registrant list continuously; run on a Schedule to capture fresh money-services businesses as leads. Works alongside Apify Schedules (the schedule starts the run; monitoring decides what's new).

## `monitorKey` (type: `string`):

Names the memory used by monitoring mode. Use a distinct key per saved watch (e.g. per state or activity type) so different monitors don't share state.

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

Optional proxy. The FinCEN MSB Registrant Search is queried directly and needs no proxy — leave this off for the fastest queries. Enable Apify Proxy only if your network requires it.

## Actor input object example

```json
{
  "locationStates": [
    "WY"
  ],
  "includeTerritories": true,
  "moneyTransmittersOnly": false,
  "nationwideOnly": false,
  "maxResults": 1000,
  "sortBy": "leadScore",
  "monitorMode": false,
  "monitorKey": "default",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

All scraped MSB registrant records in the default dataset, each with firmographics, MSB activity classification, operating-state footprint, branch count, registration history and a lead score.

# 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 = {
    "locationStates": [
        "WY"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapesage/fincen-msb-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 = {
    "locationStates": ["WY"],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapesage/fincen-msb-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 '{
  "locationStates": [
    "WY"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call scrapesage/fincen-msb-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapesage/fincen-msb-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

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