pytapo
Python library for communication with Tapo Cameras
What it is and what it does
PyTapo wraps HTTP requests to Tapo camera APIs, providing a Python interface for querying camera state and controlling features like pan/tilt, privacy mode, and reboots. It handles authentication (which varies by camera model and firmware), session management via the requests and urllib3 libraries, and encryption via pycryptodome. The library also supports downloading and converting SD card recordings using ffmpeg.
The package is used as the backend for the Home Assistant Tapo Control integration. It depends on requests, urllib3, pycryptodome for cryptographic operations, rtp for stream handling, and python-kasa for related device communication. Authentication typically uses credentials from the Tapo App's camera account, though some models may require TP-Link cloud credentials instead.
Use it for:
- Retrieve live camera status and configuration from a Tapo IP camera in a home automation script.
- Control camera features (pan, tilt, privacy mode, reboot) programmatically from a Python application.
- Download and convert recorded video from a camera's SD card using the library's recording API.
- Integrate Tapo camera control into Home Assistant or other home automation platforms.
- Monitor multiple Tapo cameras and log their state changes over time.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
PyTapo is a Python library that communicates with Tapo IP cameras over the network, allowing you to retrieve camera information, control settings, and download recordings.
Yes. PyTapo is actively maintained, has low install friction, carries no known vulnerabilities, and uses a permissive MIT license. It fills a clear need for programmatic Tapo camera control in Python. Install it if you own a Tapo camera and need to automate or integrate it into a larger system—but verify your camera model and firmware are supported, as authentication methods vary.
Install
pytapo on PyPI
pip
pip install pytapouv
uv add pytapopoetry
poetry add pytapoInstalling pytapo
Before you install
Low install friction with a pure-Python wheel distribution. The package is actively maintained with a recent release and 457 GitHub stars, indicating stable community adoption.
License in practice
MIT license permits free use, modification, and distribution with minimal restrictions—suitable for both open-source and commercial projects.
Quickstart
pip install pytapo
from pytapo import Tapo
user = "camera_account_user"
password = "camera_account_password"
host = "192.168.1.52"
tapo = Tapo(host, user, password)
print(tapo.getBasicInfo())
Requires Python 3.13 and valid Tapo camera credentials (camera account created via Tapo App or TP-Link cloud account). Camera must be on the same network and accessible by IP address.
Verify before relying
- Whether Python 3.13 is a hard requirement or if earlier Python 3.x versions are supported despite the documentation stating 3.13.
- Full scope of camera models and firmware versions supported—documentation mentions variations in authentication method.
- Whether ffmpeg is required for all use cases or only for recording download functionality.
Package facts
| License | MIT (permissive) |
| Python support | not specified |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 5 — requests, urllib3, pycryptodome, rtp, python-kasa |
| Maintenance | actively maintained — 41 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 473,815/month — #6,457 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: pytapo-3.4.18-py3-none-any.whl
Tags
More Internet packages
Botocore provides low-level, data-driven access…
permissive · top 100 on PyPI
aiobotocoreProvides an async client for AWS services using…
permissive · top 100 on PyPI
pydanticPydantic validates Python data structures…
permissive · top 100 on PyPI
filelockProvides a platform-independent file locking…
permissive · top 100 on PyPI
fastapiFastAPI is a Python web framework for building…
permissive · top 100 on PyPI
googleapis-common-protosProvides common Protocol Buffer message…
permissive · top 100 on PyPI
plugp100A Python library for controlling and…
copyleft · top 15,000 on PyPI
pypylonpypylon is the official Python binding for…
unclear · top 15,000 on PyPI
pyatmopyatmo provides a Python API to query Netatmo…
permissive · top 15,000 on PyPI
python-kasaControl TP-Link Kasa and Tapo smart home…
copyleft · top 15,000 on PyPI
blinkpyA Python library for controlling and monitoring…
permissive · top 15,000 on PyPI
onvif-zeep-asyncAsync Python client for ONVIF IP cameras using…
permissive · top 15,000 on PyPI
rawpyrawpy wraps LibRaw to load, decode, and…
permissive · top 15,000 on PyPI
pygrabberCapture photos and video from Windows cameras…
permissive · top 15,000 on PyPI
reolink-aioAsync Python client for Reolink IP NVR and…
permissive · top 15,000 on PyPI
harvestersHarvester simplifies image acquisition from…
permissive · top 15,000 on PyPI