---
name: uk-sanctions-list-ingestion
description: "How to get FCDO UK Sanctions List data into a pandas DataFrame and Parquet: access, the request, the format, limits, quirks and terms."
---

# Load the UK Sanctions List CSV into pandas and Parquet

Source entry: https://signal-lab-jet.vercel.app/datasets/uk-sanctions-list
Provider: https://www.gov.uk/government/publications/the-uk-sanctions-list
Checked against the provider's documentation: 2026-11-02

## Access
- CSV, XML, ODS, ODT, HTML, text and PDF files download without an account or key.
- The CSV begins with a report-date line before its header row.

## Request
```bash
curl -O 'https://sanctionslist.fcdo.gov.uk/docs/UK-Sanctions-List.csv'
```

## Format
CSV with a report-date preamble and rows for names, aliases, regimes, designation source, sanctions, reasons, addresses, dates, identity documents, company relationships and vessel attributes.

## Load into pandas and Parquet
Needs Python 3 with requests, pandas and pyarrow.
```python
"""FCDO UK Sanctions List CSV -> pandas -> Parquet. No key."""
import io
import requests
import pandas as pd

URL = "https://sanctionslist.fcdo.gov.uk/docs/UK-Sanctions-List.csv"
r = requests.get(URL, timeout=120)
r.raise_for_status()
report_date = r.content.splitlines()[0].decode("utf-8-sig").split(":", 1)[1].strip()
df = pd.read_csv(io.BytesIO(r.content), skiprows=1, low_memory=False)
df.to_parquet("uk_sanctions_list.parquet", index=False)
print(len(df), "rows", df["Unique ID"].nunique(), "unique IDs",
      df["Designation Type"].nunique(), "designation types", "report date", report_date)
```
Run by us on 2026-11-02 (python 3.13.5 | pandas 3.1.0 | pyarrow 26.0.0 | requests 2.34.2). Result: 58836 rows 6420 unique IDs 3 designation types report date 30-Oct-2026

## Limits
- Rate limit: Not stated.
- The files are current snapshots; the provider does not publish a fixed update interval.
- The former OFSI Consolidated List stopped updating on 28 January 2026 and is reference-only.

## Quirks
- Skip the first CSV line after extracting its Report Date; the second line contains the column names.
- One Unique ID can occupy many rows because names, aliases, addresses and identifiers are expanded into separate combinations.
- Date of birth values can be partial, and one designated person under multiple regimes can have different Unique IDs.
- Use IMO number for vessel identity where populated because the provider says it remains unchanged when name, ownership or flag changes.

## Terms and attribution
- The publication is Crown content available under the Open Government Licence unless otherwise indicated.
- OGL reuse requires source acknowledgement and excludes personal data and third-party rights the provider cannot license.
- Terms page: https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/

## Sources
- https://www.gov.uk/government/publications/the-uk-sanctions-list: "The UK Sanctions List is now the only source for all UK sanctions designations."
- https://www.gov.uk/guidance/format-guide-for-the-uk-sanctions-list: "The data provided in each format is identical but is displayed in different ways, depending on the format."
- https://www.gov.uk/guidance/format-guide-for-the-uk-sanctions-list: "The unique UK Sanctions List identifying reference number given to all entries relating to a specific individual, entity or ship"
- https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/: "Contains public sector information licensed under the Open Government Licence v3.0."

## 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.
