Sanctions Screening
Sanctions Screening
/sanctions/v1/screen2 creditsScreen ONE name against the official sanctions lists → status (match | possible_match | no_match) + ranked matches with score, matched aliases, programs, DOB/place-of-birth, IDs, and the audit trail (which sources + thresholds were used). Add type/country/dob descriptors to cut false positives.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| name | required | — | The person/entity/vessel name to screen. Matching is fuzzy + transliteration-aware (Cyrillic/Arabic/diacritics are folded to ASCII, so Алишер/محمد/Müller match their Latin spellings) and alias-aware (every a.k.a. on a record is screened). Name-only screening is false-positive-heavy — add dob/country/type to narrow. |
| type | optional | person · entity · vessel · aircraft | Optional entity type. When set, ONLY same-type list records are compared (a person query never matches a vessel record) — the single biggest precision lever. Omit to screen across all types. |
| country | optional | — | Optional country/nationality descriptor. A match on the record's country / nationality / place-of-birth adds 'country' to matched_fields and boosts the score. A mismatch does NOT exclude (lists are sparsely populated) — it is simply not corroborated. |
| dob | optional | — | Optional date of birth (full date or just the year). A year match against the record's DOB(s) adds 'dob' to matched_fields and boosts the score. Persons only; ignored for entities/vessels. |
| threshold = 0.85 | optional | 0.62–1 | Minimum match score (0-1) to surface a candidate. Default 0.85. Lower → higher recall (more false positives); raise toward 0.95 for high-precision exact screening. Scores >= 0.95 are reported as status 'match', between threshold and that as 'possible_match'. |
| limit = 20 | optional | 1–100 | Max matches to return per name (1-100, default 20), highest score first. |
| sources | optional | — | Optional comma-separated list of source ids to restrict screening to: ofac_sdn, ofac_consolidated, uk_ofsi. Omit to screen ALL reachable sources (recommended). |
/sanctions/v1/batch2 creditsScreen up to 100 names in one call (in-memory → cheap). Each item is a string or {name,type?,country?,dob?,threshold?}; per-item options override call defaults.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| names | required | — | Up to 100 names to screen in one call. Each item is a string OR an object {name, type?, country?, dob?, threshold?}. Per-item options override the call-level defaults. Screening is in-memory so a batch is cheap. |
| type | optional | person · entity · vessel · aircraft | Optional entity type. When set, ONLY same-type list records are compared (a person query never matches a vessel record) — the single biggest precision lever. Omit to screen across all types. |
| country | optional | — | Optional country/nationality descriptor. A match on the record's country / nationality / place-of-birth adds 'country' to matched_fields and boosts the score. A mismatch does NOT exclude (lists are sparsely populated) — it is simply not corroborated. |
| threshold = 0.85 | optional | 0.62–1 | Minimum match score (0-1) to surface a candidate. Default 0.85. Lower → higher recall (more false positives); raise toward 0.95 for high-precision exact screening. Scores >= 0.95 are reported as status 'match', between threshold and that as 'possible_match'. |
| limit = 20 | optional | 1–100 | Max matches to return per name (1-100, default 20), highest score first. |
| sources | optional | — | Optional comma-separated list of source ids to restrict screening to: ofac_sdn, ofac_consolidated, uk_ofsi. Omit to screen ALL reachable sources (recommended). |
/sanctions/v1/entity1 creditFetch ONE full normalized list record by its uid ('<source>:<list_ref>', from a screen match) — every field on the designation.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| uid | required | — | The match uid from a screen result ('<source>:<list_ref>', e.g. ofac_sdn:9639) → the full normalized list record. |
/sanctions/v1/sources_status1 creditList freshness + reachability of every sanctions source (the trust signal): which lists were screened, how many records, the source's own published date, and whether the last.gov fetch succeeded.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| refresh = false | optional | — | Force a re-fetch of all sources before reporting (bypasses the cache; slower). |
curl -X POST https://api.reefapi.com/sanctions/v1/screen \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"name":"Ismail Haniya","type":"person"}'{
"ok": true,
"data": { /* the result */ },
"meta": {
"latency_ms": 240,
"record_count": 12,
"completeness_pct": 100
},
"error": null
}Measured at 60 requests a second across the fleet, with no central bottleneck. Volume pricing is on request, and per-key limits are raised for high-volume accounts.
Tell us a site we do not cover yet and it becomes an engine. A customer asked for bestprice.gr on a Sunday and it was in the catalog the next day.
Median time from a question in the live chat to the first answer, measured across every answered conversation. Setup help included, no support tier to buy.
No per-site plans and no separate subscriptions. One key and one credit pool across the whole catalog, so adding a source costs nothing up front.
Planning something large? Tell us the volume and the sources and we will come back with what it costs and what we would have to build.