ENTSO-E Market Data Query API

Single query endpoint for every Transparency Platform data item. The documentType, processType, and domain parameters select the dataset.

OpenAPI Specification

entso-e-market-data-query-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: ENTSO-E Transparency Platform RESTful Market Data Query API
  description: 'The ENTSO-E Transparency Platform RESTful API provides programmatic access to the central European electricity market dataset published under EU Regulation 543/2013 - day-ahead prices, system load, generation, transmission, balancing, outages, and congestion management data for bidding zones, control areas, and borders across Europe. The API is deliberately NOT a resource-per-path REST design: it exposes a single endpoint (GET or POST /api) and the data item you receive is selected by coded query parameters - documentType (e.g. A44 = price document, A65 = system total load, A75 = actual generation per type, A85 = imbalance prices), processType (e.g. A01 = day ahead, A16 = realised), psrType (production types B01-B24), businessType, and domain parameters populated with EIC area codes (e.g. 10YCZ-CEPS-----N). Responses are XML market documents defined by the IEC 62325-451 standards (Publication_MarketDocument, GL_MarketDocument, Balancing_MarketDocument, TransmissionNetwork_MarketDocument); a few data items (imbalance prices and volumes, outages) return a ZIP archive of XML documents. All timestamps are UTC. Rejections and empty results return an Acknowledgement_MarketDocument with a Reason code (999 = no matching data found). Access is free - register on the Transparency Platform, request Restful API access from transparency@entsoe.eu, and generate a security token under My Account Settings.


    Common data-item recipes (mandatory parameters beyond securityToken and periodStart/periodEnd):

    - Day-ahead prices [12.1.D] - documentType=A44, in_Domain and out_Domain set to the SAME bidding-zone EIC code. One-year range limit.

    - Actual total load [6.1.A] - documentType=A65, processType=A16, outBiddingZone_Domain. Day-ahead load forecast [6.1.B] uses processType=A01; week/month/year-ahead use A31/A32/A33.

    - Actual generation per production type [16.1.B&C] - documentType=A75, processType=A16, in_Domain; optional psrType filters to one production type.

    - Installed generation capacity aggregated [14.1.A] - documentType=A68, processType=A33, in_Domain.

    - Wind and solar forecast [14.1.D] - documentType=A69, processType=A01 (or A40 intraday), in_Domain.

    - Cross-border physical flows [12.1.G] - documentType=A11, in_Domain, out_Domain (one direction per request; swap domains for the other).

    - Forecasted transfer capacities [11.1.A] - documentType=A61, contract_MarketAgreement.Type (A01 daily - A04 yearly), in_Domain, out_Domain.

    - Accepted aggregated offers [17.1.D] - documentType=A82, controlArea_Domain; optional businessType (A95 FCR, A96 FRR, A97 replacement reserve, A98 interconnector trading).

    - Activated balancing energy [17.1.E] - documentType=A83, controlArea_Domain.

    - Imbalance prices [17.1.G] - documentType=A85, controlArea_Domain (returns ZIP of XML).

    - Total imbalance volumes [17.1.H] - documentType=A86, controlArea_Domain (returns ZIP of XML).

    - Contracted reserves [17.1.B] / prices of contracted reserves [17.1.C] - documentType=A81 / A89, type_MarketAgreement.Type, controlArea_Domain.'
  version: '1.0'
  contact:
    name: ENTSO-E Transparency Platform Helpdesk
    email: transparency@entsoe.eu
    url: https://transparency.entsoe.eu/
  termsOfService: https://transparency.entsoe.eu/content/static_content/Static%20content/terms%20and%20conditions/terms%20and%20conditions.html
servers:
- url: https://web-api.tp.entsoe.eu
  description: Transparency Platform production web API
security:
- securityToken: []
tags:
- name: Market Data Query
  description: Single query endpoint for every Transparency Platform data item. The documentType, processType, and domain parameters select the dataset.
paths:
  /api:
    get:
      operationId: queryMarketDocument
      tags:
      - Market Data Query
      summary: Query Transparency Platform data (GET)
      description: Retrieves one Transparency Platform data item as an IEC 62325 XML market document (or ZIP of XML for imbalance and outage items). The combination of documentType, processType, businessType, and domain parameters selects the data item; periodStart/periodEnd (or timeInterval) bound the query window. Parameter names are case-sensitive and must start lowercase on GET. Standard (table) data items are limited to a one-year range per request; document-based (curve) items are limited to 100 documents per request (200 for outages), with an offset parameter available on some items to page up to 4,900 documents. Exceeding a limit, omitting a mandatory parameter, or matching no data returns an Acknowledgement_MarketDocument with the reason.
      parameters:
      - name: securityToken
        in: query
        required: true
        description: Personal API token. Free - register on the Transparency Platform, email transparency@entsoe.eu with subject "Restful API access", then generate the token under My Account Settings. Missing or invalid tokens receive HTTP 401.
        schema:
          type: string
      - name: documentType
        in: query
        required: true
        description: 'Coded document type selecting the data item family. Key codes: A44 price document (day-ahead prices), A65 system total load, A75 actual generation per type, A73 actual generation (per unit), A74 wind and solar generation, A71 generation forecast, A69 wind and solar forecast, A68 installed generation per type, A72 reservoir filling information, A70 load forecast margin, A11 aggregated energy data report (physical flows), A61 estimated net transfer capacity, A09 finalised schedule (commercial exchanges), A31 agreed capacity, A25 allocation result document, A26 capacity document, A81 contracted reserves, A82 accepted offers, A83 activated balancing quantities, A84 activated balancing prices, A85 imbalance prices, A86 imbalance volume, A87 financial situation, A88 cross border balancing, A89 contracted reserve prices, A15 acquiring system operator reserve schedule (procured balancing capacity), A76-A80 unavailability (outage) documents.'
        schema:
          type: string
          enum:
          - A09
          - A11
          - A15
          - A24
          - A25
          - A26
          - A31
          - A37
          - A38
          - A44
          - A61
          - A63
          - A65
          - A68
          - A69
          - A70
          - A71
          - A72
          - A73
          - A74
          - A75
          - A76
          - A77
          - A78
          - A79
          - A80
          - A81
          - A82
          - A83
          - A84
          - A85
          - A86
          - A87
          - A88
          - A89
          - A90
          - A91
          - A92
          - A93
          - A94
          - A95
          - B11
          - B17
          - B45
        example: A44
      - name: processType
        in: query
        required: false
        description: Process the data belongs to. A01 day ahead, A02 intra day incremental, A16 realised, A18 intraday total, A31 week ahead, A32 month ahead, A33 year ahead, A39 synchronisation process, A40 intraday process, A46 replacement reserve, A47 manual frequency restoration reserve, A51 automatic frequency restoration reserve, A52 frequency containment reserve, A56 frequency restoration reserve, A60 scheduled activation mFRR, A61 direct activation mFRR, A67 central selection aFRR, A68 local selection aFRR.
        schema:
          type: string
          enum:
          - A01
          - A02
          - A16
          - A18
          - A31
          - A32
          - A33
          - A39
          - A40
          - A46
          - A47
          - A51
          - A52
          - A56
          - A60
          - A61
          - A67
          - A68
        example: A16
      - name: businessType
        in: query
        required: false
        description: Business type filter used mainly by balancing and outage items, e.g. A95 frequency containment reserve, A96 automatic frequency restoration reserve, A97 manual frequency restoration reserve, A98 replacement reserve, A53 planned maintenance, A54 unplanned outage, A19 balance energy deviation.
        schema:
          type: string
        example: A96
      - name: psrType
        in: query
        required: false
        description: Power system resource (production) type filter. B01 biomass, B02 fossil brown coal/lignite, B04 fossil gas, B05 fossil hard coal, B09 geothermal, B10 hydro pumped storage, B11 hydro run-of-river, B12 hydro water reservoir, B14 nuclear, B16 solar, B17 waste, B18 wind offshore, B19 wind onshore, B20 other, plus A03 mixed, A04 generation, A05 load.
        schema:
          type: string
        example: B16
      - name: in_Domain
        in: query
        required: false
        description: EIC code of the in area (bidding zone, control area, or border end). For day-ahead prices (A44) in_Domain and out_Domain must be the same bidding-zone EIC code, e.g. 10YCZ-CEPS-----N.
        schema:
          type: string
        example: 10YCZ-CEPS-----N
      - name: out_Domain
        in: query
        required: false
        description: EIC code of the out area. For border data items (physical flows, transfer capacities, schedules) the API returns one direction per request; swap in_Domain and out_Domain for the other direction.
        schema:
          type: string
        example: 10YSK-SEPS-----K
      - name: outBiddingZone_Domain
        in: query
        required: false
        description: EIC code of the bidding zone for load data items (documentType A65, A70).
        schema:
          type: string
        example: 10YCZ-CEPS-----N
      - name: biddingZone_Domain
        in: query
        required: false
        description: EIC code of the bidding zone, used by outage and some generation items.
        schema:
          type: string
      - name: controlArea_Domain
        in: query
        required: false
        description: EIC code of the control / market balance area for balancing data items (documentType A81-A89).
        schema:
          type: string
        example: 10YCZ-CEPS-----N
      - name: area_Domain
        in: query
        required: false
        description: EIC code of the scheduling area, used by procured balancing capacity (A15).
        schema:
          type: string
      - name: acquiring_Domain
        in: query
        required: false
        description: EIC code of the acquiring area for cross-border balancing (A88).
        schema:
          type: string
      - name: connecting_Domain
        in: query
        required: false
        description: EIC code of the connecting area for cross-border balancing (A88).
        schema:
          type: string
      - name: periodStart
        in: query
        required: false
        description: Start of the query window in yyyyMMddHHmm format, interpreted as UTC (e.g. 201512312300). Use together with periodEnd; cannot be combined with timeInterval.
        schema:
          type: string
          pattern: ^[0-9]{12}$
        example: '202506302200'
      - name: periodEnd
        in: query
        required: false
        description: End of the query window in yyyyMMddHHmm format, interpreted as UTC. Use together with periodStart; cannot be combined with timeInterval.
        schema:
          type: string
          pattern: ^[0-9]{12}$
        example: '202507012200'
      - name: timeInterval
        in: query
        required: false
        description: ISO 8601 interval alternative to periodStart/periodEnd, e.g. 2015-12-31T23:00Z/2016-12-31T23:00Z. Cannot be combined with periodStart/periodEnd.
        schema:
          type: string
      - name: contract_MarketAgreement.Type
        in: query
        required: false
        description: Contract type for capacity allocation items (A61, A31, A09 and others). A01 daily, A02 weekly, A03 monthly, A04 yearly, A05 total, A06 long term, A07 intraday.
        schema:
          type: string
          enum:
          - A01
          - A02
          - A03
          - A04
          - A05
          - A06
          - A07
        example: A01
      - name: type_MarketAgreement.Type
        in: query
        required: false
        description: Contract type for balancing reserve items (A81, A89). A01 daily, A02 weekly, A03 monthly, A04 yearly, A06 long term, A13 hourly.
        schema:
          type: string
          enum:
          - A01
          - A02
          - A03
          - A04
          - A05
          - A06
          - A07
          - A13
      - name: auction.Type
        in: query
        required: false
        description: Auction type for capacity allocation items. A01 implicit, A02 explicit.
        schema:
          type: string
          enum:
          - A01
          - A02
      - name: auction.Category
        in: query
        required: false
        description: Auction category. A01 base, A02 peak, A03 off peak, A04 hourly.
        schema:
          type: string
          enum:
          - A01
          - A02
          - A03
          - A04
      - name: classificationSequence_AttributeInstanceComponent.Position
        in: query
        required: false
        description: Classification sequence position for explicit allocation results.
        schema:
          type: integer
      - name: registeredResource
        in: query
        required: false
        description: EIC code of a specific generation unit or transmission asset.
        schema:
          type: string
      - name: docStatus
        in: query
        required: false
        description: Document status filter, mainly for outages. A01 intermediate, A02 final, A05 active, A09 cancelled, A13 withdrawn, X01 estimated.
        schema:
          type: string
          enum:
          - A01
          - A02
          - A05
          - A09
          - A13
          - X01
      - name: standard_MarketProduct
        in: query
        required: false
        description: Standard market product filter for balancing energy items (A01 standard, A02 specific, A03 integrated process, A04 local).
        schema:
          type: string
      - name: original_MarketProduct
        in: query
        required: false
        description: Original market product filter for balancing energy items.
        schema:
          type: string
      - name: direction
        in: query
        required: false
        description: Flow direction filter for balancing items. A01 up, A02 down, A03 symmetric.
        schema:
          type: string
          enum:
          - A01
          - A02
          - A03
      - name: offset
        in: query
        required: false
        description: Paging offset for document-limited items (outages, procured balancing capacity, contracted reserves). Range 0-4800; offset=n returns documents n+1 through n+100 (n+200 for outages), so at most 4,900 documents are reachable per query.
        schema:
          type: integer
          minimum: 0
          maximum: 4800
      - name: periodStartUpdate
        in: query
        required: false
        description: Start of the publication/update window (yyyyMMddHHmm) for outage items; cannot be combined with timeIntervalUpdate.
        schema:
          type: string
          pattern: ^[0-9]{12}$
      - name: periodEndUpdate
        in: query
        required: false
        description: End of the publication/update window (yyyyMMddHHmm) for outage items; cannot be combined with timeIntervalUpdate.
        schema:
          type: string
          pattern: ^[0-9]{12}$
      - name: timeIntervalUpdate
        in: query
        required: false
        description: ISO 8601 publication/update interval for outage items; cannot be combined with periodStartUpdate/periodEndUpdate.
        schema:
          type: string
      responses:
        '200':
          description: Matching data as an IEC 62325 XML market document. Load and generation items return a GL_MarketDocument; prices, flows, capacities, and schedules return a Publication_MarketDocument; balancing items return a Balancing_MarketDocument; grid unavailability returns a TransmissionNetwork_MarketDocument. Imbalance prices (A85), imbalance volumes (A86), and outage documents are delivered as a ZIP archive of XML files. Note that some rejections (including "no matching data found", Reason code 999) are returned as an Acknowledgement_MarketDocument.
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/MarketDocument'
            application/zip:
              schema:
                type: string
                format: binary
                description: ZIP archive of IEC 62325 XML market documents.
        '400':
          description: Request rejected - missing or duplicate mandatory parameters, wrong parameter case, range over the one-year limit, or more than the allowed number of matching documents. Body is an Acknowledgement_MarketDocument stating the reason.
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/AcknowledgementMarketDocument'
        '401':
          description: Missing or invalid securityToken (including suspended accounts).
        '429':
          description: Too many requests - more than 400 requests per minute from one IP address or security token results in a 10-minute ban with the message "Max allowed requests per minute from each unique IP is max up to 400 only".
    post:
      operationId: queryMarketDocumentPost
      tags:
      - Market Data Query
      summary: Query Transparency Platform data (POST)
      description: Same query capability as GET, expressed as an IEC 62325-451-5 StatusRequest_MarketDocument XML body in which each query parameter is an AttributeInstanceComponent (attribute/attributeValue pair, with parameter names capitalized, e.g. DocumentType, In_Domain, TimeInterval). The security token is passed in the SECURITY_TOKEN request header instead of the query string.
      security: []
      parameters:
      - name: SECURITY_TOKEN
        in: header
        required: true
        description: Personal API token (POST method equivalent of the securityToken query parameter).
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/xml:
            schema:
              $ref: '#/components/schemas/StatusRequestMarketDocument'
      responses:
        '200':
          description: Matching data as an IEC 62325 XML market document or ZIP archive (see GET).
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/MarketDocument'
            application/zip:
              schema:
                type: string
                format: binary
        '400':
          description: Request rejected; body is an Acknowledgement_MarketDocument stating the reason.
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/AcknowledgementMarketDocument'
        '401':
          description: Missing or invalid SECURITY_TOKEN header.
        '429':
          description: More than 400 requests per minute from one IP address or security token.
components:
  schemas:
    AcknowledgementMarketDocument:
      type: object
      description: IEC 62325-451-1 acknowledgement document returned when a request is rejected or matches no data. Reason code 999 with text "No matching data found" indicates an empty result; other reasons include missing mandatory parameters, ranges over the one-year limit, and document counts over the 100/200-document limit.
      properties:
        mRID:
          type: string
        createdDateTime:
          type: string
          format: date-time
        Reason:
          type: object
          properties:
            code:
              type: string
              example: '999'
            text:
              type: string
              example: No matching data found
    StatusRequestMarketDocument:
      type: object
      description: IEC 62325-451-5 status request document (namespace urn:iec62325.351:tc57wg16:451-5:statusrequestdocument:4:0) used as the POST body. type is A59; each query parameter is expressed as an AttributeInstanceComponent with capitalized attribute names (DocumentType, ProcessType, In_Domain, Out_Domain, TimeInterval, ...).
      properties:
        mRID:
          type: string
          example: SampleCallToRestfulApi
        type:
          type: string
          example: A59
        sender_MarketParticipant.mRID:
          type: string
          example: 10X1001A1001A450
        receiver_MarketParticipant.mRID:
          type: string
          example: 10X1001A1001A450
        createdDateTime:
          type: string
          format: date-time
        AttributeInstanceComponent:
          type: array
          items:
            type: object
            properties:
              attribute:
                type: string
                example: DocumentType
              attributeValue:
                type: string
                example: A44
    MarketDocument:
      type: object
      description: An IEC 62325-451 market document. The concrete root element depends on the data item queried - Publication_MarketDocument (prices, flows, capacities, schedules; namespace urn:iec62325.351:tc57wg16:451-3), GL_MarketDocument (load and generation; 451-6 generation-load), Balancing_MarketDocument (balancing; 451-6 balancing), TransmissionNetwork_MarketDocument, or Unavailability_MarketDocument (outages, inside ZIP). All share the mRID/type/sender/receiver/ period/TimeSeries structure below; TimeSeries Points carry position/quantity pairs, or position/price.amount (EUR per MWh) for price documents.
      properties:
        mRID:
          type: string
          description: Unique identifier of the returned document.
        revisionNumber:
          type: integer
        type:
          type: string
          description: Document type code (mirrors the documentType query parameter, e.g. A44).
        process.processType:
          type: string
          description: Process type code (e.g. A01 day ahead, A16 realised).
        sender_MarketParticipant.mRID:
          type: string
          description: EIC code of the sender (the Transparency Platform, 10X1001A1001A450).
        receiver_MarketParticipant.mRID:
          type: string
        createdDateTime:
          type: string
          format: date-time
        period.timeInterval:
          type: object
          description: Overall time interval of the returned data (UTC).
          properties:
            start:
              type: string
            end:
              type: string
        TimeSeries:
          type: array
          description: One or more time series. Each series identifies the area(s) via in_Domain.mRID / out_Domain.mRID / outBiddingZone_Domain.mRID, the measure unit (e.g. MAW, MWH, EUR), currency for price documents, the market time unit resolution (e.g. PT15M, PT60M), and a Period containing Point elements.
          items:
            type: object
            properties:
              mRID:
                type: string
              businessType:
                type: string
              curveType:
                type: string
                description: A01 for all data items except production/generation unit outages (A03).
              Period:
                type: object
                properties:
                  timeInterval:
                    type: object
                    properties:
                      start:
                        type: string
                      end:
                        type: string
                  resolution:
                    type: string
                    description: Market time unit resolution, e.g. PT15M or PT60M.
                  Point:
                    type: array
                    items:
                      type: object
                      properties:
                        position:
                          type: integer
                        quantity:
                          type: number
                          description: Quantity value (MW/MWh items).
                        price.amount:
                          type: number
                          description: Price value for price documents (e.g. day-ahead price in currency per MWh).
  securitySchemes:
    securityToken:
      type: apiKey
      in: query
      name: securityToken
      description: Free personal token issued after registering on the Transparency Platform and requesting Restful API access from transparency@entsoe.eu.
externalDocs:
  description: Transparency Platform RESTful API user guide (knowledge base)
  url: https://transparencyplatform.zendesk.com/hc/en-us