Bulk File Downloader (direct URLs, robots.txt-respecting)
Pricing
from $2.00 / 1,000 file downloadeds
Bulk File Downloader (direct URLs, robots.txt-respecting)
Downloads the files you list (PDFs, images, CSVs, archives, anything with a direct URL) into the run's key-value store, with a download link, size, content type and SHA-256 for each. Filters by content type, caps file size, obeys robots.txt and spaces requests per site. No proxy, no login.
Pricing
from $2.00 / 1,000 file downloadeds
Rating
0.0
(0)
Developer
Brenden Bushman
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Download a list of files into Apify storage in one run. Give it direct links to PDFs, images, CSVs, spreadsheets, archives or anything else with a URL. For each one you get back a download link, the record key, the file name, its size, content type and SHA-256 checksum. Each file sits in the run's key-value store, ready for your next Actor, your integration or a plain download.
What you get
- Every file stored as a record in the run's key-value store, keyed by its position and file name
(
0001-report.pdf), with its original content type. - A dataset item per URL, in input order:
downloadUrl,key,fileName(fromContent-Dispositionor the URL),contentType,sizeBytes,sha256, or the reason it failed. - A content-type filter (
allowedContentTypes, for exampleimage/orapplication/pdf). A file of another type is skipped before its body is transferred. - A size cap (
maxFileSizeMb). A larger file is refused from itsContent-Lengthbefore the download starts, or stopped as soon as it passes the cap. - Duplicate URLs are downloaded once.
Failed files are reported in the dataset with a reason and are not charged: fetch-failed, file-too-large,
content-type-not-allowed, robots-disallowed.
Respectful by design
- Only the URLs you list are downloaded, one request each. Pages are not crawled and links are not followed. The site's robots.txt is read first and obeyed, and downloads from one site are spaced (500 ms by default). No proxy, no browser, no login.
- Only public internet addresses are fetched. A URL or redirect into a private, loopback or link-local network is refused.
Download only files you have the right to download and store.
Input
| Field | Type | Default | Notes |
|---|---|---|---|
fileUrls | array | - | Direct links to files. Required. |
allowedContentTypes | array | - | Full types or prefixes ending in /; empty allows all. |
maxFileSizeMb | integer | 50 | Up to 200. |
maxFiles | integer | 1000 | Up to 10,000, in input order. |
requestDelayMs | integer | 500 | Pause between downloads from one site. |
Output
One dataset item per URL, in input order:
{"url": "https://example.com/files/q3-report.pdf", "finalUrl": "https://example.com/files/q3-report.pdf","status": "ok", "key": "0001-q3-report.pdf", "fileName": "q3-report.pdf","downloadUrl": "https://api.apify.com/v2/key-value-stores/<store id>/records/0001-q3-report.pdf","contentType": "application/pdf", "sizeBytes": 482113,"sha256": "9f2c...e41a", "error": null}
A failed file:
{"url": "https://example.com/files/video.mp4", "status": "error", "key": null,"error": {"code": "file-too-large", "message": "104857600 bytes declared (maxFileSizeMb is 50)"}}
Key-value store record SUMMARY: files requested, downloaded and failed, bytes downloaded, megabytes charged, and why
the run stopped early if it did.
Files in a run's default storage are kept for as long as your Apify plan keeps unnamed storage (7 days on the free plan). Copy anything you need to keep longer.
Pricing
Pay per event, no start fee, and nothing for files that fail:
| Event | Price | Per 1,000 |
|---|---|---|
file-downloaded (one file stored) | $0.002 | $2.00 |
megabyte-downloaded (each started megabyte of it, at least one) | $0.001 | $1.00 |
A 300 KB image costs $0.003; a 12.5 MB PDF costs $0.015. When you set a maximum charge for a run, the Actor caps each download at what the remainder pays for, and stops when not even a one-megabyte file fits.
Limits
- Files only, one URL each. It does not crawl a page for its images or follow links.
- A run that waits too long on slow servers stops early with what it has downloaded, so its results are saved before the run's timeout.
- 200 MB per file at most.