Bulk File Downloader — Links or a Dataset to Files and a ZIP
Pricing
from $1.00 / 1,000 file downloadeds
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
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
2 days ago
Last modified
Categories
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
| field | what it does |
|---|---|
urls | Direct file links, one per line. |
datasetId | Pick another run's dataset; its items' links are downloaded. Only the dataset you pick can be read. |
datasetFields | Dotted 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. |
fileTypes | Keep only images, videos, audio, documents, archives or other. Empty keeps every kind. |
maxFiles | Most files stored (default 1,000). |
maxTotalMegabytes | Most megabytes stored in total (default 5,000). |
maxFileMegabytes | Most megabytes per file (default 500, up to 2,048; give the run more memory for files over 500 MB). |
respectRobotsTxt | On by default. |
skipDuplicates | On by default: identical bytes are stored once. |
maxConcurrency | Downloads 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"}
| status | meaning | charged |
|---|---|---|
ok | stored; fileUrl opens it for anyone | yes |
duplicate | same bytes as a file already stored; duplicateOf and fileUrl point to it | no |
refused | a private or local address, or a video/music/social platform (see below) | no |
robots_disallowed | the site's robots.txt does not allow it, or could not be read | no |
skipped | a web page, or a kind of file you did not ask for | no |
too_large | bigger than maxFileMegabytes | no |
over_limit | it would have passed maxTotalMegabytes or your spending limit; the run stopped there | no |
unreachable | the server answered an error, nothing, or not at all (after three tries for busy servers) | no |
invalid | not an http(s) link | no |
failed | downloaded but could not be stored | no |
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.comdisallows everyone else, so its images come backrobots_disallowedunless 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.
