temsor API
← Whole catalogue

Compliance

Part of the catalogue. The same key, envelope and billing cover every other endpoint too.

Sanctions & PEP Screening

  • No account needed to try any endpoint on this page.
  • Deterministic endpoints answer from cache in single-digit milliseconds.
  • Every response carries a receipt: credits charged, cache status, duration.
POST/v1/sanctions/screen
{
  "name": "Saddam Hussein"
}
no request sent yet
Press Run to call the live API from your browser.
1endpoints
data points banked
time series
median response

Why this exists

Built for hostile input

A Turkish address arrives as "Cd." or "Cad." or "Caddesi", with the flat number glued to the building number. Generic parsers drop half of it silently. This one tells you what it could not place.

History cannot be backfilled

The exchange-rate archive grows every business day and each point keeps its source URL and content hash. A competitor can read today’s bulletin too — nobody can produce last quarter’s.

You only pay for work

Repeated inputs come from cache and cost zero credits. If a response ever fails its own schema, the call is refunded automatically.

Endpointsexpand any row to see the parameters and call it live

Compliance1

/v1/sanctions/screen Sanctions & PEP Screening 5 credits

Screens a name against the US OFAC, UN Security Council and EU consolidated sanctions lists with transliteration-aware fuzzy matching.

Cyrillic and Arabic names are transliterated, titles and corporate suffixes are stripped, and known spelling families are unified — "Abd al-Rahman", "Abdul Rahman" and "Abdulrahman" reach the same record. Every hit explains itself: which name matched, whether it was an alias the source flags as weak, and how the birth year and country compared. Supply `birthYear` whenever you have it; it removes most false positives. `asOf` screens against the lists as they stood on a past date, which is the question auditors actually ask — note that this is bounded by when our archive begins, reported in `coverage`.

Parameters

name* string Name to screen — person or organisation.
type "any" | "individual" | "entity" | "vessel" | "aircraft" Restrict to one subject type. Narrowing this removes most false positives. default "any"
birthYear integer Known birth year. The single strongest false-positive filter available.
country string Known country or nationality.
sources "OFAC_SDN" | "UN" | "EU"[] Defaults to all lists.
minScore number Score floor. 0.92+ reads as a match, 0.80+ as possible. default 0.75
limit integer default 10
asOf string Screen against the lists as they stood on this date. Limited by when our archive begins.
POST/v1/sanctions/screen
{
  "name": "Saddam Hussein"
}
no request sent yet
Press Run to call the live API from your browser.

Pricingone key covers every endpoint

Free
Free
credits
2,000
Rate limit
2/s
Try it now
Starter
$19/mo
credits
50,000
Rate limit
10/s
most picked
Pro
$79/mo
credits
300,000
Rate limit
30/s
Scale
$299/mo
credits
2,000,000
Rate limit
100/s

Credits are consumed per call and cache hits are free. Requests without a key run on a narrow per-IP demo quota so you can evaluate before signing up.

The API key is e-mailed the moment payment clears. Upgrades keep the same key, so your integration is never broken.

Quickstart

cURL

curl -s https://api.temsor.com/v1/sanctions/screen \
  -H "content-type: application/json" \
  -H "x-api-key: fk_live_…" \
  -d '{"name":"Saddam Hussein"}'

JavaScript

const res = await fetch("https://api.temsor.com/v1/sanctions/screen", {
  method: "POST",
  headers: { "content-type": "application/json", "x-api-key": KEY },
  body: JSON.stringify({"name":"Saddam Hussein"})
});
const { data } = await res.json();

Python

import httpx
r = httpx.post("https://api.temsor.com/v1/sanctions/screen",
    headers={"x-api-key": KEY},
    json={"name":"Saddam Hussein"})
data = r.json()["data"]