Bellesa API
An asynchronous Python API wrapper and scraper for bellesa.co
Disclaimer
Features
| Category | Details |
|---|---|
| Video Fetching | Fetch rich video metadata: title, description, views, likes, publish date, duration, categories, channel, and associated performers |
| Video Downloading | HLS and direct MP4 downloads with configurable quality (best, half, worst, or actual numeric resolutions), including verified renditions through 2160p |
| Channel & Performer Profiles | Fetch channel and performer metadata, follow video relationships, and iterate complete video listings |
| Category Fetching | Retrieve typed categories and iterate their videos page-by-page with concurrency control |
| Video Search | Search videos, performers, or channels; filter video listings by category, channel, performer, tags, and duration |
| Lazy Source Loading | Independently load API and HTML metadata, defer individual fields, and inspect actual media renditions when needed |
| Async-First | Fully asynchronous (async / await) built on top of asyncio |
| Built-in Caching | Automatic response caching with configurable limits to reduce redundant network requests |
| CLI Support | Command-line interface for quick downloads — run bellesa_api -h for options |
| Type Safety | Comprehensive type hinting and dataclass-based models throughout |
Networking Features
The networking layer is provided by the eaf_base_api package and is fully configurable through RuntimeConfig:
| Feature | Description |
|---|---|
| HTTP/1.1, HTTP/2, HTTP/3 | Configurable HTTP version (v1, v2, v3 — defaults to HTTP/2) |
| Browser Impersonation | Built-in browser fingerprint impersonation via curl_cffi (defaults to Chrome) |
| Custom JA3 Fingerprint | Override the TLS fingerprint with a custom JA3 string for advanced use cases |
| Proxy Support | All proxy types supported (HTTP, HTTPS, SOCKS4, SOCKS5) |
| Proxy Authentication | Username/password authentication for proxies |
| Bandwidth Limiting | Set a maximum download speed in MB/s (e.g., 2.0, 3.5) |
| DNS over HTTPS | Route DNS queries over HTTPS for privacy and bypassing DNS-level blocks |
| SSL Verification | Toggle SSL certificate verification on or off |
| Request Delay | Configurable delay between requests to respect rate limits |
| Concurrency Control | Tune video and page concurrency independently for optimal throughput |
Supported Platforms
This API has been tested and confirmed working on:
- Linux (x86_64), Python 3.15, with FFmpeg/ffprobe
Python 3.12 or newer is required. Other platforms have not been verified.
Installation
pip install unofficial-api-for-bellesa
Quickstart
Have a look at the Documentation for more details
import asyncio
from bellesa_api import Client, DownloadConfigHLS
async def main():
# Initialize a Client object and close its network resources on exit
async with Client() as client:
# Fetch a video
video_object = await client.get_video("https://www.bellesa.co/videos/7054")
# Information from Video objects
print(video_object.title)
# Download the video
config = DownloadConfigHLS(quality="best", path="./", remux=True)
await video_object.download(config)
if __name__ == "__main__":
asyncio.run(main())
Support the Project ❤️
I develop all my projects entirely for free because I enjoy it and want to keep them accessible. If you find my work useful, please consider supporting me with a small donation — even 1 € makes a big difference and keeps me motivated!
☕ Ko-fi
https://ko-fi.com/EchterAlsFake
💳 PayPal
https://paypal.me/EchterAlsFake
🪙 Crypto (350+ currencies supported)
Contribution
Do you see any issues or having some feature requests? Simply open an Issue or talk in the discussions.
Pull requests are also welcome.
License
This API is licensed under the AGPLv3. See the LICENSE file for details.
Metadata
Release files for unofficial-api-for-bellesa 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| unofficial_api_for_bellesa-1.0.0.tar.gz | 30.5 kB | Without provenance | Details for unofficial_api_for_bellesa-1.0.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| unofficial_api_for_bellesa-1.0.0-py3-none-any.whl | Python 3 | none | any | Details for unofficial_api_for_bellesa-1.0.0-py3-none-any.whl |
Total release size: 63.8 kB
Release files / unofficial_api_for_bellesa-1.0.0.tar.gz
| Download URL | unofficial_api_for_bellesa-1.0.0.tar.gz |
|---|---|
| Size | 30.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1cc9cf7768ce3862a6ce40767b37112dd38feef762bace1e88944daf57f043e7
|
|
BLAKE2b-256 checksum How to use checksums |
a8ed1e545d4a19073805c17c2658e042010a3378c64069e9368823cdbdae6911
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.7 {"installer":{"name":"uv","version":"0.13.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / unofficial_api_for_bellesa-1.0.0-py3-none-any.whl
| Download URL | unofficial_api_for_bellesa-1.0.0-py3-none-any.whl |
|---|---|
| Size | 33.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1bc6e802f574e5c2ca5429e364341d7604b89af493fff61b0bf336f6d362e535
|
|
BLAKE2b-256 checksum How to use checksums |
6682497ee5dfbbdea07ebf2eab25655fd4a3a00bd48a07f7b25ffcc002f2bcd7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.7 {"installer":{"name":"uv","version":"0.13.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for unofficial-api-for-bellesa 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.