Sanctions data updated daily

API

API Documentation

Integrate sanctions screening directly into your applications with our REST API.

Base URL: https://api.ofacscreen.com/api/v1/

Getting Started

The OFACScreen API allows you to programmatically screen names and entities against OFAC and other sanctions lists. Follow these steps to get up and running:

1

Create an Account

Create an account. The REST API is on every plan, including the 14-day trial, so you can integrate before you pay.

2

Generate API Key

Go to your dashboard settings to generate a Bearer token.

3

Make Your First Call

Use the examples below to start screening against sanctions lists.

Authentication

All API requests must include a Bearer token in the Authorization header. You can generate API keys from your account dashboard.

Authorization: Bearer your_api_key_here

Keep your API key secret. Do not expose it in client-side code, public repositories, or browser requests.

Screen (Single)

POST /api/v1/screen/

Screen a single name or entity against all enabled sanctions lists. Returns match results with confidence scores.

Request

curl -X POST https://api.ofacscreen.com/api/v1/screen/ \
  -H "Authorization: Bearer your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "John Smith",
    "type": "individual",
    "threshold": 0.3
  }'

Parameters

Parameter Type Required Description
name string Yes Name or entity to screen (max 500 characters)
type string No "individual", "entity", "vessel", or "aircraft". Defaults to all types.
threshold number No Minimum match score between 0.0 and 1.0. Defaults to 0.3.
limit integer No Return only the highest-scoring limit matches. Omit it and every match is returned, which is the default. total_matches is always the real total, so total_matches greater than the length of matches means the rest were above your limit, not missing.

Response

{
  "query": "John Smith",
  "screened_at": "2026-03-04T14:30:00Z",
  "total_matches": 1,
  "matches": [
    {
      "id": 281578,
      "name": "John Ka-chiu LEE",
      "entry_type": "individual",
      "list_code": "OFAC_SDN",
      "list_name": "OFAC Specially Designated Nationals (SDN)",
      "program": "HK-EO13936",
      "remarks": "",
      "score": 0.333,
      "score_pct": 33,
      "matched_alias": "John LEE",
      "aliases": ["John LEE", "Ka Chiu LEE"],
      "addresses": [{"city": "Kowloon", "country": "Hong Kong"}],
      "identifications": [{"type": "National ID No.", "number": "G0286787"}],
      "match_level": "low"
    }
  ]
}

Screen (Batch)

POST /api/v1/screen/batch/

Screen multiple names or entities in a single request. Supports up to 100 names per batch on every plan. For larger batches, use the CSV upload feature in the web dashboard, where the per-file row limit rises with your plan.

Request

curl -X POST https://api.ofacscreen.com/api/v1/screen/batch/ \
  -H "Authorization: Bearer your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "names": ["John Smith", "Acme Trading LLC", "Jane Doe"],
    "type": "individual",
    "threshold": 0.3
  }'

Parameters

Parameter Type Required Description
names array Yes Array of name strings to screen (max 100)
type string No "individual", "entity", "vessel", or "aircraft". Defaults to all types.
threshold number No Minimum match score between 0.0 and 1.0. Defaults to 0.3.

Response

{
  "screened_at": "2026-03-04T14:30:00Z",
  "total_screened": 3,
  "results": [
    {
      "query": "John Smith",
      "total_matches": 1,
      "matches": [...]
    },
    {
      "query": "Acme Trading LLC",
      "total_matches": 0,
      "matches": []
    },
    {
      "query": "Jane Doe",
      "total_matches": 0,
      "matches": []
    }
  ]
}

Lists

GET /api/v1/lists/

Retrieve information about all available sanctions lists, including the last update timestamp. This endpoint does not require authentication.

Request

curl https://api.ofacscreen.com/api/v1/lists/

Response

{
  "lists": [
    {
      "code": "OFAC_SDN",
      "name": "OFAC Specially Designated Nationals (SDN)",
      "description": "The primary US sanctions list maintained by the Office of Foreign Assets Control.",
      "country": "United States",
      "last_updated": "2026-03-04T12:00:00Z"
    },
    {
      "code": "EU_FSF",
      "name": "EU Financial Sanctions (FSF)",
      "description": "The European Union consolidated list of persons, groups and entities subject to EU financial sanctions.",
      "country": "European Union",
      "last_updated": "2026-03-04T11:00:00Z"
    }
  ]
}

Monitoring

GET POST DELETE /api/v1/monitoring/

Manage entities for continuous monitoring. Monitored entities are automatically re-screened on every sanctions list update. You'll receive an email alert when a new match is detected.

List Entities

curl https://api.ofacscreen.com/api/v1/monitoring/ \
  -H "Authorization: Bearer your_api_key_here"
{
  "entities": [
    {
      "id": 42,
      "name": "John Smith",
      "entity_type": "individual",
      "last_checked_at": "2026-03-04T12:00:00Z",
      "last_match_found": false,
      "last_match_score": 0.0
    }
  ],
  "total": 1
}

Add Entity

curl -X POST https://api.ofacscreen.com/api/v1/monitoring/ \
  -H "Authorization: Bearer your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{"name": "John Smith", "entity_type": "individual"}'
{
  "id": 42,
  "name": "John Smith",
  "entity_type": "individual",
  "created": true
}

Remove Entity

curl -X DELETE https://api.ofacscreen.com/api/v1/monitoring/ \
  -H "Authorization: Bearer your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{"id": 42}'
{"id": 42, "deleted": true}

Note: The number of monitored entities is limited by your plan. Entities are automatically screened on every sanctions list update. Email alerts are sent when a new match is detected.

Rate Limits

API calls draw on the same monthly search allowance as the web interface, so one quota covers both. Rate limit headers are included in every response.

Plan Monthly Quota
Free Trial 25 searches
Starter 1,000 searches
Professional 2,000 searches
Business 10,000 searches
Enterprise Unlimited

Rate Limit Headers

X-RateLimit-Limit: 10000
X-RateLimit-Remaining: 9955

If you exceed your monthly quota, you will receive a 429 Too Many Requests response with a Retry-After header.

Error Codes

The API uses standard HTTP status codes to indicate success or failure.

Status Description
200 Success. Results returned.
400 Bad request. Check your request parameters.
401 Unauthorized. Invalid or missing API key.
403 Forbidden. No active subscription, or a plan without API access.
429 Rate limit exceeded. Retry after the reset period.
500 Internal server error. Contact support if this persists.

Error Response Format

{
  "error": "name field is required"
}

API

Ready to Integrate?

The REST API is on every plan, including the 14-day trial. Start the trial and generate your API key from your dashboard settings.