This endpoint returns BM data for a given date range. 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. Each day of data returned corresponds to one API call.
If you are not using the LCPDelta Python package, note that this endpoint is paginated and returns data one day at a time across the requested date range. The cursor field is an opaque pagination token that indicates where to continue, so direct API calls should be repeated with the returned cursor until nextCursor is null (or missing).
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_range(
date(2025, 7, 23), # start date to return data for
date(2025, 7, 30), # end 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_range_async(
date(2025, 7, 18), # start date to return data for
date(2025, 7, 30), # end 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
This method returns a data object as well as the value of the next cursor representing the next day of data to get. If there is no more days of data to get then the cursor is null.
The data objects returned are as described in BM Data by Day.