Skip to content
//Bulk File & Image Downloader example\\

Product images named by SKU

Read image links from a nested field of your items and name each file by the item's SKU.

Updated November 13, 2026

What this example returns

The dataset’s “Files” view shows 10 columns: #, Link, Download, File name, Type, Size (bytes), Width, Height, Error, and Code. See every output field.

What each setting does

The input this example runs Bulk File & Image Downloader with. “Try this input” opens it in the console, where you can run it as-is or change any field first.

Field with the file links urlField

product.gallery.src

The dataset or JSON item field that holds the link or a list of links, for example images, imageUrl or pdfUrl. Use dots and brackets for nested fields: details.images, gallery[0].src or photos.url (takes 'url' from every entry of a list). Several fields: separate them with commas. Leave empty to use the first of the…

JSON items items

{"product":{"sku":"SKU-1001","gallery":[{"src":"https://upload.wikimedia.org/wikipedia/commons/a/a7/Camponotus_flavomarginatus_ant.jpg"},{"src":"https://raw.githubusercontent.com/python-pillow/Pillow/11.0.0/Tests/images/hopper.webp"}]}}, {"product":{"sku":"SKU-1002","gallery":[{"src":"https://raw.g…

Items sent directly in the input, for API calls: a list of objects that hold links (read with 'Field with the file links'), or a list of link strings.

File name fileNameTemplate

{item.product.sku}-{name}

Name of each saved file; the real extension is added for you. Placeholders: {name} (file name from the link or the server), {index} (position of the link), {md5} (MD5 of the link), {hash} (MD5 of the file content), {host} (site of the link), {item} (position of the dataset item) and {item.} (a field of the dataset…

Default: {name} → this example uses {item.product.sku}-{name}

Key-value store name keyValueStoreName

bulk-file-downloader-examples

Save the files to this named store of yours (created when missing) so they are kept after the run's data retention. Leave empty to use a new store for this run.

Convert WebP images to PNG convertWebpToPng

Yes

Save WebP images as PNG files, which open everywhere. PNG files are larger.

Default: No → this example uses Yes

Add the dataset item to each row includeItem

Yes

Copy the whole dataset or JSON item a link came from into the row's 'item' field, so each file stays connected to its product, listing or post.

Default: No → this example uses Yes

.json
{
  "items": [
    {
      "product": {
        "sku": "SKU-1001",
        "gallery": [
          {
            "src": "https://upload.wikimedia.org/wikipedia/commons/a/a7/Camponotus_flavomarginatus_ant.jpg"
          },
          {
            "src": "https://raw.githubusercontent.com/python-pillow/Pillow/11.0.0/Tests/images/hopper.webp"
          }
        ]
      }
    },
    {
      "product": {
        "sku": "SKU-1002",
        "gallery": [
          {
            "src": "https://raw.githubusercontent.com/python-pillow/Pillow/11.0.0/Tests/images/hopper.gif"
          },
          {
            "src": "https://upload.wikimedia.org/wikipedia/commons/9/9a/Gull_portrait_ca_usa.jpg"
          }
        ]
      }
    }
  ],
  "urlField": "product.gallery.src",
  "fileNameTemplate": "{item.product.sku}-{name}",
  "includeItem": true,
  "convertWebpToPng": true,
  "keyValueStoreName": "bulk-file-downloader-examples"
}

What it costs

You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices: compute, proxies, browser and storage cost nothing extra.

  • File downloadedfrom $0.00015One file downloaded and saved to the key-value store or your S3 bucket, or checked; includes its first 10 MB. Failed and skipped links are free.
  • Large file, per 10 MBfrom $0.0004Each further started 10 MB of a file larger than 10 MB.
  • Residential proxy, per MBfrom $0.0003Each started MB downloaded through the Residential proxy group (charged instead of the per-10 MB fee).
  • Run startfrom $0.0025Charged once when the run starts.

Full pricing

When to use this example

From the Bulk File & Image Downloader readme:

What if a link fails?

The row says why (error, errorCode), and the link is free. Timeouts, refusals and server errors are retried up to 3 times from new IP addresses; missing files (404) are not retried.

How long are the download links valid?

Links to the run's own store are signed for 7 days and the files are kept for your plan's data retention. Use Key-value store name to keep files in a named store, or save to your S3 bucket.

Other ways to run Bulk File & Image Downloader

All examples of Bulk File & Image Downloader

About Bulk File & Image Downloader

Download every file from a list of links, a dataset field or JSON items: images, PDFs, documents, audio, video and archives. Each file gets a download link and one link gets all files as a ZIP, or the files go to your own S3 bucket. Filters by type, size and image dimensions.

Price:
from $0.15 / 1,000 results
Developer:
Querystone

Bulk File & Image Downloader pageOutput fieldsPricing

Related actors

//From the blog\\

Latest articles

All articles

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes.

No credit card. No setup calls.