Bulk Image Downloader: URLs & Web Pages to Files + ZIP avatar

Bulk Image Downloader: URLs & Web Pages to Files + ZIP

Pricing

from $0.70 / 1,000 image saveds

Go to Apify Store
Bulk Image Downloader: URLs & Web Pages to Files + ZIP

Bulk Image Downloader: URLs & Web Pages to Files + ZIP

Download images in bulk from direct image URLs or from any web page (img, srcset, og:image, lazy-loaded and linked images). Filter by size and format, remove duplicates, get a shareable link per file and one ZIP. Failed images are free.

Pricing

from $0.70 / 1,000 image saveds

Rating

0.0

(0)

Developer

Ctrio Lab

Ctrio Lab

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Download images in bulk, two ways:

  1. Direct image URLs: paste a list of links to image files and get every file saved.
  2. Web page URLs: give pages, and the Actor finds the images on each page and downloads them: <img src>, srcset (largest version), lazy-load attributes (data-src, data-lazy-src, data-original), <picture><source>, og:image, twitter:image, inline background-image, and links that point straight at image files.

Every saved image gets a shareable file link, one dataset row (source URL, page URL, file name, format, width, height, bytes, SHA-256, alt text), and optionally goes into one ZIP file. Images that fail, are filtered out, or are duplicates are not charged.

How to use it

  1. Paste image URLs, page URLs, or both. Leave both empty to try public-domain samples from Wikimedia Commons.
  2. Optional: set filters (minimum width and height, minimum and maximum file size, formats), the number of images per page, and "Also create one ZIP file".
  3. Run. Open the Images tab for previews, or the Run summary for the ZIP link and the list of skipped images with reasons.

Features

  • Format from the file itself: JPEG, PNG, GIF, WebP, AVIF, SVG, BMP, ICO, TIFF, HEIF. HTML error pages behind an image URL are detected and skipped.
  • Filters: minimum width, minimum height, minimum bytes, maximum bytes (large files are stopped while downloading), formats to keep.
  • No duplicates: each URL is downloaded once per run, and different URLs that return the same file (same SHA-256) are saved once.
  • Only new images: for scheduled runs that watch the same pages, skip images saved by earlier runs with the same monitor name (by URL and by content).
  • ZIP: one images.zip with all saved images, written to disk as the run goes (no memory spike), up to 3.5 GB.
  • Polite: honest User-Agent with contact, robots.txt respected for web pages (on by default), retries with back-off on 429 and 5xx.
  • Limits: max images per page, max images in total, per-request timeout, downloads at a time.

Output

One dataset item per saved image:

{
"fileUrl": "https://api.apify.com/v2/key-value-stores/<store>/records/00002-1280px-The_Great_Wave_off_Kanagawa.jpg",
"imageUrl": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/0a/The_Great_Wave_off_Kanagawa.jpg/1280px-The_Great_Wave_off_Kanagawa.jpg",
"pageUrl": null,
"source": "direct",
"alt": null,
"fileName": "00002-1280px-The_Great_Wave_off_Kanagawa.jpg",
"format": "jpg",
"contentType": "image/jpeg",
"width": 1280,
"height": 881,
"sizeBytes": 433605,
"sha256": "…",
"finalUrl": null,
"downloadedAt": "2026-10-29T08:00:00.000Z"
}

source tells where the image was found: direct, img, img srcset, img data-src, picture source, og:image, twitter:image, background, link.

The run's key-value store holds the image files, images.zip (if requested), and SUMMARY (counts, pages read, ZIP link, every skipped image with its reason).

Pricing

You pay per saved image (one dataset item) plus the small Apify platform usage of your run. Failed downloads, filtered images, duplicates, and images skipped by "Only new images" are free. See the Pricing tab for the exact price per 1,000 images.

What it does not do

  • No crawling: only the pages you list are read, links are not followed.
  • No login, cookies, or proxies, and no JavaScript rendering. Images that a page inserts only with JavaScript, or that are set only in CSS files, are not found. For those, give the direct image URLs.
  • No site-specific scrapers (Instagram, Pinterest, Google Images and similar).

Images belong to their owners. Download only images you have the right to use, and respect the terms of the sites you download from. The Actor reads only the URLs you provide, identifies itself in the User-Agent, and respects robots.txt for web pages by default.

FAQ

Why was an image skipped? Open the run summary (SUMMARY): every skipped URL has a reason, e.g. HTTP 404, not an image, filtered: narrower than 200 px, larger than the size limit, duplicate content.

Can I get the original file instead of WebP? The Actor asks servers for image/* without preferring WebP or AVIF, so most servers return the original format of the URL.

Can I use it from code or with AI agents? Yes, call it through the Apify API, the Apify client for Python or JavaScript, or the Apify MCP server. The dataset and the files are available through the API right after the run.