Skip to main content

esiosapy

Unofficial ESIOS API Python library. Up to date and fully equipped.

Test Release Package version Supported Python versions Coverage


Documentation: https://m4rc0sx.github.io/esiosapy/


esiosapy allows you to communicate with the ESIOS/REE API in a comfortable and abstract way, so that everything is handled by objects and you will not need to write any raw request.

Features

  • Simple API: Easy-to-use client for accessing ESIOS data
  • Sync & Async: Both synchronous and asynchronous clients
  • Type Hints: Full type annotations with strict mypy support
  • Retry Logic: Automatic retry with exponential backoff for network errors
  • CLI: Command-line interface for quick data exploration
  • Logging: Built-in logging for debugging
  • Configurable Timeouts: Customizable request timeouts

Installation

esiosapy is available on PyPI and supports Python >=3.10:

pip install esiosapy

Optional dependencies

# Async support (httpx)
pip install esiosapy[async]

# HTML description prettifying (beautifulsoup4)
pip install esiosapy[beautifulsoup]

# All optional dependencies
pip install esiosapy[all]

Quick start

You need a personal token to use the ESIOS API. You can request one at https://api.esios.ree.es/.

Indicators

from esiosapy import ESIOSAPYClient
from esiosapy.models.indicator.time_trunc import TimeTrunc

client = ESIOSAPYClient(token="your_esios_api_token")

# Get all indicators
indicators = client.indicators.list_all()

# Search indicators by name
solar = client.indicators.search("solar")

# Get data for an indicator
indicator = indicators[0]
data = indicator.get_data("2021-01-01", "2021-01-02", time_trunc=TimeTrunc.HOUR)

Archives

from esiosapy import ESIOSAPYClient
from esiosapy.models.archive.archive_date_type import ArchiveDateType

client = ESIOSAPYClient(token="your_esios_api_token")

# Search files by date range
archives = client.archives.list_by_date_range(
    "2021-01-01T00:00:00.000+01:00",
    "2021-01-02T00:00:00.000+01:00",
    date_type=ArchiveDateType.PUBLICATION,
)

# Download, unzip, and clean up
archives[0].download_file(unzip=True, remove_zip=True)

Async usage

import asyncio
from esiosapy import AsyncESIOSAPYClient

async def main():
    async with AsyncESIOSAPYClient(token="your_esios_api_token") as client:
        indicators = await client.indicators.list_all()

asyncio.run(main())

Context manager

Both sync and async clients support context managers for automatic resource cleanup:

with ESIOSAPYClient(token="your_esios_api_token") as client:
    indicators = client.indicators.list_all()

CLI

# List all indicators
esiosapy --token YOUR_TOKEN indicators

# List all archives
esiosapy --token YOUR_TOKEN archives

# Set custom timeout
esiosapy --token YOUR_TOKEN --timeout 60 indicators

Dependencies

esiosapy depends on Pydantic, requests, and tenacity.

Contributing

All contributions are welcome! Please read the contributing guide for details on how to get started.

License

This project is licensed under the GPL-3.0-or-later license. See the LICENSE file for details.

Metadata

Release files for esiosapy 3.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for esiosapy 3.0.2
File Size Uploaded
esiosapy-3.0.2.tar.gz 16.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for esiosapy 3.0.2
File Interpreter ABI Platform
esiosapy-3.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 49.3 kB

Release files / esiosapy-3.0.2.tar.gz

Download URL esiosapy-3.0.2.tar.gz
Size 16.3 kB
Tags Source
SHA-256 checksum
How to use checksums
6cdb2386a72c7b2169749b2120d73f643b492e416c2fea152d6121f6ab60a5fd
BLAKE2b-256 checksum
How to use checksums
51d70e5dadac85e3113cdc5f51106e1bd8c34e834ebe672e81018d7ff78a4946
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / esiosapy-3.0.2-py3-none-any.whl

Download URL esiosapy-3.0.2-py3-none-any.whl
Size 32.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1e8dc7764cdf39dc0099a384c4c5aabec607daa45b00e5a3e444575d5eee16b8
BLAKE2b-256 checksum
How to use checksums
82530e0b7c45e95bf4b056808ee02d167627cb8c522c54f322911aeb0e8e84c8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

3.0.2 This release

2 release files

3.0.1

2 release files

3.0.0

2 release files

2.2.3

2 release files

2.2.2

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.0

2 release files

2.0.5

2 release files

2.0.4

2 release files

2.0.3

2 release files

2.0.2

2 release files

2.0.1

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page