AML & Sanctions Screening for AI Agents (OFAC, EU, UN, UK) avatar

AML & Sanctions Screening for AI Agents (OFAC, EU, UN, UK)

Pricing

from $3.00 / 1,000 results

Go to Apify Store
AML & Sanctions Screening for AI Agents (OFAC, EU, UN, UK)

AML & Sanctions Screening for AI Agents (OFAC, EU, UN, UK)

Screen any name or company against global sanctions & watchlists (OFAC SDN, EU, UN, UK OFSI) for KYC/AML. Fuzzy name matching with risk scores, programs, aliases, dates of birth & source lists. Real-time compliance grounding for AI agents & LLMs.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Haketa

Haketa

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

19 hours ago

Last modified

Features

Limited permissions

Share

Sanctions & Watchlist Screening Scraper — OFAC, EU, UN & UK for AI Agents, KYC & AML

Apify Actor Maintenance Data Export Compliance Scale

Screen any person or company name against the world's major sanctions and watchlists in a single call. This sanctions screening Actor takes a list of names and returns, for each one, whether it matches a sanctioned party — with a risk score, the sanctions programs, aliases, dates of birth, nationalities, addresses and the source list behind every match. Use it to scrape sanctions data and screen counterparties across OFAC SDN, the EU consolidated list, the UN Security Council list and the UK Sanctions List with no login, no API keys and no coding.

Export every screening result to JSON, CSV, Excel, or API.

Built for AI agents, KYC/AML onboarding teams, compliance and RegTech tooling, fintechs, payment processors, law firms, OSINT investigators and due-diligence analysts who need structured, machine-readable sanctions matches on demand.


⚡ At a glance

FeatureDetails
Primary SourcesUS OFAC (SDN + Consolidated), EU Consolidated List, UN Security Council, UK OFSI / FCDO
Entity Database31,000+ sanctioned individuals, companies, banks, vessels & aircraft
Matching EngineRecall-first fuzzy matching (Levenshtein distance + token-set containment)
Throughput & SpeedScreens 1,000+ names in seconds; complete lists indexed in-memory
Keyless & PublicOfficial government open data; 100% public-domain sources
Output FormatsDataset items in JSON, CSV, Excel, XML, HTML, RSS
Streaming PipelineChunked dataset push ensuring stable O(1) memory during 10K+ name batches
IntegrationApify REST API, webhooks, Python SDK, Node.js SDK, LangChain, Make, Zapier
Pricing & CostLow consumption; keyless downloads with no monthly API seat licenses

🔎 Why scrape sanctions lists?

Sanctions data is scattered across multiple government websites, each in its own awkward format — one ships raw CSV, another complex XML, another splits names and aliases across separate positional text files, and official download URLs frequently shift. Keeping a live, unified, searchable copy requires heavy maintenance. Furthermore, a large language model cannot reliably do this from memory: sanctions lists change weekly, and a hallucinated answer in compliance creates unacceptable legal risk.

This sanctions screening Actor solves that challenge. It pulls the latest official lists at runtime, unifies them into one clean schema, and fuzzy-matches your submitted names against every alias, spelling variant, and transliteration (e.g. Wagner ↔ Vagner, Cyrillic ↔ Latin). You get back a single, consistent record per name that an AI agent, spreadsheet, or compliance workflow can consume directly. Because the sources are public, open-license government data, screening is fast, cost-effective, and always reflects the current designations.

Common reasons teams scrape sanctions lists:

  • KYC / AML onboarding — screen new customers, suppliers, directors, or beneficial owners before doing business.
  • AI agent compliance grounding — let an LLM agent verify an entity in real time and receive a structured, sourced verdict.
  • Ongoing portfolio monitoring — re-screen customer databases on a regular schedule as designations evolve.
  • Transaction & trade compliance — vet counterparties, intermediaries, and vessels before funds or cargo clear.
  • Due diligence & M&A investigations — verify the individuals and corporate holding structures behind deals.
  • RegTech & data pipelines — feed a unified, de-duplicated sanctions dataset into proprietary screening engines.
  • Journalism & OSINT — quickly confirm whether an individual or company appears on active sanctions registries.

✨ What this sanctions screening scraper does

  • ✅ Screens against four major official lists — US OFAC (SDN + Consolidated with alternate names & addresses), the European Union consolidated financial sanctions list, the UN Security Council Consolidated List, and the UK Sanctions List (FCDO/OFSI). That covers 31,000+ sanctioned people, companies, and vessels.
  • ✅ One clean record per name — submit 10 names or 10,000; each returns a structured verdict with a confidence score and full match payload.
  • ✅ Recall-first fuzzy matching — normalizes case, punctuation, and accents, matches against every alias and transliteration, and scores each candidate 0–100 with token and edit-distance similarity.
  • ✅ Rich identity fields — every match carries name, score, source, type (Person / Entity / Vessel), programs, countries, nationalities, birthDates, listedOn, aliases, addresses, remarks (passport / place of birth / reasons), sourceId, and sourceUrl.
  • ✅ Fine-grained filtering — filter by source list, entity type (person / entity / vessel), country / nationality, minimum confidence, and max matches per name.
  • ✅ Always current — the full lists are re-fetched from official sources on every run, eliminating stale caches.
  • ✅ Fast & scalable — loads lists once, builds an in-memory index, and screens hundreds of names per second.
  • ✅ Streaming export — results stream into the dataset in batches of 50, supporting 1,000+ to 10,000+ names with low memory usage.

🎯 Use cases & workflows

1. Automated Customer Onboarding (Fintech / KYB)

Embed this Actor into your customer signup webhook. When a new merchant or business signs up, immediately check the company name and primary directors. If isMatch: "true" and riskLevel: "high", pause approval for compliance review; otherwise, allow instant automated onboarding.

2. Supply Chain & Vendor Risk Management

Screen global suppliers, logistics contractors, and export consignees against OFAC, EU, UN, and UK regimes before issuing purchase orders or signing long-term supplier agreements.

3. Real-Time AI Agent Verification (LangChain / LlamaIndex)

Equip customer support bots, trade finance copilots, or corporate research agents with an API-driven tool to verify entity names before generating answers or recommending actions.

4. Cross-Border M&A and Real Estate Due Diligence

Run batch checks across all corporate board members, major shareholders, holding companies, and asset sellers involved in complex acquisitions or high-value property transfers.

5. Scheduled Portfolio Audit

Set up a weekly Apify schedule to re-screen your active client list against updated watchlists. Flag any new designations automatically via email alerts or Slack webhooks.


📥 Input parameters

Submit the names you want to screen along with your preferred filters. Every field is optional — running the Actor empty executes a built-in demo screening well-known sanctioned entities.

FieldTypeDefaultDescription
queriesarray—People or company names to screen, one per line (e.g. "Vladimir Putin", "Acme Trading LLC"). Leave empty for demo sample.
maxItemsinteger0Maximum names to screen (0 = unlimited, screens all provided names). Supports 1,000+ names.
sourcesarray["OFAC","EU","UN","UK"]Which official watchlists to check: OFAC, EU, UN, UK.
entityTypestringallRestrict matches to all, person, entity, or vessel.
countrystring""Filter matches by linked country / nationality (dropdown of common jurisdictions).
countryCustomstring—Advanced: free-text country or ISO code not present in the dropdown.
minScoreinteger85Minimum match confidence score (40–100). Lower scores catch looser matches; 85 is recommended.
maxMatchesPerQueryinteger10Maximum best matches to return for each submitted name.
proxyConfigurationobjectoffOptional Apify Proxy settings (public endpoints operate keyless and proxy-free by default).

Example input — targeted KYC check

{
"queries": [
"Vladimir Putin",
"Wagner Group",
"Nicolas Maduro",
"Acme Trading LLC",
"Jane Doe"
],
"sources": ["OFAC", "EU", "UN", "UK"],
"entityType": "all",
"minScore": 85,
"maxMatchesPerQuery": 5,
"maxItems": 0
}

Example input — 1,000+ bulk corporate screening

{
"queries": [
"Gazprom Neft",
"Rosneft Oil Company",
"Al-Quds Force",
"Bank Mellat",
"Sberbank of Russia"
],
"sources": ["OFAC", "EU", "UK"],
"entityType": "entity",
"minScore": 80,
"maxMatchesPerQuery": 3,
"maxItems": 1000
}

📤 Output structure

For every submitted name, the Actor outputs one record in the dataset. Flat topMatch* fields allow immediate triage in spreadsheet tools, while the matches array holds the complete matching entity payload.

Positive match record

{
"query": "Vladimir Putin",
"isMatch": "true",
"riskLevel": "high",
"matchCount": "2",
"topScore": "100",
"topMatchName": "PUTIN, Vladimir Vladimirovich",
"topMatchSource": "OFAC",
"topMatchType": "Person",
"topMatchPrograms": "RUSSIA-EO14024",
"topMatchListedOn": "",
"matchesSummary": "PUTIN, Vladimir Vladimirovich (100%, OFAC: RUSSIA-EO14024) | Vladimir Vladimirovich PUTIN (100%, UK: The Russia (Sanctions) (EU Exit) Regulations 2019)",
"matches": [
{
"name": "PUTIN, Vladimir Vladimirovich",
"score": 100,
"source": "OFAC",
"type": "Person",
"programs": ["RUSSIA-EO14024"],
"countries": [],
"nationalities": [],
"birthDates": [],
"listedOn": "",
"aliases": ["PUTIN, Vladimir"],
"addresses": [
"Kremlin, Moscow, Russia",
"Novo-Ogaryevo, Moscow Region, Russia",
"Bocharov Ruchey, Sochi, Russia"
],
"remarks": "DOB 07 Oct 1952; POB Leningrad, Russia; nationality Russia; citizen Russia; Gender Male; President of the Russian Federation.",
"sourceId": "35096",
"sourceUrl": "https://sanctionssearch.ofac.treas.gov/"
}
],
"screenedAt": "2026-11-10T15:45:00.000Z"
}

Clean / non-match record

{
"query": "Acme Global Software Inc",
"isMatch": "false",
"riskLevel": "none",
"matchCount": "0",
"topScore": "0",
"topMatchName": "",
"topMatchSource": "",
"topMatchType": "",
"topMatchPrograms": "",
"topMatchListedOn": "",
"matchesSummary": "No sanctions match found.",
"matches": [],
"screenedAt": "2026-11-10T15:45:00.000Z"
}

📊 Extracted fields & data coverage

Top-level record fields

FieldCoverageTypeDescription
🏷️ query🟢 High (100%)StringThe exact name or query submitted for screening
🛡️ isMatch🟢 High (100%)String"true" or "false" indicating if a match meets minScore
⚠️ riskLevel🟢 High (100%)StringRisk categorization: none, low, medium, or high
🔢 matchCount🟢 High (100%)StringTotal number of matches meeting threshold criteria
📈 topScore🟢 High (100%)StringHighest confidence score obtained (0–100)
👤 topMatchName🟡 ConditionalStringFull legal name of the highest-scoring entity match
🏛️ topMatchSource🟡 ConditionalStringWatchlist source of the top hit (OFAC, EU, UN, UK)
🏢 topMatchType🟡 ConditionalStringCategorization of top match (Person, Entity, Vessel)
📜 topMatchPrograms🟡 ConditionalStringSanctions regimes and executive orders associated with hit
📅 topMatchListedOn⚪ OptionalStringOfficial date of designation when provided by the regime
📝 matchesSummary🟢 High (100%)StringConcatenated overview string summarizing top candidates
📦 matches🟢 High (100%)ArrayComplete array of detailed match objects
⏰ screenedAt🟢 High (100%)StringISO 8601 UTC timestamp of execution

Nested matches[] candidate fields

FieldCoverageTypeDescription
🏷️ name🟢 High (100%)StringPrimary recorded name on official designation registry
🎯 score🟢 High (100%)NumberFuzzy confidence score between 0 and 100
🏛️ source🟢 High (100%)StringAuthoritative registry code (OFAC, EU, UN, UK)
🏢 type🟢 High (100%)StringEntity designation type (Person, Entity, Vessel)
📜 programs🟢 High (100%)ArrayList of official program codes or statutory instruments
🌍 countries🟡 ConditionalArrayCountries associated with the designated entity
🌐 nationalities🟡 ConditionalArrayRecorded nationalities (primarily individuals)
🎂 birthDates🟡 ConditionalArrayDates or calendar years of birth
📅 listedOn⚪ OptionalStringSpecific registration or designation date
🪪 aliases🟢 High (~85%)ArrayKnown alternative spellings, AKAs, and transliterations
📍 addresses🟡 ConditionalArrayRegistered business or residential addresses
📋 remarks🟢 High (~97%)StringOfficial identity remarks (passports, POB, titles, UBO notes)
🆔 sourceId🟢 High (100%)StringOfficial identification key from source database
🔗 sourceUrl🟢 High (100%)StringURL to the authoritative registry documentation

🔁 Scale & 1,000+ bulk screening

This Actor does not rely on fragile page-by-page web scraping. It fetches official, authoritative bulk files directly into an optimized in-memory token index. This design enables enterprise-grade high-volume compliance operations:

  • 1,000+ to 10,000+ names per run — submit extensive vendor lists or customer portfolios without timeout risks.
  • Streaming dataset push — results stream to the Apify dataset in batches of 50, preventing memory bloat and preserving state.
  • De-duplicated candidate rankings — each submitted query evaluates against all 31,000+ targets and returns de-duplicated, score-ordered results.
  • Zero rate limiting on queries — since screening executes locally in-memory after download, your query volume is limited only by runtime compute.

💻 Developer integration & code samples

Python SDK

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run_input = {
"queries": [
"Vladimir Putin",
"Wagner Group",
"Acme Trading LLC"
],
"sources": ["OFAC", "EU", "UN", "UK"],
"minScore": 85,
"maxMatchesPerQuery": 5
}
run = client.actor("haketa/sanctions-screening").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"Query: {item['query']} | Match: {item['isMatch']} | Risk: {item['riskLevel']}")

Node.js SDK

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('haketa/sanctions-screening').call({
queries: ['Vladimir Putin', 'Wagner Group', 'Acme Trading LLC'],
sources: ['OFAC', 'EU', 'UN', 'UK'],
minScore: 85,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.table(items.map(i => ({ query: i.query, match: i.isMatch, risk: i.riskLevel, top: i.topMatchName })));

cURL API

curl -X POST "https://api.apify.com/v2/acts/haketa~sanctions-screening/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"queries": ["Vladimir Putin", "Wagner Group", "Acme Trading LLC"],
"minScore": 85,
"maxMatchesPerQuery": 5
}'

💡 Best practices for AML screening

  1. Threshold calibration — use 85 as standard. For common names (e.g., "Maria Garcia", "John Smith"), raise minScore to 90–95 to reduce false positives.
  2. Jurisdiction scoping — when customer residency is known, filter with country to suppress unrelated international matches.
  3. Always examine remarks — official passport numbers, dates of birth, and places of birth frequently appear in remarks.
  4. Regular batch runs — schedule daily or weekly runs using Apify Schedules to screen your ongoing customer master file against new sanctions designations.

❓ Frequently Asked Questions

Which sanctions registries are included?
The Actor screens US OFAC (SDN and Consolidated), the European Union consolidated sanctions list, the United Nations Security Council Consolidated List, and the UK Sanctions List (OFSI/FCDO). Over 31,000 distinct entities are indexed.

Are private API keys required?
No. The Actor downloads official public-domain governmental datasets directly. No third-party API subscriptions or login credentials are required.

How does fuzzy matching handle transliterations?
Names are normalized (accents stripped, case-folded, tokenized) and scored using a hybrid Levenshtein distance and token-containment metric. Transliterations between Latin, Cyrillic, and Arabic naming conventions are matched accurately.

Can I run 5,000 names at once?
Yes. The in-memory index evaluates hundreds of names per second, and dataset records are streamed in batches of 50 to maintain optimal performance.

What formats can I download?
Datasets can be downloaded instantly in JSON, CSV, Excel, XML, HTML, or JSON Lines formats via the Apify Console or API.

How fresh is the sanctions data?
It is pulled directly from the official government endpoints on every run, so you always screen against the current, live lists without stale caching.

How do I distinguish false positives on common names?
Examine the birthDates, nationalities, addresses, and remarks fields returned within each match object to verify identity before taking compliance actions.


  • GLEIF LEI Lookup — verify legal entities, corporate identifiers, and registration statuses for KYB onboarding.
  • SEC EDGAR Scraper — extract SEC filings, 10-K, 10-Q, and executive insider transactions.
  • Vessel Tracker — track maritime shipping vessels, IMO numbers, and AIS movements.
  • Bulk Metadata Extractor — extract Open Graph, Twitter Cards, and schema.org microdata in bulk.

📋 Changelog

v1.2 (2026-11)

  • Unlocked 1,000+ batch screening: added maxItems support and transitioned to streaming dataset writes in chunks of 50 records.
  • Memory optimization: reduced memory footprint during high-volume queries with streaming index matching.
  • Enhanced field normalization: improved cross-source parsing of passport numbers, aliases, and corporate designation notes in remarks.
  • Expanded documentation: added visual badges, ⚡ At a glance quick reference, and comprehensive field coverage indicators.

v1.1 (2026-07)

  • Multi-source integration: unified OFAC, EU, UN, and UK OFSI into single screening interface.
  • Added country, entity type, and confidence threshold filtering options.

v1.0 (2026-06)

  • Initial release with keyless public-domain sanctions verification.
⌂ 换网址