Bulk Image Downloader - Download All Images from URLs & Pages
Pricing
from $15.00 / 1,000 image saveds
Bulk Image Downloader - Download All Images from URLs & Pages
Download all images from web pages or a list of image URLs in bulk. Extracts img, srcset (largest), og:image and linked images, filters by size and format, removes SHA-1 duplicates, converts/resizes to JPG/PNG/WebP and bundles a ZIP. Public download links for every file.
Pricing
from $15.00 / 1,000 image saveds
Rating
0.0
(0)
Developer
Cemal Atakli
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 hours ago
Last modified
Categories
Share
Bulk Image Downloader – Download All Images from URLs & Pages
Download all images from any web page, or from a list of image URLs, in bulk. Paste page URLs and/or direct image links. The Actor finds every image on each page, downloads the largest available version, skips icons and duplicates, can convert and resize to JPG, PNG or WebP, and gives you a public download link for every file, plus an optional ZIP of all images.
- Finds every image on a page:
<img>, the largestsrcset/<picture>source, lazy-loaded images (data-src,data-srcset…),og:image/twitter:image, linked full-size images (<a href="photo.jpg">) and, optionally, CSS background images - Direct image URLs work too: mix pages and image links in one list; the type is detected automatically
- Smart filters: minimum width and height (no more 1×1 tracking pixels and icons), file formats, file size
- SHA-1 deduplication: the same picture under different URLs is saved once, and duplicates are never charged
- Convert and resize: WebP/AVIF → JPG for compatibility, or everything → WebP to save space, with max width/height and quality
- ZIP bundle: one
images.zipwith everything, ready to download - Custom file names:
{index}_{name},{page_host}-{sha1_8},{name}-{width}x{height}… - Cheap and fast: HTTP-only (no browser), parallel downloads, $15 per 1,000 images, about 4.7× cheaper than the most popular image downloader in the Store
What can I use it for?
- Ecommerce: download all product photos from a supplier's catalog pages or from a product-scraper dataset
- Machine learning datasets: collect and deduplicate images from galleries, with consistent formats and sizes
- Content migration and backups: move every image of a website to a new CMS or archive it
- Marketing and SEO audits: list every image on a page with its size, format and weight (find huge unoptimized files)
- Research and journalism: archive the images from news pages or public-domain collections (e.g. Wikimedia Commons)
- Real estate, travel and classifieds: save listing photos in bulk from URLs you already have
How to use it
- Paste one or more page URLs (e.g. a Wikipedia article, a product page, a gallery) and/or direct image URLs.
- Optional: set a minimum size, choose formats, turn on Convert to / Resize, or Create a ZIP.
- Click Start. Each image appears in the Output tab with a preview and a download link. The ZIP is under Storage → Key-value store → images.zip.
Input
| Field | Description |
|---|---|
startUrls | Web pages and/or direct image URLs (auto-detected) |
bulkText | Paste many URLs at once (one per line, or comma/space separated) |
sourceDatasetId, sourceDatasetField | Chain with another Actor: read image/page URLs from an Apify dataset (e.g. the imageUrl field from a product scraper) |
maxImages, maxImagesPerPage | Limits (0 = no limit) |
minWidth, minHeight | Skip small images (default 100×100 px) |
formats | Keep only these formats: jpg, png, gif, webp, avif, svg, bmp, tiff, ico, heic (detected from the file content) |
minFileSizeKb, maxFileSizeMb | File size filters. Downloads are streamed and aborted above the maximum (default 25 MB) |
dedupe | Skip byte-identical files (SHA-1), on by default |
sameDomainImagesOnly | Ignore third-party images (ads, trackers) |
preferLargestSrcset, includeMetaImages, includeLinkedImages, includeCssBackgrounds | What to extract from pages |
convertTo, resizeMaxWidth, resizeMaxHeight, quality | Convert to JPG/PNG/WebP and/or downscale (aspect ratio kept) |
filenameTemplate | {index}, {name}, {sha1}, {sha1_8}, {host}, {page_host}, {width}, {height}, {format} |
createZip | Bundle all images into images.zip |
includeSkipped | Also list filtered images and duplicates in the dataset (free) |
respectRobotsTxt, maxConcurrency, requestTimeoutSecs, maxRetries, userAgent, proxyConfiguration | Advanced settings |
{"startUrls": ["https://en.wikipedia.org/wiki/List_of_national_parks_of_the_United_States","https://www.gstatic.com/webp/gallery/1.webp"],"minWidth": 200,"minHeight": 200,"convertTo": "jpg","resizeMaxWidth": 1600,"createZip": true,"filenameTemplate": "{page_host}-{index}-{name}"}
Output
One dataset row per image (export it as JSON, CSV, Excel or HTML, or read it through the API). The files themselves are in the run's key-value store, and storedUrl is a direct download link.
{"pageUrl": "https://en.wikipedia.org/wiki/List_of_national_parks_of_the_United_States","imageUrl": "https://thumb.wikimedia.org/wikipedia/commons/thumb/0/0b/RNS_Yellowstone_13399u.jpg/960px-RNS_Yellowstone_13399u.jpg?utm_source=en.wikipedia.org&utm_campaign=index&utm_content=thumbnail","storedUrl": "https://api.apify.com/v2/key-value-stores/aBcD1234EfGh5678/records/00001_960px-RNS_Yellowstone_13399u.jpg","key": "00001_960px-RNS_Yellowstone_13399u.jpg","fileName": "00001_960px-RNS_Yellowstone_13399u.jpg","width": 960,"height": 1302,"bytes": 279214,"format": "jpg","sha1": "…","originalFormat": "jpg","originalWidth": 960,"originalHeight": 1302,"converted": false,"alt": null,"foundIn": "srcset","status": "saved","error": null,"downloadedAt": "2026-09-30T10:00:00+00:00"}
status is saved, failed (with error, e.g. HTTP 404, File too large, Page disallowed by robots.txt) or, with includeSkipped, skipped-small, skipped-format, skipped-not-image and duplicate. A run summary (counts and the ZIP link) is saved as the OUTPUT record.
Pricing
Pay only for images that are actually saved. Failed downloads, filtered images and duplicates are free.
| Event | Price |
|---|---|
| Image saved (conversion/resize included) | $0.015 ($15 per 1,000) |
| ZIP bundle (optional, once per run) | $0.01 |
| Actor start | $0.0005 |
| Actor | Price per 1,000 images |
|---|---|
| This Actor | $15 |
| onescales/bulk-image-downloader | $70 |
| hipersoft image downloader | $56 |
Competitor prices are from the Apify Store in September 2026 and may change. Set Maximum cost per run in the run options, and the Actor stops gracefully when it is reached (the ZIP is still created).
FAQ
Does it download full-resolution images? It downloads the largest version the page offers (the biggest srcset / <picture> candidate, lazy-load originals, and linked full-size files). It cannot get sizes that the site never publishes.
Does it work on JavaScript-heavy sites? It reads the HTML the server sends (no browser), which covers most sites, CMSs, shops, blogs and wikis. Images that exist only after client-side rendering, and sites with strong bot protection (e.g. Unsplash, Pexels), may return few images or a 403. For those, pass the image URLs directly (for example from another scraper's dataset).
How long are files kept? They live in the run's default key-value store and follow your Apify plan's data retention (unnamed storages are deleted after the retention period). Download the ZIP or copy the files to a named store if you need them longer.
Can I feed it URLs from another Actor? Yes. Set sourceDatasetId to the other run's dataset ID and sourceDatasetField to the field holding the URLs (strings or arrays of strings).
Does it respect robots.txt? Yes. Page URLs that robots.txt disallows are skipped (you can turn this off for your own sites). Direct image URLs are downloaded as given.
Copyright? You are responsible for making sure you have the right to download and use the images (your own sites, public-domain or licensed content, fair use). This tool does not grant any rights to the images it downloads. Respect the websites' terms of service.
Use with AI agents / Apify MCP
- Apify MCP server: add
https://mcp.apify.com/?actors=gazidev/image-downloaderto Claude Desktop, Cursor, VS Code or any MCP client. An agent can then run requests like: "Download all images larger than 500px from this page and give me a ZIP." - API:
POST https://api.apify.com/v2/acts/gazidev~image-downloader/run-sync-get-dataset-items?token=...with{"startUrls": ["https://example.com/gallery"], "maxImages": 20}returns the image rows (withstoredUrldownload links) synchronously for small jobs. - Tip for agents: filter rows on
status == "saved"and usestoredUrl.width,height,bytesandsha1let you choose or deduplicate images without downloading them again.