The EnAppSys Python client provides a light-weight client that allows for simple access to EnAppSys' API services.
Project description
EnAppSys Python Client
The Python library for the EnAppSys platform provides a light-weight, typed Python client to interact with EnAppSys' API services. Additionally, there is an asynchronous client for non-blocking operations.
Installation
Supports Python 3.10+
pip install enappsys[pandas,async]
The extras are optional:
pandasrequired for converting API responses to DataFrames, e.g. viaclient_response.to_df()asyncrequired for using theEnAppSysAsyncasynchronous client.
If you only need the synchronous client and raw responses, install without extras:
pip install enappsys
Configuring credentials
Your EnAppSys username and secret are required to make API requests. You can obtain these as follows:
-
Go to any download page on EnAppSys and click Copy API URL.
-
In the copied URL:
- The value after
user=is your username. - The value after
pass=is your secret (a long numeric string).
- The value after
The client looks for credentials in the following order:
-
Direct arguments when creating the client:
from enappsys import EnAppSys client = EnAppSys( user="example_user", secret="123456789123456789123456789123456789" )
-
Environment variables:
export ENAPPSYS_USER=example_user export ENAPPSYS_SECRET=123456789123456789123456789123456789
-
Credentials file at your home directory, the default location is:
~/.credentials/enappsys.json:{ "user": "example_user", "secret": "123456789123456789123456789123456789" }
You can also save and specify a custom path:
client = EnAppSys(credentials_file="path/to/credentials.json")
Usage
The EnAppSys client provides several download interfaces, depending on your user permissions.
Bulk API
The Bulk API is a subscription service that allows you to retrieve time series data. A data type represents a group of related series, and each individual series within that group is referred to as an entity.
The web interface for browsing available data types and entities is available at: https://app.enappsys.com/#dataservicecsv
Retrieve the DA_PRICE and DA_VOLUME entities belonging to EPEX_HR_AUCTION_RESULTS_DE and convert them to a pandas DataFrame. When converting to a DataFrame, you can also rename the columns:
day_ahead = client.bulk.get(
"csv",
data_type="EPEX_HR_AUCTION_RESULTS_DE",
entities=["DA_PRICE", "DA_VOLUME"],
start_dt="2025-01-01T00:00",
end_dt="2025-01-02T00:00",
resolution="qh",
time_zone="CET",
)
df = day_ahead.to_df(rename_columns=["price", "volume"])
To retrieve all entities for a given data_type, omit the entities argument or pass None:
day_ahead_all = client.bulk.get(
"csv",
data_type="EPEX_HR_AUCTION_RESULTS_DE",
start_dt="2025-01-01T00:00",
end_dt="2025-01-02T00:00",
resolution="qh",
time_zone="CET",
)
df_all = day_ahead_all.to_df()
The Bulk API supports multiple response formats:
"csv""json""json_map""xml"
The JSON-based formats optionally include metadata fields:
timestamp: Indicates when the data was first entered into the database or created as a forecast (UTC).last_updated: Indicates the last time the data was updated in the database (UTC).
These fields can be included when converting the response to a DataFrame:
data = client.bulk.get(
"json",
data_type="EPEX_HR_AUCTION_RESULTS_DE",
start_dt="2025-01-01T00:00",
end_dt="2025-01-02T00:00",
resolution="qh",
time_zone="CET",
)
df = data.to_df(timestamp=True, last_updated=True)
Chart API
The Chart API extracts data directly from charts available on the EnAppSys platform.
Each chart is identified by a code, which can be found in the page URL. For example:
https://app.enappsys.com/#de/elec/pricing/daprices/chart
The chart code is the part between # and /chart, in this case:
de/elec/pricing/daprices
Example usage:
day_ahead_chart = client.chart.get(
"csv",
code="de/elec/pricing/daprices",
start_dt="2025-01-01T00:00",
end_dt="2025-01-02T00:00",
resolution="qh",
time_zone="CET",
)
df_day_ahead_chart = day_ahead_chart.to_df()
Note Some charts contain non-timeseries data and may have a different structure. Below chart types are supported. If you encounter a chart that is not yet supported, please open an issue and include a link to the chart.
Price Volume Curves
The Price Volume Curve API retrieves auction price-volume curve data for a given timestamp.
hu_price_volume_curve = client.price_volume_curve.get(
"csv",
code="hu/elec/ancillary/capacity/afrr/daily/up",
dt="2025-01-01T00:00",
time_zone="CET",
currency="EUR",
)
df_curve = hu_price_volume_curve.to_df()
The dt parameter represents the auction timestamp for which the curve should be retrieved.
Asynchronous
An asynchronous client (EnAppSysAsync) is available for non-blocking and concurrent request execution.
The asynchronous interface is currently under active development. Usage examples and extended documentation will be added in a future release.
License
This project is licensed under the terms of the MIT license.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file enappsys-0.1.2.tar.gz.
File metadata
- Download URL: enappsys-0.1.2.tar.gz
- Upload date:
- Size: 20.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0e069cfc62f50a23c8bf432c350edb2d678fb003719c53f9fde37dc4b016b471
|
|
| MD5 |
8f5f0727c419e049d85427414200da50
|
|
| BLAKE2b-256 |
b060871ddafd0ced3a7ab95a1946050ec19e82c5d693a035c5c8facc63554647
|
File details
Details for the file enappsys-0.1.2-py3-none-any.whl.
File metadata
- Download URL: enappsys-0.1.2-py3-none-any.whl
- Upload date:
- Size: 27.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ade6aba9427a10c3834179ec073c9379aca7fbef952a47c55f57f2df182c71d2
|
|
| MD5 |
3b628140f4d07bbdf61a5fe4a1dc4aa3
|
|
| BLAKE2b-256 |
a47892b1f424bfa9e365fd3a56dd95f1da4205b91693d008393515b618b09228
|