JSON Feeds Meterbeheer HUB

Requesting feeds

  • Unique URL Access: Each JSON feed is accessible through a unique, non-guessable URL that can be requested using the HTTPS protocol.
  • Metering Data Inclusion: Every JSON feed encompasses metering data related to a singular channel belonging to a specific meter. Meters have the potential for housing multiple channels, and each channel possesses its individual URL. The terminal portion of the URL designates the corresponding channel (e.g., 1.8.0.json signifies channel "1.8.0").
  • Unlimited Request Frequency: There exists no limitation on the frequency with which a feed URL can be requested.
  • 24-Hour Update Cycle: Each feed undergoes updating at a frequency of once every 24 hours.
  • Default Data Scope: By default, a feed encompasses data from the most recent available day.
  • Custom Date Ranges: Alternatively, you can specify the "from" and "to" fields to obtain data for specific dates. The required date format is "YYYY-MM-DD".
  • Maximum Period Duration: The requested time span can extend to a maximum of 365 days.

Data structure of feeds

  • Each JSON feed contains the metering data of one meter of the previous day, per 15 minutes;
  • Each JSON feed contains the following metadata:
    • EAN: the unique European Article Number of the regarding meter;
    • Supplier channel: the channel code that is provided for the specific meter by the regarding measurement supplier;
    • Unit: the unit of the data that is provided. This will be kilowatt-hour (kWh) for electricity meters and cubic metres (m3) for gas meters.
  • Each JSON feed contains the following metering data:
    • From + to: the date and time in ISO 8601 format (for example "2023-01-01T12:00:00+01:00");
    • Value: the usage of the meter for the specified period (in the unit specified in the metadata).

Example request

A request would look like this:

curl https://hub.meterbeheer.nl/feed/70fbe0de-7140-49d1-9c30-b5081dc3f023/1.8.0.json

Example JSON response

The response to the request above would look like this (the data shown here is fictional):

{
    "meter_data": {
        "ean": "871234500012345678",
        "supplier_channel": "1.8.0",
        "unit": "kWh",
        "from": "2023-01-01T00:00:00+02:00",
        "to": "2023-01-01T00:45:00+02:00"
    },
    "metering_data": [
        {
            "from": "2023-01-01T00:00:00+02:00",
            "to": "2023-01-01T00:15:00+02:00",
            "value": 1
        },
        {
            "from": "2023-01-01T00:15:00+02:00",
            "to": "2023-01-01T00:30:00+02:00",
            "value": 2.75
        },
        {
            "from": "2023-01-01T00:30:00+02:00",
            "to": "2023-01-01T00:45:00+02:00",
            "value": 3.25
        }
    ]
}

This means: the meter with EAN 871234500012345678 had a usage of:

  • 1 kWh on January 1st 2023 between 0:00 and 0:15 h.
  • 2.75 kWh on January 1st 2023 between 0:15 and 0:30 h.
  • 3.25 kWh on January 1st 2023 between 0:30 and 0:45 h.

Example request with date range

A request with a date range would look like this:

curl https://hub.meterbeheer.nl/feed/70fbe0de-7140-49d1-9c30-b5081dc3f023/1.8.0.json?from=2025-12-01&to=2026-01-01

Demo feed

There’s a demo feed available at the following url:

https://hub.meterbeheer.nl/feed/70fbe0de-7140-49d1-9c30-b5081dc3f023/1.8.0.json

This feed is updated every 24 hours, just like a real feed.

The metering data field of the test feed contains values that help you see when the feed was generated. This is done to be able to easily run tests with the data. This logic only applies to the test feed. Real feeds will of course contain the actual values without any logic.

The first decimal of all values represents the day of the week, according to this table:

Monday 1
Tuesday 2
Wednesday 3
Thursday 4
Friday 5
Saturday 6
Sunday 7

There’s more logic regarding the demo feed: the last part of the decimals can be seen as a counter that starts with 1 (the first 15-minute block of the feed) and ends with 96 (the last 15-minute block of the feed), since there are 96 blocks of 15 minutes in a full day (24 * 4).

The decimal values of the test feed are random and contain no logic.

Examples:
  • A value of 385.101 represents a Monday feed and is the first value of that feed;
  • A value of 10.411 represents a Thursday feed and is the 11th value of that feed;
  • A value of 376.696 represents a Saturday feed and is the 96th (and last) value of that feed.

Document version: 1.3 (2024-02-17)