Sanctions · PEP · Adverse media

Screen any name against the world's watchlists — on an engine you actually own.

PROOViD AML is a multi-tenant, API-first screening service for sanctions, PEP and adverse-media checks. We run our own matching and risk engine, so there's no per-lookup aggregator lock-in — buy it as a hosted API, or self-host the whole thing in your own cloud with one Docker stack.

  • Own engine, not a reseller
  • Self-hostable Docker
  • GDPR-minded, EU focus

Get started

Three ways to start — pick your path

Try it in your browser with no code, onboard a tenant for a real API key, or build straight against the API.

Try it now — no code

Open the screening page, paste an API key, type a name, and get a clear Pass / Review / Fail verdict with risk score and matched entities. Built-in example names to try.

Open the Try-it page

Onboard a tenant

Use the guided wizard to create a tenant and get an API key in about a minute — no code required. It hands the key straight to the Try-it page.

Onboard a tenant

Build with the API

A 5-minute quickstart, the full interactive API reference, webhook verification and an AI-agent automation guide — plus a ready-to-run MCP server for agents.

Read the developer docs

How it works

From a name to a decision in one call

No SDK gymnastics, no batch ceremony. A single REST call returns a normalized, actionable verdict.

  1. 1

    Onboard a tenant

    One POST /v1/tenants provisions a tenant, an API key, a default risk profile and an optional signed webhook. Multi-tenant from the first request.

  2. 2

    Screen a subject

    Send a name (plus optional DoB, nationality, aliases). We match across sanctions, PEP and adverse-media sources with fuzzy, phonetic and nickname-aware matching.

  3. 3

    Get a clear verdict

    Back comes a normalized isMatch + score, a classification (True / Potential / False / Unknown), a risk band and a Pass / Review / Fail decision you can act on.

  4. 4

    Monitor continuously

    Flag a subject for ongoing monitoring and we re-screen on every watchlist change, firing an HMAC-signed monitoring.alert webhook only when the outcome moves.

Your appREST · SDK · MCP
PROOViD APIauth · quota · rate limit
Matching enginefuzzy · phonetic · nickname
Risk + adverse mediascore · prefetched news evidence
DecisionPass / Review / Fail
Signed webhookOngoing & turnover monitoringImmutable audit trail
Watchlists (UN · OFAC · EU · UK · PEP) are ingested and normalized into one model; matching, risk scoring and the decision all run on our own engine — self-hostable end to end.

Built for these jobs

Onboarding KYCScreen every new customer at signup.
Portfolio re-screeningBulk / batch-screen your back-book on a schedule.
Ongoing monitoringAlert only when a subject's outcome changes.
Case review & auditDisposition matches and export a regulator pack.

Radically transparent

How the screening data is built — in the open

Most vendors won't show you where their data comes from. We publish the whole pipeline: the sources, how they refresh, how PEP levels are worked out, and exactly what we hold — with a public source link on every leader.

SourcesUN · OFAC · EU · UK · Wikidata PEP
Daily ingestnormalize · self-healing
Country-anchored leaders~200 countries · head of state + gov
Families + PEP tierrelatives · office jurisdiction
Screenable indexsource link per row
We anchor on the fixed list of ~200 sovereign countries and follow each country's own link to its head-of-state and head-of-government office — so no leader is missed by a taxonomy quirk, and one row per country makes any gap obvious.

Country-anchored leaders

Head of state + head of government for ~200 countries, with the dates each held office and their relatives — every row links back to its public source. What we hold →

PEP levels, explained

PEP1 Domestic / PEP2 Foreign / PEP3 International-org / PEP4 Family — derived from the office's country versus your home country, at screen time. No black box. How tiers work →

Self-healing, daily

Every source refreshes on a 24-hour cycle; once a person is captured they stay, so coverage only improves over time — no daily gamble, no hand-maintained lists.

Browse the raw data

Query the leaders catalog directly — GET /v1/leaders (JSON) or a CSV export — filter by country, role and period; every row links back to its public source. Leaders API →

Self-audited coverage

Every PEP category — heads of state & government, speakers, ministers, central bankers, ambassadors, legislators, IGO officials and families — is mapped to the FATF definition and measured against the live source on every refresh, so gaps surface automatically. We publish exactly what's Full, Broad or Commercial-via-BYO. See the coverage matrix →

See exactly how it works: the full data-build pipeline, with diagrams and the honest free-vs-commercial boundary, is public. Read the methodology →

Adverse media

Negative news — evidenced, categorised, and honest about what it misses.

Adverse media is where screening vendors are vaguest. Ours is fully in the open: the source is GDELT, an open global news-monitoring project, and every hit returns a headline, publisher, date, category and the matched person entity. When we haven't checked a subject yet, we say so.

GDELT DOCcandidate articles · headline · publisher · date
GDELT GKGthe person entities GDELT extracted
Bind the subjectordered name span · rarity gate
Evidence cacheprefetched by a background sweep
Your screenone indexed read · no network call
Prefetched, not live-fetchedOne indexed read per screenSource-linked & auditable
A screening request never calls the news source — evidence is prefetched by a background sweep, so a third-party outage can't slow your live screen or silently turn the control off. The honest catch: GDELT rate-limits the sweep to a trickle, so coverage builds up gradually rather than all at once. Until a subject's evidence has been fetched, screening returns Unavailable — never a clean pass — and coverage keeps filling in as the sweep runs.

Every hit is evidenced

Not a naked link. Each hit carries the headline, publisher, date, a FATF-style category (financial crime, cyber, regulatory, high-risk) and the person entity that matched — so an analyst can triage without clicking out, and an auditor can resolve it after the link rots.

“We didn't check” ≠ “we found nothing”

Every response carries an explicit status. No evidence for a subject yet? You get Unavailable, never a clean pass. A control that silently reports “no adverse media” when it never looked is 100% false negatives dressed as coverage — we refuse to ship that.

A common name can't clear the bar alone

Names bind as an ordered, adjacent span — never a bag of tokens that merges two people into one. Above that sits a rarity gate from our own 490,072-name corpus: on a high-collision surname, a name match alone is never accepted as identification. Precision lever and fairness control at once — a matcher that floods on common names discriminates by surname.

No sentiment gate — and here's why

Scoring “how negative” an article sounds is the obvious move; we measured it failing. A tone gate discards 44% of genuinely AML-relevant articles — laundering indictments read in neutral prose, while a live sample's most negative stories were a prison riot, a depression feature and a celebrity death. Zero predicate offences. We capture tone for display, never for a decision.

Measured, with its caveats

On subjects we've already fetched, at the shipped threshold (0.7): 38.9% recall (14 of 36 positives) and 100% precision on common names (15 of 15). Reading the entities GDELT already extracted — not the headline alone — more than doubled recall, from 16.7% (6 of 36) to 38.9%, while holding common-name precision at 100%: better evidence, not a lower bar.

That recall is the matcher's quality on evidence we holdnot the coverage you get on an arbitrary name today. Coverage is still building as the prefetch fills; a fresh subject returns Unavailable until then, never a false clean. The set is small (36 positives, 15 common-name negatives) — indicative, not a number to tune a compliance control on. Rare names: 1 of 2 (n=2). We publish the curve, not a slogan.

Zero commercial data feeds

No World-Check, LexisNexis, Dow Jones or ComplyAdvantage. Adverse media is open GDELT; sanctions and PEP come direct from the primary publishers (UN, OFAC, EU, UK, Wikidata). That's exactly why we can let you self-host the whole thing and price it in the open — no per-lookup licence rides behind our API.

What it does not do — said out loud

Adverse media here is a discovery layer that produces a Review, not a verdict. We can tell you an article is about a person with your subject's name; we don't confirm it's your subject — a human dispositions the hit.

And we don't paper over real gaps. Our own benchmark still misses Roger Ng, a convicted 1MDB banker: GDELT returns on-topic articles, but they name Jho Low and Tim Leissner, never him — no tuning fixes that. We hold no article bodies (unlicensed prose, and we won't pretend otherwise), don't yet collapse one story syndicated across outlets into a single event, and our retrieval terms are English, so non-English coverage is under-represented. A commercial vendor sells human-curated, entity-resolved dossiers. This is not that, and we won't imply it is.

Evidence on every hit Unavailable ≠ pass Tone never decides Commercial feeds none Limits published

The whole pipeline is documented: the source, the prefetch model, what Unavailable means for your integration, the evidence fields, the categories and the measured limits. Read how adverse media works →

Adverse-media results are derived from The GDELT Project (gdeltproject.org). Headlines, publishers and links are the property of their respective publishers.

Features

A full compliance engine, not a lookup proxy

Everything you need to stand up screening — and everything an auditor will ask for later.

Broad watchlist coverage

Sanctions (UN, OFAC, EU, UK), PEP and adverse media, ingested per watchlist into one model. PEP levels are derived from office jurisdiction (PEP1–PEP4), backed by the country-anchored leaders index. Per-list transparency →

Fuzzy & phonetic matching

Levenshtein/trigram, Jaro-Winkler, token-based phonetic and nickname-aware matching with DoB confirmation to cut false positives. See the benchmark →

Per-tenant risk scoring

Configurable country, category and criminal-record weights map matches to a 0–100 score and a Low / Medium / High band.

Ongoing monitoring

Enrol a subject once; we re-screen on list changes and on a schedule, alerting only when the decision actually moves. Turn it on and set the cadence per tenant, right from your console.

HMAC-signed webhooks

screening.completed and monitoring.alert delivered with SHA-256 signatures and replay protection, payloads PII-light. Register endpoints and watch a full delivery log from your console.

Bulk screening

Screen a portfolio in one request with POST /v1/screenings/bulk, or upload a CSV/XLSX right in the console — onboarding back-books and periodic sweeps, not just one-offs.

Case management

Review and disposition matches (open / cleared / confirmed / escalated) with an audit-note thread and a bundled back-office console.

Full audit log

Every state change is recorded immutably and exportable to CSV — built for the conversation you'll have with a regulator.

Own identity provider

A dedicated OpenIddict-based IdP — machine and human auth — so there's no hard dependency on an external identity system.

Measured, not marketed

The matching, benchmarked in the open

We validated the engine against an independent 1,736-name benchmark — every name also screened through OpenSanctions as the reference — and measured recall and precision against its verdicts. These are our own numbers, run against production, reproducible in the playground or the API.

95.1% recall

Overall recall at the recall-first default (fuzzy threshold 0.70) — the recall-maximizing end of the curve.

96.8% → 100% precision

Genuine precision at the default; 100% on the Balanced and Precision-first presets.

2 false positives

Genuine FPs across the entire 1,736-name benchmark set at the default.

26 evasion catches

Fuzzed real entities our engine caught that the reference screener missed.

How it was tested: every name was actually screened at each fuzzy threshold (not extrapolated); the three presets — Recall-first / Balanced / Precision-first — differ only in that threshold, so the published figures map one-to-one to the preset you pick. Read the full benchmark & methodology →

Why us

Own the engine. Own your data. Own your costs.

Aggregators such as Dilisense, SumSub and sanctions.io resell a shared data layer behind their API. We took the other road.

Typical aggregator

  • × Per-lookup pricing on someone else's data layer
  • × Hosted only — your PII leaves your perimeter
  • × Matching logic is a black box you can't tune
  • × Vendor lock-in: switching means re-integrating

PROOViD AML

  • Our own matching & risk engine — no aggregator middleman
  • Self-host the full stack in your own cloud (any cloud)
  • Transparent, per-tenant tunable matching and risk weights — benchmarked in the open
  • Bring your own commercial provider on top, with your key, when you want more depth

Buy it hosted, or self-host it — same engine, same API. Talk to us about volume and self-host licensing. See the Self-Hosted Edition live →  ·  See the pricing →

Pricing

You pay what we pay.

Screening against our built-in sanctions & PEP watchlists costs us essentially nothing to run — so it's free. You only pay, at cost, for the premium data and volume that costs us money. No markup games, no surprise bills, and every screen is counted and shown.

Free

€0 / month

A generous monthly allowance for any team. No card, no setup.

  • 500 free screenings / month against every built-in list
  • UN, OFAC (SDN), EU, UK (HMT), PEP (Wikidata) & adverse media (GDELT)
  • All built-in features: case management, dispositions, notes, CSV export, source links
  • Playground & full API access
  • Your usage & balance always visible
Start free

Partner

Unlimited built-in

For trusted teams — unlimited built-in screening, on us.

  • Unlimited screening on built-in lists — no metering, no rate limit
  • Dedicated support & SLA
  • Premium data & add-ons billed at cost
Talk to us

Honest by design

The public sanctions & PEP lists — and the open news source behind adverse media — are open data we aggregate and maintain, so a screen against them costs us essentially nothing and we don't charge for it. You pay only when we pay: premium feeds you bring, monitoring at scale, or volume above the free allowance — passed through at cost. And we count every screen, free ones included, so usage is never a mystery.

Built-in lists free Premium at cost Usage always shown No markup

Your limits, credits and per-screen cost are set per tenant and always visible to you in the console. Open the console →

Built to be trusted

Designed for compliance teams & the engineers who serve them

GDPR

EU-focused, PII-light webhooks and field-level handling of personal data.

Multi-tenant

Strict per-tenant isolation, keys, quotas and risk profiles out of the box.

API-first

Versioned /v1 REST, idempotency keys, RFC 7807 errors, signed webhooks.

Self-host

Cloud-agnostic Docker — Postgres, S3-compatible storage, no managed-cloud lock-in.

Reference customers and case studies coming soon — be one of the first to pilot.

Stand up screening this week.

Onboard a tenant, screen your first subject and wire a webhook in well under an hour.

Prefer to talk first? Email us at [ enable JavaScript to view ].