Overview

Monitly provides one unified API for official statistics and economic indicators from multiple sources (Eurostat, DataBank, national government portals). With one consistent JSON format and a single set of filters, you can query up-to-date data and integrate it directly into your products — all through one API family.

Public endpoints are available out of the box; register to obtain an individual API key and higher limits. See endpoints below for details.

Endpoints

GET/api/datasets
List datasets

Returns lightweight catalog with only id, dataset_name, last_update.

Request
GET /api/datasets
Example
GET /api/datasets?country=PL
Response
{
  "data": [
    {
      "id": 168,
      "dataset_name": "House price index (2015 = 100) - quarterly data",
      "last_update": "2025-07-04T11:00:00+0200"
    }
  ],
  "pagination": { "page": 0, "limit": 100, "total": 1234, "hasMore": true }
}
GET/api/datasets/:id
Dataset details + wide data

Returns dataset (selected fields; no nulls) and data in organized wide format: per series block with countries and rows [{ period, values, unit? }].

Request
GET /api/datasets/:id
Example
GET /api/datasets/2973
Response
{
  "dataset": { "id": 2973, "dataset_code": "lfsi_long_q", "dataset_name": "Labour market transitions - quarterly data", "last_update": "2025-06-12", "source_name": "Eurostat" },
  "data": [
    { "series_key": { "dim1_value": "Quarterly", "dim2_value": "Current prices, ..." }, "countries": ["Austria","Poland"], "rows": [{ "period": "Q1/1995", "values": { "Austria": 41537.8, "Poland": 79099.8 } }] }
  ]
}
GET/api/datasets/:id/meta
Dataset metadata only

Returns only dataset metadata: id, dataset_code, dataset_name, description, source_name, source_url, metadata_url, version, dim1_label..dim8_label, oldest_period, latest_period, last_update, available_geo. Null keys are omitted.

Request
GET /api/datasets/:id/meta
Example
GET /api/datasets/2973/meta
Response
{
  "id": 2973,
  "dataset_code": "lfsi_long_q",
  "dataset_name": "Labour market transitions - quarterly data",
  "description": "...",
  "source_name": "Eurostat",
  "source_url": "https://ec.europa.eu/eurostat/...",
  "metadata_url": "https://ec.europa.eu/eurostat/...",
  "version": "1.0",
  "dim1_label": "Time frequency",
  "dim2_label": "Unit of measure",
  "dim3_label": "Seasonal adjustment",
  "dim4_label": "National accounts indicator",
  "oldest_period": "Q1/1995",
  "latest_period": "Q2/2025",
  "last_update": "2025-06-12",
  "available_geo": ["EU27_2020", "PL", "AT"]
}
GET/api/datasets/:id/data
Filtered data
Query params
  • dim1..dim8: exact labels from dataset (repeat param for multiple values)
  • country: repeat for multiple (e.g. country=Austria&country=Poland)
  • period_from, period_to: e.g. Q1/1995 (URL-encoded)
Request
GET /api/datasets/:id/data?dim1=Quarterly
Example
GET /api/datasets/4720/data?dim1=Quarterly&country=Austria&country=Poland
Response
{
  "data": [
    { "series_key": { "dim1_value": "Quarterly" }, "countries": ["Austria","Poland"], "rows": [{ "period": "Q1/1995", "values": { "Austria": 41537.8, "Poland": 79099.8 } }] }
  ],
  "meta": {
    "id": 2973,
    "dataset_code": "lfsi_long_q",
    "dataset_name": "Labour market transitions - quarterly data",
    "description": "...",
    "source_name": "Eurostat",
    "source_url": "https://ec.europa.eu/eurostat/...",
    "metadata_url": "https://ec.europa.eu/eurostat/...",
    "version": "1.0",
    "dim1_label": "Time frequency",
    "oldest_period": "Q1/1995",
    "latest_period": "Q2/2025",
    "last_update": "2025-06-12"
  }
}

Conventions

Pagination
page, limit, hasMore
  • page: 0-based.
  • limit: default 100 per page (recommended ≤ 1000).
  • Always sorted by id ascending.
  • Response includes pagination: { page, limit, total, hasMore }.
URL examples
GET /api/datasets?page=0&limit=100
GET /api/datasets?page=2&limit=100
Auth & rate limits
API keys
  • Public endpoints; CORS enabled.
  • Unauthenticated users: 3 requests/day.
  • Registered users: 10 requests/day.
  • Pro accounts: unlimited.
Using your API key
GET /api/datasets
X-API-Key: <your_api_key>

Errors

400Bad Request
Invalid parameters

Invalid request parameters or malformed data.

Response
{
  "statusCode": 400,
  "statusMessage": "Dataset ID is required"
}
401Unauthorized
Invalid API key

Invalid or missing API key.

Response
{
  "statusCode": 401,
  "statusMessage": "Invalid API key"
}
404Not Found
Resource not found

Dataset or resource not found.

Response
{
  "statusCode": 404,
  "statusMessage": "Dataset not found"
}
429Rate Limit Exceeded
Daily limit exceeded

Daily API request limit exceeded. Limits reset at midnight UTC.

Response
{
  "statusCode": 429,
  "statusMessage": "Daily API limit exceeded. Limit: 3 requests per day. Upgrade to Pro for unlimited access."
}
Daily Limits:
  • Anonymous users: 3 requests/day
  • Registered users: 10 requests/day
  • Pro accounts: Unlimited
500Server Error
Internal error

Internal server error or database connection issue.

Response
{
  "statusCode": 500,
  "statusMessage": "Internal server error"
}

Filters

Dimensions
dim1..dim8
  • Exact label match (case-sensitive).
  • Multiple values: repeat the parameter (e.g. dim1=Quarterly&dim1=Annual).
  • Encode commas/spaces, e.g. Current%20prices%2C%20million%20units....
GET /api/datasets/4720/data?dim1=Quarterly
GET /api/datasets/4720/data?dim1=Quarterly&dim1=Annual
GET /api/datasets/4720/data?dim2=Current%20prices%2C%20million%20units%20of%20national%20currency
Countries
country
  • Repeat country to select multiple.
  • Names must match dataset labels.
  • Also available on /api/datasets to filter catalog by available countries (e.g. ?country=PL).
GET /api/datasets/4720/data?country=Austria&country=Poland
GET /api/datasets?country=PL
Periods
period_from, period_to
  • Yearly (1995), quarterly (Q1/1995), monthly (01/2000) as present in dataset.
  • Inclusive range: period_from, period_to.
  • Encode slashes: Q1%2F1995.
GET /api/datasets/4720/data?period_from=Q1%2F1995&period_to=Q1%2F2025
GET /api/datasets/4720/data?period_from=1995&period_to=2010
Combined
All filters

Combine dimensions, countries and period range to narrow results.

GET /api/datasets/4720/data
  ?dim1=Quarterly
  &dim2=Current%20prices%2C%20million%20units%20of%20national%20currency
  &country=Austria&country=Poland
  &period_from=Q1%2F1995&period_to=Q1%2F2025