# Canada SEMA Sanctions Scraper (AML / KYB Screening List) (`scrapers_lat/canada-sema-sanctions-scraper`) Actor

Browse or screen names against the Consolidated Canadian Autonomous Sanctions List (SEMA). Individuals, entities and vessels with aliases, titles, DOB, target country/program, schedule and listing dates. LIST and SCREEN (fuzzy name match) modes for AML/KYB compliance.

- **URL**: https://apify.com/scrapers\_lat/canada-sema-sanctions-scraper.md
- **Developed by:** [Scrapers Lat](https://apify.com/scrapers_lat) (community)
- **Categories:** Developer tools, Automation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $15.60 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

[![Canada SEMA Sanctions Scraper (AML / KYB Screening List)](https://scrapers.lat/banners/canada-sema-sanctions-scraper.png)](https://apify.com/scrapers_lat/canada-sema-sanctions-scraper)

## Canada SEMA Sanctions Scraper (AML / KYB Screening List)

Browse, filter and screen names against Canada's official **Consolidated Canadian Autonomous Sanctions List** published by Global Affairs Canada under the **Special Economic Measures Act (SEMA)** and related regulations. Every sanctioned individual, entity and vessel is normalized into one clean schema with aliases, titles, dates of birth, target country/program, regulation schedule and listing dates, so you can run compliance screening for onboarding, KYB, AML and payment checks against the Canadian regime.

Two modes:

- **List** browse or filter the full Canadian sanctions list.
- **Screen** submit your own person, company or vessel names and get fuzzy matches against every listed party and alias, scored 0 to 1.

Pair it with our US (OFAC), EU and UN + UK OFSI sanctions actors for combined **US + EU + UN + UK + Canada** watchlist coverage.

### What you get

Here is one real record from **List** mode:

```json
{
  "mode": "list",
  "id": "CA-SEMA|Russia|1,_Part_1|2",
  "source": "Canada-SEMA",
  "entityType": "Individual",
  "name": "Andrei KLISHAS",
  "aliases": [],
  "aliasCount": 0,
  "title": null,
  "program": "Russia",
  "targetCountry": "Russia",
  "schedule": "1, Part 1",
  "item": "2",
  "dateOfBirth": null,
  "imoNumber": null,
  "dateOfListing": "2014-03-17",
  "sourceUrl": "https://www.international.gc.ca/world-monde/international_relations-relations_internationales/sanctions/consolidated-consolide.aspx",
  "observedAt": "2026-08-17T12:24:47.577Z",
  "error": null
}
```

And one real result from **Screen** mode (input name `Andrei Klishas`):

```json
{
  "mode": "screen",
  "source": "Canada-SEMA",
  "inputName": "Andrei Klishas",
  "matched": true,
  "matchCount": 1,
  "matches": [
    {
      "name": "Andrei KLISHAS",
      "matchedAlias": null,
      "entityType": "Individual",
      "program": "Russia",
      "schedule": "1, Part 1",
      "dateOfListing": "2014-03-17",
      "id": "CA-SEMA|Russia|1,_Part_1|2",
      "score": 1
    }
  ]
}
```

Names that are not on the list (for example a fictitious company) simply come back with `"matched": false` and an empty `matches` array, never an error.

### Modes and input

| Field | Mode | Description |
|-------|------|-------------|
| `mode` | both | `list` (browse and filter) or `screen` (match your own names). Default `list`. |
| `names` | screen | Array of person, entity or vessel names to check. One row is returned per name. |
| `minScore` | screen | Minimum similarity (0 to 1) for a fuzzy match. Default `0.85`. Lower is looser, higher is stricter. |
| `program` | list | Keep only records whose program / target country contains this text (for example `Russia`, `Belarus`, `Iran`, `Myanmar`). |
| `entityType` | list | `all`, `Individual`, `Entity` or `Vessel`. |
| `nameContains` | list | Keep only records whose name or any alias contains this text. |
| `listedSince` | list | Keep only records listed on or after this date (`YYYY-MM-DD`). |
| `maxEntries` | list | Maximum records to return. Free Apify plans are capped at 10 per run. |
| `withAiRisk` | both | Optional paid AI add-on (off by default). Adds a plain-English compliance risk note. |

### Output fields

| Field | Description |
|-------|-------------|
| `entityType` | `Individual`, `Entity` or `Vessel`. |
| `name` | Primary full name of the sanctioned party. |
| `aliases` / `aliasCount` | Known other names and how many. |
| `title` | Title / rank (individuals) or vessel type (vessels). |
| `program` / `targetCountry` | Sanctions program / target country in English (for example Russia, Belarus, Iran). |
| `schedule` / `item` | Regulation schedule / part and item number the party is listed under. |
| `dateOfBirth` | Date or year of birth (individuals) or build date (vessels). |
| `imoNumber` | Ship IMO number (vessels). |
| `dateOfListing` | Date the party was designated. |
| `sourceUrl` | Link to the official Global Affairs Canada list. |
| `matched` / `matchCount` / `matches` | Screen mode: whether and how well your input name matched, with scored details. |
| `aiRiskWho` / `aiWhyListed` / `aiProgram` / `aiRiskLevel` | Optional AI compliance note (paid add-on). |

### Use cases

- **Canada sanctions screening** of customers, suppliers, counterparties and beneficial owners against the SEMA list.
- **AML / KYB onboarding** checks that need a Canadian autonomous-sanctions data source alongside OFAC, EU, UN and UK.
- **SEMA compliance** monitoring for banks, fintechs, payment providers, law firms and exporters subject to Canadian measures.
- **Watchlist and adverse-media enrichment** with aliases, target country/program, schedule and listing dates.
- **Vessel screening** using ship names and IMO numbers on the Russian oil and shipping designations.
- **Periodic re-screening** of an existing book of business as new designations are added.

### Billing

This actor is **pay per event**:

| Event | Price (USD) | When it is charged |
|-------|-------------|--------------------|
| `result` | $0.015 | One sanctions record (list mode) or one screened name with its matches (screen mode). Charged only on a successful result. |
| `ai_risk` | $0.012 | Optional AI compliance risk note for a matched party. Only charged when `withAiRisk` is on and a usable note is produced. |

You are never charged on failure. Free Apify plans are capped at 10 result rows per run, and the AI add-on requires a paid plan.

### Data source

Data comes from the **Consolidated Canadian Autonomous Sanctions List** published by **Global Affairs Canada** (`international.gc.ca`), a public-domain official source covering the Special Economic Measures Act (SEMA), the Justice for Victims of Corrupt Foreign Officials Act and related regulations. This actor reads the official list only; it applies no interpretation and is not legal advice. Always confirm a potential match against the primary source before acting.

# Actor input Schema

## `mode` (type: `string`):

list = browse/filter the Consolidated Canadian Autonomous Sanctions List. screen = check your own names against the list (fuzzy AML/KYB screening).

## `names` (type: `array`):

Screen mode only. Person, entity or vessel names to check against the Canadian SEMA sanctions list. One matched/not-matched row is returned per name.

## `minScore` (type: `number`):

Screen mode only. Minimum similarity (0-1) for a fuzzy name match. Lower catches more (looser), higher is stricter. Default 0.85.

## `program` (type: `string`):

List mode filter. Keep only records whose sanctions program / target country contains this text (for example Russia, Belarus, Iran, Myanmar).

## `entityType` (type: `string`):

List mode filter. Return only individuals, only entities (companies/groups), only vessels, or all.

## `nameContains` (type: `string`):

List mode filter. Keep only records whose primary name or any alias contains this text.

## `listedSince` (type: `string`):

List mode filter. Keep only records listed on or after this date (YYYY-MM-DD).

## `maxEntries` (type: `integer`):

List mode: maximum sanctioned records to return. Free Apify plans are capped at 10 per run.

## `withAiRisk` (type: `boolean`):

Optional paid AI add-on, off by default. For each matched/returned sanctioned party, adds a plain-English risk note (who, why listed, program, risk level). Billed only when produced. Requires a paid Apify plan.

## Actor input object example

```json
{
  "mode": "list",
  "names": [
    "Vladimir Putin",
    "Acme Trading Ltd"
  ],
  "minScore": 0.85,
  "entityType": "all",
  "maxEntries": 100,
  "withAiRisk": false
}
```

# 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 = {
    "names": [
        "Vladimir Putin",
        "Acme Trading Ltd"
    ],
    "maxEntries": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapers_lat/canada-sema-sanctions-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 = {
    "names": [
        "Vladimir Putin",
        "Acme Trading Ltd",
    ],
    "maxEntries": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapers_lat/canada-sema-sanctions-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 '{
  "names": [
    "Vladimir Putin",
    "Acme Trading Ltd"
  ],
  "maxEntries": 100
}' |
apify call scrapers_lat/canada-sema-sanctions-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapers_lat/canada-sema-sanctions-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/rIXuZvLNlt6bHf8nT/builds/bNP4JxUp6zPtJjCMd/openapi.json
