Skip to main content

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
  • --limit flag for controlled scrapes
  • --no-export flag 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pinterest_export-0.1.0.tar.gz (16.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pinterest_export-0.1.0-py3-none-any.whl (14.2 kB view details)

Uploaded Python 3

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

Hashes for pinterest_export-0.1.0.tar.gz
Algorithm Hash digest
SHA256 67283d6c3e536d3ca6dbdc9985ca76c9fc2eb7dce0127f515a6d2ed644c5412a
MD5 f60f4ac60b5fe1f858f3b27f00d10035
BLAKE2b-256 6b8e4bebecfb1a7652178a798dde668770c59001a0b5571ca166ae8d53fefe53

See more details on using hashes here.

File details

Details for the file pinterest_export-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pinterest_export-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f0026847dd8f62574ac9e2be74edf44c6a9fe4c22a62b39d2496d96d47981a74
MD5 9e08c2f45afdaa227825f4d402335fcb
BLAKE2b-256 d6bc55f760cd9d6f5ccae07b111da54bef75b31b8c3b1ee402ef81d5e0b39965

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page