Bulk File Downloader — Links or a Dataset to Files and a ZIP avatar

Bulk File Downloader — Links or a Dataset to Files and a ZIP

Pricing

from $1.00 / 1,000 file downloadeds

Go to Apify Store
Bulk File Downloader — Links or a Dataset to Files and a ZIP

Bulk File Downloader — Links or a Dataset to Files and a ZIP

Bulk download files from a list of URLs or from a field of another run's dataset (images, PDFs, videos, documents): each file stored with a public link, size, type and SHA-256, duplicates skipped, plus one ZIP of everything. A bulk image downloader you can also call via API.

Pricing

from $1.00 / 1,000 file downloadeds

Rating

0.0

(0)

Developer

Steady Scrape

Steady Scrape

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

2 days ago

Last modified

Share

Give it a list of file links, or pick the dataset of another run (a scraper's results) and the field that holds the links, and it downloads the files: images, PDFs, videos, audio, documents, archives. Every file is stored with a public download link, its size, type and SHA-256, and the run ends with one link that downloads everything as a ZIP.

  • Download the images of a scrape in one step. Point it at the dataset of an Airbnb, Zillow, Pinterest, Amazon or Shopify run, name the field (images.url, imageUrl, photos), and every picture lands in one store and one ZIP — each row says which item and which field it came from.
  • Pay for files, not for failures. A dead link, a web page, a refused site, a file over your limits or a duplicate is a free row that says why.
  • Duplicates skipped by content. The same bytes under two links are stored and charged once.
  • Hard limits you set before anything is downloaded: most files, most megabytes in total, most megabytes per file, and your spending limit — checked before each download starts and while its bytes arrive, so a run never goes past them.
  • Polite by default: robots.txt is respected (you can turn that off), never more than two downloads at once from one site, busy servers retried with their Retry-After.

Use cases

  • Archive the product photos, listing pictures or attachments a scraper found.
  • Collect PDFs (reports, filings, catalogues) from a list of links for an AI or search pipeline.
  • Mirror a media list into Apify storage, with checksums to verify it later.
  • Turn a CSV export of links into a ZIP you can hand to someone.

Input

fieldwhat it does
urlsDirect file links, one per line.
datasetIdPick another run's dataset; its items' links are downloaded. Only the dataset you pick can be read.
datasetFieldsDotted paths to the links in each item, walking through arrays (images.url). Empty: every link in a media-named field (image, photo, thumbnail, video, file, pdf…) or ending in a file extension.
fileTypesKeep only images, videos, audio, documents, archives or other. Empty keeps every kind.
maxFilesMost files stored (default 1,000).
maxTotalMegabytesMost megabytes stored in total (default 5,000).
maxFileMegabytesMost megabytes per file (default 500, up to 2,048; give the run more memory for files over 500 MB).
respectRobotsTxtOn by default.
skipDuplicatesOn by default: identical bytes are stored once.
maxConcurrencyDownloads at once (default 4, never more than 2 per site).
{
"datasetId": "<the dataset of your scraper run>",
"datasetFields": ["images.url"],
"fileTypes": ["images"],
"maxFiles": 500
}

Output

One row per link:

{
"url": "https://a0.muscache.com/im/pictures/1a2b3c.jpg",
"finalUrl": "https://a0.muscache.com/im/pictures/1a2b3c.jpg",
"status": "ok",
"reason": null,
"fileName": "1a2b3c.jpg",
"key": "files-000000-1a2b3c.jpg",
"fileUrl": "https://api.apify.com/v2/key-value-stores/…/records/files-000000-1a2b3c.jpg?signature=…",
"contentType": "image/jpeg",
"fileType": "images",
"bytes": 184322,
"sha256": "9f2c…",
"duplicateOf": null,
"billedTransferUnits": 0,
"sourceItemIndex": 0,
"sourceField": "images.url",
"downloadedAt": "2026-10-13T12:00:00.000Z"
}
statusmeaningcharged
okstored; fileUrl opens it for anyoneyes
duplicatesame bytes as a file already stored; duplicateOf and fileUrl point to itno
refuseda private or local address, or a video/music/social platform (see below)no
robots_disallowedthe site's robots.txt does not allow it, or could not be readno
skippeda web page, or a kind of file you did not ask forno
too_largebigger than maxFileMegabytesno
over_limitit would have passed maxTotalMegabytes or your spending limit; the run stopped thereno
unreachablethe server answered an error, nothing, or not at all (after three tries for busy servers)no
invalidnot an http(s) linkno
faileddownloaded but could not be storedno

The run's SUMMARY record has the files and megabytes stored, the rows per status, how many links were left when a limit stopped the run, and zipUrl: one signed link that downloads every stored file as a ZIP, without an Apify login.

Pricing

Pay per event, no start fee:

  • file-downloaded: US$0.001 per file stored (US$1 per 1,000), which includes its first 10 MB.
  • transfer-10mb: US$0.001 per started 10 MB beyond the first 10 MB of a file.

A 200 KB photo costs US$0.001; a 25 MB video US$0.003. Everything that is not stored is free.

What it refuses, and your responsibility

  • Private and local networks, always: loopback, private ranges, link-local and the cloud metadata service, and every other reserved address, checked on every redirect and on the address each connection really lands on.
  • Video, music and social platforms: YouTube, TikTok, Instagram, Facebook, Netflix, Spotify, Twitch, Vimeo, Dailymotion, SoundCloud, Disney+, Hulu, Prime Video, Max, Apple TV and Apple Music, Deezer. Their media is licensed content behind terms that forbid downloading it.
  • robots.txt: on by default. Turning it off, and downloading anything at all, means you are responsible for having the right to download and store those files — copyright, licences and the sites' terms are yours to respect. Most image CDNs allow it (Airbnb's, Amazon's, Shopify's, Zillow's, eBay's and Wikimedia's did in October 2026), but some allow only the robots on their own list: Pinterest's i.pinimg.com disallows everyone else, so its images come back robots_disallowed unless you turn robots.txt off.

Limits

  • Links are followed through up to five redirects. A page is not crawled for its files: give the file links, or a dataset that has them.
  • A file waits on the run's disk until it is stored; a run has twice its memory in disk. The default 1 GB run handles files up to 500 MB comfortably; give the run more memory for bigger ones.
  • Up to 100,000 links per run.