sanctions.io Screening API

Real-time single screening against sanctions, PEP, and criminal watchlists.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/sanctions-io-screening-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

sanctions-io-screening-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: sanctions.io Account Management Screening API
  description: The sanctions.io API provides sanctions, PEP (politically exposed persons), and criminal watchlist screening for AML compliance. It covers the Screening API (v2.3) - real-time single search, batch screening of up to 10,000 records per request, adverse media search, data source listing, and full database export - and the Monitoring API (v3.1) for continuous monitoring with alerts, plus account management (tokens, company and webhook configuration, users, plans, usage). All requests require a Bearer API token in the Authorization header; the API version is selected with the Accept header, for example "application/json; version=2.3" (the adverse media endpoint requires version=3.0). Sign up for a self-serve 7-day free trial at https://api.sanctions.io/users/signup to obtain a key.
  version: '2.3'
  contact:
    name: sanctions.io
    url: https://www.sanctions.io
    email: info@sanctions.io
  termsOfService: https://www.sanctions.io/terms-of-service
servers:
- url: https://api.sanctions.io
  description: Production
security:
- bearerAuth: []
tags:
- name: Screening
  description: Real-time single screening against sanctions, PEP, and criminal watchlists.
paths:
  /search/:
    get:
      operationId: createScreeningRequest
      tags:
      - Screening
      summary: Screen a name in real time
      description: Queries the sanctions, criminal watchlist, and PEP databases for a name and returns scored matches. Supports individuals, entities, vessels, and aircraft. Results include the confidence score, matched record details, the originating data source, and the echoed search parameters.
      parameters:
      - $ref: '#/components/parameters/acceptVersion'
      - name: name
        in: query
        required: true
        description: Primary name of the entity being screened (maximum 15 words). Full legal name for individuals; registered name for organizations.
        schema:
          type: string
          example: Walter White
      - name: min_score
        in: query
        required: true
        description: Minimum match confidence score (0.8-1.0) for a result to count as a match. Recommended starting value 0.88; 0.93 for stricter matching.
        schema:
          type: number
          format: float
          minimum: 0.8
          maximum: 1.0
          example: 0.88
      - name: data_source
        in: query
        required: true
        description: Comma-separated watchlist short codes (from the sources endpoint) or a Screening Collection, e.g. "sdn,nonsdn,uk-sanctions". Include ADV-MEDIA to add adverse media.
        schema:
          type: string
          example: sdn,nonsdn
      - name: entity_type
        in: query
        required: false
        description: Type of the screened entity. Strongly recommended to improve performance and match accuracy.
        schema:
          type: string
          enum:
          - individual
          - entity
          - vessel
          - aircraft
      - name: country
        in: query
        required: false
        description: ISO 3166-1 alpha-2 country associated with the entity (nationality/residence for individuals, incorporation/operating country for organizations).
        schema:
          type: string
          example: US
      - name: date_of_birth
        in: query
        required: false
        description: Date of birth (YYYY-MM-DD). Strongly recommended for individuals, particularly for PEP screening.
        schema:
          type: string
          format: date
          example: '1956-01-01'
      - name: identifier
        in: query
        required: false
        description: Additional identifier (passport number, national ID, tax ID, email, company domain, SWIFT code, IMO number, aircraft registration, wallet address; max 120 characters) screened in parallel with the name.
        schema:
          type: string
          maxLength: 120
      - name: external_identifier
        in: query
        required: false
        description: Client-defined identifier stored and returned in results so alerts map back to your internal records.
        schema:
          type: string
          example: ABC123
      - name: name_match_boosting_threshold
        in: query
        required: false
        description: Optional threshold (0.8-1.0, recommended 0.93-0.95) above which high-confidence name matches are boosted in the overall confidence score.
        schema:
          type: number
          format: float
          minimum: 0.8
          maximum: 1.0
          example: 0.94
      responses:
        '200':
          description: Paginated screening matches plus the echoed search parameters.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScreeningResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  schemas:
    ScreeningResponse:
      type: object
      properties:
        count:
          type: integer
        next:
          type: string
          nullable: true
        previous:
          type: string
          nullable: true
        results:
          type: array
          items:
            $ref: '#/components/schemas/ScreeningMatch'
        search:
          type: object
          properties:
            params:
              type: object
            timestamp:
              type: string
              format: date-time
            api_version:
              type: string
              example: '2.3'
            id:
              type: string
              format: uuid
    Error:
      type: object
      properties:
        detail:
          type: string
    ScreeningMatch:
      type: object
      properties:
        confidence_score:
          type: number
          format: float
          example: 1.0
        name:
          type: string
        alt_names:
          type: array
          items:
            type: string
        entity_type:
          type: string
          example: Entity
        address:
          type: array
          items:
            type: string
        country_residence:
          type: array
          items:
            type: string
        nationality:
          type: array
          items:
            type: string
        data_source:
          type: object
          properties:
            name:
              type: string
            short_name:
              type: string
        remarks:
          type: string
        si_identifier:
          type: string
          description: sanctions.io-specific unique identifier for the record.
        first_import:
          type: string
          format: date-time
        last_update:
          type: string
          format: date-time
        data_hash:
          type: string
          description: Changes when the underlying record changes.
  parameters:
    acceptVersion:
      name: Accept
      in: header
      required: false
      description: Selects the API version, e.g. "application/json; version=2.3". Without the header, version 1.0 is used by default.
      schema:
        type: string
        example: application/json; version=2.3
  responses:
    Unauthorized:
      description: Authentication credentials were not provided or are invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            detail: Authentication credentials were not provided.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'API token from the sanctions.io user portal, passed as "Authorization: Bearer {token}". The token may also be sent as a URL parameter, but the Authorization header is recommended.'