# Global Regulatory & Compliance Search API (`lentic_clockss/regulatory-compliance-search`) Actor

Search for enforcement actions, financial registry records, and transparency register entries across ESMA (EU), CNIL (France), FINRA BrokerCheck (US), FDIC Bank Failures (US), EU Transparency Register, and France HATVP. One API for regulatory due diligence.

- **URL**: https://apify.com/lentic\_clockss/regulatory-compliance-search.md
- **Developed by:** [kane liu](https://apify.com/lentic_clockss) (community)
- **Categories:** Business, Automation
- **Stats:** 3 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

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

## Global Regulatory & Compliance Search API

Search enforcement actions, financial registry records, and transparency register entries across six authoritative regulatory databases — in a single API call.

### What problem does this solve?

Compliance due diligence requires checking many different regulatory databases: Has this company been fined by EU financial regulators? Is this broker registered with FINRA? Did this bank fail? Is this organisation registered as an EU lobbyist?

Each database has its own API, query format, and data schema. Aggregating them manually takes hours. This Actor does it in seconds: one input, six sources, unified output.

### Who is this for?

- **Compliance teams** running KYB (Know Your Business) due diligence on counterparties
- **Fintech developers** building compliance automation pipelines
- **Investigative journalists** researching regulatory histories of companies and individuals
- **ESG analysts** screening organisations for regulatory risk
- **Legal and risk professionals** needing fast regulatory background checks

### Data sources

#### Enforcement Actions (default: ON)

| Source | Coverage | Notes |
|--------|----------|-------|
| **ESMA Enforcement Sanctions** | EU financial enforcement | Fines and sanctions issued by European financial regulators under ESMA coordination |
| **France CNIL GDPR Sanctions** | French data protection fines | All GDPR enforcement decisions by France's data protection authority |

#### Financial Registries (default: ON)

| Source | Coverage | Notes |
|--------|----------|-------|
| **FINRA BrokerCheck** | US broker/dealer registry | Licensed brokers, firms, and regulatory history in the United States |
| **US FDIC Bank Failures** | US bank failure records | Complete history of FDIC-insured bank failures including resolution type and estimated cost |

#### Transparency Registers (default: OFF)

| Source | Coverage | Notes |
|--------|----------|-------|
| **EU Transparency Register** | EU lobbyist organisations | All organisations registered to lobby EU institutions |
| **France HATVP** | French interest representatives | Organisations lobbying French public authorities (first query may take up to 3 minutes on cold cache) |

### Input parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `searchTerms` | string[] | required | One or more names to search across all selected sources |
| `includeEnforcementActions` | boolean | `true` | Include ESMA + CNIL enforcement databases |
| `includeFinancialRegistries` | boolean | `true` | Include FINRA BrokerCheck + FDIC failures |
| `includeTransparencyRegisters` | boolean | `false` | Include EU Transparency Register + France HATVP |
| `maxResultsPerSource` | integer | `50` | Max results per source per search term (1–200) |

### Output fields

Every result includes these unified metadata fields:

| Field | Description |
|-------|-------------|
| `_source_list` | Human-readable source name (e.g. "ESMA Enforcement Sanctions") |
| `_match_category` | Category: `enforcement`, `financial_registry`, `financial_records`, or `transparency` |
| `_search_term` | The original search term that produced this result |
| `_source` | Internal source key |
| `_product_id` | SIP product ID |
| `_collected_at` | UTC ISO timestamp of collection |

Additional business-specific fields vary by source:

- **ESMA**: `entity_name`, `sanction_type`, `country`, `sanction_amount`, `legal_basis`, `infringement_type`
- **CNIL**: `case_name`, `themes`, `decision_date`, `decision_summary`, `court`
- **FINRA**: `first_name`, `last_name`, `firm_name`, `current_employer`, `states_registered`, `registration_scope`
- **FDIC**: `bank_name`, `failure_date`, `estimated_cost`, `acquirer`, `state`, `resolution_type`
- **EU Transparency**: `org_name`, `registration_category`, `country`, `org_id`, `status`, `latest_update`
- **HATVP**: `case_name`, `organization_type`, `sectors`, `spend_bracket`, `employees_declared`, `activities_count`

The Actor also writes a `RUN_SUMMARY` to the Key-Value Store with per-source status, result counts, and any errors encountered.

### Example inputs

**Search a company across enforcement and financial sources (default)**
```json
{
  "searchTerms": ["Deutsche Bank"],
  "includeEnforcementActions": true,
  "includeFinancialRegistries": true,
  "includeTransparencyRegisters": false,
  "maxResultsPerSource": 50
}
````

**Include transparency registers for lobbying research**

```json
{
  "searchTerms": ["Goldman Sachs"],
  "includeEnforcementActions": true,
  "includeFinancialRegistries": true,
  "includeTransparencyRegisters": true,
  "maxResultsPerSource": 20
}
```

**Check only financial registries (skip enforcement)**

```json
{
  "searchTerms": ["Smith"],
  "includeEnforcementActions": false,
  "includeFinancialRegistries": true,
  "includeTransparencyRegisters": false,
  "maxResultsPerSource": 100
}
```

### Example output

```json
[
  {
    "entity_name": "Deutsche Bank AG",
    "sanction_type": "Fine",
    "country": "DE",
    "sanction_amount": "2000000",
    "legal_basis": "MiFID II",
    "infringement_type": "Reporting",
    "_source_list": "ESMA Enforcement Sanctions",
    "_match_category": "enforcement",
    "_search_term": "Deutsche Bank",
    "_source": "esma_sanctions",
    "_product_id": "eu_esma_sanctions",
    "_collected_at": "2026-04-09T08:00:00Z"
  },
  {
    "first_name": "John",
    "last_name": "Deutsche",
    "firm_name": "Deutsche Bank Securities Inc.",
    "current_employer": "Deutsche Bank",
    "registration_scope": "broker-dealer",
    "_source_list": "FINRA BrokerCheck",
    "_match_category": "financial_registry",
    "_search_term": "Deutsche Bank",
    "_source": "finra_brokercheck",
    "_product_id": "us_finance_finra_brokercheck",
    "_collected_at": "2026-04-09T08:00:00Z"
  },
  {
    "case_name": "Deutsche Bank AG",
    "decision_date": "2023-11-15",
    "themes": ["banking", "data transfers"],
    "decision_summary": "Fine for unlawful international data transfers",
    "_source_list": "France CNIL GDPR Sanctions",
    "_match_category": "enforcement",
    "_search_term": "Deutsche Bank",
    "_source": "cnil_sanctions",
    "_product_id": "fr_cnil_sanctions_watch",
    "_collected_at": "2026-04-09T08:00:00Z"
  }
]
```

### Pricing

- **$0.005** per Actor start (one-time per run)
- **$0.002** per result record returned

**Cost examples:**

- 1 search term × 4 default sources × average 5 results = 20 records → **$0.045**
- 5 search terms × 6 full sources × 5 results = 150 records → **$0.305**
- Bulk screening of 50 entities with defaults → ~500 records → **$1.005**

### Notes on specific sources

**France HATVP**: The first query after a cache expiry can take up to 3 minutes as the upstream database loads. Subsequent queries return immediately. If you need HATVP data reliably, consider setting a generous timeout and checking `RUN_SUMMARY` for the HATVP source status.

**ESMA**: The Solr search backend occasionally returns 429 (rate limited). When this happens, the Actor records an `error` status for that source in `RUN_SUMMARY` and continues with other sources — it does not fail the entire run.

**EU Transparency Register**: Search requires a non-empty search term. The register covers only organisations registered to interact with EU institutions.

### Disclaimer

> **This tool performs keyword-based search across government regulatory databases. It is NOT a compliance adjudication tool or substitute for professional due diligence. Results may include false positives. Always verify against primary sources. This service does not constitute legal, regulatory, or compliance advice.**

Data is retrieved in real-time from official regulatory databases via the SIP platform. Availability depends on upstream source uptime. The Actor handles source failures gracefully — a failed source is reported in `RUN_SUMMARY` and does not prevent results from other sources.

# Actor input Schema

## `searchTerms` (type: `array`):

Names of individuals, companies, or entities to search. Enter one or more names.

## `includeEnforcementActions` (type: `boolean`):

Include ESMA financial enforcement sanctions (EU) and CNIL GDPR sanctions (France). Covers regulatory fines, penalties, and compliance decisions.

## `includeFinancialRegistries` (type: `boolean`):

Include FINRA BrokerCheck broker registry (US) and FDIC bank failure records (US).

## `includeTransparencyRegisters` (type: `boolean`):

Include EU Transparency Register (lobbyist organisations) and France HATVP interest representatives. Note: HATVP first query may take up to 3 minutes on cold cache.

## `maxResultsPerSource` (type: `integer`):

Maximum number of results to return from each data source (1-200).

## Actor input object example

```json
{
  "searchTerms": [
    "Deutsche Bank"
  ],
  "includeEnforcementActions": true,
  "includeFinancialRegistries": true,
  "includeTransparencyRegisters": false,
  "maxResultsPerSource": 50
}
```

# Actor output Schema

## `complianceResults` (type: `string`):

Dataset containing all matched records from regulatory databases, enriched with \_source\_list, \_match\_category, and \_search\_term metadata.

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

Per-source status report including query counts, result counts, durations, and any errors.

# 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 = {
    "searchTerms": [
        "Deutsche Bank"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("lentic_clockss/regulatory-compliance-search").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 = { "searchTerms": ["Deutsche Bank"] }

# Run the Actor and wait for it to finish
run = client.actor("lentic_clockss/regulatory-compliance-search").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 '{
  "searchTerms": [
    "Deutsche Bank"
  ]
}' |
apify call lentic_clockss/regulatory-compliance-search --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=lentic_clockss/regulatory-compliance-search",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Global Regulatory & Compliance Search API",
        "description": "Search for enforcement actions, financial registry records, and transparency register entries across ESMA (EU), CNIL (France), FINRA BrokerCheck (US), FDIC Bank Failures (US), EU Transparency Register, and France HATVP. One API for regulatory due diligence.",
        "version": "0.1",
        "x-build-id": "RPJQUP3nhAXKvuqQR"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/lentic_clockss~regulatory-compliance-search/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-lentic_clockss-regulatory-compliance-search",
                "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/lentic_clockss~regulatory-compliance-search/runs": {
            "post": {
                "operationId": "runs-sync-lentic_clockss-regulatory-compliance-search",
                "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/lentic_clockss~regulatory-compliance-search/run-sync": {
            "post": {
                "operationId": "run-sync-lentic_clockss-regulatory-compliance-search",
                "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",
                "required": [
                    "searchTerms"
                ],
                "properties": {
                    "searchTerms": {
                        "title": "Search terms",
                        "type": "array",
                        "description": "Names of individuals, companies, or entities to search. Enter one or more names.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "includeEnforcementActions": {
                        "title": "Enforcement actions (ESMA + CNIL)",
                        "type": "boolean",
                        "description": "Include ESMA financial enforcement sanctions (EU) and CNIL GDPR sanctions (France). Covers regulatory fines, penalties, and compliance decisions.",
                        "default": true
                    },
                    "includeFinancialRegistries": {
                        "title": "Financial registries (FINRA + FDIC)",
                        "type": "boolean",
                        "description": "Include FINRA BrokerCheck broker registry (US) and FDIC bank failure records (US).",
                        "default": true
                    },
                    "includeTransparencyRegisters": {
                        "title": "Transparency registers (EU + France)",
                        "type": "boolean",
                        "description": "Include EU Transparency Register (lobbyist organisations) and France HATVP interest representatives. Note: HATVP first query may take up to 3 minutes on cold cache.",
                        "default": false
                    },
                    "maxResultsPerSource": {
                        "title": "Max results per source",
                        "minimum": 1,
                        "maximum": 200,
                        "type": "integer",
                        "description": "Maximum number of results to return from each data source (1-200).",
                        "default": 50
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
