---
name: eu-consolidated-financial-sanctions-files-ingestion
description: "How to get EU Consolidated Financial Sanctions Files data into a pandas DataFrame and Parquet: access, the request, the format, limits, quirks and terms."
---

# Load the EU sanctions CSV into pandas and Parquet

Source entry: https://signal-lab-jet.vercel.app/datasets/eu-consolidated-financial-sanctions-files
Provider: https://data.europa.eu/data/datasets/consolidated-list-of-persons-groups-and-entities-subject-to-eu-financial-sanctions?locale=en
Checked against the provider's documentation: 2026-11-02

## Access
- The Commission's CSV and XML snapshots download without an account or key.
- The checked CSV 1.0 distribution is labelled CC BY 4.0 in the data portal metadata.

## Request
```bash
curl -o eu-sanctions.csv 'https://webgate.ec.europa.eu/fsd/fsf/public/files/csvFullSanctionsList/content?token=dG9rZW4tMjAxNw'
```

## Format
Semicolon-delimited UTF-8 CSV with file date, entity and linked-record identifiers, subject type, legal basis and programme, names, remarks, addresses, birth details, identity documents, citizenship and EU reference number.

## Load into pandas and Parquet
Needs Python 3 with requests, pandas and pyarrow.
```python
"""EU consolidated financial-sanctions CSV -> pandas -> Parquet. No key."""
import io
import requests
import pandas as pd

URL = "https://webgate.ec.europa.eu/fsd/fsf/public/files/csvFullSanctionsList/content?token=dG9rZW4tMjAxNw"
r = requests.get(URL, timeout=300)
r.raise_for_status()
df = pd.read_csv(io.BytesIO(r.content), sep=";", low_memory=False)
df.to_parquet("eu_financial_sanctions.parquet", index=False)
print(len(df), "rows", df["Entity_logical_id"].nunique(), "unique entity IDs",
      "file date", df["Date_file"].iloc[0])
```
Run by us on 2026-11-02 (python 3.13.5 | pandas 3.1.0 | pyarrow 26.0.0 | requests 2.34.2). Result: 44043 rows 6269 unique entity IDs file date 23/10/2026

## Limits
- Rate limit: Not stated.
- The provider declares daily updates but warns that the dataset may lag Official Journal publications.
- The files are complete snapshots, not query responses or a dated change-history service.

## Quirks
- The CSV uses semicolons, begins with a UTF-8 byte-order mark and repeats Entity_logical_id across linked names, addresses and other attributes.
- Date_file is the snapshot's data date; it can be earlier than the download date.
- Only Official Journal information is authentic, so preserve Leba_url and EU_ref_num for verification.

## Terms and attribution
- The checked CSV 1.0 distribution is labelled CC BY 4.0.
- Reuse requires appropriate credit and an indication of changes; identifiable-person or third-party material can involve additional rights.
- Terms page: https://commission.europa.eu/legal-notice_en

## Sources
- https://data.europa.eu/api/hub/search/datasets/consolidated-list-of-persons-groups-and-entities-subject-to-eu-financial-sanctions: "Only the information published in the Official Journal of the EU is deemed authentic."
- https://data.europa.eu/api/hub/search/datasets/consolidated-list-of-persons-groups-and-entities-subject-to-eu-financial-sanctions: "Please note that the information in this dataset may not be fully up to date because updates are delayed compared to the relevant publications in the EU's Official Journal."
- https://data.europa.eu/api/hub/search/datasets/consolidated-list-of-persons-groups-and-entities-subject-to-eu-financial-sanctions: "Creative Commons Attribution 4.0 International"
- https://commission.europa.eu/legal-notice_en: "This means that reuse is allowed, provided appropriate credit is given and changes are indicated."

## Help improve this skill
Missing a source, or see something to improve? Call the MCP tool suggest_source or feedback (or POST /api/suggest or /api/feedback). Reviewed ideas: https://signal-lab-jet.vercel.app/agent-suggestions

Information for educational purposes only. Free tiers, limits and licenses belong to the providers and may change; check the provider's own terms before using the data.
