PyiCloud
PyiCloud is a module which allows pythonistas to interact with iCloud webservices. It's powered by the fantastic requests HTTP library.
At its core, PyiCloud connects to the iCloud web application using your username and password, then performs regular queries against its API.
Please see the terms of use for your responsibilities when using this library.
For support and discussions, join our Discord community: Join our Discord community
Installation
Install the library and CLI with:
$ pip install "pyicloud[cli]"
For the optional local MCP extension, install pyicloud[mcp]; use pyicloud[all]
for both CLI and MCP support (excluding development tools). The MCP foundation
currently exposes offline local status and capabilities only. See the
MCP guide.
This installs the icloud command line interface alongside the Python package. To install the library on its own run pip without the cli extra.
$ pip install pyicloud
Authentication
Authentication without using a saved password is as simple as passing your
username and password to the PyiCloudService class:
from pyicloud import PyiCloudService
api = PyiCloudService("jappleseed@apple.com", "password")
In the event that the username/password combination is invalid, a
PyiCloudFailedLoginException exception is thrown.
For China mainland accounts, long-running daemon settings, family polling,
pause_2fa, and the full two-step / two-factor (2SA/2FA) flow, see the
Authentication guide.
The icloud CLI can also store your password in the system keyring; see the
Command-Line Interface guide.
Documentation
Full documentation lives under docs/.
It is also published, with a generated API reference, at
pyicloud.readthedocs.io.
Guides
- Compatibility and Guarantees — supported imports, CalVer decisions, offline setup, persistence and timeout limits
- Authentication — login,
pause_2fa, and 2SA/2FA - Command-Line Interface — the
icloudcommand, auth/session management, and keyring storage - Diagnostics —
icloud doctorand its exit codes
Services
- Account — account info, storage, and summary plan
- Devices & Find My — list devices and locate, ring, lock, or erase them
- Calendar — calendars, events, alarms, and invitees
- Contacts — the address book and MeCard
- File Storage (Drive) — iCloud Drive and the legacy Ubiquity API
- Photos — browse, sync, upload, and modify the photo library
- Hide My Email — generate and manage email aliases
- Mail — experimental folder and message reads, verified sender identities, bounded single-/multi-folder searches, previews, Unread/Flagged thread filters, cursor enumeration of filtered thread identities (
icloud mail filter-threads), private JSON and original MIME/EML export (icloud mail export-eml), restricted size-bounded Mail Drop downloads (icloud mail download-maildrop), exact message lookup (icloud mail getby ID or UID), opt-in mailbox/thread/flag-filter UID enumeration, folder-scoped thread expansion, bodies, attachment streams, and one-shot POSIX metadata inventory synchronization (icloud mail sync), also available throughicloud mail; plus separate explicit single-message read/unread and flag/unflag writes and ordinary mailbox moves throughset_read(),set_flagged(),move(), andicloud mail mark/icloud mail move, plus guarded draft saves/discard with recipients and ordinary attachment uploads and folder creation, renaming, and confirmed irreversible deletion through the library and CLI, plus explicit reply/forward drafts and confirmed sending and confirmed single-message permanent deletion from Trash - Reminders — lists, reminders, alarms, tags, and attachments
- Notes — private note and folder management, rendering, and HTML export
- Invites — read events and respond to invitations
Examples
If you want to see some code samples, see the examples.
Contributing
Contributions are welcome! Please read the Contributing guide, the Code of Conduct, and the Terms of Use before getting started.
To report a security vulnerability, use private vulnerability reporting rather than opening a public issue (see SECURITY.md).
Metadata
Release files for pyicloud 2026.11.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 |
|---|---|---|---|---|
| pyicloud-2026.11.0.tar.gz | 1.4 MB | With provenance | Details for pyicloud-2026.11.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| pyicloud-2026.11.0-py3-none-any.whl | Python 3 | none | any | Details for pyicloud-2026.11.0-py3-none-any.whl |
Total release size: 2.0 MB
Release files / pyicloud-2026.11.0.tar.gz
| Download URL | pyicloud-2026.11.0.tar.gz |
|---|---|
| Size | 1.4 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a5bcac70b3515ce717a603da7ed6f88636e822ec7bba4ffc02cd42d1aab0ba51
|
|
BLAKE2b-256 checksum How to use checksums |
c0c101c7bf5cd0d84decf27c645d8811c5e178e049acc78d5f937955e4e61cff
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 12, 2026.
Transparency logRelease files / pyicloud-2026.11.0-py3-none-any.whl
| Download URL | pyicloud-2026.11.0-py3-none-any.whl |
|---|---|
| Size | 586.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7d363aad6e1ab968f47a6944b0f99a4a666257beb2a2a23a371b7d15c4cf6bdd
|
|
BLAKE2b-256 checksum How to use checksums |
01b88eb555acda5b6fec1c794fbda1cc733db89905a3b0812dae526fc4ebdc96
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 12, 2026.
Transparency logSecurity for pyicloud 2026.11.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.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for pyicloud-2026.11.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 12, 2026.
Transparency logA 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.