Adverse media API

Quick start

Sign in with a work Google account to get a key. Then:

curl -s https://media.unbackoffice.com/v1/adverse-media \
  -H "X-API-Key: $MEDIA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Jane Example", "kind": "person", "country": "GB", "context": "CEO, Example Trading Ltd"}'

Auth

Send your key in the X-API-Key header on every request. Keep it on your server. Never put it in a browser or mobile app. Base URL: https://media.unbackoffice.com.

A key can call POST /v1/adverse-media. Nothing else.

Request · POST /v1/adverse-media

JSON body:

FieldTypeRequiredNotes
namestringyesThe person, company or vessel to search, as written. For a vessel, add "yacht" or "vessel". (min 2, max 200)
countrystringnoCountry name or ISO code. Helps tell namesakes apart. (max 56)
dobstringnoDate of birth, YYYY-MM-DD. Helps tell namesakes apart. (max 10)
contextstringnoAnything that identifies the subject: role, employer, city. The best way to avoid namesakes. (max 500)
kindstringnoWhat the subject is: person, company, vessel or port. It sets how coverage is searched and matched. Leave it out and a name that mentions a yacht or ship is searched as a vessel, anything else as a person.

Each search reads up to 30 recent news and web results about the name, checks which ones are about your subject and not a namesake, keeps the adverse ones, and maps each onto a FATF offence category. A search usually takes 10 to 25 seconds, most of it spent reading and classifying the coverage. Set your HTTP timeout to at least 60 seconds.

Response

{
  "subject": {"name": "Jane Example", "country": "GB", "dob": null, "kind": "person"},
  "articles_reviewed": 24,
  "overall": {
    "adverse_hit": true,
    "risk": "high",
    "typologies_hit": ["fraud"],
    "typology_labels": ["Fraud"],
    "rationale": "Two reports describe a fraud charge against the CEO of Example Trading Ltd …",
    "disambiguation": "Matched on the employer and city; a namesake athlete was excluded.",
    "coverage_note": ""
  },
  "hits": [
    {
      "headline": "Example Trading chief charged over investor fraud",
      "source": "example-news.com",
      "date": "2026-03-14",
      "url": "https://example-news.com/…",
      "summary": "Charged with fraud over a 2024 investment scheme.",
      "typologies": ["fraud"],
      "severity": 4,
      "about_subject": "high"
    }
  ],
  "screened_at": "2026-10-12T09:30:00Z"
}

Risk bands

overall.risk comes from the most severe adverse article found about the subject:

  • severe: terrorism, proliferation, sanctions evasion, organised crime, drug, human or arms trafficking.
  • high: money laundering, corruption and bribery, fraud, cybercrime, violent crime.
  • medium: tax crime, insider trading or market abuse, environmental crime, smuggling.
  • low: regulatory or enforcement action, counterfeiting, other criminal proceedings.
  • none: no adverse coverage about the subject was found.

Key fields

  • hits[]: the adverse articles about the subject, most severe first: headline, source, date, link, a one-line summary, the typologies and their severity (1 to 5).
  • about_subject: how sure the match to your subject is, high or medium. Articles that are not about the subject, or only possibly, are left out.
  • overall.rationale and overall.disambiguation: why the result came out this way, and how namesakes were told apart.
  • overall.coverage_note: set when the web search returned nothing and only the news archive was read. Search again later before you rely on a none.
  • articles_reviewed: how many results were read.
  • screened_at: when the search ran. The same search within 6 hours returns the same report.

subject.kind says what was searched: person, company, vessel or port. A port result counts only financial crime at or through that port, or by its authority or operator: crime at another port, accidents, military incidents and country-wide sanctions are left out. For a vessel ("kind": "vessel", or "yacht" in the name), overall also names the owner the coverage gives, with owner_role, owner_confidence and the wording it rests on (owner_basis).

A result supports a human decision. Read the articles before you act on a hit, and treat none as "nothing found in this search", not as proof there is nothing.

Typologies

Every adverse article is mapped onto these ids (FATF designated categories of offences, plus sanctions, proliferation and regulatory action), with a severity from 1 to 5:

idCategorySeverity
terrorism_financingTerrorism / terrorist financing5
proliferation_financingProliferation financing (WMD)5
sanctions_evasionSanctions evasion / breach5
organized_crimeOrganized crime / racketeering5
drug_traffickingDrug trafficking5
human_traffickingHuman trafficking / smuggling5
arms_traffickingArms trafficking5
money_launderingMoney laundering4
corruption_briberyCorruption / bribery4
fraudFraud4
tax_crimeTax crimes / evasion3
insider_marketInsider trading / market manipulation3
cyber_crimeCybercrime4
environmental_crimeEnvironmental crime3
smugglingSmuggling (customs/excise)3
counterfeitingCounterfeiting / piracy2
violent_crimeViolent / serious crime4
regulatory_actionRegulatory / enforcement action2
general_criminalOther criminal proceedings2

Errors

StatusMeaning
401Missing or invalid key, or the key was revoked.
402No searches left on this key. The body says how to get more (below).
403This key can't call that endpoint.
422Invalid request, for example a one-letter name.
429Too many requests per minute, for this key or from this IP. Wait and retry.
502 / 503The search could not run. The search is given back (up to 3 times a day per key). Retry shortly.

Errors come back as JSON with a detail field.

Quota

  • Your first key has 10 free searches. They don't expire or reset.
  • One search is one call to /v1/adverse-media, however many articles it reads. A vessel or port search ("kind": "vessel" or "port", or a name read as a vessel, such as "yacht Amadea") counts as 2: it runs more queries and, for a port, a second check.
  • Invalid requests (422) are not charged. A search that could not run is given back, up to 3 times a day per key.
  • Get 10 more searches on your key for each new colleague who signs up through your referral link (on your key page).
  • For more, request a tier. We contact you and add the searches to your key.

When a key runs out, you get 402:

{
  "detail": {
    "error": "quota_exhausted",
    "message": "This key has no searches left. Share your referral link: ...",
    "searches_remaining": 0,
    "searches_needed": 1,
    "referral_url": "https://media.unbackoffice.com/?ref=yourcode",
    "upgrade_url": "https://media.unbackoffice.com/tiers",
    "tiers_url": "https://media.unbackoffice.com/tiers"
  }
}

Your data

The name and details you search are sent to news and web search providers to find coverage, and to Anthropic to read it. We keep each report, under your account, for 12 months so you can reopen it. You need a lawful basis to search a person, such as customer due diligence. Adverse media is not a credit, employment or tenant check. See the terms and the privacy notice.

Machine-readable spec: /openapi.json

Terms·Privacy·API docs

Crafted with love by Daertho.com