# FinCEN Advisories and AML Bulletins PDF Scraper (`jungle_synthesizer/fincen-advisories-bulletins-pdf-scraper`) Actor

Scrape every FinCEN advisory, alert, notice, fact sheet, financial trend analysis, and SAR Activity Review PDF. Returns structured red-flag indicators, applicable industries, and typology tags plus full PDF text -- built for AML compliance and sanctions-screening teams.

- **URL**: https://apify.com/jungle\_synthesizer/fincen-advisories-bulletins-pdf-scraper.md
- **Developed by:** [BowTiedRaccoon](https://apify.com/jungle_synthesizer) (community)
- **Categories:** Business, Other, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $8.00 / 1,000 record scrapeds

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?

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 Advisory and AML Bulletin PDF Scraper

Scrape advisories, alerts, notices, fact sheets, financial trend analyses, and SAR Activity Reviews from [FinCEN.gov](https://www.fincen.gov/resources/advisoriesbulletinsfact-sheets). Returns structured red-flag indicators, typology tags, applicable industries, and the full extracted PDF text for every document — 500+ publications going back to 1999.

***

### FinCEN Advisory Scraper Features

- Covers all six FinCEN document families in one run — advisories, alerts, notices, fact sheets, financial trend analyses, and SAR Activity Reviews
- Downloads and parses every source PDF, no manual "open, save, repeat"
- Tags each document with typology (ransomware, sanctions evasion, human trafficking, and 25+ others), applicable industries, and geographic focus — pulled straight from the text, not guessed from the title
- Pulls the red-flag indicator list out of each document, formatted as an array your rules engine can actually consume
- Extracts SAR field references and key terms from the filing-recommendations section
- Surfaces sentences that reference OFAC, DOJ, or SDN List actions — the join point to a sanctions-screening workflow
- Filter by document type, publication year range, or a keyword on the title

***

### Who Uses FinCEN Advisory Data?

- **AML compliance teams** — reflect every new advisory in transaction-monitoring rules without reading each PDF by hand
- **Crypto and fintech KYC teams** — track typology updates that affect onboarding and screening logic, especially the virtual-currency-tagged advisories
- **Sanctions-screening vendors** — feed OFAC/SDN cross-references into an existing screening pipeline
- **Compliance consultants** — build a searchable archive of red-flag indicators across two decades of FinCEN guidance, instead of a bookmarks folder
- **Financial-crime journalists and researchers** — pull the full text and typology tags for a specific case or region without wading through the site's own navigation

***

### How the FinCEN Advisory Scraper Works

1. Pick which document types you want, or leave all six selected for the full corpus.
2. Optionally narrow by publication year or a title keyword.
3. The scraper fetches each matching document's PDF, extracts the text, and classifies it against a typology and industry vocabulary.
4. You get one structured record per document — title, date, PDF link, typology tags, red flags, and the full text — ready to load into a rules engine or a database.

***

### Input

```json
{
  "documentTypes": ["advisory", "alert", "notice", "fact_sheet", "financial_trend_analysis", "sar_activity_review"],
  "yearFrom": 2020,
  "yearTo": 2026,
  "keywordFilter": "",
  "maxItems": 50
}
```

| Field             | Type    | Default                                                                             | Description                                                                 |
|--------------------|---------|--------------------------------------------------------------------------------------|-------------------------------------------------------------------------------|
| `documentTypes`    | array   | all six (`advisory`, `alert`, `notice`, `fact_sheet`, `financial_trend_analysis`, `sar_activity_review`) | Which document families to include.                                          |
| `yearFrom`         | integer | none                                                                                  | Only include documents published in or after this year. Leave blank for no lower bound (earliest coverage: 1999). |
| `yearTo`           | integer | none                                                                                  | Only include documents published in or before this year. Leave blank for the most recent publication. |
| `keywordFilter`    | string  | `""`                                                                                  | Case-insensitive contains filter on title/description.                       |
| `maxItems`         | integer | `10`                                                                                  | Maximum number of documents to scrape.                                       |

Narrowing to a single document type, e.g. only alerts:

```json
{
  "documentTypes": ["alert"],
  "maxItems": 20
}
```

***

### FinCEN Advisory Scraper Output Fields

```json
{
  "document_id": "FIN-2026-A002",
  "document_type": "advisory",
  "title": "Joint Advisory on Non-Work Authorized Populations and Their Employers and Risks to the Integrity of the U.S. Financial System",
  "publication_date": "2026-06-05",
  "pdf_url": "https://www.fincen.gov/system/files/2026-06/FinCEN-Advisory-Non-Work-Authorized-Populations.pdf",
  "subject_typology": ["human_trafficking", "human_smuggling", "identity_theft"],
  "applicable_industries": ["banks", "money_services_businesses"],
  "geographic_focus": ["United States"],
  "red_flag_indicators": [
    "A customer presents identification documents that appear altered or inconsistent with other records on file.",
    "A customer's employer has a pattern of hiring individuals without valid work authorization."
  ],
  "suggested_sar_codes": ["SAR field 2 (\"Filing Institution Note to FinCEN\")"],
  "related_actions": ["The Department of Justice announced related enforcement actions against employers."],
  "executive_summary_text": "The Financial Crimes Enforcement Network (FinCEN) is issuing this advisory to alert financial institutions to...",
  "full_text": "...",
  "source_url": "https://www.fincen.gov/resources/advisories/fincen-advisory-fin-2026-a002"
}
```

| Field                     | Type   | Description                                                                                      |
|----------------------------|--------|----------------------------------------------------------------------------------------------------|
| `document_id`               | string | FinCEN's own identifier where published (e.g. `FIN-2026-A002`), else a stable derived id           |
| `document_type`             | string | One of `advisory`, `alert`, `notice`, `fact_sheet`, `financial_trend_analysis`, `sar_activity_review` |
| `title`                     | string | Document title or subject line                                                                     |
| `publication_date`          | string | ISO 8601 date where the source provides one                                                        |
| `pdf_url`                   | string | Direct link to the source PDF on fincen.gov                                                        |
| `subject_typology`          | array  | Typology tags such as ransomware, sanctions evasion, human trafficking — best-effort from the text  |
| `applicable_industries`     | array  | Industry tags such as banks, casinos, money services businesses — best-effort from the text         |
| `geographic_focus`          | array  | Country/region names mentioned in the document                                                     |
| `red_flag_indicators`       | array  | The bulleted red-flag indicators listed in the document, where present                             |
| `suggested_sar_codes`       | array  | SAR field references and key terms found in the filing-recommendations section, where present      |
| `related_actions`           | array  | Sentences referencing OFAC, DOJ, or SDN List actions, where present                                 |
| `executive_summary_text`    | string | The first substantial paragraph of the document                                                    |
| `full_text`                 | string | The complete extracted text of the source PDF                                                      |
| `source_url`                | string | The fincen.gov page this record was discovered on                                                  |

Not every document carries every field — a two-page fact sheet rarely has a red-flag section, and older scanned documents can come back with a thinner `full_text`. The core fields (`document_id`, `document_type`, `title`, `pdf_url`) are populated on every record.

***

### FAQ

#### How do I scrape FinCEN advisories?

Run this actor with the document types you want, or leave the default (all six) to pull the full corpus. No FinCEN account or login is required — the advisories, alerts, and bulletins are public.

#### What data can I get from FinCEN.gov?

Every advisory, alert, notice, fact sheet, financial trend analysis, and SAR Activity Review FinCEN has published, going back to 1999. That's title, date, the PDF link, typology and industry tags, red-flag indicators, and the full document text.

#### Can I filter by document type or year?

Yes. Set `documentTypes` to any subset of the six families, and `yearFrom`/`yearTo` to bound the publication date. Leave both year fields blank to pull the entire date range.

#### Does this include SAR Activity Review issues?

Yes — `document_type: "sar_activity_review"` covers the SAR Activity Review series, SAR Stats issues, and the "By The Numbers" bulletins FinCEN published under the same technical-bulletins program.

***

### Need More Features?

Need custom fields, filters, or a different target site? [File an issue](https://console.apify.com/actors/issues) or get in touch.

### Why Use the FinCEN Advisory Scraper?

- **Full corpus, one run** — six document families and 25+ years of coverage, not just the current year's alerts.
- **Pre-classified, not just downloaded** — typology, industry, and red-flag tags are extracted from the text, so you're not opening PDFs to find the section you need.
- **Structured for a rules engine** — red-flag indicators and SAR field references come back as arrays, ready to feed a transaction-monitoring pipeline instead of a paragraph you have to re-parse.

# Actor input Schema

## `sp_intended_usage` (type: `string`):

What will this data feed? E.g. lead lists, KYB checks, price tracking.

## `sp_improvement_suggestions` (type: `string`):

Provide any feedback or suggestions for improvements.

## `sp_contact` (type: `string`):

We'll personally help with your use case. No spam.

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

Which FinCEN document families to include. Leave all selected for the full corpus.

## `yearFrom` (type: `integer`):

Only include documents published in or after this year. Leave blank for no lower bound (earliest coverage: 1999).

## `yearTo` (type: `integer`):

Only include documents published in or before this year. Leave blank for no upper bound (up to the most recent publication).

## `keywordFilter` (type: `string`):

Case-insensitive contains filter on title/description.

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

Maximum number of documents to scrape.

## Actor input object example

```json
{
  "sp_intended_usage": "Describe your intended use...",
  "sp_improvement_suggestions": "Share your suggestions here...",
  "sp_contact": "Share your email here...",
  "documentTypes": [
    "advisory",
    "alert",
    "notice",
    "fact_sheet",
    "financial_trend_analysis",
    "sar_activity_review"
  ],
  "maxItems": 10
}
```

# 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 = {
    "sp_intended_usage": "Describe your intended use...",
    "sp_improvement_suggestions": "Share your suggestions here...",
    "sp_contact": "Share your email here...",
    "documentTypes": [
        "advisory",
        "alert",
        "notice",
        "fact_sheet",
        "financial_trend_analysis",
        "sar_activity_review"
    ],
    "keywordFilter": "",
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("jungle_synthesizer/fincen-advisories-bulletins-pdf-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 = {
    "sp_intended_usage": "Describe your intended use...",
    "sp_improvement_suggestions": "Share your suggestions here...",
    "sp_contact": "Share your email here...",
    "documentTypes": [
        "advisory",
        "alert",
        "notice",
        "fact_sheet",
        "financial_trend_analysis",
        "sar_activity_review",
    ],
    "keywordFilter": "",
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("jungle_synthesizer/fincen-advisories-bulletins-pdf-scraper").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 '{
  "sp_intended_usage": "Describe your intended use...",
  "sp_improvement_suggestions": "Share your suggestions here...",
  "sp_contact": "Share your email here...",
  "documentTypes": [
    "advisory",
    "alert",
    "notice",
    "fact_sheet",
    "financial_trend_analysis",
    "sar_activity_review"
  ],
  "keywordFilter": "",
  "maxItems": 10
}' |
apify call jungle_synthesizer/fincen-advisories-bulletins-pdf-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jungle_synthesizer/fincen-advisories-bulletins-pdf-scraper"
        }
    }
}

```

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/mVkpgLfW15BDDp5Mm/builds/5b0KXnntmr3D0Ulhp/openapi.json
