The EODHD Sanctions API provides programmatic access to U.S. Treasury Office of Foreign Assets Control (OFAC) sanctions data — the Specially Designated Nationals (SDN) and consolidated sanctions lists. It covers sanctioned entities and individuals, sanctioned vessels, and the sanctions programs under which designations are made. The data is refreshed every weekday from the official OFAC publication.

The API exposes four endpoints: entities (people and organizations), vessels (sanctioned ships, with maritime identifiers), programs (the list of sanctions programs with designation counts), and sources (the upstream data providers currently ingested). All endpoints share the same authentication and JSON response envelope.

Sanctions Entities

Returns sanctioned entities — individuals, organizations, vessels, and aircraft — from the OFAC lists. Each record carries the primary name, known aliases, the sanctions programs it falls under, and a free-form set of identifiers (nationality, gender, document numbers, secondary-sanctions notes, and similar attributes as published by OFAC).

API Endpoint

https://eodhd.com/api/sanctions/entities?api_token=YOUR_TOKEN

Method: GET   Auth: api_token query parameter   Cost: 1 API call per request   Pagination: offset / limit (default 20, max 100)   Response format: JSON envelope with data, meta, and links

Query Parameters

ParameterRequiredDescription
api_tokenYesYour EODHD API token
qNoFree-text search across name and aliases. Minimum 2 characters
typeNoEntity type: individual, entity, vessel, or aircraft
programNoSanctions program code (see the programs endpoint for the full list)
countryNoCountry associated with the entity
activeNotrue or false. Restrict to currently active or delisted designations
sourceNoData source. Currently ofac
page[limit]NoRows per page, 1 to 100. Default 20
page[offset]NoNumber of rows to skip. Default 0

Request Example

URL
cURL
PHP
Python
R
Chat GPT
https://eodhd.com/api/sanctions/entities?api_token=YOUR_TOKEN&program=RUSSIA-EO14024&type=entity
curl --location "https://eodhd.com/api/sanctions/entities?api_token=YOUR_TOKEN&program=RUSSIA-EO14024&type=entity&fmt=json"
$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://eodhd.com/api/sanctions/entities?api_token=YOUR_TOKEN&program=RUSSIA-EO14024&type=entity&fmt=json',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'GET',
));

$data = curl_exec($curl);
curl_close($curl);

try {
    $data = json_decode($data, true, 512, JSON_THROW_ON_ERROR);
    var_dump($data);
} catch (Exception $e) {
    echo 'Error. '.$e->getMessage();
}
import requests

url = f'https://eodhd.com/api/sanctions/entities?api_token=YOUR_TOKEN&program=RUSSIA-EO14024&type=entity&fmt=json'
data = requests.get(url).json()

print(data)
library(httr)
library(jsonlite)

url <- 'https://eodhd.com/api/sanctions/entities?api_token=YOUR_TOKEN&program=RUSSIA-EO14024&type=entity&fmt=json'
response <- GET(url)

if (http_type(response) == "application/json") {
    content <- content(response, "text", encoding = "UTF-8")
    cat(content)
} else {
    cat("Error while receiving data\n")
}
New to coding? Our ChatGPT assistant can generate code in any language tailored to our API. Simply describe how you want to use our data, and get a working piece of code. Don’t forget to replace the API token with your own.

Try it now (it's free)!

How to use it (YouTube)

Response Format

The response is a JSON object with data (the array of records), meta (total count and the active page window), and links (pagination links).

{
  "data": [
    {
      "source": "ofac",
      "source_uid": "31415",
      "entity_type": "entity",
      "name": "FEDERAL STATE AUTONOMOUS SCIENTIFIC ESTABLISHMENT",
      "aliases": ["FSASE"],
      "programs": ["RUSSIA-EO14024"],
      "country": "Russia",
      "listed_date": null,
      "is_active": true,
      "remarks": null,
      "identifiers": { "Tax ID No.": ["7704028201"] }
    }
  ],
  "meta": { "total": 19056, "page": { "offset": 0, "limit": 20 } },
  "links": { "next": "https://eodhd.com/api/sanctions/entities?page[offset]=20&page[limit]=20" }
}
FieldTypeDescription
sourcestringData source. Currently ofac
source_uidstringUnique identifier of the record at the source
entity_typestringOne of individual, entity, vessel, or aircraft
namestringPrimary designated name
aliasesarrayKnown alternate names (AKAs)
programsarraySanctions program codes the entity is designated under
countrystring or nullAssociated country, where published
listed_datestring (date) or nullDesignation date, where published
is_activebooleanWhether the designation is currently active
remarksstring or nullFree-text remarks from the source
identifiersobjectFree-form attributes keyed by label (for example nationality, gender, passport or tax IDs, secondary-sanctions notes). Keys vary by record

Sanctions Vessels

Returns sanctioned vessels with their maritime identifiers — IMO number, MMSI, call sign, flag, type, and tonnage — together with the owning entity and the sanctions programs involved. Use it for maritime compliance screening and dark-fleet monitoring.

API Endpoint

https://eodhd.com/api/sanctions/vessels?api_token=YOUR_TOKEN

Method: GET   Auth: api_token query parameter   Cost: 1 API call per request   Pagination: offset / limit (default 20, max 100)   Response format: JSON envelope with data, meta, and links

Query Parameters

ParameterRequiredDescription
api_tokenYesYour EODHD API token
qNoFree-text search across vessel and owner names. Minimum 2 characters
imoNoFilter by IMO number
flagNoFilter by flag state
vessel_typeNoFilter by vessel type
programNoSanctions program code
sourceNoData source. Currently ofac
page[limit]NoRows per page, 1 to 100. Default 20
page[offset]NoNumber of rows to skip. Default 0

Request Example

URL
cURL
PHP
Python
R
Chat GPT
https://eodhd.com/api/sanctions/vessels?api_token=YOUR_TOKEN&flag=Panama
curl --location "https://eodhd.com/api/sanctions/vessels?api_token=YOUR_TOKEN&flag=Panama&fmt=json"
$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://eodhd.com/api/sanctions/vessels?api_token=YOUR_TOKEN&flag=Panama&fmt=json',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'GET',
));

$data = curl_exec($curl);
curl_close($curl);

try {
    $data = json_decode($data, true, 512, JSON_THROW_ON_ERROR);
    var_dump($data);
} catch (Exception $e) {
    echo 'Error. '.$e->getMessage();
}
import requests

url = f'https://eodhd.com/api/sanctions/vessels?api_token=YOUR_TOKEN&flag=Panama&fmt=json'
data = requests.get(url).json()

print(data)
library(httr)
library(jsonlite)

url <- 'https://eodhd.com/api/sanctions/vessels?api_token=YOUR_TOKEN&flag=Panama&fmt=json'
response <- GET(url)

if (http_type(response) == "application/json") {
    content <- content(response, "text", encoding = "UTF-8")
    cat(content)
} else {
    cat("Error while receiving data\n")
}
New to coding? Our ChatGPT assistant can generate code in any language tailored to our API. Simply describe how you want to use our data, and get a working piece of code. Don’t forget to replace the API token with your own.

Try it now (it's free)!

How to use it (YouTube)

Response Format

{
  "data": [
    {
      "source": "ofac",
      "entity_source_uid": "23156",
      "entity_name": "7-28",
      "imo_number": "8898831",
      "mmsi": null,
      "call_sign": null,
      "flag": "Democratic People's Republic of Korea",
      "vessel_type": null,
      "tonnage": null,
      "gross_tonnage": null,
      "owner": null,
      "programs": ["DPRK4"],
      "country": null,
      "is_active": true
    }
  ],
  "meta": { "total": 1499, "page": { "offset": 0, "limit": 20 } },
  "links": { "next": "https://eodhd.com/api/sanctions/vessels?page[offset]=20&page[limit]=20" }
}
FieldTypeDescription
sourcestringData source. Currently ofac
entity_source_uidstringSource identifier of the associated entity (joins to the entities endpoint)
entity_namestringVessel name as designated
imo_numberstring or nullIMO ship identification number
mmsistring or nullMaritime Mobile Service Identity
call_signstring or nullRadio call sign
flagstring or nullFlag state
vessel_typestring or nullVessel type (for example Crude Oil Tanker)
tonnagenumber or nullDeadweight or registered tonnage, where published
gross_tonnagenumber or nullGross tonnage, where published
ownerstring or nullRegistered owner, where published
programsarraySanctions program codes
countrystring or nullAssociated country, where published
is_activebooleanWhether the designation is currently active

Sanctions Programs

Returns the full list of sanctions programs with the number of designated records under each. Use it to discover valid program codes for the program filter on the entities and vessels endpoints. This endpoint takes no parameters and is not paginated.

API Endpoint

https://eodhd.com/api/sanctions/programs?api_token=YOUR_TOKEN

Response Format

{
  "data": [
    { "program": "RUSSIA-EO14024", "count": 6380 },
    { "program": "SDGT", "count": 3148 },
    { "program": "IFSR", "count": 1523 }
  ],
  "meta": [],
  "links": []
}
FieldTypeDescription
programstringSanctions program code
countintegerNumber of designated records under the program

Sanctions Sources

Returns the upstream data sources currently ingested. The data set is sourced entirely from OFAC today; additional sources may be added over time. This endpoint takes no parameters and is not paginated.

API Endpoint

https://eodhd.com/api/sanctions/sources?api_token=YOUR_TOKEN

Response Format

{
  "data": [
    { "name": "ofac" }
  ],
  "meta": [],
  "links": []
}
FieldTypeDescription
namestringSource identifier (for example ofac)

Response Codes

CodeMeaning
200Success. Response body carries data, meta, and links
401Missing or invalid api_token
403Token is valid but the plan does not include the Sanctions API (requires All-In-One)
422Invalid parameter — unknown type or source value, invalid active value, a search term shorter than 2 characters, or page[limit] above 100

Notes and Limitations

  • Reference data, not compliance advice. This API mirrors published OFAC data for screening and research. It is not legal or compliance advice. For binding determinations, verify against the official OFAC sources.
  • OFAC coverage today. The data set currently covers U.S. Treasury OFAC lists. The sources endpoint reflects what is ingested; additional jurisdictions may be added over time.
  • Weekday refresh. OFAC publishes on U.S. business days; the data set is refreshed each weekday. Same-day intraday changes are not reflected until the next refresh.
  • Pagination. The entities and vessels endpoints support page[offset] and page[limit] (max 100) and report meta.total. The programs and sources endpoints return the full list in one response and are not paginated.
  • Variable identifiers. The identifiers object on entity records uses free-form keys taken from OFAC (nationality, gender, document numbers, secondary-sanctions notes, and so on). The set of keys differs from record to record. Optional fields are returned as null where the source does not publish a value.

For interest rates and central-bank policy rates, see the Interest Rates API. For government bond yields, EURIBOR, and FX reference rates, see the Macroeconomic Data API.

Sign up & Get Data