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?