Pinterest Board Image Downloader avatar

Pinterest Board Image Downloader

Under maintenance

Pricing

from $0.25 / 1,000 image results

Go to Apify Store
Pinterest Board Image Downloader

Pinterest Board Image Downloader

Under maintenance

Download images from public Pinterest boards in bulk. Scrape image URLs, save available high-resolution images, export them as a ZIP, and get structured dataset results for automation or API use.

Pricing

from $0.25 / 1,000 image results

Rating

5.0

(1)

Developer

TamKungZ_

TamKungZ_

Maintained by Community

Actor stats

1

Bookmarked

19

Total users

0

Monthly active users

4 days ago

Last modified

Share

Download Pinterest images in bulk from a board, profile, section, or pin URL with PinFetch, an Apify Actor built with Python and Playwright.

PinFetch discovers Pinterest CDN image URLs while the page loads and scrolls, downloads the best available image version, and bundles successful downloads into a ZIP archive. It also stores structured per-image results in the Apify dataset for API integrations and automated workflows.

What can PinFetch do?

  • Download images from Pinterest boards, profiles, sections, and pins
  • Collect Pinterest image URLs from multiple page and network sources
  • Prefer original images and fall back to common Pinterest CDN sizes when needed
  • Download many images in a single Actor run
  • Export successful downloads as one ZIP archive
  • Store structured per-image download results in the Apify dataset
  • Provide a run summary through the OUTPUT key-value store record
  • Recover from stalled feeds, reloads, and browser crashes without discarding URLs already collected

Quick start

  1. Open the Actor and enter a Pinterest URL.
  2. Adjust optional limits or reliability settings if needed.
  3. Start the run.
  4. Open Output to inspect individual image results.
  5. Download the finished archive from Output → Downloaded images ZIP.

For most runs, the default settings are intended to work without extra configuration.

Input

Input is defined in .actor/input_schema.json.

The main option is:

  • url — Pinterest profile, board, section, or pin URL.

Optional controls:

  • max_images — Hard limit for collected images.
  • max_scroll — Maximum number of scroll rounds.
  • max_no_new — Stop after this many stable rounds with no new images.
  • scroll_delay_sec — Lazy-load wait between scroll rounds.
  • max_reloads — Reload attempts when scrolling stalls.
  • reload_only_below_total — Normally reload only below this collected-image count. If the visible board count indicates missing pins, recovery may still reload.
  • browser_restarts — Chromium restart budget when the browser crashes or the Pinterest feed remains stalled while pins appear to be missing.
  • navigation_timeout_sec — Navigation and reload timeout.
  • request_timeout_sec — HTTP timeout per image request.
  • download_retries — Retry count for transient network or HTTP errors before trying another CDN size.
  • download_delay_sec — Optional delay between image downloads.
  • headless — Run Chromium headlessly. Defaults to true for Apify reliability.
  • save_dir — Local directory inside the Actor container.

Output

Image URL dataset

Each image attempt is stored as a dataset item with fields such as:

  • source_url
  • image_url — Canonical Pinterest original URL
  • download_url — CDN URL that actually succeeded, when downloaded
  • file_name
  • status
  • status_code
  • error

This makes the results easy to inspect in the Apify Console or consume through the Apify API.

Downloaded images ZIP

Successfully downloaded images from the current run are bundled into a ZIP archive.

Download it from:

  • Run → Output → Downloaded images ZIP
  • Run → Storage → Key-value store → IMAGES_ZIP

The archive contains only files successfully downloaded during that run.

Run summary

The key-value store record OUTPUT contains:

  • source_url
  • image_count
  • expected_pin_count_hint
  • collection_complete_hint
  • downloaded_count
  • failed_count
  • save_dir
  • max_images
  • zip_key
  • zip_file_name
  • zip_file_count

Reliability

Pinterest pages do not always load or scroll in exactly the same way. PinFetch therefore favors reliable collection over assuming a single page structure.

It can:

  • Collect URLs from the rendered DOM, embedded page state, Pinterest feed-resource responses, and observed image requests
  • Read currentSrc, src, srcset, and large CSS background images
  • Detect large nested scroll containers instead of assuming the document is always the scroll target
  • Scroll the lowest discovered pin into view and nudge around the current feed bottom when loading stalls
  • Reload a stalled page and restart the browser context when the board still appears incomplete
  • Preserve already collected URLs across browser recovery
  • Treat the displayed Pinterest Pins count as a progress hint rather than truncating results to that number
  • Filter common tiny Pinterest avatar and icon assets
  • Retry failed downloads with backoff
  • Fall back from /originals/ to common Pinterest CDN image sizes when necessary
  • Use Pinterest-like request headers including Referer and User-Agent
  • Write downloads through .part files before finalizing them, reducing the chance of keeping interrupted files
  • Use URL-hashed filenames to avoid reusing an unrelated file with the same numeric index
  • Build the ZIP only from files belonging to the current run

Diagnostic logs include document and nested scroll ranges, visible pin-link counts, dialog counts, and overflow state to make stalled runs easier to investigate.

Run locally

$apify run

Deploy

apify login
apify push

Project structure

  • Runtime entrypoint: src/main.py
  • Input schema: .actor/input_schema.json
  • Dataset schema: .actor/dataset_schema.json
  • Output schema: .actor/output_schema.json