• Monetary EconomicsMonetary Economics
  • Real Estate MarketReal Estate Market
  • Public FinancePublic Finance
  • Balance of Payments and External DebtBalance of Payments and External Debt
  • Exchange Rates and GoldExchange Rates and Gold
  • Financial AccountsFinancial Accounts
  • BankingBanking
View all
GR
  • Monetary EconomicsMonetary Economics
  • Real Estate MarketReal Estate Market
  • Public FinancePublic Finance
  • Balance of Payments and External DebtBalance of Payments and External Debt
  • Exchange Rates and GoldExchange Rates and Gold
  • Financial AccountsFinancial Accounts
  • BankingBanking
View all
GR
GR

Let's connect

  • opendata@bankofgreece.gropendata@bankofgreece.gr
  • Contact formContact form

Other sources

  • Bank of GreeceBank of Greece
  • European Central BankEuropean Central Bank

More information

  • API instructionsAPI instructions
  • About opendataAbout opendata
  • DatathonDatathon
Let's connect
  • opendata@bankofgreece.gropendata@bankofgreece.gr
  • Contact formContact form
Other sources
  • Bank of GreeceBank of Greece
  • European Central BankEuropean Central Bank
More information
  • API instructionsAPI instructions
  • About opendataAbout opendata
  • DatathonDatathon
Privacy policyPrivacy policyTerms of useTerms of useRSS feedsRSS feeds
Copyright 2025, Bank of Greece
API Guide

OpenData - API: Description and User Guide

Article
22/09/25

opendata.bankofgreece.gr is the open data portal of Bank of Greece. It provides the researchers and the public with access to statistical datasets in machine-readable format. Data collection, processing and publication is based on the use of international standards for open data.

Article
22/09/25

API Guide

API is organized around REST. With the APIs, you can have access to all Bank of Greece datasets, quickly and easily, to build your applications.

Our API has predictable resource-oriented URLs for every dataset. Accepts only GET method requests, without a body, and allows specific parameters in the URL to customize results. Returns JSON-encoded responses, using standard HTTP response codes, and no authentication is required.

On every dataset's page, there is an option "Get dataset with the use of API", through which, can see a code snippet with the endpoint and an example of how to call it.

JavaScript
const requestOptions = {
method: "GET"
};
fetch("https://ods.opendata.bankofgreece.gr/api/OfficeRentIndex", requestOptions)
.then((response) => response.text())
.then((result) => console.log(result))
.catch((error) => console.error(error));

Authentication

Our API functions without any authentication, and all requests are publicly accessible. All requests are GET, returning JSON format. 

cURL
curl --request GET https://ods.opendata.bankofgreece.gr/api/OfficePriceIndex

Errors

The API uses standard HTTP response codes to indicate whether an API request was successful or failed. 

- Codes in the 2XX range signify a successful request.  
- Codes in the 4XX range indicate an error due to issues with the information provided (for example, if the query parameters are invalid).  
- Codes in the 5XX range represent errors related to our servers.  

Each response includes a message parameter that provides a brief explanation of the reported error.

HTTP Status Code
200 OK Everything worked as expected.
400 Bad Request: The request was unacceptable, often due to a missing required parameter.
402 Request Failed: The parameters were valid, but the request failed.
403 Forbidden: The API key doesn’t have permissions to perform the request.
404 Not Found: The requested resource doesn’t exist.
500, 502, 503, 504 Server Errors: Something went wrong on Stripe’s end. (These are rare.)

Request Parameters

All API methods share a common structure and accept any combination of the following parameters: $select, $filter, $orderby, $first, $after.

 

  • $select: A comma-separated list of fields to return in the response.
  • $filter: An OData expression (an expression that returns a boolean value) using the entity's fields to retrieve a subset of the results.
  • $orderby: Uses a comma-separated list of expressions to sort response items. Add 'desc' for descending order, otherwise it's ascending by default.
  • $first: An integer value that specifies the number of items to return. Default is 100. To retrieve all data you can use -1 value (restrictions may be applied).
  • $after: An opaque string that specifies the cursor position after which results should be returned.
JSON
Request
https://ods.opendata.bankofgreece.gr/api/DataSets?
$select=DataSetNameEN,FrequencyEN,DataSetID,OdiDataSetID&
$filter=DataSetID%20gt%20177&
$first=1&$after=W3siRW50aXR5TmFtZSI6IkRhdGFTZXRzIiwiRmllbGROYW1lIjoiR
GF0YVNldElEIiwiRmllbGRWYWx1ZSI6MTc4LCJEaXJlY3Rpb24iOjB9XQ==
Response
{
"value": [
{
"DataSetNameEN": "Retail Rent Index",
"FrequencyEN": "Semiannual",
"DataSetID": 179,
"OdiDataSetID": 221141
}
],
"nextLink": "https://ods.opendata.bankofgreece.gr/api/DataSets?
$select=DataSetNameEN,FrequencyEN,DataSetID,OdiDataSetID&
$filter=DataSetID%20gt%20177&$first=1&$after=W3siRW50aXR5TmFtZSI6IkRh
dGFTZXRzIiwiRmllbGROYW1lIjoiRGF0YVNldElEIiwiRmllbGRWYWx1ZSI6MTc5LCJ
EaXJlY3Rpb24iOjB9XQ=="
}

Pagination

All API requests return a maximum of 100 items per call, divided into pages.  In every response, there exists a "nextLink" parameter, which includes the subsequent call that should be made to get the next items.

 

Parameters

  • $first, optional, default is 100

    This specifies a limit on the number of objects to return, ranging between 1 and 100

  • $after, optional string

    It is used in pagination. $after is a parameter that defines your place in the list. 

JSON
Request
https://ods.opendata.bankofgreece.gr/api/Categories?$first=3
Response
{
"value": [
{
"CategoryID": 1,
"ParentCategoryID": null,
"CategoryNameGR": "Νομισματική Οικονομία",
"CategoryNameEN": "Monetary Economics",
"DescriptionGR": "Νομισματική Οικονομία Περιγραφή",
"DescriptionEN": "Monetary Economics Description",
"IconUrl": "/PublishingImages/OpenData/category-icon-06.png",
"DisplayOrder": 1
},
{
"CategoryID": 2,
"ParentCategoryID": null,
"CategoryNameGR": "Αγορά Ακινήτων",
"CategoryNameEN": "Real Estate Market",
"DescriptionGR": "Αγορά Ακινήτων",
"DescriptionEN": "Real Estate Market",
"IconUrl": "/PublishingImages/OpenData/BUTTONS%20pre%20press%202-02.png",
"DisplayOrder": 2
},
{
"CategoryID": 3,
"ParentCategoryID": null,
"CategoryNameGR": "Δημόσια Οικονομικά",
"CategoryNameEN": "Public Finance",
"DescriptionGR": "Δημόσια Οικονομικά",
"DescriptionEN": "Public Finance",
"IconUrl": "/PublishingImages/OpenData/BUTTONS%20pre%20press%202-03.png",
"DisplayOrder": 3
}
],
"nextLink": "https://ods.opendata.bankofgreece.gr/api/Categories?
$first=3&
$after=W3siRW50aXR5TmFtZSI6IkNhdGVnb3JpZXMiLCJGaWVsZE5hb
WUiOiJDYXRlZ29yeUlEIiwiRmllbGRWYWx1ZSI6MywiRGlyZWN0aW9uIjowfV0="
}

Categories

This request returns information for one or more categories or subcategories with their metadata.

cURL
curl --request GET https://ods.opendata.bankofgreece.gr/api/Categories
curl --request GET https://ods.opendata.bankofgreece.gr/api/
Categories/CategoryID/{CategoryID}

Datasets

This request returns information for one or more datasets and their metadata.

cURL
curl --request GET https://ods.opendata.bankofgreece.gr/api/DataSets
curl --request GET https://ods.opendata.bankofgreece.gr/api/
DataSets/DataSetID/{DataSetID}

Dataset-Categories endpoint

This request returns the relation between datasets and categories.

cURL
curl --request GET https://ods.opendata.bankofgreece.gr/api/DataSetCategories
curl --request GET https://ods.opendata.bankofgreece.gr/api/
DataSetCategories/DataSetId/{DataSetId}/
CategoryId/{CategoryId}

DataMappings endpoint

Some datasets have indexes with no numerical values. This request returns all mappings for those indexes.

cURL
curl --request GET https://ods.opendata.bankofgreece.gr/api/DataMappings
curl --request GET https://ods.opendata.bankofgreece.gr/api/
DataMappings/DataMappingID/{DataMappingID}

Dataset-Columns endpoint

This request returns the relation between datasets and every column - index, with all its metadata.

cURL
curl --request GET https://ods.opendata.bankofgreece.gr/api/DataSetColumns
curl --request GET https://ods.opendata.bankofgreece.gr/api/
DataSetColumns/DataSetColumnID/{DataSetColumnID}

Data retrieval example

Below is an example of data usage of the API

  1. We should obtain information about the available datasets

    https://ods.opendata.bankofgreece.gr/api/DataSets
  2. We focus on the DataSet "Retail Rent Index" with DataSetID=179 and keep the DataSet identifier DataSetName

    https://ods.opendata.bankofgreece.gr/api/DataSets/DataSetID/179
  3. From the Frequency we understand that our data is Semiannual
  4. We retrieve all the indicators that interest us for this specific DataSet

    https://ods.opendata.bankofgreece.gr/api/DataSetColumns?$filter=DataSetID eq 179
  5. We may find an interest of using the ReferenceDate along with the RetailRentIndexAthens index i.e. "Retail rent index Athens"
  6. Finally, we download all the data for this DataSet based on the DataSetName we had previously, and request the index that interests us, as well as the reference period

    https://ods.opendata.bankofgreece.gr/api/RetailRentIndex?$first=-1&$select=ReferenceDate,RetailRentIndexAthens
  7. If we are interested in the current latest data (no vintages) then we change the above call to:https://ods.opendata.bankofgreece.gr/api/RetailRentIndex?$first=-1&$select=ReferenceDate,RetailRentIndexAthens&$filter=ValidUntil eq null