The response

A deep dive into every aspect of a /match response.

The /match endpoint uses query-by-example: you describe an entity in as much detail as you can, and the API returns ranked candidates from the database. You can experiment with the /match endpoint via the advanced screening search.

An example response

{
  "responses": {
    "q": {
      "status": 200,
      "results": [
        {
          "id": "NK-aU5ybkbRFJucf8YMwsJvDw",
          "caption": "Alexander Vyacheslavovich ZAKHAROV",
          "schema": "Person",
          "properties": {
            "address": ["272 Pushkinskaya Street, Apt 41, Izhevsk, 426008", "IZHEVSK, 426008"],
            "addressEntity": ["addr-a300b5bf407e387d2cf1f1a2f74b8178edde276e"],
            "alias": ["Zakharov Oleksandr Viacheslavovych", "Aleksandr Vyacheslavovich ZAKHAROV", "ЗАХАРОВ Александр Вячеславович", "Alexander Vyacheslavovich Zakharov", "Zacharov Aleksandr Vjačeslavovič", "Александр Вячеславович ЗАХАРОВ", "Aleksandr Vjačeslavovič ZACHAROV"],
            "birthCountry": ["ru"],
            "birthDate": ["1965-09-21"],
            "birthPlace": ["Izhevsk, Russia", "Russia", "Ijevsk, République oudmourte : RUSSIE", "Izhevsk, Russian Federation", "Ijevsk, République oudmourte, URSS (aujourd'hui Fédération de Russie)", "Izhevsk", "Izhevsk, RUSSIAN FEDERATION"],
            "citizenship": ["ru"],
            "country": ["ru"],
            "createdAt": ["2025-02-13"],
            "fatherName": ["Vjačeslavovič", "Vyacheslavovich", "ВЯЧЕСЛАВОВИЧ", "Вячеславович"],
            "firstName": ["Aleksandr Vyacheslavovich", "Aleksandr", "Александр", "Alexander Vyacheslavovich", "Alexander"],
            "gender": ["male"],
            "innCode": ["183111242406"],
            "lastName": ["Zakharov", "Zacharov", "ZAKHAROV", "Захаров"],
            "middleName": ["Vjačeslavovič", "Vyacheslavovich", "Вячеславович"],
            "modifiedAt": ["2025-03-04"],
            "name": ["Захаров Александр Вячеславович", "ZAKHAROV, Aleksandr Vyacheslavovich", "Aleksandr Vyacheslavovich ZAKHAROV", "Александр Вячеславович Захаров", "Alexander ZAKHAROV", "Aleksandr Vjačeslavovič Zacharov", "Zakharov Aleksandr Vyacheslavovich", "Alexander Vyacheslavovich ZAKHAROV", "Aleksandr Vyacheslavovich Zakharov", "Захаров Олександр В'ячеславович", "Zakharov Aleksandr"],
            "nationality": ["ru"],
            "notes": ["183111242406 (fiscalcode-National Fiscal Code) (Tax Identification Number)", "Alexander Zakharov is a majority stakeholder of LLC CST (also known as Zala Aero), which is engaged in the development, production and operation of aerial target complexes and unmanned aerial vehicles (UAVs). LLC CST manufactures UAVs KUB and Lancet-1, used by the Russian military in its war of aggression against Ukraine. LLC CST is listed by the Union. JCS Kalashnikov Concern, an entity listed by the Union, has a significant shareholding in LLC CST. Alexander Zakharov is also the chief designer of Aeroscan, owned until at least October 2023 by his son. Aeroscan is also engaged, along with LLC CST, in the development and production of UAVs used by the Russian military in Ukraine. Alexander Zakharov accompanied President Vladimir Putin and Minister of Defence Sergei Shoigu when they visited the Aeroscan production site for Lancet UAVs in September 2023 and February 2024, respectively. Therefore, Alexander Zakharov is supporting actions and policies which undermine or threaten the territorial integrity, sovereignty and independence of Ukraine, or stability or security in Ukraine. He is also supporting materially the Government of the Russian Federation and is associated with LLC CST and JSC Kalashnikov Concern.", "Disqualified", "The Director Disqualification Sanction was imposed on 09/04/2025.", "Function: Owner of LLC CST", "Tax Identification Number: 183111242406", "Numéro d'identification fiscale: 183111242406\nEntités associées:\n- LLC CST\n- JSC Kalashnikov Concern", "Associated entities: LLC CST, JSC Kalashnikov Concern", "(also  Alexander Vyacheslavovich ZAKHAROV ,  Alexander Vyacheslavovich ZAKHAROV )", "(also  Aleksandr Vyacheslavovich ZAKHAROV )", "Owner of Limited Liability Company Zala Aero", "(Date of UN designation: 2025-02-24)", "Alexander Zakharov est un actionnaire majoritaire de LLC CST (également connu comme Zala Aero), qui participe au développement, à la production et à l'exploitation de systèmes de ciblage aérien et de véhicules aériens sans pilote (UAV). LLC CST fabrique des UAV KUB et Lancet-1 utilisés par l'armée russe dans sa guerre d'agression contre l'Ukraine. LLC CST est inscrite sur la liste de l'Union. JCS Kalashnikov Concern, une entité inscrite sur la liste de l'Union, est un actionnaire important de LLC CST. Alexander Zakharov est également le concepteur en chef d'Aeroscan, détenue au moins jusqu'en octobre 2023 par son fils. Aeroscan participe également, avec LLC CST, au développement et à la production d'UAV utilisés par l'armée russe en Ukraine. Alexander Zakharov a accompagné le président Vladimir Poutine et le ministre de la défense Sergei Shoigu lors de leur visite sur le site de production d'Aeroscan pour les UAV Lancet en septembre 2023 et en février 2024, respectivement. Alexander Zakharov apporte donc son soutien à des actions et des politiques compromettant ou menaçant l'intégrité territoriale, la souveraineté et l'indépendance de l'Ukraine, ou la stabilité ou la sécurité en Ukraine. Il apporte également un soutien matériel au gouvernement de la Fédération de Russie et est associé à LLC CST et à JSC Kalashnikov ConcernEntités associées: LLC CST- JSC Kalashnikov Concern"],
            "position": ["Propriétaire de LLC CST", "Owner of LLC CST"],
            "programId": ["EU-UKR", "US-RUSHAR", "SECO-UKRAINE", "NZ-RSA2022", "GB-RUS", "UA-SA1644"],
            "sourceUrl": ["https://sanctionssearch.ofac.treas.gov/Details.aspx?id=45937", "https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=OJ:L_202500389", "https://find-and-update.company-information.service.gov.uk/disqualified-officers/natural/8WCoS94gFmXLU1W-eYP7V6e2Sco", "https://gels-avoirs.dgtresor.gouv.fr/Gels/RegistreDetail?idRegistre=7952"],
            "taxNumber": ["183111242406"],
            "topics": ["sanction", "corp.disqual", "debarment"],
            "uniqueEntityId": ["M57DAD27NLC8", "RSCWQEZSPEN9"]
          },
          "datasets": ["eu_travel_bans", "us_trade_csl", "be_fod_sanctions", "us_sam_exclusions", "eu_fsf", "fr_tresor_gels_avoir", "nz_russia_sanctions", "gb_fcdo_sanctions", "mc_fund_freezes", "ua_nsdc_sanctions", "gb_coh_disqualified", "us_ofac_sdn", "ext_ru_egrul", "ch_seco_sanctions"],
          "referents": ["eu-fsf-eu-12789-10", "gb-coh-8wcos94gfmxlu1w-eyp7v6e2sco", "ua-nsdc-25750-zaharov-oleksandr-v-aceslavovic", "usgsa-s4mrvqgq7", "usgsa-s4mrvqqmn", "be-fod-ae80e17106ffc7970506430df21fea09e5b456fa", "ru-inn-183111242406", "nz-ru-ind-1319-alexsandr-zakharov", "nz-ru-ind-1319-alexander-zakharov", "usgsa-af8b27d5a5a8500dd2d46f0adb79089939ff594e", "usgsa-a0bc5b2001a7f53da4febb3db680eca6c348de52", "usgsa-s4mrvqpbn", "eu-oj-e01f83368cd35b8811d64ab22ad9fc4978d99371", "gb-hmt-16271", "mc-freezes-dc1cc29fec28d916a2c73a1689638ca95c548dd0", "ch-seco-88881", "usgsa-s4mrvqj3g", "eu-tb-logical-173202", "gb-fcdo-rus2051", "fr-ga-7952", "ofac-45937"],
          "target": true,
          "first_seen": "2023-07-19T18:02:43",
          "last_seen": "2026-04-27T06:40:02",
          "last_change": "2026-04-24T10:57:01",
          "score": 0.9199999999999999,
          "explanations": {
            "name_match": {"score": 0.9199999999999999, "query": "Aleksandr Zacharov", "candidate": "Zacharov Aleksandr Vjačeslavovič", "detail": "['aleksandr'≈'aleksandr' symbolMatch [NAME:Q17501806]: 1.00, weight 1.00] ['zacharov'≈'zacharov' symbolMatch [NAME:Q4188781]: 1.00, weight 1.30] ['vjaceslavovic' extraResultPart: 0.00, weight 0.20]"},
            "dob_year_disjoint": {"score": 0.0, "query": null, "candidate": null, "detail": "Birth year match: 1965"},
            "dob_day_disjoint": {"score": 0.0, "query": null, "candidate": null, "detail": "No birth days provided"},
            "vessel_imo_mmsi_match": {"score": 0.0, "query": null, "candidate": null, "detail": "Not a vessel"}
          },
          "match": true
        },
        {
          "id": "NK-Mo6jtPz9hncYMTNtLo2i2Z",
          "caption": "Захаров Олександр",
          "schema": "Person",
          "properties": {
            "alias": ["Zakharov Oleksandr"],
            "birthDate": ["1951-12-01"],
            "birthPlace": ["Російська Федерація"],
            "citizenship": ["ru"],
            "name": ["Захаров Олександр", "ZAKHAROV ALEXANDR"],
            "programId": ["UA-SA1644"],
            "topics": ["sanction"]
          },
          "datasets": ["ua_nsdc_sanctions"],
          "referents": ["ua-nsdc-15041-zaharov-oleksandr"],
          "target": true,
          "first_seen": "2023-04-20T10:50:14",
          "last_seen": "2026-04-27T00:51:16",
          "last_change": "2026-01-06T08:22:01",
          "score": 0.7500000000000002,
          "explanations": {
            "name_match": {"score": 0.9000000000000002, "query": "Aleksandr Zacharov", "candidate": "ZAKHAROV ALEXANDR", "detail": "['aleksandr'≈'alexandr' symbolMatch [NAME:Q17501806]: 0.90, weight 1.00] ['zacharov'≈'zakharov' symbolMatch [NAME:Q4188781]: 0.90, weight 1.30]"},
            "dob_year_disjoint": {"score": 1.0, "query": null, "candidate": null, "detail": "Birth years: 1965 vs 1951"},
            "dob_day_disjoint": {"score": 0.0, "query": null, "candidate": null, "detail": "No birth days provided"},
            "vessel_imo_mmsi_match": {"score": 0.0, "query": null, "candidate": null, "detail": "Not a vessel"}
          },
          "match": true
        }
      ],
      "total": {"value": 2, "relation": "eq"},
      "query": {
        "id": null,
        "schema": "Person",
        "properties": {
          "alias": ["Aleksandr Zacharov"],
          "birthDate": ["1965"],
          "firstName": ["Aleksandr"],
          "lastName": ["Zacharov"]
        }
      }
    }
  },
  "limit": 5
}

Anatomy of a response

The top-level response object has two keys:

  • responses — an object keyed by query ID ("q" in our example)
  • limit — the maximum number of results returned per query (default 5).

Each entry in responses is a query result object with four keys:

  • status — the HTTP status code for that query
  • results — the list of matched entities, sorted by descending match confidence, up to limit results
  • total — the total number of candidates evaluated
  • query — the parsed version of your input query, showing how the API interpreted it.

The parsed query

The response includes a query object showing how the API interpreted your input. Comparing it to what you sent is a useful debugging step — the API normalizes names and may add fields you didn't provide. In the example above, it added an alias entry combining the separate name fields, which it then uses as an additional matching signal.

The returned query is also the fastest way to catch data quality issues in your submissions. If, for example, a date wasn't parsed because it's badly formatted, you'll be able to catch it by:

  • comparing the submitted to the returned query
  • logging that the date is missing (as well the the submitted value)
  • inspecting the submitted date to see that it's something like '1991-13-28'.

Similarly, if you supply a property for a schema that doesn't use that property, like a birthDate or a firstName for a LegalEntity (those are only used for Person), you'll also see that there's no value for that property in the returned query.

Result fields

Each item in results is an entity object with the following fields:

id

The entity identifier (e.g. NK-…). Use this to fetch full details via /entities/<id>.

caption

The short display name of the entity.

schema

The schema type of the entity, e.g. Person, Company, or Vessel.

properties

A full description of the entity, aggregated from all source datasets. Each property key maps to a list of values.

datasets

The data sources the entity appears in.

referents

The ids that map to this entity's canonical id, aggregated during deduplication.

target

A simplified representation of the risk topics that apply to an entity. true if any of the topics in the entity's properties are marked as a risk target. false for entities that appear only as related parties (e.g. linked via an ownership or directorship record).

first_seen, last_seen, last_change

Timestamps indicating when the entity first appeared in the data, when it was last observed, and when its data last changed.

Distinct from the createdAt, modifiedAt, and retrievedAt properties on an entity, which get their values from the data source.

score

A number between 0 and 1 representing the confidence that this is a true match according to the algorithm used. Scores at or above 0.7 are treated as matches by the default algorithm.

Score means match confidence, not risk level

The score field represents how confident the algorithm is that the returned entity is the same as the one you queried. It is not a risk score or threat assessment.

Read more

Tuning the matching algorithm — see threshold in particular

explanations

A breakdown of how the score was computed, keyed by feature (e.g. name_match, identifier_match, dob_year_disjoint). Each entry contains the feature score (all of which are aggregated to produce the overall score), the matched query and candidate values, and an explanation of how the feature score was arrived at in detail.

match

true when the algorithm accepted the result as a match — when the score is at or above the threshold (0.7 by default).

Results in detail

If you want to retrieve additional details for a matched entity, use the /entities/<id> endpoint, where <id> is the id attribute on one of the results. This returns a nested representation that includes family and business relationships, and detailed sanctions designations.

Each sanctioned entity (Person, Company, Vessel, etc.) can be tied to one or more Sanction objects. A Sanction record describes a specific listing: the authority that issued it, the sanctions program, start and end dates, and the reason for designation. The programId values you see on the parent entity's properties are derived from these records and can be expanded into additional details on the relevant policy regime.

You can also view the OpenSanctions entity page at https://opensanctions.org/entities/<id> to browse an entity's documented connections.

See an example of an entity on the OpenSanctions website. It includes all the properties, as well as all related entities under Relationships.

Reducing false alerts

If one of your queries returns a result, this is not immediately cause for alarm: the database for politically exposed persons in particular contains many individuals with common names, and matches will be fairly frequent. Instead, you should invest time to fine-tune the configuration of the matching system, and eventually also set up a process for human review.

The following strategies can be used to reduce error rates in results returned from the API:

  • Define good query filters to avoid screening against data sources or risk factors that are irrelevant to your use case.
  • Tune the matching algorithm to define alerting thresholds relevant to your use case. A sanctions screening system may need to be more aggressive in matching names than a PEP screening process. Your specific data profile might benefit from up- or down-ranking one of the matching features we use.
  • Provide as much detail in your queries as possible. Explore the data dictionary to see the properties might be used as ways to quickly discard a match before it triggers an alarm.