discover · compare · collections · requirements · contribute · feed · watching · stats · help with your tokens
icloud-photos-downloader/icloud_photos_downloader · source
Snapshot 0 · 2026-11-04T12:47:24Z · Python · MIT
Content fingerprint
ad9d95dc9acbe1bc435da932f874d90629bef06cdd951183da27c9a603361505GitHub description at capture
A command-line tool to download photos from iCloud
README at capture
# !!!! [Looking for MAINTAINER for this project](https://github.com/icloud-photos-downloader/icloud_photos_downloader/issues/1305) !!!! # iCloud Photos Downloader [](https://github.com/icloud-photos-downloader/icloud_photos_downloader/actions/workflows/quality-checks.yml) [](https://github.com/icloud-photos-downloader/icloud_photos_downloader/actions/workflows/produce-artifacts.yml) [](LICENSE) - A command-line tool to download all your iCloud photos. - Works on Linux, Windows, and macOS; laptop, desktop, and NAS - Available as an executable for direct downloading and through package managers/ecosystems ([Docker](https://icloud-photos-downloader.github.io/icloud_photos_downloader/install.html#docker), [PyPI](https://icloud-photos-downloader.github.io/icloud_photos_downloader/install.html#pypi), [AUR](https://icloud-photos-downloader.github.io/icloud_photos_downloader/install.html#aur), [npm](https://icloud-photos-downloader.github.io/icloud_photos_downloader/install.html#npm)) - Developed and maintained by volunteers (we are always looking for [help](CONTRIBUTING.md)). See [Documentation](https://icloud-photos-downloader.github.io/icloud_photos_downloader/) for more details. Also, check [Issues](https://github.com/icloud-photos-downloader/icloud_photos_downloader/issues) ## iCloud Prerequisites To make iCloud Photo Downloader work, ensure the iCloud account is configured with the following settings, otherwise Apple Servers will return an ACCESS_DENIED error: - **Enable Access iCloud Data on the Web:** On your iPhone / iPad, enable `Settings > Apple ID > iCloud > Access iCloud Data on the Web` - **Advanced Data Protection (ADP):** either disable `Settings > Apple ID > iCloud > Advanced Data Protection` on your iPhone / iPad, or keep it enabled and run with `--adp-web-access` (see [Authentication](https://icloud-photos-downloader.github.io/icloud_photos_downloader/authentication.html#adp)) ## Install and Run There are three ways to run `icloudpd`: 1. Download executable for your platform from the GitHub [Release](https://github.com/icloud-photos-downloader/icloud_photos_downloader/releases/tag/v1.33.0) and run it 1. Use package manager to install, update, and, in some cases, run ([Docker](https://icloud-photos-downloader.github.io/icloud_photos_downloader/install.html#docker), [PyPI](https://icloud-photos-downloader.github.io/icloud_photos_downloader/install.html#pypi), [AUR](https://icloud-photos-downloader.github.io/icloud_photos_downloader/install.html#aur), [npm](https://icloud-photos-downloader.github.io/icloud_photos_downloader/install.html#npm)) 1. Build and run from the source See [Documentation](https://icloud-photos-downloader.github.io/icloud_photos_downloader/install.html) for more details ## Features <!-- start features --> - Three modes of operation: - **Copy** - download new photos from iCloud (default mode) - **Sync** - download new photos from iCloud and delete local files that were removed in iCloud (`--auto-delete` option) - **Move** - download new photos from iCloud and delete photos in iCloud (`--keep-icloud-recent-days` option) - Support for Live Photos (image and video as separate files) and RAW images (including RAW+JPEG) - Automatic de-duplication of photos with the same name - One time download and an option to monitor for iCloud changes continuously (`--watch-with-interval` option) - Optimizations for incremental runs (`--until-found` and `--recent` options) - Photo metadata (EXIF) updates (`--set-exif-datetime` option) - ... and many more (use `--help` option to get full list) <!-- end features --> ## Experimental Mode Some changes are added to the experimental mode before they graduate into the main package. [Details](EXPERIMENTAL.md) ## Usage To keep your iCloud photo collection synchronized to your local system: ``` icloudpd --directory /data --username my@email.address --watch-with-interval 3600 ``` > [!IMPORTANT] > It is `icloudpd`, not `icloud` executable > [!TIP] > Synchronization logic can be adjusted with command-line parameters. Run `icloudpd --help` to get full list. To move tracked local copies out of the active mirror when photos leave a shared library (including moves back to a participant's personal library), use a dedicated download directory: ```bash icloudpd --directory /data/shared --username my@email.address \ --library 'SharedSync-YOUR-LIBRARY-ID' --prune-orphans ``` By default, tracking starts with newly written files and the first successful run only establishes a baseline. To also clean old orphans in an existing dedicated flat, original-size mirror, explicitly opt in to the one-time `--prune-orphans-adopt-existing` bootstrap and preview it with `--dry-run` first. Pruned files are moved into `.icloudpd-pruned/`, never permanently deleted: even consistent counts cannot prove Apple's listing is complete. Exclude that folder from gallery scans. Pruning problems warn without failing downloads. See [the option reference](docs/reference.md#prune-orphans-parameter) for ownership requirements, hashing costs and recovery instructions. To independently create and authorize a session (and complete 2SA/2FA validation if needed) on your local system: ``` icloudpd --username my@email.address --auth-only ``` > [!TIP] > This feature can also be used to check and verify that the session is still authenticated. ## Contributing Want to contribute to iCloud Photos Downloader? Awesome! Check out the [contributing guidelines](CONTRIBUTING.md) to get involved.