Bulk Image & File Downloader - URLs, Pages or Dataset to ZIP avatar

Bulk Image & File Downloader - URLs, Pages or Dataset to ZIP

Pricing

from $1.10 / 1,000 file downloadeds

Go to Apify Store
Bulk Image & File Downloader - URLs, Pages or Dataset to ZIP

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

Teddy Wasserman

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

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 srcset size, 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 imageUrl or images).
  • 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 minFileSizeKb drops tracking pixels and icons.
  • Polite and legal by default. Follows robots.txt and 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?

FieldExampleDescription
fileNamefw9.pdfOriginal file name (from Content-Disposition or the URL)
fileUrlhttps://api.apify.com/v2/key-value-stores/…/records/00001-fw9.pdfDownload link of the stored file
kvKey00001-fw9.pdfKey in the run's key-value store
contentTypeapplication/pdfMIME type from the server
sizeBytes / sizeMb140815 / 0.134File size
sha2562d420cbb4123dcf1…Content hash (for de-duplication and integrity checks)
width / height / imageFormat1280 / 904 / JPEGImage dimensions and format
urlhttps://www.irs.gov/pub/irs-pdf/fw9.pdfThe URL you gave or that was found
finalUrlhttps://cdn.example.com/…URL after redirects (when different)
statusCode200HTTP status
sourcePagehttps://en.wikipedia.org/wiki/AntPage the file was found on
foundInimg / og:image / link / url / dataset:imageUrlHow the URL was found
errorhttp_404 / duplicate_content / smaller_than_5_kbWhy a file was skipped (free)
zipUrlhttps://api.apify.com/v2/key-value-stores/…/records/files.zipZIP link (last row, when Create ZIP is on)
scrapedAt2026-10-28T20:44:31ZDownload time

How to use Bulk Image & File Downloader (step by step)

  1. Click Try for free.
  2. 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.
  3. 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.
  4. Switch on Create ZIP if you want one archive. Choose how files are named.
  5. 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_FILES record 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.

EventPrice (Free plan)When it is charged
Actor start$0.0005Once per run
File downloaded$0.002 ($2 per 1,000)One file saved, up to 10 MB
Extra 10 MB$0.002Each 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 ApifyClient
client = 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.

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.