GEFRI API documentation

The Global Education Futures Readiness Index (GEFRI) API provides open access to country-level and global summary data, enabling researchers, developers, and policymakers to analyze, compare, and download up-to-date GEFRI results. The API is public and requires no authentication.

Version: v1   |   Format: JSON

Base endpoint

/api/v1/gefri

Use this canonical v1 endpoint for new integrations.

Omit the year parameter to receive the current dataset. Provide a four-digit year (for example, year=2022) to request the archived December snapshot for that year. Valid years can still return 404 if the archive is unavailable.

Legacy compatibility endpoint: /api/gefri

The unversioned /api/gefri route remains available as a v1 compatibility endpoint. New integrations should use /api/v1/gefri. The unversioned route is planned for deprecation on January 1, 2027 and will never automatically advance to a newer major API version.

Quick start: Example queries

  • Get all countries (global summary):
    curl https://gefri.educationfutures.com/api/v1/gefri
  • Get Aruba's full profile (by ISO3 code):
    curl https://gefri.educationfutures.com/api/v1/gefri?code=ABW
  • Get multiple countries by code:
    curl "https://gefri.educationfutures.com/api/v1/gefri?codes=USA,FIN,BRA"
  • Get all countries in Latin America & Caribbean, sorted by score (descending):
    curl "https://gefri.educationfutures.com/api/v1/gefri?region=lac&sort=score&order=desc"
  • Return only selected top-level fields:
    curl "https://gefri.educationfutures.com/api/v1/gefri?fields=Country Code,Country Name,Composite GEFRI Score"
  • Return only specific indicators for a country:
    curl "https://gefri.educationfutures.com/api/v1/gefri?code=ABW&indicators=SE.SEC.UNER.LO.ZS,EG.ELC.ACCS.ZS"
  • Fetch a historical snapshot (December of a given year):
    curl "https://gefri.educationfutures.com/api/v1/gefri?year=2023&codes=FIN,SWE"

Basic usage & query parameters

  • All countries (default):
    /api/v1/gefri
  • Single country by ISO3 code (code also accepts comma-separated ISO3 values):
    /api/v1/gefri?code=FIN
  • Multiple countries by ISO3 code (codes takes precedence over code):
    /api/v1/gefri?codes=FIN,USA,BRA
  • By region (case-insensitive, supports aliases like "LAC", "EAP"):
    /api/v1/gefri?region=lac
  • Sort results (default is descending for numbers):
    /api/v1/gefri?sort=score&order=asc
  • Return specific top-level fields only (matched case-insensitively by actual field name):
    /api/v1/gefri?fields=Country Name,Country Code,Region
  • Add aliased fields (shortnames) without removing the long field names:
    /api/v1/gefri?shortnames=true
  • Select a historical snapshot (December of a given year):
    /api/v1/gefri?year=2023

    Historical archives are stored by month. Specify the year to retrieve the December snapshot for that year; the API returns 404 if the archive is unavailable.

Behavior notes

  • If code or codes is supplied, country mode takes precedence even when level is omitted or set to global. level=country without country codes is invalid.
  • Both code and codes accept comma-separated ISO3 values. When both are present, codes takes precedence.
  • shortnames=true adds RegionShort plus short component aliases such as score, access, innovation, human, governance, and infra.
  • Field filtering matches top-level keys case-insensitively and retains indicator_details when that array is present.
  • All response keys ending with confidence are removed recursively before the payload is returned.

Country-level indicators

  • Filter indicator details (by code, comma-separated, case-insensitive):
    /api/v1/gefri?code=ABW&indicators=SE.SEC.UNER.LO.ZS,EG.ELC.ACCS.ZS
  • indicator_details appears only in country-level results and is retained even when fields filtering is applied.

Sorting

  • Sort by any field:
    /api/v1/gefri?sort=score&order=desc
  • Sort ascending:
    /api/v1/gefri?sort=score&order=asc
  • Sort alphabetically:
    /api/v1/gefri?sort=Country Name&order=asc

Response structure & error handling

{
  "apiVersion": "1",
  "level": "country",
  "snapshot": "current",
  "count": 1,
  "data": {
    "Country Name": "Aruba",
    "Country Code": "ABW",
    "Region": "Latin America & Caribbean",
    "Composite GEFRI Score": 67.8,
    // ...other fields...
    "indicator_details": [
      {
        "indicator_code": "SP.POP.TOTL",
        "indicator_name": "Population, total",
        "component": null,
        "year": 2023,
        "reported_value": 41454761,
        "data_source": "World Bank",
        "normalized_value": null,
        "global_percentile": null,
        "regional_percentile": null,
        "notes": ""
      }
      // ...etc...
    ]
  }
}

Error handling: If a request is invalid, the response includes an error key with a descriptive message. For example:
{ "apiVersion": "1", "error": "Invalid request." }

When exactly one country matches, data is returned as an object. When multiple countries match, data is returned as an array. Missing country files are skipped, so unmatched codes can return count 0 instead of 404.

Data dictionary

Each object in the GEFRI API includes the following fields. Field availability may vary. All scores are normalized on a 0–100 scale unless otherwise noted. Population, total is used only as an auxiliary series (for microstate flags and per-million transformations); it does not enter any GEFRI scores.

FieldTypeDescriptionExample
Country NamestringOfficial country or territory name.Finland
Country Codestring (ISO3)ISO 3166-1 alpha-3 code.FIN
RegionstringWorld Bank region group.Europe & Central Asia
Income LevelstringWorld Bank income group.High income
Population, totalintegerTotal national population.5,541,274
Composite GEFRI ScorenumberOverall readiness score (0–100).85.3
Infrastructure ScorenumberInfrastructure readiness score.92.7
Human Capital ScorenumberHuman capital score.89.5
School Access and Gender Parity ScorenumberSchool amd gender parity score.81.2
Innovation ScorenumberInnovation/R&D score.79.0
Governance ScorenumberGovernance score.88.5
[Dimension] Confidencestring"High", "Moderate", or "Low".High
FCV StatusbooleanFragile/conflict-affected/violent country flag (World Bank FCS).false
FCV Typestring/nullType of FCV (if applicable)."Conflict"
Last Updatedstring (YYYY-MM-DD)Last update date.2025-05-18

indicator_details (array, per-country only): Each object contains:

FieldTypeDescriptionExample
indicator_codestringIndicator code.SP.POP.TOTL
indicator_namestringFull name.Population, total
componentstringGEFRI dimension.Infrastructure
yearinteger/nullData year.2023
reported_valuenumber/nullReported value.41454761
data_sourcestringSource or imputation.World Bank
normalized_valuenumber/nullNormalized to 0–100.91.2
global_percentilestring/nullGlobal percentile ("84th").84th
regional_percentilestring/nullRegional percentile.63rd
notesstringNotes (if any).

Notes:
- indicator_details only appears in per-country API results.
- data_source is always included for traceability.
- Percentiles are returned as ordinal strings ("84th", "63rd"), not numbers.

Supported aliases

Query aliasActual field
scoreComposite GEFRI Score
accessSchool Access and Gender Parity Score
innovationInnovation Score
infraInfrastructure Score
humanHuman Capital Score
governanceGovernance Score
LACLatin America & Caribbean
SALatin America & Caribbean
South AmericaLatin America & Caribbean
EAPEast Asia & Pacific
MENAMiddle East & North Africa
NANorth America

Use these aliases for convenience in your queries.

Notes and attribution

  • Data is updated monthly. Indicators are sourced from open data (primarily World Bank Open Data). World Bank Open Data.
  • When using GEFRI in research or applications, please cite Education Futures.
  • For feedback or collaboration, contact us. contact.