Sanctions & Watchlist Screening — Risk-Scored Decisions
Pricing
from $1.35 / 1,000 name screeneds
Sanctions & Watchlist Screening — Risk-Scored Decisions
Screen up to 500 names against OFAC, EU, UK OFSI, and UN sanctions lists. Get possible matches, risk levels, review steps, source links, and clear outcomes without a separate data API key.
Pricing
from $1.35 / 1,000 name screeneds
Rating
0.0
(0)
Developer
Maxime Dupré
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
🛡️ Screen names against global sanctions lists
Built for compliance teams, risk analysts, and developers, this Actor screens up to 500 people or organizations against official OFAC, EU, UK OFSI, and UN lists. It returns one clear outcome per name, possible matches, risk levels, source evidence, and next review steps. No separate data API key is needed.
- Check names with OFAC sanctions screening before onboarding.
- Run global sanctions screening across all four supported authorities.
- Add recurring checks to an AML sanctions screening workflow.
- Check political exposure with the PEP screening tool option.
- Search one authority with UN sanctions screening.
- Review names and source evidence with the sanctions list search tool task.
- Compare possible hits with an OFAC screening tool run.
- Add a ready-made sanctions screening tool to a compliance process.
📦 What data does the Actor return?
Each dataset row covers one submitted name. It gives a potential-match or clear outcome, a risk level, reasons, review readiness, and source coverage. Possible matches can include aliases, authorities, programs, countries, birth facts, identifiers, addresses, remarks, listing dates, and official source links.
A possible match is not identity proof or legal advice. Check the source evidence and use human review before you act.
▶️ How to run the Actor
- Add one or more people or organizations under Names to screen.
- Add a date of birth, country, or identifier when you know it.
- Choose the authorities, entity types, and name matching policy.
- Turn on PEP data or recurring review options when needed.
- Click Start and open the dataset when the run ends.
📥 Input
| Field | Type | What it does |
|---|---|---|
subjects | object[] | Adds 1 to 500 names to screen. |
subjects[].name | string | Gives the required full name. |
subjects[].dateOfBirth | string | Adds a known birth date for match checks. |
subjects[].country | string | Adds a known country, nationality, or place of birth. |
subjects[].identifier | string | Adds a passport, national ID, company number, vessel ID, or aircraft ID. |
authorities | string[] | Chooses OFAC, EU, UK OFSI, or UN lists. All four are used when omitted. |
includePepWatchlists | boolean | Also checks PEP and related watchlist data. |
entityTypes | string[] | Limits matches to people, organizations, vessels, or aircraft. All kinds are used when omitted. |
matchingPolicy | string | Uses strict, balanced, or broad name matching. |
monitorName | string | Gives a recurring screen a stable name for change tracking. |
previousRunDataset | string | Selects an earlier Apify dataset for match comparison and review history. |
reviewDecisions | object[] | Adds past analyst decisions to this review. |
reviewDecisions[].matchId | string | Gives the stable match ID from an earlier result. |
reviewDecisions[].decision | string | Sets cleared-false-positive, needs-review, or confirmed-match. |
reviewDecisions[].reason | string | Adds a short reason for the decision. |
suppressClearedMatches | boolean | Hides past cleared false positives while still counting them. |
This example is the public input from a successful default-input run:
{"subjects": [{"name": "Vladimir Putin","dateOfBirth": "1952-10-07","country": "Russia"}],"authorities": ["ofac","eu","ofsi","un"],"includePepWatchlists": false,"entityTypes": ["person","organization","vessel","aircraft"],"matchingPolicy": "balanced","suppressClearedMatches": false}
📤 Output
The dataset has one output shape. Optional fields appear when you submit extra details or use recurring review.
| Field | Type | What it does |
|---|---|---|
screenedName | string | Shows the submitted name. |
outcome | string | Shows potential-match or clear. |
riskLevel | string | Gives the human-review priority level. |
recommendedAction | string | Gives the suggested next review step. |
reasons | string[] | Explains the outcome and risk. |
submittedDetails | object | Shows submitted facts used for checks. |
submittedDetails.dateOfBirth | string | Shows the submitted birth date. |
submittedDetails.country | string | Shows the submitted country detail. |
submittedDetails.identifier | string | Shows the submitted official ID. |
reviewReadiness | object | Says whether the facts are enough for useful review. |
reviewReadiness.level | string | Gives ready, limited, or insufficient. |
reviewReadiness.missingDetails | string[] | Lists details that could improve confidence. |
matches | object[] | Lists possible matches in review order. |
matches[].matchId | string | Gives a stable subject-and-source match ID. |
matches[].matchedName | string | Shows the source record's main name. |
matches[].aliases | string[] | Lists other published names. |
matches[].entityType | string | Shows the matched entity kind. |
matches[].score | number | Gives name match strength from 0 to 100. |
matches[].matchStrength | string | Groups the score as exact, strong, or possible. |
matches[].categories | string[] | Shows whether sanctions, PEP, or watchlist data caused the hit. |
matches[].authorities | string[] | Lists authorities that published the record. |
matches[].programs | string[] | Lists linked sanctions or watchlist programs. |
matches[].countries | string[] | Lists linked countries. |
matches[].nationalities | string[] | Lists published nationalities. |
matches[].datesOfBirth | string[] | Lists published birth dates. |
matches[].placesOfBirth | string[] | Lists published birth places. |
matches[].identifiers | object[] | Lists published official IDs. |
matches[].identifiers[].type | string | Names the ID kind. |
matches[].identifiers[].value | string | Gives the published ID value. |
matches[].identifiers[].country | string | Gives the issuing country when known. |
matches[].addresses | string[] | Lists published addresses. |
matches[].remarks | string[] | Lists source authority notes. |
matches[].listingDates | string[] | Lists dates when authorities added the entity. |
matches[].sourceIds | string[] | Lists official record IDs. |
matches[].sourceLinks | string[] | Links to official pages or files used for review. |
matches[].corroboration | object[] | Compares submitted facts with source facts. |
matches[].corroboration[].field | string | Names the checked fact. |
matches[].corroboration[].result | string | Gives agree, conflict, or unknown. |
matches[].corroboration[].reason | string | Explains the check result. |
matches[].changeStatus | string | Shows how a recurring match changed. |
matches[].changeReason | string | Explains a material change. |
matches[].reviewDecision | object | Shows a carried-forward analyst decision. |
matches[].reviewDecision.decision | string | Gives the saved decision. |
matches[].reviewDecision.reason | string | Gives the saved reason when present. |
suppressedMatchCount | integer | Counts earlier cleared false positives hidden from this row. |
monitorName | string | Shows the recurring screen name. |
sourceCoverage | object[] | Shows whether each requested list was checked. |
sourceCoverage[].authority | string | Names the requested authority. |
sourceCoverage[].status | string | Gives covered, failed, or unavailable. |
sourceCoverage[].message | string | Explains a source gap or failure. |
Full row from the successful default-input run:
{"screenedName": "Vladimir Putin","outcome": "potential-match","riskLevel": "high","recommendedAction": "Review this match now.","reasons": ["3 possible matches were found."],"submittedDetails": {"dateOfBirth": "1952-10-07","country": "Russia"},"reviewReadiness": {"level": "ready","missingDetails": ["identifier"]},"matches": [{"matchId": "a1dcfce3de5113025d0c1f32","matchedName": "Vladimir Putin","aliases": ["Vladimir Vladimirovich PUTIN","Vladimir Putin","владимир владимирович путин"],"entityType": "person","score": 100,"matchStrength": "exact","categories": ["sanctions"],"authorities": ["ofsi","ofac"],"programs": [],"countries": ["ru"],"nationalities": ["ru"],"datesOfBirth": ["1952-10-07"],"placesOfBirth": ["St Petersburg (then Leningrad)","Russia"],"identifiers": [],"addresses": ["Moscow, Russia"],"remarks": ["The Director Disqualification Sanction was imposed on 09/04/2025."],"listingDates": [],"sourceIds": ["Q7747"],"sourceLinks": ["https://www.gov.uk/government/publications/the-uk-sanctions-list","https://sanctionssearch.ofac.treas.gov/","https://www.opensanctions.org/entities/Q7747/","https://sanctionssearch.ofac.treas.gov/Details.aspx?id=35096"],"corroboration": [{"field": "dateOfBirth","result": "agree","reason": "The submitted detail agrees with the source."},{"field": "country","result": "agree","reason": "The submitted detail agrees with the source."}]},{"matchId": "d1ff4e2e79f2b697e42075e5","matchedName": "Vladimir Anatolyevich Tyurin","aliases": ["Vladimir Anatolyevich Tyurin","ВЛАДИМИР АНАТОЛЬЕВИЧ ТЮРИН","Vladimir Turiyan","Aleksei Vladimirovich Pugachev","Volodya Tyurin","Alexei Pavlovich Pugachev","Vladimir Tiurin","Vladimir Tiorine","АЛЕКСЕЙ ВЛАДИМИРОВИЧ ПУГАЧЕВ","Anatoly Tyurine","Anatoly Tyurin","Vladimir Tiurine","Vladimir Turin","Vladimir Tiourine","Vladimir Tyurine","Wladimir Tjurin","Vladimir Pavlovich Gromov","Anatolievich Turin","ВЛАДИМИР ПАВЛОВИЧ ГРОМОВ","Vladimir Tjrurin","Vladimir Anatolievich Tyurin","Alexey Pugachev"],"entityType": "person","score": 86,"matchStrength": "strong","categories": ["sanctions"],"authorities": ["ofac"],"programs": [],"countries": ["be","ru"],"nationalities": [],"datesOfBirth": ["1958-11-25","1958-12-20"],"placesOfBirth": ["Bratsk, Russia","Irkutsk, Russia","Tirlyan, Beloretskiy Rayon, Bashkiria, Russia"],"identifiers": [{"type": "passportNumber","value": "410579055"},{"type": "passportNumber","value": "432062125"},{"type": "passportNumber","value": "4511264874"},{"type": "passportNumber","value": "EA804478"}],"addresses": ["Moscow"],"remarks": [],"listingDates": [],"sourceIds": ["Q4467629"],"sourceLinks": ["https://sanctionssearch.ofac.treas.gov/","https://sanctionssearch.ofac.treas.gov/Details.aspx?id=23243","https://www.opensanctions.org/entities/Q4467629/"],"corroboration": [{"field": "dateOfBirth","result": "conflict","reason": "The submitted detail differs from the source."},{"field": "country","result": "conflict","reason": "The submitted detail differs from the source."}]},{"matchId": "b06d96a9f1d384daf70d0256","matchedName": "Владимир Иванович ШАСТИН","aliases": ["Vladimir Ivanovich SHASTIN","Владимир Иванович ШАСТИН","Vladimir Šastin"],"entityType": "person","score": 80,"matchStrength": "possible","categories": ["sanctions"],"authorities": ["eu"],"programs": [],"countries": [],"nationalities": ["ru"],"datesOfBirth": [],"placesOfBirth": [],"identifiers": [{"type": "idNumber","value": "253606386404"}],"addresses": [],"remarks": [],"listingDates": [],"sourceIds": ["NK-BVtC79976DQPuMFyxZpPcK"],"sourceLinks": ["https://data.europa.eu/data/datasets/consolidated-list-of-persons-groups-and-entities-subject-to-eu-financial-sanctions","https://www.opensanctions.org/entities/NK-BVtC79976DQPuMFyxZpPcK/"],"corroboration": [{"field": "dateOfBirth","result": "unknown","reason": "The source does not publish this detail."},{"field": "country","result": "conflict","reason": "The submitted detail differs from the source."}]}],"suppressedMatchCount": 0,"sourceCoverage": [{"authority": "ofsi","status": "covered"},{"authority": "eu","status": "covered"},{"authority": "ofac","status": "covered"},{"authority": "un","status": "covered"}]}
💳 Pricing
You pay once for each submitted name screened against the selected sanctions and watchlists. A screen is charged even when it has no possible match. Apify shows the current event price before you start a run.
🔌 Integrations
Send dataset rows to Google Sheets, Slack, webhooks, Make, Zapier, or your own app with the Apify API. You can also schedule recurring screens in Apify.
❓ FAQ
What is sanctions screening?
Sanctions screening checks a person or organization name against lists published by authorities. This Actor checks supported OFAC, EU, UK OFSI, and UN lists and returns evidence for human review.
Does a potential match prove identity?
No. Name similarity is not identity proof. Use birth facts, country details, identifiers, and official source links to review each hit.
Can I screen many names at once?
Yes. One run accepts from 1 to 500 subjects under one shared set of list and matching settings.
Can I check PEP data?
Yes. Turn on includePepWatchlists. Each hit shows the category that caused it.
Can I track changes over time?
Yes. Use a stable monitorName and select previousRunDataset. Later runs can show new, changed, and resolved matches and carry forward analyst decisions.
Is a separate sanctions API key needed?
No. Core screening does not ask you for a third-party data API key.
📝 Changelog
0.0: Initial release
- Screen names against OFAC, EU, UK OFSI, UN, PEP, and related watchlists with risk-scored matches, source evidence, and recurring review support.
🆘 Support
For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡
🔗 Related Actors
- GLEIF LEI Lookup — verify company identity and ownership data before a sanctions review.
- Sanctions & Watchlist Screening — Risk-Scored Decisions — use OpenSanctions for an adjacent sanctions and watchlist workflow.
- OFAC Sanctions List Search — SDN Screening with Fuzzy Matching — focus a review on the US OFAC SDN list.
- Interpol Red Notice & Wanted Persons Search — add wanted-person checks to due diligence.
- EU Consolidated Sanctions List Tracker API — inspect normalized EU sanctions records and list updates.
Made with ❤️ by Maxime Dupré