BM Data by Day

This endpoint returns BM data for a given date. It can return all accepted bids and offers as well as all bids and offers on the table, with optional filters for plants and fuels (see Enact's BM Data) . Each day worth of data corresponds to one API call.

Using the LCPDelta Python Package

Synchronous

from lcp_delta import enact
from datetime import date

enact_api_helper = enact.APIHelper(username, public_api_key)

#bm acceptances, table bids and offers for a given date
response_dictionary = enact_api_helper.get_bm_data_by_day(
	date(2025, 7, 18), # date to return data for
    option="all", #optional filter, defaults to 'all'
    include_accepted_times=True, #option to include accepted times for accepted bids/offers
    include_on_table=True #option to include all bids and offers
)

accepted_bids = response_dictionary[(response_dictionary['isAccepted']) & (response_dictionary['isBid'])]
accepted_offers = response_dictionary[(response_dictionary['isAccepted']) & (~response_dictionary['isBid'])]

table_bids = response_dictionary[(~response_dictionary['isAccepted']) & (response_dictionary['isBid'])]
table_offers = response_dictionary[(~response_dictionary['isAccepted']) & (~response_dictionary['isBid'])]

Asynchronous (package version 1.3.0 and later)

from lcp_delta import enact
from datetime import date
import asyncio

async def main():
    enact_api_helper = enact.APIHelper(username, public_api_key)

    #bm acceptances, table bids and offers for a given date
    response_dictionary = await enact_api_helper.get_bm_data_by_day_async(
      date(2025, 7, 18), # date to return data for
        option="all", #optional filter, defaults to 'all'
        include_accepted_times=True, #option to include accepted times for accepted bids/offers
        include_on_table=True #option to include all bids and offers
    )


asyncio.run(main())

Return Types

There are two return types for this request.

If returnAllData is selected then the larger form response is returned for all accepted bids and offers as well as bids and offers on table. These can be filtered into their corresponding types as shown in the python example above. If returnAllData is not selected then only the accepted bids and offers are return in a reduced data packet.


Return Type 1

This is returned when returnAllData is set to true. The returned object will contain lists of the following types.

datetime day;
int period;
string plantId;
bool isBid;
bool isAccepted;
double volume;
double offerPrice;
double bidPrice;
bool soFlag;
bool storFlag;
bool cadlFlag;
double cost;
string bidOnTableTypeEnum; 
string fuelType;
double? sel; (nullable)
double? mzt; (nullable)
double? ndb; (nullable)
double? ndo; (nullable)
double? ndz; (nullable)
double? mnzt; (nullable)
double[] coords;
string bodId;
AdditionalBsadData? additionalBsadData; (nullable)
datetime acceptedTime? 

Return Type 2

This is returned when returnAllData is set to false. The return object will contain lists of the following types.

datetime Day;
int Period
string BMU;
double Price;
double Volume;
bool Cadl;
bool SO Flag;
bool STOR Flag;
datetime acceptedTime? 
Language
Credentials
OAuth2
Click Try It! to start a request and see the response here!