openapi: 3.2.0 info: title: Nord Pool Market Data Exchange Rate API description: 'Nord Pool''s Market Data API (v2) provides programmatic access to European power exchange market data: day-ahead auction prices, price indices, volumes, capacities, flows and aggregated bid curves; intraday continuous statistics, orders, trades and order books; balance market (mFRR) data; power system data (production, consumption, forecasts, hydro reservoir reserves); system price and turnover; and exchange rates.' version: v2 contact: name: Nord Pool Power Data Services url: https://www.nordpoolgroup.com/en/services/power-market-data-services/ servers: - url: https://data-api.nordpoolgroup.com description: Nord Pool Market Data API (production) security: - oauth2: [] tags: - name: Exchange Rate paths: /api/v2/ExchangeRate/Daily: get: tags: - Exchange Rate summary: Exchange rates description: 'Returns the exchange rate used for a specific date. ### Nordic Day-ahead market and local currencies For the Nordic Day-ahead market, local currency trading is allowed. At the auction day, a preliminary exchange rate is retrieved for local currencies to EUR (for example, SEK -> EUR) from a bank. This preliminary exchange rate is used to calculate order prices in EUR based on user provided input. If the user places an order with price 100 SEK and the SEK -> EUR **preliminary** exchange rate is 0.1, then the order value in EUR is 10. All orders are matched in EUR. After the market coupling session is complete, on the first available banking day (on normal week days, this is the same day. On weekends, this usually means next Monday) Nord Pool performs a currency exchange hedging process. Here we get a **final** exchange rate based on how much local currencies are exchanged. The final local currency prices are then re-calculated using the final exchange rate, this time from EUR -> local currency. To continue the sample above, if our final EUR -> SEK exchange rate is 9.98, then the settled price will be 99.80 SEK rather than the original 100 SEK. If the final exchange rate would be 10.02, then the settled price would be 100.20 SEK. ### Other exchange rates (PLN, RON, GBP) Other currencies does not follow the same hedging flow as in the Nordics. Usually exchange rate is agreed upon before auctions happen and thus no price adjustments are needed. ### Response field descriptions **rates**: a list currency exchange rates for the day - **fromCurrency**: the currency exchanged from - **toCurrency**: the currency exchanged to - **rate**: the exchange rate used to transform fromCurrency -> toCurrency - **status**: Preliminary or Final. Preliminary rates can change, Final rates will not be changed. For usage, see the description above - **modified**: the last update time' 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/ApiExchangeRate' application/json: schema: $ref: '#/components/schemas/ApiExchangeRate' text/json: schema: $ref: '#/components/schemas/ApiExchangeRate' '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' operationId: getApiV2ExchangeRateDaily x-operation-id-source: derived /api/v2/ExchangeRate/Yearly: get: tags: - Exchange Rate summary: Yearly Exchange rates description: 'Returns the exchange rates for a specific year. ### Nordic Day-ahead market and local currencies For the Nordic Day-ahead market, local currency trading is allowed. At the auction day, a preliminary exchange rate is retrieved for local currencies to EUR (for example, SEK -> EUR) from a bank. This preliminary exchange rate is used to calculate order prices in EUR based on user provided input. If the user places an order with price 100 SEK and the SEK -> EUR **preliminary** exchange rate is 0.1, then the order value in EUR is 10. All orders are matched in EUR. After the market coupling session is complete, on the first available banking day (on normal week days, this is the same day. On weekends, this usually means next Monday) Nord Pool performs a currency exchange hedging process. Here we get a **final** exchange rate based on how much local currencies are exchanged. The final local currency prices are then re-calculated using the final exchange rate, this time from EUR -> local currency. To continue the sample above, if our final EUR -> SEK exchange rate is 9.98, then the settled price will be 99.80 SEK rather than the original 100 SEK. If the final exchange rate would be 10.02, then the settled price would be 100.20 SEK. ### Other exchange rates (PLN, RON, GBP) Other currencies does not follow the same hedging flow as in the Nordics. Usually exchange rate is agreed upon before auctions happen and thus no price adjustments are needed. ### Response field descriptions **dailyExchangeRates**: a list of exchange rates per delivery date Each daily exchange rate contains **dateCET**: the delivery date in CET time the rate is used for **rates**: a list currency exchange rates for the day - **fromCurrency**: the currency exchanged from - **toCurrency**: the currency exchanged to - **rate**: the exchange rate used to transform fromCurrency -> toCurrency - **status**: Preliminary or Final. Preliminary rates can change, Final rates will not be changed. For usage, see the description above - **modified**: the last update time' parameters: - name: year in: query description: Delivery year, referring to CET year. Format yyyy, for example 2024 required: true schema: type: integer format: int32 responses: '200': description: OK content: text/plain: schema: $ref: '#/components/schemas/ApiYearlyExchangeRate' application/json: schema: $ref: '#/components/schemas/ApiYearlyExchangeRate' text/json: schema: $ref: '#/components/schemas/ApiYearlyExchangeRate' '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' operationId: getApiV2ExchangeRateYearly x-operation-id-source: derived components: schemas: ValidationProblemDetails: type: object properties: type: type: - string - 'null' title: type: - string - 'null' status: type: - integer - 'null' format: int32 detail: type: - string - 'null' instance: type: - string - 'null' errors: type: - object - 'null' additionalProperties: type: array items: type: string additionalProperties: {} ExchangeRateDataLake: type: object properties: rates: type: - array - 'null' items: $ref: '#/components/schemas/ExchangeRates' dateCET: type: string format: date updatedAt: type: string format: date-time additionalProperties: false ApiAvailableStatus: enum: - Missing - Available type: string ApiYearlyExchangeRate: type: object properties: year: type: integer format: int32 status: $ref: '#/components/schemas/ApiAvailableStatus' dailyExchangeRates: type: - array - 'null' items: $ref: '#/components/schemas/ExchangeRateDataLake' updatedAt: type: string format: date-time additionalProperties: false ExchangeRates: type: object properties: fromCurrency: type: - string - 'null' toCurrency: type: - string - 'null' rate: type: number format: double status: $ref: '#/components/schemas/ExchangeRateStatus' modified: type: string format: date-time additionalProperties: false ApiExchangeRate: required: - rates type: object properties: dateCET: type: string format: date status: $ref: '#/components/schemas/ApiAvailableStatus' updatedAt: type: string format: date-time rates: type: - array - 'null' items: $ref: '#/components/schemas/ExchangeRates' additionalProperties: false ExchangeRateStatus: enum: - Preliminary - Final type: string securitySchemes: oauth2: type: oauth2 description: Oauth2 Authentication flows: authorizationCode: authorizationUrl: https://sts.nordpoolgroup.com/connect/authorize tokenUrl: https://sts.nordpoolgroup.com/connect/token scopes: marketdata_api: '...' externalDocs: description: Nord Pool Developer Portal url: https://developers.nordpoolgroup.com/