Scrape public Pinterest boards — export to JSON, Markdown, and cached images
Project description
pinterest-export
Scrape any public Pinterest board from the command line.
Exports structured JSON, LLM-ready Markdown, and optionally caches all images locally — with a beautiful Rich progress UI.
$ pinterest-export https://www.pinterest.com/designmilk/packaging/
──────────────── pinterest-export ────────────────
Board : designmilk/packaging
URL : https://www.pinterest.com/designmilk/packaging/
⏳ Scraping board… 42 pins found so far
✓ Scraped 87 pins.
⠸ Downloading images… ████████░░ 67/87 77% 00:12
✓ Downloaded 85 / 87 images.
┌─ Export Summary ──────────────────────────────┐
│ Board │ designmilk/packaging │
│ Pins scraped │ 87 │
│ Images cached │ 85 │
│ board.json │ ./pinterest-export-output/... │
│ board.md │ ./pinterest-export-output/... │
└───────────────────────────────────────────────┘
Install
pip install pinterest-export
playwright install chromium
Usage
# Scrape and export JSON + Markdown
pinterest-export https://www.pinterest.com/username/boardname
# Custom output directory
pinterest-export https://www.pinterest.com/username/boardname --output-dir ./my-research
# Also download all images
pinterest-export https://www.pinterest.com/username/boardname --cache-images
# Scrape only (no files written)
pinterest-export https://www.pinterest.com/username/boardname --no-export
# Limit to first N pins
pinterest-export https://www.pinterest.com/username/boardname --limit 50
Output formats
board.json
Structured metadata for every pin:
{
"board": "username/boardname",
"url": "https://www.pinterest.com/...",
"scraped_at": "2026-03-03T04:22:00Z",
"pin_count": 87,
"pins": [
{
"id": "123456789",
"title": "Minimal packaging concept",
"description": "Clean kraft paper with letterpress...",
"link": "https://www.pinterest.com/pin/...",
"image_url": "https://i.pinimg.com/...",
"board_url": "https://www.pinterest.com/username/boardname/"
}
]
}
board.md
LLM-optimised Markdown — ready to paste into Claude, GPT, or any AI tool as context for design research, mood board analysis, or trend detection.
Cached images
When --cache-images is set, all pin images are downloaded to a local cache directory and referenced by their Pinterest image ID. Subsequent exports reuse cached images.
Features
- Scrapes public Pinterest boards via Playwright (handles infinite scroll)
- Rich live progress UI: real-time pin count + image download progress bar
- JSON export with full structured metadata
- Markdown export optimised for LLM context windows
- Local image cache with concurrent downloads
--limitflag for controlled scrapes--no-exportflag for dry runs / in-memory use
Roadmap
- #5 Vision AI analysis (per-pin descriptions, tags, themes)
- #6 Theme clustering across boards
- #7 HTML gallery generator
- #11 Config file support (
.pinterest-export.toml) - #12 Watch mode / incremental exports
Development
git clone https://github.com/brtdwchtr/pinterest-export
cd pinterest-export
uv sync
playwright install chromium
uv run pytest tests/
See CONTRIBUTING.md for contribution guidelines.
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pinterest_export-0.1.0.tar.gz.
File metadata
- Download URL: pinterest_export-0.1.0.tar.gz
- Upload date:
- Size: 16.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
67283d6c3e536d3ca6dbdc9985ca76c9fc2eb7dce0127f515a6d2ed644c5412a
|
|
| MD5 |
f60f4ac60b5fe1f858f3b27f00d10035
|
|
| BLAKE2b-256 |
6b8e4bebecfb1a7652178a798dde668770c59001a0b5571ca166ae8d53fefe53
|
File details
Details for the file pinterest_export-0.1.0-py3-none-any.whl.
File metadata
- Download URL: pinterest_export-0.1.0-py3-none-any.whl
- Upload date:
- Size: 14.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f0026847dd8f62574ac9e2be74edf44c6a9fe4c22a62b39d2496d96d47981a74
|
|
| MD5 |
9e08c2f45afdaa227825f4d402335fcb
|
|
| BLAKE2b-256 |
d6bc55f760cd9d6f5ccae07b111da54bef75b31b8c3b1ee402ef81d5e0b39965
|