Bulk Image Downloader: $1 per 1,000 Files, ZIP Included
Pricing
from $1.40 / 1,000 images
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
14 days ago
Last modified
Categories
Features
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):
| source | width | height | alt | imageUrl |
|---|---|---|---|---|
| og:image | 982 | 1000 | …/Siam_lilacpoint.jpg | |
| img-srcset | 40 | 42 | This is a good article. Click here for more i | …/40px-Symbol_support_vote.svg.png |
| img-srcset | 40 | 40 | Page semi-protected | …/40px-Semi-protection-shackle.svg.png |
| img-srcset | 40 | 40 | Listen to this article | …/40px-Gnome-mime-sound-openclipart.svg.png |
| img-srcset | 330 | 336 | White 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(+csvColumnheader 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 onefiles.ziprecord 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. AlsomaxFiles,maxFileMb(default 50),retries,timeoutSecs,concurrency.- Output: one dataset row per URL (
statusok/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 actor | onescales/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-even | about 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.
maxImagescaps the number of sites per run (default 1000 = about $1).respectRobotsTxtandtimeoutSecsapply 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.