Bulk Image & File Downloader - URLs, Pages or Dataset to ZIP
Pricing
from $1.10 / 1,000 file downloadeds
Bulk Image & File Downloader - URLs, Pages or Dataset to ZIP
Download images and files in bulk from a URL list, from web pages (all images or linked PDFs/docs) or from another Actor's dataset. Each file gets a download link, size, type, SHA-256 and image dimensions; optional ZIP. Size/type filters, duplicate skipping, robots.txt respected.
Pricing
from $1.10 / 1,000 file downloadeds
Rating
0.0
(0)
Developer
Teddy Wasserman
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
What does Bulk Image & File Downloader do?
Bulk Image & File Downloader downloads images and files in bulk and gives you a download link for every file, plus one ZIP if you want it. Give it:
- a list of file URLs (images, PDFs, Word/Excel files, audio, video, archives),
- web pages: it collects every image on the page (img tags, the largest
srcsetsize, lazy-load attributes,og:image) or every linked PDF, DOCX, XLSX, ZIP, MP3 or MP4, or - another Actor's dataset: for example the image URLs from a product, Google Images or real-estate scraper.
Every file is saved in the run's key-value store with a public link, and the dataset lists its name, type, size, SHA-256 hash and, for images, the width and height. Duplicate URLs and duplicate files are skipped, small icons can be filtered out by size, and robots.txt is respected. No browser, no login: a run with 20 images takes a few seconds.
Why use Bulk Image & File Downloader?
- Three ways in. URL list, web pages, or a dataset from any other Actor (set the field that holds the URLs, such as
imageUrlorimages). - One link per file, or one ZIP. Open files from the dataset, call them from your code, or download everything as
files.zip(split into 200 MB parts for big jobs). - Image facts included. Width, height and format for JPG, PNG, GIF, WebP, AVIF, BMP, TIFF and SVG, so you can sort or filter by size.
- Clean results. Duplicate URLs are skipped, files with the same content (SHA-256) are downloaded once, and
minFileSizeKbdrops tracking pixels and icons. - Polite and legal by default. Follows
robots.txtand its crawl delay, sends a clear user agent, retries on 429/5xx with back-off. No proxies, no bot-protection bypassing. - Fair pricing. $2 per 1,000 files (each file up to 10 MB included); failed, skipped and duplicate files are free.
What data can you extract?
| Field | Example | Description |
|---|---|---|
fileName | fw9.pdf | Original file name (from Content-Disposition or the URL) |
fileUrl | https://api.apify.com/v2/key-value-stores/…/records/00001-fw9.pdf | Download link of the stored file |
kvKey | 00001-fw9.pdf | Key in the run's key-value store |
contentType | application/pdf | MIME type from the server |
sizeBytes / sizeMb | 140815 / 0.134 | File size |
sha256 | 2d420cbb4123dcf1… | Content hash (for de-duplication and integrity checks) |
width / height / imageFormat | 1280 / 904 / JPEG | Image dimensions and format |
url | https://www.irs.gov/pub/irs-pdf/fw9.pdf | The URL you gave or that was found |
finalUrl | https://cdn.example.com/… | URL after redirects (when different) |
statusCode | 200 | HTTP status |
sourcePage | https://en.wikipedia.org/wiki/Ant | Page the file was found on |
foundIn | img / og:image / link / url / dataset:imageUrl | How the URL was found |
error | http_404 / duplicate_content / smaller_than_5_kb | Why a file was skipped (free) |
zipUrl | https://api.apify.com/v2/key-value-stores/…/records/files.zip | ZIP link (last row, when Create ZIP is on) |
scrapedAt | 2026-10-28T20:44:31Z | Download time |
How to use Bulk Image & File Downloader (step by step)
- Click Try for free.
- Paste File URLs, or add Web pages to collect files from (choose Images and/or Linked files), or enter a Dataset ID and the URL field from another Actor's run.
- Optional: set Max files, File extensions (
jpg,png,pdf), URL contains, Min file size (e.g. 10 KB to skip icons) and Max file size. - Switch on Create ZIP if you want one archive. Choose how files are named.
- Click Start. Open the Files or Images view: every row has a Download link. The ZIP link is in the last row and in the
ZIP_FILESrecord of the key-value store.
Input example
{"pageUrls": ["https://en.wikipedia.org/wiki/Ant"],"collectFromPages": ["images"],"minFileSizeKb": 10,"maxFiles": 200,"createZip": true,"fileNaming": "index-original"}
From another Actor's dataset:
{"datasetId": "aBcD1234efGH5678","datasetUrlField": "imageUrl","fileExtensions": ["jpg", "png", "webp"],"maxFiles": 5000,"createZip": true}
Output example
{"url": "https://thumb.wikimedia.org/wikipedia/commons/thumb/d/db/Red_Ant_-_March_2025.jpg/1280px-Red_Ant_-_March_2025.jpg","sourcePage": "https://en.wikipedia.org/wiki/Ant","foundIn": "og:image","statusCode": 200,"fileName": "Red_Ant_-_March_2025.jpg","contentType": "image/jpeg","sizeBytes": 144126,"sizeMb": 0.137,"sha256": "c90d762b…","width": 1280,"height": 904,"imageFormat": "JPEG","kvKey": "00001-Red_Ant_-_March_2025.jpg","fileUrl": "https://api.apify.com/v2/key-value-stores/<storeId>/records/00001-Red_Ant_-_March_2025.jpg","scrapedAt": "2026-10-28T20:44:31Z"}
The ZIP row looks like {"_info": "ZIP with 15 files", "zipFile": "files.zip", "zipUrl": "https://api.apify.com/v2/key-value-stores/<storeId>/records/files.zip", "files": 15, "sizeBytes": 1037287}.
How much does it cost?
Bulk Image & File Downloader uses pay-per-event pricing.
| Event | Price (Free plan) | When it is charged |
|---|---|---|
| Actor start | $0.0005 | Once per run |
| File downloaded | $0.002 ($2 per 1,000) | One file saved, up to 10 MB |
| Extra 10 MB | $0.002 | Each started 10 MB block of a file above its first 10 MB |
Free: files that fail (404, timeout, blocked by robots.txt), files skipped by your size or type filters, duplicates, pages without files, and the ZIP itself. Paid Apify plans get Store discounts (Bronze −15%, Silver −30%, Gold and up −45%).
Worked examples (Free plan prices):
- All 200 product photos from 20 web pages (about 300 KB each): ≈ $0.40.
- 5,000 image URLs from another scraper's dataset, packed as a ZIP: ≈ $10.
- 50 PDF reports of 25 MB each: 50 × ($0.002 + 2 × $0.002) ≈ $0.30.
Stored files stay in the run's key-value store for your plan's data-retention period. Download the ZIP or copy the files to your own storage if you need them longer.
Use cases
- E-commerce. Download all product images of a catalogue (yours, or from a scraper's dataset) for a marketplace upload, a re-design or a backup.
- AI and machine learning. Build image datasets for training or evaluation, with dimensions and hashes for de-duplication.
- Research and archiving. Save every PDF report, form or attachment linked from a set of pages before they disappear.
- Marketing and design. Collect logos, banners and press-kit files from a list of brand pages.
- Pipelines. Chain it after any Apify scraper: pass the dataset ID and get real files instead of URLs.
- AI agents. Let an assistant fetch "all PDFs linked from these 10 pages" and work with the stored files.
Use with AI agents, MCP and the API
curl -X POST "https://api.apify.com/v2/acts/teddythebuilder~bulk-file-downloader/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"urls":["https://www.irs.gov/pub/irs-pdf/fw9.pdf"],"createZip":false}'
Python with apify-client:
from apify_client import ApifyClientclient = ApifyClient("<TOKEN>")run = client.actor("teddythebuilder/bulk-file-downloader").call(run_input={"pageUrls": ["https://www.irs.gov/forms-instructions"],"collectFromPages": ["files"],"fileExtensions": ["pdf"],"maxFiles": 50,})store = client.key_value_store(run["defaultKeyValueStoreId"])for row in client.dataset(run["defaultDatasetId"]).iterate_items():if row.get("kvKey"):data = store.get_record(row["kvKey"])["value"]open(row["fileName"], "wb").write(data)
MCP: available as a tool in the Apify MCP server (https://mcp.apify.com) for Claude, ChatGPT, Cursor and other MCP clients.
Integrations
Send the file list or the ZIP link to Google Drive, Dropbox, S3 (via Make, Zapier or n8n), Slack, email or a webhook after each run.
Data source and legality
The actor downloads only the URLs you give it or that are linked from the pages you give it, the same way a browser would. It respects each site's robots.txt (and its crawl delay) by default, sends a clear user agent, and does not log in, use proxies or bypass any protection. Sites that block automated downloads simply show up as free error rows.
You are responsible for having the right to download and use the files (copyright, licences, terms of the website). Public-domain and openly licensed sources (Wikimedia Commons, government sites, your own sites and suppliers' press kits) are the safe choice. Turn off Respect robots.txt only for files you own or are allowed to fetch.
FAQ
Where are my files?
In the run's key-value store (Storage tab), one record per file. Each dataset row has a direct fileUrl. With Create ZIP on, files.zip (or files-part-000.zip, files-part-001.zip, … for jobs over 200 MB) is in the same store.
Which images are collected from a page?
img tags (the largest srcset candidate, plus data-src and other lazy-load attributes), picture sources, og:image/twitter:image and links to image files. Images drawn only by JavaScript or CSS backgrounds are not collected.
Why did I get fewer files than images on the page?
Duplicates (same URL or same content), files below Min file size, files that answer with an error, and pages or files disallowed by robots.txt are skipped; each has a free row with the reason in error.
How big can files be? Up to Max file size (default 50 MB, maximum 1,024 MB). Raise the Actor's memory for very large files or big ZIP parts.
Can it download from Google Drive, Dropbox or YouTube? Direct public download links work. Pages that need a login, a JavaScript click or a video player (YouTube, Instagram, Google Drive previews) are not supported.
Does it convert or resize images? No, files are stored exactly as downloaded, so hashes match the source.
Questions or bugs? Open an issue on the actor page. We reply within 24 hours. If the actor helps you, a rating on the Store page helps others find it.
Related actors
- Image to Text OCR: text from images and scanned PDFs (Tesseract, 12 languages), for files without a text layer.
- PDF Text Extractor: turn the PDFs you downloaded (or their URLs) into text and Markdown for LLMs.
- Website to Markdown: the text of web pages as clean Markdown.
- Shopify & WooCommerce Products Scraper: product data with image URLs, ready to feed into this downloader.
- Website SEO Audit Crawler: broken images, missing alt texts and more for a whole site.
Changelog and support
- 1.0 (October 2026): first release. URL lists, web pages (images and linked files) and datasets; key-value store links, ZIP parts, image dimensions, SHA-256 de-duplication, size/type filters, robots.txt.
Questions or feature requests? Open an issue on the actor page. We reply within 24 hours.