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/