{
  "openapi": "3.0.1",
  "info": {
    "title": "World Bank Indicators — GDP, Inflation, Population & 16k More",
    "description": "World Bank macro data for any country: GDP, growth, inflation, population, unemployment, trade, FDI, debt, digital, climate — 16,000+ indicators, 217 economies + aggregates. Presets, latest-value ranking tables with YoY change, wide comparison tables, indicator search. No API key.",
    "version": "0.1",
    "x-build-id": "zjw8tK4lkRgDtASXc"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/yadroo~world-bank-indicators/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-yadroo-world-bank-indicators",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/yadroo~world-bank-indicators/runs": {
      "post": {
        "operationId": "runs-sync-yadroo-world-bank-indicators",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/yadroo~world-bank-indicators/run-sync": {
      "post": {
        "operationId": "run-sync-yadroo-world-bank-indicators",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "data",
              "latest",
              "indicators",
              "countries",
              "sources",
              "indicatorMeta"
            ],
            "type": "string",
            "description": "What to fetch. `data` = country × indicator × year rows (default). `latest` = one row per country × indicator with latestYear/latestValue/previousValue/yoyChangePct (cheap country ranking tables): the latest non-empty value of each series, or the latest inside startYear/endYear when they are set (`years` and `mrnev` do not apply to it). `indicators` = search the catalogue with `query`/`topic` (the API has no text search, the actor filters the list of `source` locally). `countries` = metadata of all 200+ economies and 78 aggregates, filterable by region/incomeLevel/lendingType. `sources` = the ~70 World Bank databases with ids (use the id in `source`). `indicatorMeta` = sourceNote/organization/topics for each code in `indicators`.",
            "default": "data"
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Required for data/latest modes (unless region/incomeLevel/lendingType is set). Accepts ISO2 (KZ), ISO3 (KAZ), English names (\"Kazakhstan\"), the keyword `all` (every economy; the World/regional/income-group aggregates only with includeAggregates), and aggregate codes: WLD World, EUU European Union, EMU Euro area, OED OECD, HIC/UMC/LMC/LIC income groups, ECS Europe & Central Asia, EAS East Asia & Pacific, LCN Latin America, MEA Middle East & North Africa, NAC North America, SAS South Asia, SSF Sub-Saharan Africa, ARB Arab World, CEB Central Europe & Baltics. Case, accents, spaces and punctuation do not matter. An unknown value is never a dataset row (nothing is billed for it): it is listed in SUMMARY.errors with a \"did you mean\" hint and the run goes on with the other countries; when no value is known, the run stops with that message. Run mode `countries` for the full list.",
            "items": {
              "type": "string"
            }
          },
          "indicators": {
            "title": "Indicator codes",
            "type": "array",
            "description": "World Bank indicator codes (any of the ~16,000 WDI codes or codes from another `source`). Empty = the `indicatorPreset` set (default macro: GDP, GDP per capita, CPI inflation, population, unemployment). Common codes: NY.GDP.MKTP.KD.ZG GDP growth %, NY.GDP.PCAP.PP.CD GDP per capita PPP, NE.EXP.GNFS.ZS exports % GDP, BX.KLT.DINV.CD.WD FDI inflows US$, GC.DOD.TOTL.GD.ZS government debt % GDP, IT.NET.USER.ZS internet users %, SP.DYN.LE00.IN life expectancy, SI.POV.GINI Gini, EN.GHG.CO2.PC.CE.AR5 CO2 per capita. Find more with mode `indicators` + `query`. Note: old CO2 codes EN.ATM.CO2E.* and Doing Business codes (IC.BUS.EASE.XQ, IC.REG.DURS…) are archived and return no data.",
            "items": {
              "type": "string"
            }
          },
          "indicatorPreset": {
            "title": "Indicator preset",
            "enum": [
              "custom",
              "macro",
              "trade",
              "demographics",
              "finance",
              "digital",
              "energyClimate",
              "social",
              "business"
            ],
            "type": "string",
            "description": "Ready-made indicator bundles (6–10 verified codes each). Used only when `indicators` is empty. `custom`/empty `indicators` = macro set (backward compatible).",
            "default": "custom"
          },
          "years": {
            "title": "Most recent N years (mrv)",
            "minimum": 1,
            "maximum": 60,
            "type": "integer",
            "description": "Most recent N periods per series (API `mrv`). Default 5. Ignored when startYear/endYear or mrnev is set, and in mode `latest`.",
            "default": 5
          },
          "startYear": {
            "title": "Start year",
            "minimum": 1960,
            "maximum": 2030,
            "type": "integer",
            "description": "First year of an explicit range (API `date=start:end`). Together with endYear replaces `years`; in mode `latest` the latest value inside the range is returned. Data generally starts in 1960."
          },
          "endYear": {
            "title": "End year",
            "minimum": 1960,
            "maximum": 2030,
            "type": "integer",
            "description": "Last year of the explicit range. Default = current year when only startYear is given."
          },
          "mrnev": {
            "title": "Most recent non-empty values (mrnev)",
            "minimum": 1,
            "maximum": 60,
            "type": "integer",
            "description": "Return the N most recent NON-NULL observations per country (skips years with missing data — ideal for sparse series like Gini, poverty, literacy). Replaces `years`. Not used by mode `latest`, which always takes the two most recent non-empty values (latest + previous)."
          },
          "gapfill": {
            "title": "Gap-fill missing years",
            "type": "boolean",
            "description": "With `years` (mrv) only: the API fills missing years with the last available value (API `gapfill=Y`). Values then carry obsStatus from the source; use with care.",
            "default": false
          },
          "frequency": {
            "title": "Frequency",
            "enum": [
              "Y",
              "Q",
              "M"
            ],
            "type": "string",
            "description": "Only a few databases are sub-annual: source 15 Global Economic Monitor (monthly CPI, industrial production, exchange rates, e.g. CPTOTNSXN with frequency M), sources 20/22/23 quarterly debt statistics. WDI (source 2) is annual only — a warning is logged if you ask for Q/M there. Periods come back as `2026M07` / `2024Q3` in `period`, `year` holds the year.",
            "default": "Y"
          },
          "source": {
            "title": "Source (database) id",
            "minimum": 1,
            "maximum": 999,
            "type": "integer",
            "description": "World Bank database id. 2 = World Development Indicators (default, 1,500 indicators). Others: 3 Worldwide Governance Indicators, 6 International Debt Statistics, 14 Gender Statistics, 15 Global Economic Monitor (monthly), 16 Health Nutrition & Population, 20 Quarterly Public Sector Debt, 27 Global Economic Prospects, 28 Global Findex, 31 CPIA, 46 SDGs, 66 Logistics Performance Index, 75 ESG. Full list: mode `sources`. Also scopes mode `indicators` search.",
            "default": 2
          },
          "includeNulls": {
            "title": "Include null values",
            "type": "boolean",
            "description": "Keep rows whose value is null (years without data). Default false — nulls are dropped, so a country with no data yields no rows (an indicator with no data at all is listed in SUMMARY.notFound — not a dataset row, not billed). Mode `latest` always skips empty values.",
            "default": false
          },
          "includeChange": {
            "title": "Add year-over-year change",
            "type": "boolean",
            "description": "Data mode: add `yoyChangePct`, `previousYear`, `previousValue` to every row, computed against the previous non-null observation of the same country × indicator series (needs ≥2 periods). Mode `latest` always includes it.",
            "default": false
          },
          "wide": {
            "title": "Wide format (one row per country × year)",
            "type": "boolean",
            "description": "Data mode: pivot indicators into columns — one row per country × period with indicator codes as keys (missing = null). Handy for comparison tables of several countries across several indicators. Not combined with includeChange columns. Rows are saved after the last indicator is read; an indicator a stop left unread gets no column (it is listed in SUMMARY.indicatorsNotRead).",
            "default": false
          },
          "fields": {
            "title": "Output fields",
            "type": "array",
            "description": "Keep only these columns, in this order (`id` is always kept and comes first unless you list it elsewhere). Empty = every column. The columns of each mode are listed in README → Output; with `wide`, indicator codes are columns too. Case, spaces, '_' and '-' do not matter. A name that is not a column of the chosen mode is skipped and named in the status and SUMMARY.warnings (with a \"did you mean\" for near misses); when none of the names is a column, the run stops before any request with the list of valid columns.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Stop after this many dataset rows (after shaping). Rows are saved as they arrive: per API page (1,000 rows) in mode data, per indicator in mode latest or with includeChange, and after the last indicator with wide. Reading stops once maxItems rows are saved — the indicators left unread are named in the status and SUMMARY. Default 1000. A full `all` × 1 indicator × 1 year query is ~265 rows; `all` × 5 indicators × 5 years ≈ 6,600 rows.",
            "default": 1000
          },
          "query": {
            "title": "Indicator search text",
            "type": "string",
            "description": "Mode `indicators`: words to match (all terms, case-insensitive) in indicator id, name or definition, e.g. \"inflation\", \"gdp per capita ppp\", \"female labor\". Results ranked: exact code, name hits, WDI, dictionary codes first. Empty query + topic = browse a topic."
          },
          "topic": {
            "title": "Topic id",
            "enum": [
              "",
              "1",
              "2",
              "3",
              "4",
              "5",
              "6",
              "7",
              "8",
              "9",
              "10",
              "11",
              "12",
              "13",
              "14",
              "15",
              "16",
              "17",
              "18",
              "19",
              "20",
              "21"
            ],
            "type": "string",
            "description": "Mode `indicators`: restrict search to one World Bank topic id (topics are assigned mainly to WDI indicators)."
          },
          "searchAllSources": {
            "title": "Search all sources",
            "type": "boolean",
            "description": "Mode `indicators`: search the full catalogue of ~29,500 indicators across all ~70 databases (15 paged requests) instead of only the database given in `source` (default WDI, 1 request).",
            "default": false
          },
          "region": {
            "title": "Region filter",
            "enum": [
              "",
              "EAS",
              "ECS",
              "LCN",
              "MEA",
              "NAC",
              "SAS",
              "SSF",
              "NA"
            ],
            "type": "string",
            "description": "Select economies by World Bank region. In modes data/latest with empty `countries` (or `countries: [\"all\"]`) it defines which countries are queried; in mode `countries` it filters the metadata list."
          },
          "incomeLevel": {
            "title": "Income level filter",
            "enum": [
              "",
              "HIC",
              "UMC",
              "LMC",
              "LIC"
            ],
            "type": "string",
            "description": "Select economies by World Bank income classification (same behaviour as `region`). Combine with region, e.g. ECS + UMC."
          },
          "lendingType": {
            "title": "Lending type filter",
            "enum": [
              "",
              "IBD",
              "IDX",
              "IDB",
              "LNX"
            ],
            "type": "string",
            "description": "Select economies by World Bank lending category (same behaviour as `region`)."
          },
          "includeAggregates": {
            "title": "Include aggregates",
            "type": "boolean",
            "description": "Also include the aggregate economies (World, EU, income groups, regions — region \"Aggregates\" in the World Bank country metadata) in `countries: [\"all\"]`, mode `countries` and region/income selections. Aggregate codes listed explicitly (WLD, EUU…) are always returned. Every data row carries `isAggregate`. Default false = real economies only.",
            "default": false
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}