Nord Pool PriceCurves API

The PriceCurves API from Nord Pool — 1 operation(s) for pricecurves.

OpenAPI Specification

nordpool-pricecurves-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Nord Pool Data Portal API (Public) Auction PriceCurves API
  version: '1.0'
  description: The unauthenticated JSON API behind the Nord Pool Data Portal (data.nordpoolgroup.com), where Nord Pool publishes day-ahead electricity prices for the Nordic, Baltic, CWE, and UK bidding areas. These endpoints return the same day-ahead auction results shown on the public website, in 15-minute Market Time Unit resolution, and are widely used by open-source integrations such as Home Assistant. IMPORTANT - this API is not part of Nord Pool's officially documented, subscription-backed developer offering. It is not covered by an SLA or the API General Terms, and Nord Pool may change or restrict it at any time. The two operations below were observed live and verified returning data on 2026-07-11; request and response shapes are modeled from those observed responses rather than from official reference documentation. For supported programmatic access, use the Nord Pool Market Data API (data-api.nordpoolgroup.com) with a Power Data Services subscription.
  contact:
    name: Nord Pool
    url: https://data.nordpoolgroup.com/
servers:
- url: https://dataportal-api.nordpoolgroup.com
  description: Nord Pool Data Portal backend (public, unauthenticated)
tags:
- name: PriceCurves
paths:
  /api/v2/Auction/N2EX_DayAhead/PriceCurves/UK:
    get:
      tags:
      - PriceCurves
      summary: N2EX Price Curves
      description: "Returns the N2EX UK price curve data for a given date.\n            \nThese price curves only contain order information for what is happening in the UK delivery area. No price curve information is available for the coupled NO2 area, since the trading activity in NO2 is small. \n            \n### Response field descriptions\n            \n**status**: Missing if no data exists for the requested date. Available if data is present\n\n#### orderPositions: a list of delivery period, and associated aggregated demand and supply curve orders\n- **demandCurve**: list of aggregated demand (=buy) curve order volume for price points\n- **supplyCurve**: list of aggregated supply (=sell) curve order volume for price points\n- **deliveryStart**: start of delivery period\n- **deliveryEnd**: end of delivery period\n            \n#### blockOrders: a list of block orders\n- **side**: Buy or Sell\n- **exclusiveGroupId**: if not null, then this block is part of an exclusive group. Group all blocks by exclusive group id to see the exclusive group.\n- **minimumAcceptanceRatio**: the minimum acceptance ratio needed for the block to activate. Typically in the 0.5-1 range, where 0.5 = 50% of the volume needs to be filled to activate\n- **linkedOrderId**: if not null, then this block will only activate if the linked block order with this id activates. To find the parent, find the block order with the corresponding id.\n- **price**: the average price for the block order to activate\n- **paradoxicallyRejected**: if true, then the block restrictions are within the correct price and volume limits, but activating the block would cause price and volume to shift enough to disqualify the block from activation.\n- **actualAcceptanceRatio**: the ratio of the block that was accepted, in a range of 0-1. 1 = 100% of volume accepted.\n- **intervals**: periods for the block, with corresponding volumes and accepted volumes.\n            \nNote that the intersection of the supply and demand curve positions will not add up to the realized price - for that, block order activations as well as import and export flows needs to be taken into account as well."
      parameters:
      - name: date
        in: query
        description: Delivery date, referring to CET date. Format yyyy-MM-dd, for example, 2024-08-15
        required: true
        schema:
          type: string
          format: date
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ApiUkPriceCurve'
            application/json:
              schema:
                $ref: '#/components/schemas/ApiUkPriceCurve'
            text/json:
              schema:
                $ref: '#/components/schemas/ApiUkPriceCurve'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                type: string
            application/json:
              schema:
                type: string
            text/json:
              schema:
                type: string
        '403':
          description: Forbidden
          content:
            text/plain:
              schema:
                type: string
            application/json:
              schema:
                type: string
            text/json:
              schema:
                type: string
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
components:
  schemas:
    ApiUkPriceCurve:
      type: object
      properties:
        deliveryDateCET:
          type: string
          format: date
        status:
          $ref: '#/components/schemas/ApiAvailableStatus'
        currencyUnit:
          type: string
          nullable: true
          readOnly: true
        volumeUnit:
          type: string
          nullable: true
          readOnly: true
        orderPositions:
          type: array
          items:
            $ref: '#/components/schemas/ApiUkPeriod'
          nullable: true
        market:
          $ref: '#/components/schemas/Market'
        deliveryArea:
          type: string
          nullable: true
          readOnly: true
        blockOrders:
          type: array
          items:
            $ref: '#/components/schemas/ApiUkBlockOrder'
          nullable: true
      additionalProperties: false
    BlockOrderSide:
      enum:
      - Buy
      - Sell
      type: string
    ApiPricePoint:
      type: object
      properties:
        price:
          type: number
          format: double
        volume:
          type: number
          format: double
      additionalProperties: false
    ApiAvailableStatus:
      enum:
      - Missing
      - Available
      type: string
    ApiUkPeriod:
      type: object
      properties:
        deliveryStart:
          type: string
          format: date-time
        deliveryEnd:
          type: string
          format: date-time
        demandCurve:
          type: array
          items:
            $ref: '#/components/schemas/ApiPricePoint'
          nullable: true
        supplyCurve:
          type: array
          items:
            $ref: '#/components/schemas/ApiPricePoint'
          nullable: true
      additionalProperties: false
    ValidationProblemDetails:
      type: object
      properties:
        type:
          type: string
          nullable: true
        title:
          type: string
          nullable: true
        status:
          type: integer
          format: int32
          nullable: true
        detail:
          type: string
          nullable: true
        instance:
          type: string
          nullable: true
        errors:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          nullable: true
      additionalProperties: {}
    ApiUkBlockOrderInterval:
      type: object
      properties:
        deliveryStart:
          type: string
          format: date-time
        deliveryEnd:
          type: string
          format: date-time
        volume:
          type: number
          format: double
        acceptedVolume:
          type: number
          format: double
      additionalProperties: false
    Market:
      enum:
      - DayAhead
      - GbHalfHour_DayAhead
      - N2EX_DayAhead
      - NP_IntradayAuction1
      - NP_IntradayAuction2
      - SemGb_IntradayAuction1
      - SemGb_IntradayAuction2
      - SIDC_IntradayAuction1
      - SIDC_IntradayAuction2
      - SIDC_IntradayAuction3
      type: string
    ApiUkBlockOrder:
      type: object
      properties:
        id:
          type: integer
          format: int32
        side:
          $ref: '#/components/schemas/BlockOrderSide'
        exclusiveGroupId:
          type: integer
          format: int32
          nullable: true
        minimumAcceptanceRatio:
          type: number
          format: double
        linkedOrderId:
          type: integer
          format: int32
          nullable: true
        price:
          type: number
          format: double
        paradoxicallyRejected:
          type: boolean
        actualAcceptanceRatio:
          type: number
          format: double
        intervals:
          type: array
          items:
            $ref: '#/components/schemas/ApiUkBlockOrderInterval'
          nullable: true
      additionalProperties: false
externalDocs:
  description: Nord Pool Data Portal (public day-ahead prices site)
  url: https://data.nordpoolgroup.com/