Bulk Image Downloader: $1 per 1,000 Files, ZIP Included avatar

Bulk Image Downloader: $1 per 1,000 Files, ZIP Included

Pricing

from $1.40 / 1,000 images

Go to Apify Store
Bulk Image Downloader: $1 per 1,000 Files, ZIP Included

Bulk Image Downloader: $1 per 1,000 Files, ZIP Included

Bulk image downloader: $1 per 1,000 files, ZIP included. Billed per file downloaded, not per input URL, so a 1,000-URL list costs $1 where per-URL downloaders charge $0.01-$0.07 per URL. Also extracts images from website pages ($0.002 per image found).

Pricing

from $1.40 / 1,000 images

Rating

0.0

(0)

Developer

Penny Data

Penny Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 days ago

Last modified

Features

Limited permissions

Share

Website Image Extractor: All Images from Any Page

Paste a page URL, click Start, get one row per image. $0.002 per image found. Bulk file download is $1 per 1,000 files, ZIP included; pages that fail or have no images cost nothing.

Try it: one click, real output

The input is prefilled, so one click on Start runs exactly this:

{ "startUrls": [{ "url": "https://en.wikipedia.org/wiki/Cat" }], "maxImages": 100, "minWidth": 0 }

First 5 rows of a real local run of this version on that input (the run returned 100 rows, capped by maxImages; columns shortened):

sourcewidthheightaltimageUrl
og:image9821000…/Siam_lilacpoint.jpg
img-srcset4042This is a good article. Click here for more i…/40px-Symbol_support_vote.svg.png
img-srcset4040Page semi-protected…/40px-Semi-protection-shackle.svg.png
img-srcset4040Listen to this article…/40px-Gnome-mime-sound-openclipart.svg.png
img-srcset330336White cat with a grey face, upright ears, and…/330px-Siam_lilacpoint.jpg

Set minWidth (for example 200) to drop icons and keep photos. Export as JSON, CSV or Excel, or call it from the API or MCP.

Run it from curl

One call, no code. Returns the rows above as JSON:

$curl -X POST "https://api.apify.com/v2/acts/pennydata~website-image-extractor/run-sync-get-dataset-items?token=$APIFY_TOKEN" -H "Content-Type: application/json" -d '{"startUrls":[{"url":"https://en.wikipedia.org/wiki/Cat"}],"maxImages":5}'

How do I download all images from a website and its subpages?

Paste the page URLs into startUrls, set maxPagesPerStart to also follow same-site links (subpages), and click Start: you get one row per unique image with its URL, alt text and declared size ($0.002 per image found). To save the files themselves, feed the result to the bulk file downloader (mode files) with createZip: true and you get all images in one files.zip at $1 per 1,000 files, ZIP included.

FAQ

How do I download all images from a website and subpages? Set startUrls to the site's pages and maxPagesPerStart to the number of same-site pages to follow per start URL. Then run mode files on the resulting dataset (datasetId) to download them.

Can I get all the images as a ZIP file? Yes. Mode files with createZip: true writes every downloaded file to one files.zip (up to 400 MB) in the run's key-value store.

How do I download images from a list of URLs? Use mode files with fileUrls (a plain list), csvUrl (a CSV or Google Sheet export link) or datasetId. It is billed per file downloaded, not per input URL: $1 per 1,000 files.

Does it work on JavaScript-rendered pages? No. It reads the page HTML (img, srcset, picture, og:image, optional CSS backgrounds) with no browser, so images that a script adds after load are not seen.

How much does it cost, compared with a browser extension? Extensions work one page at a time for free. This runs a whole list or site in one call and from the API: $0.002 per image found, $0.001 per file downloaded, nothing for failed pages or failed downloads.

Example

Input: { "startUrls": [{ "url": "https://en.wikipedia.org/wiki/Cat" }], "maxPagesPerStart": 1, "minWidth": 200 } Output (one row per image): pageUrl, imageUrl, alt, width, height, source.

Bulk image downloader at $1 per 1,000 files, ZIP included. Billed per file downloaded, not per input URL: a 1,000-URL list costs $1, where per-URL bulk downloaders list $0.01-$0.07 per URL (Store prices, 2026-10-28). Failed downloads are free.

Three modes. Brand kit: $0.001 per site (favicons, logo candidates, og:image, colours). Bulk file downloader: $0.001 per file downloaded. Image extractor: $0.002 per image row delivered (about $2 per 1,000 images). You are charged only for result rows that contain an image; pages that fail, are blocked by robots.txt or contain no images cost nothing; failed downloads are never charged.

Give it public page URLs. It reads the HTML and returns one row per unique image: <img src> and srcset (largest candidate), <picture><source>, og:image / twitter:image, and optionally CSS background-image: url(). Plain HTTP, no browser, no proxies, no login.

Bulk file downloader (mode files)

$0.001 per file successfully downloaded. Failed, timed-out, oversized and 4xx/5xx files are retried (timeouts, network errors, 429, 5xx; default 2 retries with backoff) and are never charged. Any file type: PDF, images, CSV, ZIP, video, audio.

Input example:

{
"mode": "files",
"fileUrls": [{ "url": "https://example.com/a.pdf" }, { "url": "https://example.com/photo.jpg" }],
"filenameTemplate": "{index}-{basename}",
"createZip": true,
"maxCostUsd": 5
}
  • URL sources (combined, deduplicated): fileUrls (plain list), csvUrl (+ csvColumn header or 0-based index; a Google Sheet CSV export link works), datasetId (+ datasetField).
  • filenameTemplate: {index}, {basename}, {name}, {ext}, {host}. Default {index}-{basename}.
  • createZip: also writes all files to one files.zip record in the key-value store (up to 400 MB; larger sets stay available as individual records).
  • maxCostUsd: hard guard, at most floor(maxCostUsd / 0.001) files are downloaded. Also maxFiles, maxFileMb (default 50), retries, timeoutSecs, concurrency.
  • Output: one dataset row per URL (status ok/failed, error, fileName, kvsKey, kvsUrl, contentType, bytes, attempts).
  • Only public http(s) URLs are fetched; private and internal addresses are blocked. You are responsible for the right to download and store the files.

Image extraction mode (default, mode images)

Compared with per-URL pricing

This actoronescales/bulk-image-downloader (as listed 2026-10)
Price$0.002 per image found$0.07 per URL processed
Page with 5 images$0.010$0.07
Page with 20 images$0.040$0.07
Page with 0 images$0$0.07
Break-evenabout 35 images per page

Pages with more than ~35 images cost more here than at a flat $0.07 per URL; use maxImages or minWidth to control spend. Prices of other actors may change; check their listing.

Input

Accepts input from onescales/bulk-image-downloader and powerful_bachelor/website-image-downloader-pro unchanged: inputUrls is read as startUrls; resultsType, includeSrcset, proxyConfiguration and cssSelector are accepted and ignored (we return one row per image, srcset images included).

  • startUrls: page URLs (prefilled with a Wikipedia article).
  • maxPagesPerStart (default 1): also follow same-site links, up to N pages per start URL.
  • minWidth, minBytes: drop small images (unknown width/size is kept).
  • includeCssBackgrounds (default off), sameDomainOnly (default off), fetchMetadata (default off; turn on for a HEAD per image to fill contentType and bytes, adds several seconds).
  • downloadToKvs (default off): store each image (max 10 MB) in the key-value store; failed downloads are not delivered or charged.
  • maxImages (default 1000), respectRobotsTxt (default on), timeoutSecs.

Output (one row per image)

pageUrl, imageUrl, alt, width, height, contentType, bytes, source (img, img-srcset, picture-source, og:image, twitter:image, css-background), plus kvsKey/kvsUrl when downloading. Width/height are only what the page declares; the actor does not decode images.

Brand kit (mode brand)

Give it company websites, get one row per site with everything needed to show their brand: all favicons (every link rel icon plus /favicon.ico when it exists), apple-touch-icons with sizes, og:image, logo candidates (JSON-LD logo, images with "logo" in src, alt, class or id, header SVGs) and the top 5 colours (theme-color meta, then CSS custom properties, then the most frequent hex values in inline CSS). No API key, no browser.

{"mode":"brand","startUrls":[{"url":"https://stripe.com"},{"url":"https://github.com"}]}
  • Price: $0.001 per site row, billed as one "File downloaded" event. Sites that fail, are blocked by robots.txt or return an error are not charged.
  • maxImages caps the number of sites per run (default 1000 = about $1). respectRobotsTxt and timeoutSecs apply as in the other modes.
  • Output per site: pageUrl, domain, title, favicons[] (url, rel, sizes, type), appleTouchIcons[], ogImage, logoCandidates[] (url, source, label), colors[] (#rrggbb). Lists are capped (20 icons, 10 logos, 5 colours).
  • Logo candidates are guesses from the HTML, not verified logos; check the first one or two. Colours are read from the page's CSS and meta tags, not from rendered pixels, so sites that style everything from external stylesheets may return few or none.

Limits

  • Images added by JavaScript after page load are not seen (no rendering). External stylesheets are not read.
  • Only the pages you supply (and, if enabled, same-site links) are fetched. No search-engine scraping. Private and internal addresses are blocked. You are responsible for respecting the copyright and license of the images you download.
  • Not affiliated with any website you scan.

Inicio rápido (español)

Descargar todas las imágenes de una web: pega las URL de las páginas en startUrls y pulsa Start. El actor extrae las imágenes de cada página con texto alternativo y tamaño ($0.002 por imagen encontrada). En el modo de archivos descarga las imágenes y puede crear un ZIP: $1 por 1.000 archivos, facturado por archivo descargado y no por URL de entrada.

Início rápido (português)

Baixar imagens em massa de um site: cole as URLs das páginas em startUrls e clique em Start. O actor extrai as imagens de cada página com texto alternativo e tamanho ($0,002 por imagem encontrada). No modo de arquivos ele baixa as imagens e pode criar um ZIP: $1 por 1.000 arquivos, cobrado por arquivo baixado e não por URL de entrada.

Schnellstart (Deutsch)

Alle Bilder einer Webseite herunterladen: Seiten-URLs in startUrls eintragen und auf Start klicken. Der Actor extrahiert die Bilder jeder Seite mit Alt-Text und Größe ($0,002 pro gefundenem Bild). Im Dateimodus lädt er die Bilder herunter und kann ein ZIP erstellen: $1 pro 1.000 Dateien, abgerechnet pro heruntergeladener Datei, nicht pro Eingabe-URL.

AI disclosure

Built with AI assistance (Claude); maintained by the publisher.