EU Sanctions Map API: Check name against EU sanctions
Checks a person or organisation name against the EU consolidated financial sanctions list (asset freezes) on the EU Sanctions Map, returning likely matches with their regime, aliases, listing details and linked legal act. Name similarity is a screening aid, not identity confirmation.
Unofficial. Not affiliated with or endorsed by EU Sanctions Map.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- Name, required
name Person or organisation to check, e.g. Arkady Rotenberg.
Arkady Rotenberg
2 characters or more.
- Type optional
type Restrict listings to a person or an organisation, e.g. person.
any (default)
One of
any,person,organisation.- Max Results optional
max_results Maximum matches returned, e.g. 20 (up to 100).
20 (default)
Whole number from 1 to 100.
Input as JSON
{ "name": "Arkady Rotenberg"}Output
{ "matches": [ { "name": "Arkady Romanovich ROTENBERG", "type": "person", "aliases": [ "Аркадий Романович РОТЕНБЕРГ", "Arkadii Romanovich ROTENBERG", "Arkadij Romanovitj ROTENBERG" ], "legal_act": "2023/1765 (OJ L226)" , "nationality": [], "listing_date": "2015-03-15", "date_of_birth": "1951-12-15", "legal_act_link": "https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:32023R1765" , "sanctions_regime": "Ukraine - Territorial integrity", "sanctions_map_link": "https://www.sanctionsmap.eu/#/main/details/36/members?search=Arkady%20Romanovich%20ROTENBERG%2C%20%D0%90%D1%80%D0%BA%D0%B0%D0%B4%D0%B8%D0%B9%20%D0%A0%D0%BE%D0%BC%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87%20%D0%A0%D0%9E%D0%A2%D0%95%D0%9D%D0%91%D0%95%D0%A0%D0%93%2C%20Arkadii%20Romanovich%20ROTENBERG%2C%20Ar…" , "eu_reference_number": "7435", "reasons_for_listing": "Russian businessman. Chairman of the board of directors of publishing house Prosvescheniye.\nOwner of two companies, Mostotrest and Stroygazmontazh-Most, designated for their activities undermining Ukrainian sovereignty. Former owner of Stroygazmontazh, In 2019 Rotenberg sold the gas pipeline constru…" } ], "summary": "1 possible match found on the EU consolidated list; verify identity against the listing", "match_found": true}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"sanctionsmap.eu/check_sanctions","input":{"name":"Arkady Rotenberg"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "sanctionsmap.eu/check_sanctions" , "input": { "name": "Arkady Rotenberg" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "sanctionsmap.eu/check_sanctions" , "input": { "name": "Arkady Rotenberg" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run sanctionsmap.eu/check_sanctions# with {"name":"Arkady Rotenberg"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "name" ], "properties": { "name": { "type": "string", "minLength": 2, "description": "Person or organisation to check, e.g. Arkady Rotenberg." }, "type": { "enum": [ "any", "person", "organisation" ], "type": "string", "default": "any", "description": "Restrict listings to a person or an organisation, e.g. person." }, "max_results": { "type": "integer", "default": 20, "maximum": 100, "minimum": 1, "description": "Maximum matches returned, e.g. 20 (up to 100).", "x-fous-developer": true } }, "additionalProperties": false}Output schema
{ "type": "object", "required": [ "match_found", "summary", "matches" ], "properties": { "matches": { "type": "array", "items": { "type": "object", "required": [ "name", "type", "sanctions_regime", "listing_date", "aliases", "date_of_birth", "nationality", "reasons_for_listing", "legal_act", "legal_act_link", "sanctions_map_link", "eu_reference_number" ], "properties": { "name": { "type": "string" }, "type": { "type": "string" }, "aliases": { "type": "array", "items": { "type": "string" } }, "legal_act": { "type": [ "string", "null" ] }, "nationality": { "type": "array", "items": { "type": "string" } }, "listing_date": { "type": [ "string", "null" ] }, "date_of_birth": { "type": [ "string", "null" ] }, "legal_act_link": { "type": [ "string", "null" ] }, "sanctions_regime": { "type": [ "string", "null" ] }, "sanctions_map_link": { "type": "string" }, "eu_reference_number": { "type": [ "string", "null" ], "x-fous-developer": true }, "reasons_for_listing": { "type": [ "string", "null" ] } }, "additionalProperties": false } }, "summary": { "type": "string", "description": "Plain-language screening result." }, "match_found": { "type": "boolean", "description": "Whether any likely name match was found." } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
sanctionsmap.eu/check_sanctions- Returns
- match found, summary, matches with name, type, regime, listing date, aliases, birth date, nationality, reasons, legal act, map link
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method sanctionsmap.eu/check_sanctions with the inputs above.
Ask your agent
- Is Oleg Deripaska on the EU asset freeze list? I need the regime and the legal act he was listed under.
- We're onboarding a new supplier called Rosoboronexport. Can you screen the company against EU financial sanctions and tell me if anything comes up?
- Check sanctionsmap.eu for any person named Yevgeny Prigozhin and give me aliases, birth date and listing reasons.
- Run a quick EU sanctions screen on the individual 'Alisher Usmanov', persons only, top 5 hits.
- Using the EU Sanctions Map, see whether the organisation 'Wagner Group' is subject to an EU asset freeze, and include the map link for each match.
See more
All EU Sanctions Map methodsLists EU Sanctions Map regimes concerning a country, with measures, EUR-Lex legal acts, amendment dates and listed person and entity counts.
sanctionsmap.eu/get_country_sanctionsChecks a name against the current UK Sanctions List and returns possible matches in the site's best-match order, with designation details. Results may include entries that only mention the name in their reasons, so check each entry before identifying anyone.
gov.uk/check_sanctionsScreens a name against the OFAC SDN and non-SDN sanctions lists. Returns scored entries with identifying details. Similar names are potential matches, not confirmed identities.
sanctionssearch.ofac.treas.gov/check_sanctionsChecks a person or organisation name against the current UN Security Council Consolidated List and returns ranked possible matches.
scsanctions.un.org/check_sanctionsSearches EUR-Lex legal acts by topic, ranked by the site's relevance, filtered by document type, year of adoption and in-force status. Short names and ELI links are included when shown in the results.
eur-lex.europa.eu/search_eu_lawFinds U.S. nonprofits by organization name, optionally filtered by state and city, with the latest reported revenue and assets.
projects.propublica.org/search_nonprofitsFinds named places or kinds of places in a city or area, in search order, using OpenStreetMap Nominatim. Results may be fewer than requested. Data © OpenStreetMap contributors (ODbL).
openstreetmap.org/search_placesFinds recently published EU procurement notices matching what is being bought, with buyer, estimated value, submission deadline and TED notice link. Open-only results must have a future submission deadline.
ted.europa.eu/search_tenders