US Denied Party Screening API avatar

US Denied Party Screening API

Pricing

Pay per event

Go to Apify Store
US Denied Party Screening API

US Denied Party Screening API

🛡️ Batch-screen people and companies against the official US Consolidated Screening List with ranked matches, identifiers, restrictions, and source evidence.

Pricing

Pay per event

Rating

5.0

(1)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 days ago

Last modified

Categories

Share

Screen people and companies against the official US Consolidated Screening List (CSL) in one repeatable batch workflow.

Submit names, optional countries, and identifiers. Get one review-ready result per query with a deterministic score, clear, review, or match disposition, ranked candidates, and official source evidence.

The Actor downloads the current public CSL directly from the US International Trade Administration. It covers records consolidated from Treasury, Commerce, and State Department sources, including OFAC and BIS lists.

Screening output is informational. It requires human review and is not legal advice or a final compliance determination.

What does this denied party screening API do?

The Actor turns a list of counterparty names into structured screening decisions.

For every query it:

  • normalizes Unicode, punctuation, spacing, and common company suffixes;
  • compares the query with primary and alternate restricted-party names;
  • optionally corroborates the result with country or identifier data;
  • ranks candidates with transparent evidence;
  • preserves your internal reference for downstream joins;
  • links back to the official list and source information;
  • emits a clear result even when no candidate reaches the review threshold.

It downloads and indexes the official list once per run, so batching names is faster and more economical than downloading the source separately for every counterparty.

Who is it for?

Export and trade compliance teams

Screen consignees, intermediaries, freight partners, and customers before shipment or license review.

Procurement teams

Check new suppliers during onboarding and periodically re-screen an approved vendor master.

Fintech and KYB teams

Add US restricted-party evidence to a broader customer or business verification workflow.

Logistics and marketplaces

Review counterparties before enabling transactions, payouts, fulfillment, or cross-border access.

Developers and data teams

Call one Apify API endpoint rather than maintaining a downloader, parser, fuzzy matcher, and result store.

Why use this Actor?

  • Official source: current public CSL data comes from data.trade.gov.
  • Broad US coverage: the consolidated dataset spans 13 source lists when available upstream.
  • Batch-first: screen up to 500 queries in one run.
  • Explainable: every candidate includes score components and match origin.
  • Review-ready: addresses, IDs, programs, restrictions, aliases, and official URLs stay together.
  • Deterministic: the same source snapshot and input produce the same ranking.
  • Integration-friendly: dataset output exports to JSON, CSV, Excel, webhooks, and APIs.
  • No login: the useful official source is public and requires no customer API key.

Which US lists are covered?

Coverage follows the official ITA Consolidated Screening List export.

Typical source records include:

  • Specially Designated Nationals (SDN);
  • Sectoral Sanctions Identifications (SSI);
  • Denied Persons List (DPL);
  • Entity List (EL);
  • Unverified List (UVL);
  • Military End User (MEU) List;
  • ITAR Debarred parties;
  • Nonproliferation Sanctions;
  • Foreign Sanctions Evaders;
  • CAPTA and related Treasury lists.

The exact list set and record count can change upstream. Every output row includes sourceRecordCount, while every candidate states its sourceList.

Input

The required queries array accepts objects. The smallest valid query contains only a name:

{
"queries": [
{ "name": "BANK OF KUNLUN CO LTD" },
{ "name": "Acme Bicycle Shop" }
]
}

For stronger evidence and easier joins, add optional fields:

{
"queries": [
{
"name": "BANK OF KUNLUN CO LTD",
"country": "CN",
"identifier": "CKLBCNBJ",
"reference": "vendor-001"
}
],
"threshold": 72,
"matchThreshold": 90,
"maxMatches": 5
}

country may be a country name or code that appears in official address records. identifier may be an entity number, SWIFT/BIC, passport, tax, or another ID present in the CSL record.

Match controls

FieldDefaultPurpose
threshold72Lowest score retained for review
matchThreshold90Score producing an automatic match disposition
maxMatches5Ranked candidates returned for each query
sourceUrlofficial CSLAdvanced deterministic-test or approved-mirror override

Lowering threshold increases recall and false positives. Raising it reduces the review queue but may miss spelling variations.

matchThreshold must be equal to or greater than threshold.

Output data

Each dataset row represents one submitted query.

FieldTypeDescription
referencestring or nullYour input reference
queryobjectSubmitted name, country, and identifier
normalizedQuerystringName used by the matcher
dispositionstringclear, review, or match
bestScorenumberHighest retained candidate score
matchesarrayRanked candidate evidence
screenedAtISO datetimeScreening timestamp
sourceDatasetURLOfficial JSON source
sourceRecordCountnumberRecords downloaded for this run
disclaimerstringRequired review warning

Match evidence fields

Each object in matches includes:

  • score and the underlying evidence.nameScore;
  • matchedName and whether it was a primary or alternate name;
  • primaryName and all alternateNames;
  • entityType;
  • structured addresses;
  • typed identifiers and entityNumber;
  • programs and sourceList;
  • restrictionRemarks;
  • sourceInformationUrl and sourceListUrl;
  • country and identifier corroboration flags.

This context helps an analyst distinguish a true match from a common-name false positive.

Example output

{
"reference": "vendor-001",
"query": {
"name": "BANK OF KUNLUN CO LTD",
"country": "CN",
"identifier": "CKLBCNBJ"
},
"normalizedQuery": "bank of kunlun",
"disposition": "match",
"bestScore": 100,
"matches": [
{
"score": 100,
"matchedName": "BANK OF KUNLUN CO LTD",
"primaryName": "BANK OF KUNLUN CO LTD",
"sourceList": "Capta List (CAP) - Treasury Department",
"evidence": {
"nameScore": 100,
"countryMatched": true,
"identifierMatched": true,
"matchedOn": "primaryName"
}
}
]
}

The complete record also contains addresses, aliases, programs, restriction text, identifiers, and URLs.

Understanding dispositions

match

The best score reaches matchThreshold, or a supplied identifier exactly matches an official record.

review

At least one candidate reaches threshold but does not satisfy the automatic match rule.

clear

No candidate reaches threshold in the source snapshot used by the run.

A clear result does not certify that a transaction is permitted. Organizations must apply their own policies, list scope, ownership rules, geography checks, and legal review.

How much does it cost to screen denied parties?

The Actor uses pay-per-event pricing.

  • Run start: $0.005.
  • Each screened query at the BRONZE tier: $0.000072151.
  • Higher Apify plans receive lower per-query tier prices.

A 100-name BRONZE run is approximately $0.0122 before platform-specific credits or plan terms.

You are charged for completed query results, not for every candidate inspected internally.

Step-by-step workflow

  1. Open the Actor input page.
  2. Paste names into queries as strings or objects.
  3. Add country, identifier, and reference where available.
  4. Keep the default thresholds for an initial run.
  5. Start the Actor.
  6. Export the dataset or consume it through the API.
  7. Route match and review outcomes to a trained analyst.
  8. Save the source timestamp and evidence with your case record.
  9. Re-screen counterparties according to your compliance policy.

Tips for better screening

  • Supply the full legal name rather than a trading nickname alone.
  • Include country when the name is common.
  • Include authoritative identifiers whenever available.
  • Keep maxMatches high enough for analyst review on short names.
  • Test thresholds against known positive and negative cases before production use.
  • Preserve reference so results join reliably to your system.
  • Treat alternate-name matches as meaningful evidence, not automatic proof.
  • Re-screen because official lists change.

Integrations

Vendor onboarding

Trigger a run from a procurement workflow, join on reference, and pause approval when disposition is review or match.

CRM or KYB pipeline

Send newly created organizations in daily batches and store the source URLs with the customer record.

Webhooks

Use an Apify run-finished webhook to send dataset results to an internal compliance queue.

Google Sheets and Excel

Export dataset rows for an analyst-operated review queue. Nested matches remain available in JSON.

Zapier, Make, and n8n

Start a run when a counterparty is created, then branch automation on disposition.

Apify API with cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~us-denied-party-screening-api/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"queries":[{"name":"BANK OF KUNLUN CO LTD","country":"CN"}]}'

Poll the returned run or use a webhook, then read its default dataset.

Apify API with JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/us-denied-party-screening-api').call({
queries: [
{ name: 'BANK OF KUNLUN CO LTD', country: 'CN', reference: 'vendor-001' },
],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Apify API with Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/us-denied-party-screening-api').call(run_input={
'queries': [
{'name': 'BANK OF KUNLUN CO LTD', 'country': 'CN', 'reference': 'vendor-001'}
]
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

Use with Apify MCP

Claude Code setup

$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/us-denied-party-screening-api"

Claude Desktop, Cursor, and VS Code setup

Add this MCP JSON block to Claude Desktop, Cursor, or VS Code and provide your Apify token through the client’s supported authentication configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/us-denied-party-screening-api"
}
}
}

Example prompts:

  • “Use the US Denied Party Screening API tool to screen these supplier names and summarize every result needing review.”
  • “Use MCP to check this company name and SWIFT code against the US consolidated list.”
  • “Run the screening Actor and create a CSV-ready review queue from these counterparties.”

Data freshness and source behavior

The Actor fetches the official JSON at run time rather than shipping a stale embedded copy.

The ITA import cadence and individual source-list update times vary. A run records its own screenedAt timestamp and source record count, but upstream publication time remains controlled by US agencies.

If the official endpoint is unavailable or returns a malformed partial payload, the Actor fails instead of returning misleading clear results.

Limitations

  • Fuzzy matching cannot determine identity by itself.
  • Transliteration and aliases depend on the official records available upstream.
  • Country corroboration uses listed addresses and may be incomplete.
  • Ownership and “50 percent rule” analysis is outside this Actor’s scope.
  • Non-US sanctions, PEP, and adverse-media screening are not comprehensively covered.
  • A name absent today may appear after an upstream update.
  • Very short or generic names produce broader review queues.
  • The maximum batch size is 500 queries per run.

This Actor is a research and workflow tool, not a law firm, compliance officer, or government determination service.

Users are responsible for deciding which lists, thresholds, ownership rules, jurisdictions, and escalation procedures apply to their transactions.

Do not use a score as the sole basis for an adverse decision about a person. Verify identity with appropriate evidence and follow applicable law, contracts, and internal policy.

The source data remains attributable to the relevant US government agencies through the included URLs.

Troubleshooting

Why did a known name return review rather than match?

The spelling may differ, the name may match only an alias, or your matchThreshold may be conservative. Inspect evidence, country, IDs, and official remarks before changing thresholds.

Why did a common company name return many candidates?

Common tokens create ambiguity. Add country or identifier evidence, raise threshold, and retain enough candidates for trained review.

Why did the run fail before producing results?

The official dataset may be unavailable or malformed, or an input constraint may be invalid. Inspect the run log. The Actor deliberately fails closed rather than issuing unsupported clear outcomes.

Why is country corroboration false?

Use a country code or name consistent with official address data. Some restricted-party records have no address, so false means “not corroborated by listed addresses,” not “different identity.”

FAQ

No. Every result includes a disclaimer and should feed a documented human-review process.

Is clear a guarantee?

No. It means no candidate reached your threshold in the downloaded CSL snapshot.

Can I screen hundreds of names?

Yes. One run accepts up to 500 queries and downloads the source only once.

Are alternate names included?

Yes. Primary and alternate names are indexed, and matchedOn identifies which produced the retained score.

Can I use my own internal ID?

Yes. Put it in reference; the Actor copies it to the corresponding output row.

Does the Actor need a proxy or login?

No. It uses the official anonymous JSON export.

For raw record exports and broader entity datasets, consider:

Choose this Actor when your primary workflow starts with names to screen and needs one scored outcome per query. Choose an export Actor when you primarily need the full underlying list for your own matching system.

Support

When reporting a problem, include a reproducible input with non-sensitive sample names, the run ID, expected disposition, actual disposition, and why the official evidence suggests a different result.

Do not send private identity documents or confidential customer data in a public support message.