icloud-photos-downloader/icloud_photos_downloader

A command-line tool to download photos from iCloud

Python

12,248

987 commits

updated May 30, 2026

See the code

README

!!!! Looking for MAINTAINER for this project !!!!

iCloud Photos Downloader Quality Checks Build and Package MIT 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, PyPI, AUR, npm)
  • Developed and maintained by volunteers (we are always looking for help).

See Documentation for more details. Also, check Issues

We aim to release new versions once a week (Friday), if there is something worth delivering.

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
  • Disable Advanced Data Protection: On your iPhone /iPad disable Settings > Apple ID > iCloud > Advanced Data Protection

Install and Run

There are three ways to run icloudpd:

  1. Download executable for your platform from the GitHub Release and run it
  2. Use package manager to install, update, and, in some cases, run (Docker, PyPI, AUR, npm)
  3. Build and run from the source

See Documentation for more details

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)

Experimental Mode

Some changes are added to the experimental mode before they graduate into the main package. Details

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 independently create and authorize a session (and complete 2SA/2FA validation if needed) on your local system:

icloudpd --username my@email.address --password my_password --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 to get involved.

Contributors

(top 30 of 43)

AndreyNikiforov

481 commits

ndbroadbent

253 commits

menkej

111 commits

dependabot[bot]

62 commits

icloud-photos-downloader/icloud_photos_downloader

A command-line tool to download photos from iCloud

Python

12,248

987 commits

updated May 30, 2026

See the code

README

!!!! Looking for MAINTAINER for this project !!!!

iCloud Photos Downloader Quality Checks Build and Package MIT 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, PyPI, AUR, npm)
  • Developed and maintained by volunteers (we are always looking for help).

See Documentation for more details. Also, check Issues

We aim to release new versions once a week (Friday), if there is something worth delivering.

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
  • Disable Advanced Data Protection: On your iPhone /iPad disable Settings > Apple ID > iCloud > Advanced Data Protection

Install and Run

There are three ways to run icloudpd:

  1. Download executable for your platform from the GitHub Release and run it
  2. Use package manager to install, update, and, in some cases, run (Docker, PyPI, AUR, npm)
  3. Build and run from the source

See Documentation for more details

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)

Experimental Mode

Some changes are added to the experimental mode before they graduate into the main package. Details

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 independently create and authorize a session (and complete 2SA/2FA validation if needed) on your local system:

icloudpd --username my@email.address --password my_password --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 to get involved.

See what people are saying

Contributors

(top 30 of 43)

AndreyNikiforov

481 commits

ndbroadbent

253 commits

menkej

111 commits

dependabot[bot]

62 commits

Languages

Python

93.7%

HTML

3.1%

Shell

2.7%