IMF Data Structure API

Retrieve dataset metadata including dataflows, data structures, codelists, and concept schemes

Operations 4

GET /structure/dataflow/all/*/+ List all available IMF dataflows (datasets) #
GET /structure/datastructure/{agency}/{dsd_id}/+ Retrieve data structure definition (DSD) for a dataflow #
GET /structure/codelist/{agency}/{codelist_id}/+ Retrieve a codelist for a dimension #
GET /structure/conceptscheme/{agency}/{scheme_id}/+ Retrieve a concept scheme #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/imf-structure-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

imf-structure-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: IMF SDMX 3.0 Data Structure API
  description: 'The International Monetary Fund (IMF) SDMX 3.0 Data API provides programmatic access

    to hundreds of IMF statistical datasets. Data is freely available with no authentication

    required. Datasets include International Financial Statistics (IFS), World Economic

    Outlook (WEO), Fiscal Monitor (FM), Government Finance Statistics (GFS), Monetary and

    Financial Statistics (MFS), Balance of Payments (BOP), and many more.


    The API follows the SDMX 3.0 (Statistical Data and Metadata eXchange) standard.

    Responses are available in JSON format.


    Rate limit: 50 requests per second (application-based via User-Agent header).

    '
  version: '3.0'
  contact:
    name: IMF Data Help
    url: https://datahelp.imf.org
    email: sdmx@imf.org
  license:
    name: IMF Data License
    url: https://www.imf.org/external/terms.htm
  termsOfService: https://www.imf.org/external/terms.htm
servers:
- url: https://api.imf.org/external/sdmx/3.0
  description: IMF SDMX 3.0 API (current)
- url: http://dataservices.imf.org/REST/SDMX_JSON.svc
  description: IMF SDMX JSON 2.1 API (legacy)
tags:
- name: Structure
  description: Retrieve dataset metadata including dataflows, data structures, codelists, and concept schemes
paths:
  /structure/dataflow/all/*/+:
    get:
      summary: List all available IMF dataflows (datasets)
      description: 'Returns all available dataflow definitions from the IMF SDMX API.

        Each dataflow represents a dataset such as IFS, WEO, FM, GFS, MFS, etc.

        Use the dataflow ID to query data and retrieve data structures.

        '
      operationId: listDataflows
      tags:
      - Structure
      parameters:
      - name: Accept
        in: header
        description: Response format
        schema:
          type: string
          default: application/json
      responses:
        '200':
          description: List of available dataflows
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      dataflows:
                        type: array
                        items:
                          $ref: '#/components/schemas/Dataflow'
        '400':
          $ref: '#/components/responses/BadRequest'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /structure/datastructure/{agency}/{dsd_id}/+:
    get:
      summary: Retrieve data structure definition (DSD) for a dataflow
      description: 'Returns the data structure definition for a specific dataset, including

        all dimensions, measures, attributes, and their positions.

        Use this to understand how to build query keys for data requests.

        '
      operationId: getDataStructure
      tags:
      - Structure
      parameters:
      - name: agency
        in: path
        required: true
        description: The agency that owns the data structure (e.g., IMF.STA, IMF)
        schema:
          type: string
          example: IMF.STA
      - name: dsd_id
        in: path
        required: true
        description: The data structure definition identifier
        schema:
          type: string
          example: DSD_GFS
      responses:
        '200':
          description: Data structure definition
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      dataStructures:
                        type: array
                        items:
                          $ref: '#/components/schemas/DataStructure'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /structure/codelist/{agency}/{codelist_id}/+:
    get:
      summary: Retrieve a codelist for a dimension
      description: 'Returns all valid codes and their labels for a specified codelist.

        Codelists are used to identify valid values for dimensions such as

        COUNTRY (country codes), FREQUENCY (A=Annual, Q=Quarterly, M=Monthly),

        and indicator codes specific to each dataset.

        '
      operationId: getCodelist
      tags:
      - Structure
      parameters:
      - name: agency
        in: path
        required: true
        description: The agency that owns the codelist
        schema:
          type: string
          example: IMF.STA
      - name: codelist_id
        in: path
        required: true
        description: The codelist identifier (e.g., CL_COUNTRY, CL_FREQ)
        schema:
          type: string
          example: CL_COUNTRY
      responses:
        '200':
          description: Codelist with codes and labels
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      codelists:
                        type: array
                        items:
                          $ref: '#/components/schemas/Codelist'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /structure/conceptscheme/{agency}/{scheme_id}/+:
    get:
      summary: Retrieve a concept scheme
      description: 'Returns concept definitions used to describe the meaning of dimensions

        and attributes in IMF datasets.

        '
      operationId: getConceptScheme
      tags:
      - Structure
      parameters:
      - name: agency
        in: path
        required: true
        description: The agency that owns the concept scheme
        schema:
          type: string
          example: IMF
      - name: scheme_id
        in: path
        required: true
        description: The concept scheme identifier
        schema:
          type: string
          example: CS_IFS
      responses:
        '200':
          description: Concept scheme with concept definitions
          content:
            application/json:
              schema:
                type: object
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    DataStructure:
      type: object
      description: Data structure definition for an IMF dataset
      properties:
        id:
          type: string
          description: Data structure identifier
        agencyID:
          type: string
          description: Owning agency
        dataStructureComponents:
          type: object
          properties:
            dimensionList:
              type: object
              properties:
                dimensions:
                  type: array
                  items:
                    $ref: '#/components/schemas/Dimension'
                timeDimensions:
                  type: array
                  items:
                    $ref: '#/components/schemas/Dimension'
            measureList:
              type: object
              properties:
                measures:
                  type: array
                  items:
                    $ref: '#/components/schemas/Dimension'
    Codelist:
      type: object
      description: A list of valid codes for a dimension
      properties:
        id:
          type: string
          description: Codelist identifier
          example: CL_COUNTRY
        agencyID:
          type: string
        codes:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: Code value
                example: USA
              name:
                type: string
                description: Human-readable code label
                example: United States
    Dataflow:
      type: object
      description: An IMF dataset definition
      properties:
        id:
          type: string
          description: Unique dataflow identifier (e.g., IFS, GFS, FM)
          example: FM
        name:
          type: string
          description: Human-readable dataset name
          example: Fiscal Monitor
        description:
          type: string
          description: Detailed dataset description
        version:
          type: string
          description: Dataflow version
          example: 8.0.1
        agencyID:
          type: string
          description: Owning agency identifier
          example: IMF.STA
        structure:
          type: string
          description: URN reference to the associated data structure definition
    Error:
      type: object
      properties:
        message:
          type: string
        code:
          type: integer
        correlationId:
          type: string
        path:
          type: string
    Dimension:
      type: object
      description: A dimension in an IMF dataset structure
      properties:
        id:
          type: string
          description: Dimension identifier (e.g., COUNTRY, FREQUENCY, TIME_PERIOD)
          example: COUNTRY
        position:
          type: integer
          description: Position in the dot-separated key string
          example: 2
        type:
          type: string
          description: Dimension type
          enum:
          - Dimension
          - TimeDimension
          - Measure
        conceptIdentity:
          type: string
          description: URN reference to the concept definition
  responses:
    BadRequest:
      description: Invalid request parameters
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    TooManyRequests:
      description: Rate limit exceeded (50 requests/second per application)
      headers:
        Retry-After:
          schema:
            type: integer
          description: Seconds to wait before retrying
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
externalDocs:
  description: IMF Data Help - Using JSON RESTful Web Service
  url: https://datahelp.imf.org/knowledgebase/articles/667294-using-json-restful-web-service