fatf-gafi APIfatf-gafi.org ↗
Access FATF black and grey list jurisdictions via API. Returns risk level, list classification, counts, and detail URLs. Updated ~3x per year.
What is the fatf-gafi API?
The FATF jurisdictions API exposes all countries currently on the Financial Action Task Force's black list (High-Risk Jurisdictions subject to a Call for Action) and grey list (Jurisdictions under Increased Monitoring) through a single get_jurisdictions endpoint. The response includes 7 fields per jurisdiction — name, risk_level, list_type, list_description, detail_url, last_updated — plus aggregate counts for each list, making it straightforward to build AML screening or compliance dashboards.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/27426b2f-b88b-4712-8c50-4b9205d9477b/get_jurisdictions' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace fatf-gafi-org-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: FATF Black and Grey Lists — bounded, re-runnable."""
from parse_apis.fatf_black_and_grey_lists_api import FATF, RiskLevel, ListType, JurisdictionNotFound
client = FATF()
# List all FATF-monitored jurisdictions (single page, always bounded).
for j in client.jurisdictions.list(limit=5):
print(j.name, j.risk_level, j.list_type)
# Filter black-listed (high-risk) jurisdictions client-side.
black_listed = [
j for j in client.jurisdictions.list(limit=50)
if j.list_type == ListType.BLACK
]
for j in black_listed:
print(j.name, j.detail_url, j.last_updated)
# Drill into one jurisdiction via .first().
first_grey = next(
(j for j in client.jurisdictions.list(limit=50) if j.risk_level == RiskLevel.INCREASED_MONITORING),
None,
)
if first_grey:
print(first_grey.name, first_grey.list_description)
# Typed error handling around a potentially failing call.
try:
all_j = list(client.jurisdictions.list(limit=100))
print(f"Total jurisdictions fetched: {len(all_j)}")
except JurisdictionNotFound as exc:
print(f"Not found: {exc}")
print("exercised: jurisdictions.list / RiskLevel enum / ListType enum / JurisdictionNotFound error")
Get all jurisdictions on the FATF black list (High-Risk Jurisdictions subject to a Call for Action) and grey list (Jurisdictions under Increased Monitoring). Returns structured data including each jurisdiction's name, risk classification, list type, description, detail page URL, and last update date. The list is updated approximately three times per year after FATF plenary meetings.
No input parameters required.
{
"type": "object",
"fields": {
"total": "integer - total number of jurisdictions across both lists",
"jurisdictions": "array of Jurisdiction objects",
"grey_list_count": "integer - number of grey-listed jurisdictions",
"black_list_count": "integer - number of black-listed jurisdictions"
},
"sample": {
"data": {
"total": 25,
"jurisdictions": [
{
"name": "Democratic People's Republic of Korea",
"list_type": "black",
"detail_url": "https://www.fatf-gafi.org/en/countries/detail/DPRK.html",
"risk_level": "high_risk",
"last_updated": "13 February 2026",
"list_description": "High-Risk Jurisdictions subject to a Call for Action"
},
{
"name": "Algeria",
"list_type": "grey",
"detail_url": "https://www.fatf-gafi.org/en/countries/detail/Algeria.html",
"risk_level": "increased_monitoring",
"last_updated": "13 February 2026",
"list_description": "Jurisdictions under Increased Monitoring"
}
],
"grey_list_count": 22,
"black_list_count": 3
},
"status": "success"
}
}About the fatf-gafi API
What the API Returns
The get_jurisdictions endpoint returns every jurisdiction currently flagged by the Financial Action Task Force, split across two formal classifications. Each jurisdiction object includes name (the country name), risk_level (the FATF-assigned risk designation), list_type (either black or grey), list_description (the official FATF label for that list), and detail_url (a direct link to the jurisdiction's FATF country page). A last_updated field indicates when the record was last refreshed.
Aggregate Counts
Alongside the jurisdictions array, the response includes total (the combined count across both lists), black_list_count, and grey_list_count. These integers are useful for detecting list changes between polling intervals — if the counts shift, something has been added or removed and warrants a diff of the full array.
Update Cadence and Coverage
FATF reviews and publishes updated lists approximately three times per year, typically following its plenary sessions in February, June, and October. The API reflects the most recent published list. All jurisdictions currently named in either list are included; countries not currently flagged by FATF do not appear in the response.
The fatf-gafi API is a managed, monitored endpoint for fatf-gafi.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when fatf-gafi.org changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official fatf-gafi.org API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Flag transactions involving FATF-listed jurisdictions in AML compliance pipelines using the
list_typeandrisk_levelfields. - Build a sanctions and risk dashboard that tracks grey-list and black-list counts over time to surface new additions or removals.
- Automate customer due-diligence checks by cross-referencing counterparty countries against the
jurisdictionsarray. - Send alerts to compliance teams when
black_list_countorgrey_list_countchanges between polling cycles. - Populate risk-scoring models with current FATF classification data to adjust exposure limits by jurisdiction.
- Generate regulatory reports that reference FATF status using
list_descriptionanddetail_urlfor source attribution.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does FATF publish an official developer API for their black and grey list data?+
What does the `risk_level` field contain, and how does it differ from `list_type`?+
list_type is a simple classification — 'black' or 'grey' — indicating which FATF list the jurisdiction appears on. risk_level reflects the FATF-assigned risk designation for that jurisdiction, which maps to the formal category name FATF uses (e.g. 'High-Risk'). Together they let you distinguish between jurisdictions subject to a Call for Action versus those under Increased Monitoring.How fresh is the data, and how often should I poll the endpoint?+
Does the API include historical FATF list data or changelog information?+
Can I filter results to only black-listed or only grey-listed jurisdictions?+
list_type (black or grey) can be applied client-side on the returned jurisdictions array. The black_list_count and grey_list_count fields give you upfront counts for each category.