Bulk Image Downloader (Pages, URLs, ZIP) avatar

Bulk Image Downloader (Pages, URLs, ZIP)

Pricing

from $1.00 / 1,000 images

Go to Apify Store
Bulk Image Downloader (Pages, URLs, ZIP)

Bulk Image Downloader (Pages, URLs, ZIP)

Download every image from web pages or a list of image URLs. Get public download links or ZIP files. Skips icons, tracking pixels and duplicates, keeps alt text. Low flat price, no extra platform costs.

Pricing

from $1.00 / 1,000 images

Rating

0.0

(0)

Developer

Cronexa Data Tools

Cronexa Data Tools

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

What does Bulk Image Downloader do?

Bulk Image Downloader finds and downloads every image from any list of web pages, or downloads a list of direct image URLs. You get:

  • 🔗 A public download link for every image, a ZIP archive, or both
  • 🖼️ The largest version of every image: it reads responsive srcset and <picture> sources, lazy-loaded images (data-src), CSS backgrounds, og:image previews, and full-size images behind thumbnails
  • 🧹 No junk: tracking pixels, spacers, tiny icons and duplicate images are skipped automatically, and you don't pay for them
  • 🏷️ Useful metadata: alt text, width × height, format, file size, source page and SHA-256 hash for every image, which is ready for AI/ML datasets
  • 💸 Simple, low price: $1 per 1,000 images + $2 per 1,000 pages. Platform usage is included, so there are no extra compute or bandwidth fees.

What can I use it for?

  • E-commerce: download all product photos from supplier or competitor product pages
  • AI and machine learning datasets: collect images with their alt text as captions
  • Website migration and backup: save every image from your old site before a redesign
  • Marketing and research: gather visuals from articles, landing pages and galleries
  • Bulk downloads from a URL list: paste thousands of direct image links (or upload a CSV) and get them all in a ZIP

How do I use it?

  1. Add your URLs to Start URLs. These can be web pages, direct image links, or a mix. You can also upload a CSV/TXT file.
  2. Choose the Output: Files with download links, ZIP archive(s), or Both.
  3. (Optional) Set filters such as Minimum width (for example 300 to keep only real photos, not logos) or Allowed formats.
  4. Click Start. Open the Images tab for previews and links, or Run summary for your ZIP download links.

Example input

{
"startUrls": [
{ "url": "https://en.wikipedia.org/wiki/Hummingbird" },
{ "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b1/Eutoxeres_aquila_28748616.jpg/250px-Eutoxeres_aquila_28748616.jpg" }
],
"outputMode": "filesAndZip",
"minWidth": 300
}

Output example

Each saved image is one row in the dataset:

{
"imageUrl": "https://assets.science.nasa.gov/dynamicimage/assets/science/missions/swift-observatory/misc--spacecraft-art/Swift_in_space_09.jpg?w=1024",
"downloadUrl": "https://api.apify.com/v2/key-value-stores/<storeId>/records/00003-nasa.gov-Swift_in_space_09.jpg?signature=...",
"zipFile": "images-part1.zip",
"fileName": "00003-nasa.gov-Swift_in_space_09.jpg",
"pageUrl": "https://www.nasa.gov/image-of-the-day/",
"altText": "NASA Highlights Lessons Learned From Swift Boost Mission",
"foundIn": "img",
"format": "jpeg",
"contentType": "image/jpeg",
"width": 1024,
"height": 542,
"fileSizeBytes": 112653,
"sha256": "7e384316d3720ae68fae9598df78a00a590a9576f7662c0a8fc0b0dfd40de73e"
}

The Run summary (OUTPUT) lists your ZIP download links, per-page results, and how many images were skipped and why (duplicate, too small, not an image, and so on).

How much does it cost?

WhatPrice
Image saved$0.001 ($1 per 1,000)
Web page processed$0.002 ($2 per 1,000)
Platform usage (compute, bandwidth)Included

Direct image URLs are charged only as images, not as pages. Skipped images (duplicates, pixels, filtered out) are free. Example: a product page with 10 photos costs $0.012.

Input options

FieldDescription
startUrlsWeb pages and/or direct image URLs
outputModefiles, zip (50 MB parts), or filesAndZip
minFileSizeKbSkip files smaller than this (default 3 KB, which removes pixels and icons)
minWidth / minHeightSkip images smaller than this, in pixels
allowedFormatsKeep only these formats (JPEG, PNG, WebP, GIF, AVIF, SVG, …)
deduplicateSkip identical images even from different URLs (default on)
maxFileSizeMbSkip files larger than this (default 20 MB)
maxImagesPerPage / maxImagesLimits per page and per run
includeSrcset, includeMetaImages, includeCssBackgrounds, includeLinkedImagesWhere to look for images
proxyConfigurationUse a proxy if a website blocks downloads

Limitations

  • The Actor reads the page HTML. Images that appear only after JavaScript runs (for example infinite-scroll galleries) may not be found. Most sites include their images in the HTML, lazy-loaded images included.
  • Some websites block automated downloads. Try the Proxy option if you see http403 in the run summary.
  • Download links are stored in your Apify storage and follow your plan's data retention period. Download your ZIPs if you need them long-term.

The Actor downloads publicly available images from pages you choose. Images are usually protected by copyright. Make sure you have the right to use them for your purpose, and respect each website's terms.

Questions or problems?

Open an issue in the Issues tab, and it will be answered quickly.

Use it from AI assistants (Claude, ChatGPT, Cursor)

AI agents can run this Actor as a tool through the Apify MCP server. Add this to your MCP client (Claude Desktop, Claude Code, Cursor, VS Code…) and sign in with Apify in the browser when asked:

{
"mcpServers": {
"bulk-image-downloader": { "url": "https://mcp.apify.com?tools=dima_kadirovich/bulk-image-downloader" }
}
}

Then just ask, for example:

  • "Download all product photos from these 5 product pages as a ZIP and give me the link."
  • "Collect every image wider than 800px from this article, with its alt text."

The agent fills in the input, runs the Actor and reads the results. You pay the same per-result price.

More tools from Dima Data Tools