Treasury OFAC API: Check sanctions
Screens 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.
Unofficial. Not affiliated with or endorsed by Treasury OFAC.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Name, required
name Person, company, vessel or aircraft name to screen, for example Viktor Vekselberg.
Mahan Air
- Type optional
type Kind of name, for example company.
company
One of
any,person,company,vessel,aircraft. Defaultany.- Country optional
country Country to filter by, for example Iran.
Iran
- Strictness optional
strictness Minimum OFAC name score: strict 100%, balanced 90%, or broad 80%.
strict
One of
strict,balanced,broad. Defaultbalanced.- Max Results optional
max_results Maximum number of entries to return, for example 25.
5
Whole number from 1 to 100. Default
25.
Input as JSON
{ "name": "Mahan Air", "type": "company", "country": "Iran", "strictness": "strict", "max_results": 5}Output
{ "matches": [ { "list": "SDN", "name": "MAHAN AIR", "type": "Company", "aliases": [ "MAHAN AIR CO." ], "addresses": [ "No. 21, Mahan Air Tower, Tehran, Tehran, 1481655761, Iran; Azadegan Street, Jenah Expressway, Beginning of Sheykh Fazlollah Exp. Way; First of Karaj High Way", "Mahan Air Tower, 21st Floor, Tehran, Tehran, Iran; Azadeghan Street, Karaj Highway; P.O. Box 14515-411", "Mahan Air Tower, Tehran, Tehran, 1481655761, Iran; Azadegan St., Karaj Highway; P.O. Box 411-14515" ], "entry_link": "https://sanctionssearch.ofac.treas.gov/Details.aspx?id=12927" , "match_score": 100, "nationality": null, "ofac_entry_id": "12927", "program_codes": [ "NPWMD", "IFSR", "SDGT" ], "sanctions_programs": [ "Non-Proliferation", "Iran-related", "Terrorism" ], "date_of_birth_or_registration": null } ], "summary": "1 possible OFAC sanctions match found, searched 2026-10-23. Verify identities before taking action.", "match_found": true}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"sanctionssearch.ofac.treas.gov/check_sanctions","input":{"name":"Mahan Air","type":"company","country":"Iran","strictness":"strict","max_results":5}}' # 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": "sanctionssearch.ofac.treas.gov/check_sanctions" , "input": { "name": "Mahan Air", "type": "company", "country": "Iran", "strictness": "strict", "max_results": 5 }})# 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": "sanctionssearch.ofac.treas.gov/check_sanctions" , "input": { "name": "Mahan Air", "type": "company", "country": "Iran", "strictness": "strict", "max_results": 5 } }), 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 sanctionssearch.ofac.treas.gov/check_sanctions# with {"name":"Mahan Air","type":"company","country":"Iran","strictness":"strict","max_results":5}"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": 1, "description": "Person, company, vessel or aircraft name to screen, for example Viktor Vekselberg." }, "type": { "enum": [ "any", "person", "company", "vessel", "aircraft" ], "type": "string", "default": "any", "description": "Kind of name, for example company." }, "country": { "type": "string", "description": "Country to filter by, for example Iran." }, "strictness": { "enum": [ "strict", "balanced", "broad" ], "type": "string", "default": "balanced", "description": "Minimum OFAC name score: strict 100%, balanced 90%, or broad 80%." }, "max_results": { "type": "integer", "default": 25, "maximum": 100, "minimum": 1, "description": "Maximum number of entries to return, for example 25." } }}Output schema
{ "type": "object", "required": [ "match_found", "summary", "matches" ], "properties": { "matches": { "type": "array", "items": { "type": "object", "properties": { "list": { "type": [ "string", "null" ] }, "name": { "type": "string" }, "type": { "type": [ "string", "null" ] }, "aliases": { "type": "array", "items": { "type": "string" } }, "addresses": { "type": "array", "items": { "type": "string" } }, "entry_link": { "type": "string" }, "match_score": { "type": "integer" }, "nationality": { "type": [ "string", "null" ] }, "ofac_entry_id": { "type": "string" }, "program_codes": { "type": "array", "items": { "type": "string" } }, "sanctions_programs": { "type": "array", "items": { "type": "string" } }, "date_of_birth_or_registration": { "type": [ "string", "null" ] } } } }, "summary": { "type": "string" }, "match_found": { "type": "boolean" } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
sanctionssearch.ofac.treas.gov/check_sanctions- Returns
- match flag, summary, entries with list, programs, addresses, aliases, birth/registration date, score, 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 sanctionssearch.ofac.treas.gov/check_sanctions with the inputs above.
Ask your agent
- Screen the name Viktor Vekselberg against the OFAC sanctions lists and show any scored matches with their programs and aliases
- Is there any sanctions hit for a shipping company called Aurora Maritime Holdings registered in Panama?
- Check whether the vessel named Sea Falcon appears on any US Treasury sanctions list, using a broad matching threshold
- Run a balanced sanctions screen on the individual Mohammad Reza Karimi from Iran and return up to 10 entries
- Look up any strict-match OFAC entries for an aircraft called Silver Wing and list their registration details
See more
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.
sanctionsmap.eu/check_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_sanctionsChecks a person or organisation name against the current UN Security Council Consolidated List and returns ranked possible matches.
scsanctions.un.org/check_sanctionsLists 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_sanctionsFinds US trademark filings matching a brand name, optionally limited to likely goods or service classes. Exact marks come first, similar marks follow; not a legal clearance opinion.
uspto.gov/search_trademarksReturns federal obligations and distinct awards for a company or organization, including its parent and child recipient records. Covers the selected fiscal year or the last five fiscal years.
usaspending.gov/get_company_federal_awardsGets a federal candidate's fundraising and spending for a two-year FEC cycle. If several names match, returns the match with the most reported receipts.
fec.gov/get_candidate_fundraisingLists FBI wanted, missing-person and seeking-information notices, newest first, filtered by category, field office or name.
fbi.gov/list_most_wanted