Skip to main content
The Office of Foreign Assets Control, part of the US Treasury, publishes the parties that US persons may not deal with. The Specially Designated Nationals and Blocked Persons list is the well-known one, and a consolidated list carries the other programs. Each party comes with every name OFAC knows it by, its addresses, the programs it is designated under, and OFAC’s own note, which is where dates and places of birth, passport, tax and registration numbers are written. Both lists, brought up to date every day and searchable across primary names and aliases at once. A party OFAC delists stops matching the same day. To check one person or company, screen them: names match through typos and reordering, and each possible match comes with a score and what decided it.
The whole source, organized and ready to query: every endpoint on this page answers in milliseconds. Every response carries as_of: how current the data is. How datasets work.

Search sanctioned parties

POST /us/ofac/sanctions-search/v1 Dataset Searches both lists by any combination of name or alias, list, party type, sanctions program and country.
Returns as_of (how current the data is), the applied filters, total and total_is_exact, page, per_page, total_pages, count and parties[], by name. Every party carries id (the key, e.g. sdn-36), list (sdn or non_sdn), entity_number, name (LAST, First for a person), party_type (individual, entity, vessel or aircraft), programs[] (the sanctions programs, e.g. RUSSIA-EO14024, SDGT, CUBA), title, remarks (OFAC’s own note, which carries dates and places of birth, passport, tax and registration numbers), vessel (call sign, type, tonnage, flag and owner, for a vessel), aliases[] ({ type, name, remarks }, where the type is aka, fka or nka), alias_names[], addresses[] ({ address, city_state_province, country, remarks }) and countries[]. Empty fields are null. OFAC writes a person’s name last name first, and records most identifying detail as prose in remarks rather than as fields.
The search matches the party’s primary name and every alias, word by word and without stemming, so query finds a party under any name OFAC records for it. Brought up to date daily; a party OFAC delists stops matching.
A name match is a starting point, not a determination. OFAC’s own guidance is to confirm a hit against the party’s other identifiers before acting on it, and the list carries many similar names.

Screen a person or company

POST /us/ofac/sanctions-screen/v1 Dataset Scores every party on both lists against one subject and returns the ones that may be the same, closest first. Send what you know: the name decides most of the score, and a date of birth, a country or an identity number confirm or rule out a hit.
Returns as_of (how current the data is), the query as understood, the threshold, matched (whether any party reached it), count and hits[], closest first. Every hit carries score (0 to 100), matched_name (the primary name or alias that matched best, as OFAC writes it), matched_on (name or alias), breakdown and party, the full record as the search returns it. breakdown says what decided the score: name (score, weight), birth_date and country (result, score, weight, value), and id_number (result, value). A result is match, partial (a date of birth in the same year, another day), mismatch or not_compared, and value is what OFAC records.
The score weighs the name at 60, the date of birth at 25 and the country at 15. A part the request leaves out, or OFAC does not record for the party, is not compared, and the others share its weight: with a name alone, the name is the whole score. A date of birth in another year subtracts, and so does a country the party has no tie to. An identity number that matches one OFAC records sets the score to 100.
Names match in any order, with or without accents, through typos and with words joined or split. Legal forms such as LLC or S.A. do not make two companies alike, and names whose numbers differ, such as two vessels, do not match. A one-word name is compared as a whole, so screen with the full name. Parties below threshold are left out, so an empty hits is the answer “no party on the lists comes close”, not an error.
A name match is a starting point, not a determination. OFAC’s own guidance is to confirm a hit against the party’s other identifiers before acting on it, and the list carries many similar names.

One party

POST /us/ofac/sanctioned-party/v1 Dataset Resolves one sanctioned party by its id and returns the full record.
Returns found, id, as_of and party (null when not found). Every party carries id (the key, e.g. sdn-36), list (sdn or non_sdn), entity_number, name (LAST, First for a person), party_type (individual, entity, vessel or aircraft), programs[] (the sanctions programs, e.g. RUSSIA-EO14024, SDGT, CUBA), title, remarks (OFAC’s own note, which carries dates and places of birth, passport, tax and registration numbers), vessel (call sign, type, tonnage, flag and owner, for a vessel), aliases[] ({ type, name, remarks }, where the type is aka, fka or nka), alias_names[], addresses[] ({ address, city_state_province, country, remarks }) and countries[]. Empty fields are null. OFAC writes a person’s name last name first, and records most identifying detail as prose in remarks rather than as fields.
An id no list carries returns found: false with HTTP 200, not an error. That is also the answer for a party OFAC has delisted.

Full reference

Schemas, all response fields, and an interactive playground.