Pinterest Board Image Downloader
Under maintenancePricing
from $0.25 / 1,000 image results
Pinterest Board Image Downloader
Under maintenanceDownload 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_
Maintained by CommunityActor stats
1
Bookmarked
19
Total users
0
Monthly active users
4 days ago
Last modified
Categories
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
OUTPUTkey-value store record - Recover from stalled feeds, reloads, and browser crashes without discarding URLs already collected
Quick start
- Open the Actor and enter a Pinterest URL.
- Adjust optional limits or reliability settings if needed.
- Start the run.
- Open Output to inspect individual image results.
- 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 totruefor 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_urlimage_url— Canonical Pinterest original URLdownload_url— CDN URL that actually succeeded, when downloadedfile_namestatusstatus_codeerror
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_urlimage_countexpected_pin_count_hintcollection_complete_hintdownloaded_countfailed_countsave_dirmax_imageszip_keyzip_file_namezip_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
Pinscount 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
RefererandUser-Agent - Write downloads through
.partfiles 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 loginapify 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