Bulk File Downloader (direct URLs, robots.txt-respecting) avatar

Bulk File Downloader (direct URLs, robots.txt-respecting)

Pricing

from $2.00 / 1,000 file downloadeds

Go to Apify Store
Bulk File Downloader (direct URLs, robots.txt-respecting)

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

Brenden Bushman

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

2 days ago

Last modified

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 (from Content-Disposition or the URL), contentType, sizeBytes, sha256, or the reason it failed.
  • A content-type filter (allowedContentTypes, for example image/ or application/pdf). A file of another type is skipped before its body is transferred.
  • A size cap (maxFileSizeMb). A larger file is refused from its Content-Length before 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

FieldTypeDefaultNotes
fileUrlsarray-Direct links to files. Required.
allowedContentTypesarray-Full types or prefixes ending in /; empty allows all.
maxFileSizeMbinteger50Up to 200.
maxFilesinteger1000Up to 10,000, in input order.
requestDelayMsinteger500Pause 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:

EventPricePer 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.