← S/1 Scorecard

API

Free Tier Available

Logged-in users get a free API key instantly — 10 req/min, 100/day, 500/month. Create an account or sign in and head to your Account page to generate keys.

Need higher limits or dedicated support? [email protected]

Programmatic access to S/1 Scorecard country risk data. All endpoints require an API key and return JSON.

Authentication

Include your API key in the x-api-key header on every request.

curl -H "x-api-key: s1_live_xxxxxxxxxxxxx" \
  https://s1-scorecard.pages.dev/scorecard/api/scorecards

Endpoints

POST/scorecard/api/scorecards

Returns full scorecard payloads for up to 50 ISO alpha-3 country codes in a single request.

Request Body

{
  "isos": ["RUS", "AFG", "CHN", "BRA"]
}

Response (200)

{
  "results": [
    {
      "country": { "iso_a3": "RUS", "name": "Russia", "region": "Europe", "population": 144373535 },
      "composite_risk_band": "high",
      "composite_score": 66,
      "composite_rationale": "High risk driven by...",
      "scores": {
        "governance": { "value": 30.8, "source": "WB WGI", "latest_year": 2026, ... },
        "corruption": { "value": 22, "source": "TI CPI", "latest_year": 2024, ... },
        ...
      }
    }
  ],
  "meta": { "requested": 4, "found": 4 }
}

Rate Limits — Free Plan

LimitPer KeyPer Account
Monthly quota500 req5,000 req
Per minute10 req— (per key)
Per day100 req1,000 req
Max keys10

Rate limit headers on every response: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

GET/scorecard/api/countries

Returns a list of all available countries with ISO codes and regions.

{
  "countries": [
    { "iso_a3": "AFG", "name": "Afghanistan", "region": "Asia" },
    ...
  ]
}
GET/scorecard/api/country/:iso

Returns a single scorecard for the given ISO alpha-3 code.

GET /scorecard/api/country/RUS
POST/api/screen

Sanctions screening against 33,000+ EU, OFAC, UK, and UN designations. Fuzzy matching with transliteration (Cyrillic, Arabic, Chinese) and multi-field scoring. Type-aware weights for Person vs Entity searches.

Request Body

{
  "name": "putin",           // required — full or partial name
  "type": "person",          // optional — "person" | "entity" | "all"
  "country": "RUS",          // optional — ISO alpha-3 nationality filter
  "registry": "eu",          // optional — "eu" | "ofac" | "uk" | "un" | "all"
  "dob": "1952-10-07",       // optional — date of birth
  "passport": "A1234567",    // optional — passport/ID number
  "imo": "1234567",          // optional — IMO ship number
  "address": "Moscow",       // optional — address search
  "placeOfBirth": "Leningrad", // optional
  "minScore": 0.5,           // optional — minimum match score 0–1 (default 0.35)
  "limit": 20                // optional — max results (default 50, max 100)
}

Response (200)

{
  "query": { "name": "putin", "type": "person", "country": "RUS", ... },
  "matches": [
    {
      "designated_name": "Vladimir Vladimirovich Putin",
      "designated_type": "person",
      "nationality_iso_a3": "RUS",
      "source": "uk",
      "list_program": "Ukraine — Kremlin elites",
      "designation_date": "2022-02-25",
      "date_of_birth": "07/10/1952",
      "aliases": ["Vladimir Putin", "Владимир Путин"],
      "score": 0.92,
      "matchDetails": {
        "nameScore": 0.92, "aliasScore": 0.85,
        "dobMatch": true, "idMatch": false, ...
      }
    }
  ],
  "total": 3,
  "meta": { "searchedRecords": 33617, "thresholdApplied": 0.5,
            "sourcesQueried": ["eu","ofac","uk","un"], "executionMs": 145 }
}
GET/api/map-data— public

Lightweight endpoint returning all country scores with risk bands for choropleth map rendering. No authentication required. Cached 5 minutes.

{
  "countries": [
    {
      "iso_a3": "AFG", "name": "Afghanistan", "region": "Asia",
      "composite": { "band": "severe", "score": 100 },
      "governance": { "value": 18.2, "band": "severe" },
      "corruption": { "value": 16, "band": "high" },
      "inform": { "value": 7.6, "band": "severe" },
      "forced_labour": { "goods": 3, "band": "moderate" },
      "sanctions": { "total": 1234, "band": "severe" },
      "conflict": { "intensity": 76.4, "band": "severe" },
      "fatf": { "status": "grey", "band": "high" },
      "fsi": { "value": 106.6, "band": "severe" },
      "rsf": { "value": 29.5, "band": "high" },
      "epi": { "value": 35.2, "band": "high" }
    }
  ]
}
GET/api/country/:iso/pdf— public

Print-optimized HTML scorecard. Opens browser print dialog for saving as A4 PDF. Includes all 11 indicators, composite band, and rationale.

GET /api/country/RUS/pdf
GET/api/trends/:iso— coming soon

Historical trend data for a country — band changes over time, score history, and trend direction. Currently collecting data; returns current snapshot with note about data availability.

GET /api/trends/UKR
GET/api/export/csv

Download all scorecard data as CSV. Session-authenticated — accessible from your Account page. Includes all 11 indicators for every country with a scorecard.

GET /api/export/csv
→ Content-Type: text/csv
→ Content-Disposition: attachment; filename="s1-scorecard-export-2026-05-24.csv"

Errors

StatusMeaning
401Missing or invalid API key
429Rate limit exceeded — check Retry-After header
400Invalid request body or too many ISOs
503Database unavailable — retry later

For pricing, higher rate limits, or dedicated support, contact [email protected].