# Sanctions Screening: EU, OFAC & French Asset Freeze (`geckostar/filtrage-sanctions-ue-ofac-fr`) Actor

Screen customer or supplier names against the EU consolidated sanctions list, OFAC SDN and the French national asset-freeze register (DG Trésor), read at the source on every run. Fuzzy score, aliases, program, listing date, official link. KYC / AML support. $10 per 1,000 names.

- **URL**: https://apify.com/geckostar/filtrage-sanctions-ue-ofac-fr.md
- **Developed by:** [Gecko Lab](https://apify.com/geckostar) (community)
- **Categories:** Business, Automation, Agents
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 name screeneds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Sanctions Screening: EU, OFAC SDN and French asset-freeze register

Screen names of persons or companies against the EU consolidated financial sanctions list, the OFAC SDN list and the
French DG Trésor national asset-freeze register, downloaded from the official sources on every run, with the list
version in each result. For each name: a verdict, a fuzzy-match score, and for each close entry its aliases,
programme, listing date and official link. For compliance teams, KYC/KYB onboarding and payment checks.
**Price: $0.01 per name screened; invalid names and errors are free.**

**Decision support only.** It does not replace your anti-money-laundering and counter-terrorist-financing (AML/CFT)
obligations. False alerts and misses are possible; only the official list is authoritative. No language model, no
third-party database.

### Sources (public, no key needed)

| List | File read | Re-use conditions |
|---|---|---|
| EU: consolidated list of financial sanctions (FSF, European Commission) | XML 1.1, `webgate.ec.europa.eu/fsd/fsf` | Re-use authorised, European Commission re-use notice (Decision 2011/833/EU) |
| OFAC: SDN list (US Treasury) | XML, `sanctionslistservice.ofac.treas.gov` | Public domain, work of the US federal government (17 U.S.C. § 105) |
| France: national asset-freeze register (DG Trésor) | JSON, `gels-avoirs.dgtresor.gouv.fr` | Public information freely re-usable (French code on relations between the public and the administration, art. L321-1, L322-1 and L322-2): without alteration or distortion of meaning, citing the source and date; personal data processed in accordance with the GDPR (see below) |

The scope is closed: these three lists only. No politically exposed persons, no adverse media, no enrichment: the
tool only returns fields present in the list. Each list is downloaded once per run, at the source, then compared in
memory; nothing is cached or kept from one run to the next. Each match carries its list, the **version date** of that
list, the official link and the source notice (`mention_source`). If a requested list cannot be read, the run stops
before any screening and nothing is charged.

### How names are compared

- **Normalisation**: accents, case and punctuation ignored, word order irrelevant, Cyrillic and Greek transliterated,
  legal forms removed (LLC, OOO, SARL, GmbH…), common transliteration variants brought together (kh/h, zh/j, ou/u,
  y/i, w/v, ks/x; Mohammed, Muhammad, Mohamed).
- **Score from 0 to 100** for each list entry, based on its name or best alias: share of the entered name found
  (mainly) and share of the listed name covered. A one-word entered name against a multi-word listed name cannot
  exceed 80. An alias marked "weak" by the list counts for 90%.
- **Discriminating fields**, if you provide them: date of birth (same date +8, same year +4, no compatible year −15),
  nationality (+3 if it matches, −5 if the list gives others), official identifier. Each match shows the fields that
  agree (`champs_concordants`) and the state of each discriminating field (`champs_discriminants`: `date_concorde`,
  `annee_concorde`, `concorde`, `differe`, `concorde_sans_type`, `pays_du_document_differe`, `non_comparable`).

#### Verdict per name

| Verdict | Meaning |
|---|---|
| `AUCUNE_CORRESPONDANCE` | No entry in the lists checked reaches the threshold. |
| `CORRESPONDANCE_POSSIBLE_A_VERIFIER` | At least one entry reaches the threshold: close name or alias. To be checked against the official source: a close name does not prove it is the same person. |
| `CORRESPONDANCE_EXACTE` | An identifier you provided (passport number, registration number, list reference) equals an official identifier of an entry whose name also reaches the threshold, and of the same type: you must have declared this type (`{"type": "passport", "value": …}`), and it must be allowed for that entry (identity document for a person, registration or tax identifier for a company, IMO number for a vessel, registration for an aircraft). For a passport, the country entered must not contradict the document's country. An identifier provided without a type may agree (`concorde_sans_type`, agreeing field) but never gives this verdict. To be checked against the official source before any decision. |

The threshold (`reviewThreshold`, 80 by default, from 60 to 100) can be adjusted: lower, fewer misses and more false
alerts; higher, the opposite. The best score is always returned (`meilleur_score`), even below the threshold.

### Input

| Field | Default | Purpose |
|---|---|---|
| `names` | — | Names to screen, up to 5,000: a text, or an object `{"name", "birthDate", "country", "type", "identifiers", "reference"}` |
| `lists` | all three | Lists checked: `eu`, `ofac`, `fr` |
| `reviewThreshold` | 80 | Score from which an entry is returned as a match |
| `maxResultsPerName` | 10 | Matches returned per name (1 to 50); the number of further ones is shown |

For each name: `name` (2 to 200 characters, Latin, Cyrillic or Greek script), `birthDate` (`YYYY` or `YYYY-MM-DD`),
`country` (two-letter ISO code: `FR`, `RU`, `IR`…), `type` (`person` or `entity`), `identifiers` (10 at most, 5 to 40
letters or digits including one digit; a text, or an object `{"type", "value"}` with a type among `passport`,
`nationalId`, `taxId`, `companyRegistration`, `imo`, `mmsi`, `aircraft`, `swift`, `crypto`, `listReference`),
`reference` (your internal reference, copied into the result). An invalid name gives an error row, free of charge;
the other names are screened.

```json
{
  "names": [
    {"name": "Sberbank", "type": "entity", "reference": "client-001"},
    {"name": "Jean Exemple", "birthDate": "1980-05-01", "country": "FR", "type": "person", "reference": "client-002"}
  ],
  "lists": ["eu", "ofac", "fr"],
  "reviewThreshold": 80
}
```

### Output

One row per name: `reference`, `nom_saisi`, `date_naissance_saisie`, `pays_saisi`, `type_saisi`,
`identifiants_fournis` (their number: identifiers are not copied), `verdict`, `meilleur_score`, `seuil`,
`correspondances`, `correspondances_non_affichees`, `listes_consultees` (list, version, download date, source notice),
`avertissement`, `controle_le`, `facturable`, `erreur`.

Each match: `score`, `score_nom`, `correspondance_exacte`, `liste` (`UE`, `OFAC`, `FR`), `version_liste`,
`identifiant` (official reference of the entry), `type` (`personne`, `entite`, `navire` = vessel, `aeronef` =
aircraft), `nom_liste`, `alias_correspondants`, `dates_naissance`, `nationalites`, `programme` (programme or legal
basis, short official field), `date_inscription`, `lien`, `champs_concordants`, `champs_discriminants`,
`identifiant_concordant` (the one you provided), `mention_source`.

List specifics: the OFAC SDN list does not publish a listing date (`date_inscription` empty); for the French
register, it is the date of the oldest legal act cited. The run summary (`BILAN` record) gives the counters and the
version of each list. Output field names are in French.

### Personal data

**Persons on the lists.** The GDPR applies to the data of the natural persons listed. Controller: the publisher named
in the legal notice. Legal basis: legitimate interest (GDPR art. 6(1)(f)), supporting our users' legal due-diligence
and asset-freeze obligations. Data subjects are informed through this page (GDPR art. 14(5)(b): direct information
impossible or disproportionate). Only the fields useful for identification are kept: names and aliases, dates of
birth, nationalities, programme or legal basis, listing date, official reference and link. No free-text statement of
reasons is kept (GDPR art. 10), nor any address, phone number, e-mail or place of birth. Document numbers published
by the lists are only used for comparison, in memory, for the duration of the run: they are never written to the
results. No list data is kept by the publisher between two runs, and no history of delisted persons.

**Delisting and rectification.** Listing and delisting are decided by the authority that listed the person (Council
of the European Union, OFAC, French minister for the economy for the national register). A delisting request is made
to that authority. A listing decided by the United Nations Security Council and taken over by the EU is challenged
with the UN Ombudsperson or Focal Point. The tool reads the lists at the source on every run: a published delisting
is applied automatically from the next run. For any other request (access, question about this processing), write to
the contact address; complaints may be lodged with the CNIL (cnil.fr).

**Names you submit.** You are the controller for the names, dates of birth and identifiers you submit, and for its
legal basis (usually your due-diligence obligations). The publisher does not keep them: they are processed for the
duration of the run and the results are stored in your Apify account only. The run log contains no name, date,
identifier or reference: only counters.

**Retention.** Non-binding reminder: documents and information relating to your due-diligence obligations are kept
for five years (French Monetary and Financial Code, art. L561-12). Keep the result together with the list versions
shown.

### Pricing

Single event `name-screened`, **$0.01** per name **screened** against all requested lists, whatever the verdict.
Example: 1,000 names = $10. Nothing is charged for an invalid name, an error, or a run stopped because a list was
unreadable. The run stops cleanly at your spending limit. Safeguards: 5,000 names and 25 minutes at most per run;
beyond that, run again for the rest (`non_traites` in the summary).

### Related Actors

- [French Supplier Check](https://apify.com/geckostar/controle-fournisseur-france): status, EU VAT validity and
  insolvency notices of French companies, with an OK / WATCH / RISK verdict.
- [French Invoice Parser](https://apify.com/geckostar/factures-france-pdf-json): read PDF and Factur-X invoices to
  JSON, with French consistency checks.

***

## Version française — Filtrage sanctions UE + OFAC + gels français

Compare une liste de noms de personnes ou d'entités aux **listes officielles de gel des avoirs**, téléchargées
à la source à chaque exécution : liste consolidée des sanctions financières de l'**Union européenne**, liste
**SDN de l'OFAC** (États-Unis) et **registre national des gels** de la Direction générale du Trésor. Pour chaque nom : un verdict, un score de
proximité, et pour chaque entrée de liste proche, l'identifiant officiel, le nom listé, les alias qui
correspondent, les dates de naissance, les nationalités, le programme, la date d'inscription, le lien officiel
et la version de la liste. Aucun modèle de langage, aucune base tierce.

**Outil d'aide à la décision.** Il ne remplace pas vos obligations de lutte contre le blanchiment et le
financement du terrorisme (LCB-FT). Des fausses alertes et des oublis sont possibles ; seule la liste officielle
fait foi.

### Sources (publiques, sans clé)

| Liste | Fichier lu | Conditions de réutilisation |
|---|---|---|
| UE : liste consolidée des sanctions financières (FSF, Commission européenne) | XML 1.1, `webgate.ec.europa.eu/fsd/fsf` | Réutilisation autorisée, avis de réutilisation de la Commission européenne (décision 2011/833/UE) |
| OFAC : liste SDN (Trésor des États-Unis) | XML, `sanctionslistservice.ofac.treas.gov` | Domaine public, œuvre du gouvernement fédéral des États-Unis (17 U.S.C. § 105) |
| France : registre national des gels (DG Trésor) | JSON, `gels-avoirs.dgtresor.gouv.fr` | Information publique librement réutilisable (code des relations entre le public et l'administration, art. L321-1, L322-1 et L322-2) : sans altération ni dénaturation, avec mention de la source et de la date ; données personnelles traitées conformément au RGPD (voir plus bas) |

Le périmètre est fermé : ces trois listes seulement. Pas de personnes politiquement exposées, pas de presse,
aucun enrichissement : l'outil ne rend que des champs présents dans la liste. Chaque liste est téléchargée une
fois par exécution, à la source, puis comparée en mémoire ; rien n'est mis en cache ni gardé d'une exécution à
l'autre. Chaque correspondance porte sa liste, la **date de version** de cette liste, le lien officiel et la
mention de source (`mention_source`). Si une liste demandée ne peut pas être lue, l'exécution s'arrête avant
tout contrôle et rien n'est facturé.

### Comment les noms sont comparés

- **Normalisation** : accents, majuscules et ponctuation ignorés, ordre des mots indifférent, cyrillique et grec
  translittérés, formes juridiques retirées (LLC, OOO, SARL, GmbH…), variantes de translittération courantes
  rapprochées (kh/h, zh/j, ou/u, y/i, w/v, ks/x ; Mohammed, Muhammad, Mohamed).
- **Score de 0 à 100** pour chaque entrée de liste, d'après son nom ou son meilleur alias : part du nom saisi
  retrouvée (pour l'essentiel) et part du nom listé couverte. Un nom saisi d'un seul mot face à un nom listé de
  plusieurs mots ne dépasse pas 80. Un alias qualifié de « faible » par la liste compte pour 90 %.
- **Champs discriminants**, si vous les fournissez : date de naissance (même date +8, même année +4, aucune année
  compatible −15), nationalité (+3 si elle concorde, −5 si la liste en indique d'autres), identifiant officiel.
  Chaque correspondance indique les champs qui concordent (`champs_concordants`) et l'état de chaque champ
  discriminant (`champs_discriminants` : `date_concorde`, `annee_concorde`, `concorde`, `differe`,
  `concorde_sans_type`, `pays_du_document_differe`, `non_comparable`).

#### Verdict par nom

| Verdict | Signification |
|---|---|
| `AUCUNE_CORRESPONDANCE` | Aucune entrée des listes consultées n'atteint le seuil. |
| `CORRESPONDANCE_POSSIBLE_A_VERIFIER` | Au moins une entrée atteint le seuil : nom ou alias proche. À vérifier sur la source officielle : un nom proche ne prouve pas qu'il s'agit de la même personne. |
| `CORRESPONDANCE_EXACTE` | Un identifiant que vous avez fourni (numéro de passeport, d'immatriculation, référence de la liste) est égal à un identifiant officiel d'une entrée dont le nom atteint aussi le seuil, et du même type : vous devez avoir déclaré ce type (`{"type": "passport", "value": …}`), et il doit être admis pour cette entrée (document d'identité pour une personne, immatriculation ou identifiant fiscal pour une société, numéro OMI pour un navire, immatriculation pour un aéronef). Pour un passeport, le pays saisi ne doit pas contredire le pays du document. Un identifiant fourni sans type peut concorder (`concorde_sans_type`, champ concordant) mais ne donne jamais ce verdict. À vérifier sur la source officielle avant toute décision. |

Le seuil (`reviewThreshold`, 80 par défaut, de 60 à 100) se règle : plus bas, moins d'oublis et plus de fausses
alertes ; plus haut, l'inverse. Le meilleur score est toujours rendu (`meilleur_score`), même sous le seuil.

### Entrée

| Champ | Défaut | Rôle |
|---|---|---|
| `names` | — | Noms à contrôler, 5 000 au plus : un texte, ou un objet `{"name", "birthDate", "country", "type", "identifiers", "reference"}` |
| `lists` | les trois | Listes consultées : `eu`, `ofac`, `fr` |
| `reviewThreshold` | 80 | Score à partir duquel une entrée est rendue comme correspondance |
| `maxResultsPerName` | 10 | Correspondances rendues par nom (1 à 50) ; le nombre des suivantes est indiqué |

Pour chaque nom : `name` (2 à 200 caractères, alphabet latin, cyrillique ou grec), `birthDate` (`AAAA` ou
`AAAA-MM-JJ`), `country` (code ISO à deux lettres : `FR`, `RU`, `IR`…), `type` (`person` ou `entity`),
`identifiers` (10 au plus, 5 à 40 lettres ou chiffres dont un chiffre ; un texte, ou un objet
`{"type", "value"}` avec un type parmi `passport`, `nationalId`, `taxId`, `companyRegistration`, `imo`, `mmsi`,
`aircraft`, `swift`, `crypto`, `listReference`), `reference` (votre référence interne,
recopiée dans le résultat). Un nom invalide donne une ligne d'erreur, gratuite ; les autres noms sont contrôlés.

```json
{
  "names": [
    {"name": "Sberbank", "type": "entity", "reference": "client-001"},
    {"name": "Jean Exemple", "birthDate": "1980-05-01", "country": "FR", "type": "person", "reference": "client-002"}
  ],
  "lists": ["eu", "ofac", "fr"],
  "reviewThreshold": 80
}
```

### Sortie

Une ligne par nom : `reference`, `nom_saisi`, `date_naissance_saisie`, `pays_saisi`, `type_saisi`,
`identifiants_fournis` (leur nombre : les identifiants ne sont pas recopiés), `verdict`, `meilleur_score`,
`seuil`, `correspondances`, `correspondances_non_affichees`, `listes_consultees` (liste, version, date de
téléchargement, mention de source), `avertissement`, `controle_le`, `facturable`, `erreur`.

Chaque correspondance : `score`, `score_nom`, `correspondance_exacte`, `liste` (`UE`, `OFAC`, `FR`),
`version_liste`, `identifiant` (référence officielle de l'entrée), `type` (`personne`, `entite`, `navire`,
`aeronef`), `nom_liste`, `alias_correspondants`, `dates_naissance`, `nationalites`, `programme` (programme ou
fondement juridique, champ officiel court), `date_inscription`, `lien`, `champs_concordants`,
`champs_discriminants`, `identifiant_concordant` (celui que vous avez fourni), `mention_source`.

Particularités des listes : la liste SDN de l'OFAC ne publie pas de date d'inscription (`date_inscription` vide) ;
pour le registre français, c'est la date du plus ancien acte juridique cité. Le bilan de l'exécution (enregistrement `BILAN`) reprend
les compteurs et la version de chaque liste.

### Données personnelles

**Personnes inscrites sur les listes.** Le RGPD s'applique aux données des personnes physiques inscrites.
Responsable du traitement : l'éditeur indiqué dans les mentions légales. Base légale : intérêt légitime (RGPD,
art. 6.1.f), en appui des obligations légales de vigilance et de gel des avoirs de nos utilisateurs.
L'information des personnes est assurée par cette page (RGPD, art. 14.5.b : information directe impossible ou
disproportionnée). Seuls sont repris les champs utiles à l'identification : noms et alias, dates de naissance,
nationalités, programme ou fondement juridique, date d'inscription, référence officielle et lien. Aucun texte
libre de motif n'est repris (RGPD, art. 10), ni adresse, ni téléphone, ni courriel, ni lieu de naissance. Les
numéros de documents publiés par les listes servent seulement à la comparaison, en mémoire, le temps de
l'exécution : ils ne sont jamais écrits dans les résultats. Aucune donnée des listes n'est conservée par
l'éditeur entre deux exécutions, ni aucun historique des personnes radiées.

**Radiation et rectification.** L'inscription et la radiation relèvent de l'autorité qui a inscrit la personne
(Conseil de l'Union européenne, OFAC, ministre chargé de l'économie pour le registre national). Une demande de
radiation s'adresse à cette autorité. Une inscription décidée par le Conseil de sécurité des Nations unies et reprise
par l'UE se conteste auprès du Médiateur ou du point focal des Nations unies. L'outil lit les listes à la source à
chaque exécution : une radiation publiée est prise en compte automatiquement dès l'exécution suivante. Pour toute
autre demande (accès, question sur ce traitement), écrivez à l'adresse de contact ; réclamation possible auprès
de la CNIL (cnil.fr).

**Noms que vous soumettez.** Vous êtes responsable du traitement des noms, dates de naissance et identifiants que
vous soumettez, et de sa base légale (en général, vos obligations de vigilance). L'éditeur ne les conserve pas :
ils sont traités le temps de l'exécution et les résultats sont enregistrés dans votre seul compte Apify. Le
journal d'exécution ne contient ni nom, ni date, ni identifiant, ni référence : seulement des compteurs.

**Conservation.** Rappel non engageant : les documents et informations relatifs à vos obligations de vigilance
se conservent cinq ans (code monétaire et financier, art. L561-12). Conservez le résultat avec la version des
listes indiquée.

### Facturation

Événement unique `name-screened`, **0,01 $** par nom, facturé pour chaque nom **contrôlé** contre toutes les listes demandées, quel
que soit le verdict. Rien n'est facturé pour un nom invalide, une erreur, ou une exécution arrêtée parce qu'une
liste était illisible. L'exécution s'arrête proprement à la limite de dépense. Garde-fous : 5 000 noms et
25 minutes au plus par exécution ; au-delà, relancez pour la suite (`non_traites` dans le bilan).

***

### Conditions d'utilisation / Terms

Outil d'aide au filtrage destiné aux professionnels. Il ne remplace ni les obligations de vigilance et de gel des
avoirs du code monétaire et financier (art. L561-1 et suivants, L562-1 et suivants), ni l'avis d'un responsable
de la conformité ou d'un juriste, ni une solution certifiée. Toute correspondance doit être vérifiée sur la
source officielle avant toute décision. L'éditeur ne garantit ni l'exhaustivité ni l'actualité des listes
au-delà de la date de version indiquée.

La comparaison de noms produit des fausses alertes (homonymes, noms proches) et peut manquer une personne inscrite
(translittération inhabituelle, nom incomplet, écriture autre que latine, cyrillique ou grecque). Seule la liste officielle fait
foi. L'éditeur ne répond pas des décisions prises sur la seule base de ces résultats, ni de l'usage que
l'utilisateur en fait, dans les limites permises par la loi. Cette clause n'écarte aucun droit que la loi réserve
aux consommateurs, notamment la garantie légale de conformité des contenus et services numériques.

Screening aid intended for professionals. It replaces neither the due-diligence and asset-freeze obligations of
the French Monetary and Financial Code (art. L561-1 et seq., L562-1 et seq.), nor the advice of a compliance
officer or a lawyer, nor a certified solution. Every correspondence must be checked against the official source
before any decision. The publisher guarantees neither the completeness nor the currency of the lists beyond the
version date shown.

Name comparison produces false alerts (namesakes, similar names) and may miss a listed person (unusual
transliteration, incomplete name, script other than Latin, Cyrillic or Greek). Only the official list is authoritative. To
the extent permitted by law, the publisher is not liable for decisions based solely on these results or for the
user's use of them. Nothing here limits statutory consumer rights.

### Mentions légales / Legal notice

- Éditeur et vendeur / Publisher and seller : Audric Moussaoui, entrepreneur individuel (EI), pseudonyme « geckostar » / pseudonym "geckostar"
- Adresse / Address : 88 rue Oberkampf, 75011 Paris, France
- Téléphone / Phone : +33 6 95 11 28 15
- Courriel / E-mail : audricmm@gmail.com
- SIREN : en cours d'attribution, déclaration d'activité déposée le 24/10/2026 / being assigned, registration filed on 24 October 2026
- Directeur de la publication / Publication director : Audric Moussaoui
- TVA non applicable, art. 293 B du CGI / VAT not applicable (French VAT franchise, art. 293 B CGI)
- Hébergement / Hosting : Apify Technologies s.r.o., Vodičkova 704/36, 110 00 Prague 1, République tchèque / Czech Republic (hello@apify.com)

# Actor input Schema

## `names` (type: `array`):

One name per item: plain text, or an object {"name": …, "birthDate": "YYYY" or "YYYY-MM-DD", "country": two-letter country code (FR, RU…), "type": "person" or "entity", "identifiers": \[identifiers: text, or {"type": "passport", "value": …} with a type among passport, nationalId, taxId, companyRegistration, imo, mmsi, aircraft, swift, crypto, listReference], "reference": your internal reference}. Up to 5,000 names.

## `lists` (type: `array`):

Official lists to check. Default: all three.

## `reviewThreshold` (type: `integer`):

Score from which a list entry is returned as a possible match to review. Lower: fewer misses, more false alerts. Between 60 and 100.

## `maxResultsPerName` (type: `integer`):

The best matches are returned; the number of further ones is shown.

## Actor input object example

```json
{
  "names": [
    {
      "name": "Sberbank",
      "type": "entity",
      "reference": "client-001"
    },
    {
      "name": "Jean Exemple",
      "birthDate": "1980-05-01",
      "country": "FR",
      "type": "person",
      "reference": "client-002"
    }
  ],
  "lists": [
    "eu",
    "ofac",
    "fr"
  ],
  "reviewThreshold": 80,
  "maxResultsPerName": 10
}
```

# Actor output Schema

## `results` (type: `string`):

Une ligne par nom : verdict, meilleur score et correspondances. Seuls les noms contrôlés sont facturés.

## `bilan` (type: `string`):

Compteurs de l'exécution et version de chaque liste consultée.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "names": [
        {
            "name": "Sberbank",
            "type": "entity",
            "reference": "client-001"
        },
        {
            "name": "Jean Exemple",
            "birthDate": "1980-05-01",
            "country": "FR",
            "type": "person",
            "reference": "client-002"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("geckostar/filtrage-sanctions-ue-ofac-fr").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "names": [
        {
            "name": "Sberbank",
            "type": "entity",
            "reference": "client-001",
        },
        {
            "name": "Jean Exemple",
            "birthDate": "1980-05-01",
            "country": "FR",
            "type": "person",
            "reference": "client-002",
        },
    ] }

# Run the Actor and wait for it to finish
run = client.actor("geckostar/filtrage-sanctions-ue-ofac-fr").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "names": [
    {
      "name": "Sberbank",
      "type": "entity",
      "reference": "client-001"
    },
    {
      "name": "Jean Exemple",
      "birthDate": "1980-05-01",
      "country": "FR",
      "type": "person",
      "reference": "client-002"
    }
  ]
}' |
apify call geckostar/filtrage-sanctions-ue-ofac-fr --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,geckostar/filtrage-sanctions-ue-ofac-fr"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/4iqhrN29btA7qCJZp/builds/YroRADcJIq8alUkE7/openapi.json
