SaverAPI Python SDK
Social media downloader API for Python — Instagram, TikTok, YouTube, Facebook, X and more
Official client for SaverAPI.NET: download videos, Reels and audio, read YouTube metadata and subtitles, look up Instagram profiles, recognise songs with Shazam and scan media for NSFW content — with one API key, from sync code, asyncio or the command line.
pip install -U saverapi-client # sync client + CLI
pip install -U "saverapi-client[async]" # + AsyncSaverAPI (httpx)
Get a free API key at saverapi.net — no card needed.
Quick start
from saverapi import SaverAPI
api = SaverAPI(api_key="YOUR_API_KEY") # or export SAVERAPI_KEY=...
media = api.download("https://www.instagram.com/reel/DPOi9V-CAqH/")
print(media["hosting"], media["type"], media["download_url"])
api.save_file(media["download_url"], "downloads/reel.mp4")
One call, one parameter: the All-in-One downloader recognises the platform from the link. The response's hosting field tells you which network it was, type is video or image, and download_url points at the file.
Supported platforms
| Platform | Method | REST endpoint |
|---|---|---|
| Instagram (posts, Reels) | api.download(url) |
/all-in-one-downloader-api |
| TikTok | api.download(url) |
/all-in-one-downloader-api |
api.download(url) |
/all-in-one-downloader-api |
|
| Twitter / X | api.download(url) |
/all-in-one-downloader-api |
| Snapchat, Pinterest, Likee, Threads, Twitch, Weibo, Vimeo, SoundCloud, Spotify | api.download(url) |
/all-in-one-downloader-api |
| YouTube video / MP3 | api.youtube(url, format) |
/youtube-api |
| YouTube for Telegram bots | api.youtube_telegram(url, format) |
/youtube-telegram-base |
| YouTube metadata | api.youtube_info(url) · api.youtube_info_basic(url) |
/youtube-info-v2 · /youtube-info |
| YouTube subtitles | api.youtube_subtitles(url) |
/youtube-subtitles |
| Instagram profile | api.instagram_profile(username) |
/instagram-profile |
| Shazam song recognition | api.shazam_recognize(url) |
/shazam-recognize |
| Shazam top charts | api.shazam_top(country) |
/shazam-music-top |
| Music search | api.music_search(query, limit) |
/music-search |
| PhotoLab effects | api.photolab(effect_id, photo_url) |
/photolab-api |
| NSFW scanner | api.nsfw_scan(url) |
/nsfw-scanner-api |
| Account balance (free) | api.info_balance() |
/infobalans |
| Key statistics (free) | api.api_keys_statistics() |
/api-keys/all-statistics |
Full parameter reference and response samples: saverapi.net/docs. Endpoints added to the catalog later can be called with api.request("/endpoint-path", {"param": "value"}).
Examples
Download a YouTube video or MP3
video = api.youtube("https://youtu.be/OORSiK8ScTI", format="720") # 1080|720|480|360|240|144|mp3
api.save_file(video["url"], "video.mp4")
info = api.youtube_info("https://youtu.be/OORSiK8ScTI")
print(info["title"], info["duration"])
Download TikTok, Facebook or X videos
for link in [
"https://www.tiktok.com/@user/video/7300000000000000000",
"https://www.facebook.com/watch/?v=1234567890",
"https://x.com/user/status/1234567890",
]:
media = api.download(link)
print(media["hosting"], media["download_url"])
Instagram profile
profile = api.instagram_profile("cristiano")
print(profile["user"]["full_name"], profile["user"]["is_verified"])
Recognise a song, search music, read charts
song = api.shazam_recognize("https://example.com/clip.mp3")
print(song["track"]["title"], "—", song["track"]["subtitle"])
results = api.music_search("Hello Adele", limit=5)
top = api.shazam_top("united-states")
Check your plan and credits (free)
print(api.info_balance())
Async (aiogram, FastAPI, asyncio)
import asyncio
from saverapi import AsyncSaverAPI
async def main():
async with AsyncSaverAPI() as api: # reads SAVERAPI_KEY
results = await asyncio.gather(
api.download("https://www.instagram.com/reel/DPOi9V-CAqH/"),
api.youtube_info("https://youtu.be/OORSiK8ScTI"),
)
print(results)
asyncio.run(main())
Telegram downloader bot (aiogram 3)
from aiogram import Bot, Dispatcher, F
from aiogram.types import Message
from saverapi import AsyncSaverAPI, SaverAPIError
bot = Bot("TELEGRAM_BOT_TOKEN")
dp = Dispatcher()
api = AsyncSaverAPI() # SAVERAPI_KEY from the environment
@dp.message(F.text.startswith("http"))
async def on_link(message: Message):
try:
media = await api.download(message.text.strip())
except SaverAPIError as exc:
await message.answer(f"Could not download: {exc.message}")
return
if media.get("type") == "image":
await message.answer_photo(media["download_url"])
else:
await message.answer_video(media["download_url"])
dp.run_polling(bot)
Step-by-step guide: Build a Telegram video downloader bot.
Command line
export SAVERAPI_KEY=your_key
saverapi download https://www.instagram.com/reel/DPOi9V-CAqH/
saverapi youtube https://youtu.be/OORSiK8ScTI --format mp3
saverapi youtube-info https://youtu.be/OORSiK8ScTI
saverapi instagram cristiano
saverapi shazam https://example.com/clip.mp3
saverapi balance
Prints the JSON response; exits with status 1 on an API error.
Errors and retries
Rate limits (429) and temporary server errors (5xx) are retried automatically with exponential backoff (max_retries=2 by default). Failed 5xx calls are not charged. Everything else raises a specific exception:
from saverapi import (
SaverAPIError, AuthenticationError, InsufficientCreditsError,
RateLimitError, NotFoundError, ServerError, NetworkError,
)
try:
api.download(link)
except AuthenticationError: # 401/403 — wrong or disabled key
...
except InsufficientCreditsError: # 402 — top up or upgrade at saverapi.net/pricing
...
except RateLimitError as exc: # 429 after retries
...
except SaverAPIError as exc: # anything else; exc.status_code, exc.message, exc.payload
...
Options: SaverAPI(api_key=None, timeout=60, base_url=None, session=None, max_retries=2, backoff=1.0). Use it as a context manager (with SaverAPI() as api:) to close the HTTP session.
Tips
- Media links (
download_url) come from the networks' CDNs and expire — download them right after the call. - Only public content can be resolved; private accounts and deleted posts fail.
- Keep the API key on your server; mobile and web apps should call your backend.
- Respect each platform's terms of service and creators' rights.
Links
- Website and free API key: https://saverapi.net
- API documentation: https://saverapi.net/docs
- YouTube Downloader API: https://saverapi.net/youtube-downloader-api
- Instagram Downloader API: https://saverapi.net/instagram-downloader-api
- TikTok Downloader API: https://saverapi.net/tiktok-downloader-api
- All-in-One Downloader API: https://saverapi.net/all-in-one-downloader-api
- Tutorials: https://saverapi.net/blog
- Pricing: https://saverapi.net/pricing
- Telegram: https://t.me/SaverAPI
Changelog
1.1.0
- New methods covering the whole catalog:
youtube_telegram,youtube_info_basic,youtube_subtitles,instagram_profile,photolab, andrequest()for any endpoint. AsyncSaverAPIfor asyncio (pip install "saverapi-client[async]").saverapicommand line tool.- Automatic retries with backoff for 429 and 5xx; specific exception classes.
- API key from the
SAVERAPI_KEYenvironment variable; context-manager support; type hints (py.typed). - Fully backwards compatible with 1.0.x.
License
MIT © SaverAPI.NET
Metadata
Release files for saverapi-client 1.1.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 | |
|---|---|---|---|---|
| saverapi_client-1.1.0.tar.gz | 17.2 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| saverapi_client-1.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 32.6 kB
Release files / saverapi_client-1.1.0.tar.gz
| Download URL | saverapi_client-1.1.0.tar.gz |
|---|---|
| Size | 17.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c5ab0406959df0cac04592fd984a9bc0ee60a7a9ccda8ef2049f6e3da9ffff3c
|
|
BLAKE2b-256 checksum How to use checksums |
4a24fd5677a8ab00298b2085d97a2eee9b49ed95edde4bfc01e6a029f04f74c4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.12
|
Release files / saverapi_client-1.1.0-py3-none-any.whl
| Download URL | saverapi_client-1.1.0-py3-none-any.whl |
|---|---|
| Size | 15.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
afde982476b8c268c01216b09255d8c1beb9547f03df6b1d9f02a1191cf13c21
|
|
BLAKE2b-256 checksum How to use checksums |
7d95c678e25ce5c8438e893cc220b3863e889d4f2f8f286bee055e18decdb9f4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.12
|
Security for saverapi-client 1.1.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.