Google Photos to Drive Backup avatar

Google Photos to Drive Backup

Under maintenance

Pricing

from $30.00 / 1,000 results

Go to Apify Store
Google Photos to Drive Backup

Google Photos to Drive Backup

Under maintenance

Download photos from public or shared Google Photos album links and upload them directly to your Google Drive. Automatically transfer images in bulk with no manual saving required.

Pricing

from $30.00 / 1,000 results

Rating

0.0

(0)

Developer

NEC

NEC

Maintained by Community

Actor stats

2

Bookmarked

2

Total users

2

Monthly active users

a day ago

Last modified

Share

Back up photos from any public Google Photos share link directly to your Google Drive with automatic folder organization, metadata preservation, and robust error handling.

πŸ“Έ What does Google Photos to Drive Backup do?

This Apify Actor takes a public Google Photos share link and downloads every photo from it, then uploads them to a folder in your Google Drive. It handles the entire process automatically β€” loading the share page in a browser, scrolling to discover all photos, downloading them with parallel streams, and uploading to Drive with organized folder structures.

βœ… Why use Google Photos to Drive Backup?

  • 🧑 Preserve shared memories β€” Back up family photo albums, event collections, or travel photos shared via Google Photos before the link expires or gets removed
  • πŸ”„ Migrate between accounts β€” Move photos from one Google account to another without manual downloading
  • πŸ—‚οΈ Automatic organization β€” Photos are sorted into monthly subfolders (2026-01, 2026-02) based on when they were taken
  • 🏷️ Metadata preservation β€” Each photo gets a JSON sidecar file with the original URL, date taken, file size, and format
  • ⚑ Handles large collections β€” Supports albums with thousands of photos using concurrent downloads and memory-efficient streaming
  • πŸ›‘οΈ Anti-bot measures β€” Uses stealth browser techniques to avoid Google's rate limiting and CAPTCHA challenges

πŸš€ How to use Google Photos to Drive Backup

  1. Get your Google Photos share link β€” Open the shared album in Google Photos and copy the share URL
  2. Get your Google Drive folder ID β€” Navigate to the destination folder in Google Drive and copy the folder ID from the URL (https://drive.google.com/drive/folders/{FOLDER_ID})
  3. Configure the Actor β€” Paste the share link and folder ID into the Actor input
  4. Run it β€” Start the Actor. On first run, open the live view tab and click "Authorize" to grant Google Drive access through the OAuth consent screen
  5. Done β€” Subsequent runs reuse the stored token automatically, no re-authorization needed

βš™οΈ Input

FieldTypeRequiredDefaultDescription
googlePhotosShareLinkstringYesβ€”Public Google Photos share URL
sharePasswordstringNoβ€”Password for protected shares
destinationFolderIdstringYesβ€”Google Drive folder ID for uploads
googleClientIdstringNoβ€”Your Google OAuth 2.0 Client ID
googleClientSecretstringNoβ€”Your Google OAuth 2.0 Client Secret
googleRedirectUristringNohttp://localhostOAuth 2.0 redirect URI
oauthRefreshTokenstringNoβ€”OAuth2 refresh token (skips interactive auth)
createMonthlySubfoldersbooleanNotrueOrganize into YYYY-MM subfolders
maxPhotosToDownloadintegerNo100000Safety limit for photo count
concurrentDownloadsintegerNo4Parallel download streams (1-16)
includeMetadataFilesbooleanNotrueCreate .metadata.json sidecars
skipIfDuplicateExistsbooleanNofalseSkip files that already exist

Example input

{
"googlePhotosShareLink": "https://photos.app.goo.gl/AbCdEfGhIjKlMnOp",
"destinationFolderId": "1zyx9wvu8tsr7qpo9nml8kji7hug6fed",
"createMonthlySubfolders": true,
"concurrentDownloads": 4,
"includeMetadataFiles": true
}

πŸ“¦ Output

The Actor pushes a summary result to the default dataset. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

Example output

{
"success": true,
"summary": {
"photosDiscovered": 47,
"photosDownloaded": 47,
"photosSkipped": 0,
"photosFailed": 0,
"photosUploaded": 47,
"totalDataDownloaded": 156237824,
"totalDataUploaded": 156237824,
"executionTimeMs": 124532
},
"errors": [],
"destinationFolderName": "Google Photos Backup - 2026-05-01 10:30:00",
"shareLink": "https://photos.app.goo.gl/AbCdEfGhIjKlMnOp",
"metadataFilesCreated": 47
}

πŸ—ƒοΈ Data fields

FieldDescription
successWhether all photos were processed without failures
summary.photosDiscoveredTotal photos found on the share page
summary.photosDownloadedPhotos successfully downloaded
summary.photosUploadedPhotos successfully uploaded to Drive
summary.photosSkippedPhotos skipped (duplicates)
summary.photosFailedPhotos that failed after retries
summary.totalDataDownloadedTotal bytes downloaded
summary.totalDataUploadedTotal bytes uploaded
summary.executionTimeMsTotal run time in milliseconds
errorsArray of individual error records
destinationFolderNameName of the root backup folder created
metadataFilesCreatedNumber of .metadata.json sidecar files

πŸ“ Google Drive folder structure

The Actor creates an organized folder structure in your Drive:

Your Destination Folder/
└── Google Photos Backup - 2026-05-01 10:30:00/
β”œβ”€β”€ 2026-01/
β”‚ β”œβ”€β”€ IMG_20260115_123456.jpg
β”‚ β”œβ”€β”€ IMG_20260115_123456.jpg.metadata.json
β”‚ └── ...
β”œβ”€β”€ 2026-02/
β”‚ └── ...
└── undated/
└── photo_001.jpg

When createMonthlySubfolders is disabled, all photos go directly into the root backup folder.

πŸ’‘ Tips and advanced options

  • Start small β€” Set maxPhotosToDownload to 10 for your first run to verify everything works
  • Concurrency tuning β€” Use 2-4 concurrent downloads for most cases. Higher values (8-16) are faster but more likely to trigger rate limiting
  • Skip duplicates β€” Enable skipIfDuplicateExists if you're re-running the Actor on the same album to avoid uploading photos twice
  • Metadata files β€” The .metadata.json sidecars are useful for tracing photos back to their source. Disable with includeMetadataFiles: false if you don't need them
  • Password-protected shares β€” Provide the sharePassword input if the album requires a password

πŸ” Google authentication

The Actor supports two ways to authenticate with Google Drive:

On first run, the Actor opens an authorization page in the live view tab. Click "Authorize" and log in with your Google account to grant Drive access. Tokens are stored automatically and reused on all subsequent runs β€” no re-authorization needed.

Live View

You can optionally provide googleClientId and googleClientSecret to use your own Google Cloud project instead of Apify's built-in credentials.

Refresh token (for automation and scheduling)

Provide an oauthRefreshToken to skip the interactive flow entirely. This is the recommended approach for scheduled runs. You can also provide googleClientId and googleClientSecret alongside the refresh token to use your own Google Cloud project.

To get a refresh token:

  1. Go to the Google Cloud Console and create an OAuth 2.0 Client ID (type: Web application)
  2. Enable the Google Drive API in your project
  3. Visit the Google OAuth Playground, click the settings gear, check "Use your own OAuth credentials", and enter your Client ID and Secret
  4. Select the https://www.googleapis.com/auth/drive scope, authorize, and exchange for tokens
  5. Copy the Refresh Token (and optionally the Client ID, Client Secret) into the Actor input

Credential priority

The Actor resolves credentials in this order:

  1. googleClientId / googleClientSecret / googleRedirectUri from Actor input
  2. Apify's built-in credentials (interactive flow only)

❓ FAQ, disclaimers, and support

Is this legal? This Actor accesses publicly shared Google Photos links β€” the same content anyone with the link can view in a browser. It does not bypass any authentication or access controls. Always ensure you have permission to download and store the shared content.

Why do I get a CAPTCHA? Google may present a CAPTCHA challenge if it detects automated access. The Actor uses stealth techniques to minimize this, but it can still happen with large albums or frequent runs. If you encounter a CAPTCHA, wait a few hours before retrying.

What image quality do I get? Google Photos public shares serve compressed versions of photos, not the original full-resolution files. This is a limitation of how Google serves shared content.

Can I schedule regular backups? Yes β€” use Apify's built-in scheduling to run the Actor periodically. Enable skipIfDuplicateExists to avoid re-uploading photos that are already in your Drive.

Found a bug or have a feature request? Open an issue in the Actor's Issues tab on the Apify Console.