Skip to main content
Sanctions screening checks names against global sanctions databases. There are two ways to use it:
  1. As part of a search — add sanctionsScreening: true to POST /search to screen the business alongside other data sources
  2. Standalone — use POST /sanctions to screen any name independently, with full control over matching parameters

Coverage

Current maintains indexed copies of 10 sanctions sources, updated regularly:
SourceKey
US OFAC SDN Listus-sanctions-ofac-sdn
US OFAC Consolidated (non-SDN)us-sanctions-ofac-consolidated
Canada Public Safety (s.83.05)ca-sanctions-terrorist-entities
Canada Global Affairs (SEMA)ca-sanctions-autonomous
EU DG FISMAeu-sanctions-consolidated
UK FCDOuk-sanctions-list
UN Security Councilun-sanctions-consolidated
Netherlands Terrorism Listnl-sanctions-terrorism
Australia DFATau-sanctions-consolidated
Switzerland SECOch-seco-sanctions

Add sanctionsScreening: true to your search request:
{
  "name": "Acme Corp",
  "sanctionsScreening": true
}
Results appear in the sanctions field of the response. See Response structure for the full schema.

Configuration

Screening works out of the box with sensible defaults, but you can tune it to match your compliance requirements.

Match threshold

The sanctionsThreshold parameter controls how strict the name matching is (70–100, default 85):
ThresholdBehavior
70–79Cast a wider net — more matches, but more false positives to review
80–89Balanced (recommended starting point: 85)
90–100Stricter — only near-exact name matches, minimal review burden
Lower the threshold if your compliance program requires maximum coverage and you have capacity to review more results. Raise it if you want to reduce noise and are comfortable with a tighter match window.

Screening toggle

Screening is off by default. Enable it per request with sanctionsScreening: true, or enable it for all searches in your dashboard settings. This lets you control costs and only screen when relevant to your workflow.

Response structure

When sanctionsScreening: true, the response includes a sanctions object with query, totalMatches, and matches. An empty matches array means no matches were found — a clear result.
{
  "sanctions": {
    "query": "Acme Corp",
    "totalMatches": 1,
    "matches": [
      {
        "legalName": {
          "name": "ACME CORPORATION",
          "matchScore": 0.91,
          "matchedName": "ACME CORPORATION",
          "nameScores": [
            { "name": "ACME CORPORATION", "score": 0.91 },
            { "name": "Acme Corp", "score": 0.95 }
          ]
        },
        "alternateNames": ["Acme Corp"],
        "addresses": [],
        "details": {
          "source": "us-sanctions-ofac-sdn",
          "datasets": ["us-sanctions-ofac-sdn"],
          "countries": ["US"],
          "programs": [],
          "identifiers": [],
          "listingDate": null,
          "dateOfBirth": null,
          "remarks": null
        },
        "sourceUrls": []
      }
    ]
  }
}
FieldDescription
queryThe name that was screened
totalMatchesNumber of matched entities (0 = clear)
legalName.nameThe sanctioned entity’s name as it appears in the database
legalName.matchScoreMatch confidence (0–1). Higher = more similar to your query.
legalName.matchedNameWhich name or alias produced the best score
legalName.nameScoresPer-name/alias match scores for transparency
alternateNamesOther names associated with the sanctioned entity
details.sourceWhich sanctions list flagged this entity
details.datasetsAll sanctions lists that flagged this entity
details.countriesCountries associated with the entity
sourceUrlsDirect links to the entity record for human review

How matching works

Screening runs through three stages to find relevant matches while minimizing false positives: The business name is searched against all sanctions collections simultaneously using fuzzy text matching. Minor spelling differences, accented characters (e.g., “Müller” vs “Muller”), and punctuation variations are handled automatically so that legitimate matches aren’t missed due to formatting differences.

2. Name similarity scoring

Every candidate result is scored based on how similar the queried name is to the sanctioned entity’s legal name and all known aliases. The highest-scoring name wins. Results below your configured sanctionsThreshold are discarded — this is your primary lever for balancing thoroughness against review volume.

3. Word-level verification

Results that pass the score threshold go through a final check: do the individual words in the business name actually correspond to words in the matched entity’s name? This catches legitimate spelling variations (e.g., “Kapital” matching “Capital”) while filtering out coincidental matches where the overall name looks similar but no individual words actually line up.
Common business designators like “Inc”, “Ltd”, “Corp”, and “GmbH” are ignored during comparison so they don’t affect match quality. “Sberbank Capital Inc” correctly matches “Sberbank Capital Ltd”.

Partial failures

If the sanctions service is unavailable, the search still completes with other data. Check the errors object in the response:
{
  "errors": {
    "sanctions": {
      "code": "UNAVAILABLE",
      "message": "Sanctions service temporarily unavailable",
      "retryable": true
    }
  }
}

Standalone screening

POST /sanctions lets you screen any name without running a full business search. This is useful for batch screening, screening individuals, or integrating sanctions checks into your own workflows.
{
  "query": "Vladimir Putin",
  "entityType": "individual",
  "countries": ["RU"]
}

Request parameters

ParameterTypeDefaultDescription
querystringrequiredName to screen
typoTolerance0, 1, or 21Character edits allowed when matching
nameVariantsbooleantrueSearch common name variants and transliterations
entityTypestringFilter to individual, entity, vessel, or aircraft
countriesstring[]Filter by ISO2 country codes
sourcesstring[]allLimit to specific sanctions lists (see coverage table)
dateOfBirthstringFilter by DOB in YYYY-MM-DD format (partial dates accepted)

Response structure

{
  "meta": {
    "screeningId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "screenedAt": "2024-01-15T10:30:00Z",
    "duration": 342,
    "status": "completed",
    "submitted": {
      "query": "Vladimir Putin",
      "entityType": "individual",
      "countries": ["RU"]
    }
  },
  "screening": {
    "query": "Vladimir Putin",
    "totalMatches": 1,
    "matches": [
      {
        "legalName": {
          "name": "Vladimir Vladimirovich PUTIN",
          "matchScore": 0.95,
          "matchedName": "Vladimir Vladimirovich PUTIN",
          "nameScores": [
            { "name": "Vladimir Vladimirovich PUTIN", "score": 0.95 },
            { "name": "Владимир Путин", "score": 0.72 },
            { "name": "Wladimir Putin", "score": 0.88 }
          ]
        },
        "alternateNames": ["Владимир Путин", "Wladimir Putin"],
        "entityType": "individual",
        "details": {
          "source": "us-sanctions-ofac-sdn",
          "countries": ["RU"],
          "programs": ["RUSSIA-EO14024"],
          "identifiers": [],
          "listingDate": "2022-02-25",
          "dateOfBirth": "1952-10-07",
          "remarks": null
        },
        "sourceUrls": ["https://sanctionssearch.ofac.treas.gov/..."]
      }
    ]
  },
  "sourceCounts": {
    "ofacSdn": 1,
    "ofacConsolidated": 0,
    "caTerroristEntities": 0,
    "caAutonomousSanctions": 1,
    "euConsolidated": 1,
    "ukList": 1,
    "unConsolidated": 0,
    "nlTerrorism": 0,
    "auConsolidated": 1,
    "chSeco": 1
  },
  "errors": null
}

meta

FieldDescription
screeningIdUUID for this screening request
screenedAtISO 8601 timestamp
durationTime in milliseconds
statuscompleted or error
submittedEcho of your request parameters

screening

Contains query (echo of the screened name), totalMatches (count), and matches (array of matched entities sorted by matchScore descending).
FieldDescription
queryThe name that was screened
totalMatchesNumber of matched entities (0 = clear result)
matches[].legalName.nameThe sanctioned entity’s name as it appears in the database
matches[].legalName.matchScoreMatch confidence (0–1). Higher = more similar to your query.
matches[].legalName.matchedNameWhich name or alias produced the best score
matches[].legalName.nameScoresPer-name/alias match scores for transparency
matches[].alternateNamesOther names and aliases for the entity
matches[].entityTypeType of entity (individual, entity, vessel, aircraft)
matches[].details.sourceWhich sanctions list flagged this entity
matches[].details.countriesCountries associated with the entity
matches[].details.programsSanctions programs the entity is listed under
matches[].details.identifiersPassport numbers, tax IDs, and other identifying documents
matches[].details.listingDateWhen the entity was added to the list
matches[].details.dateOfBirthDate of birth for individuals (may be partial)
matches[].details.remarksAdditional notes from the sanctions source
matches[].sourceUrlsDirect links to the entity record for human review

sourceCounts

Shows how many matches were found in each sanctions source, regardless of filtering. Useful for understanding the breadth of matches across lists.

errors

null when screening completes successfully. When status is error, contains structured error details:
{
  "errors": {
    "code": "UPSTREAM_ERROR",
    "message": "Cannot connect to sanctions search service",
    "retryable": true
  }
}
Sanctions screening requires human review. A match indicates similarity between names — it is not a definitive determination. Always have a compliance professional review matches before taking action. The sourceUrls field links directly to the entity record to assist review.