Pinterest Scraper — Pins, Boards, Profiles & Search avatar

Pinterest Scraper — Pins, Boards, Profiles & Search

Under maintenance

Pricing

from $1.20 / 1,000 results

Go to Apify Store
Pinterest Scraper — Pins, Boards, Profiles & Search

Pinterest Scraper — Pins, Boards, Profiles & Search

Under maintenance

Extract comprehensive data from Pinterest: pins, boards, creator profiles, keyword search results, trending boards, and engagement metrics.

Pricing

from $1.20 / 1,000 results

Rating

0.0

(0)

Developer

CodeCrawler

CodeCrawler

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

5 hours ago

Last modified

Share

📌 Pinterest Scraper — Apify Actor

Extract structured data from Pinterest at scale: pins, boards, user profiles, keyword searches, and trending content — all with engagement metrics.

Built with Crawlee + Playwright + Apify SDK.


✨ Features

FeatureDescription
🖼️ Pin ExtractionGet pin details: images, videos, descriptions, links, creator info
📋 Board ScrapingExtract board metadata + all pins within a board
👤 User ProfilesFull profile data: bio, stats, boards, recent pins
🔍 Keyword SearchSearch Pinterest by keyword with automatic pagination
🔥 Trending/DiscoveryGet trending boards and popular content
📊 Engagement MetricsSaves, comments, reactions, followers, monthly views
🔄 Auto-PaginationFollows bookmark cursors until hitting your configured limit
🛡️ Anti-DetectionSession rotation, browser fingerprinting, residential proxies

🚀 Quick Start

On Apify Platform

  1. Go to Apify Store and find Pinterest Scraper
  2. Click Try for free
  3. Configure your input (see below)
  4. Run and download results

Locally

# Clone and install
cd pinterest-scraper
npm install
# Create input file
cat > ./storage/key_value_stores/default/INPUT.json << 'EOF'
{
"keywords": ["minimalist interior design"],
"maxResultsPerEndpoint": 50
}
EOF
# Run
npm start

📥 Input Configuration

ParameterTypeDefaultDescription
urlsstring[][]Direct Pinterest URLs (pins, boards, profiles)
keywordsstring[][]Search queries
usernamesstring[][]Usernames to extract profiles
boardsstring[][]Board paths (username/board-name)
maxResultsPerEndpointinteger1000Max results per keyword/user/board
includeEngagementMetricsbooleantrueInclude saves, comments, followers
outputFormatstring"json"Output format: json, csv, jsonl
proxyUrlstring""Custom proxy URL (optional)
cookiesstring[][]Pre-set session cookies (optional)

Example Input

{
"urls": [
"https://www.pinterest.com/pin/123456789/",
"https://www.pinterest.com/nike/"
],
"keywords": ["fashion trends 2025", "home office ideas"],
"usernames": ["nike", "wholefoodsmarket"],
"boards": ["nike/just-do-it"],
"maxResultsPerEndpoint": 500,
"includeEngagementMetrics": true,
"outputFormat": "json"
}

📤 Output Format

Pin

{
"id": "123456789",
"type": "pin",
"title": "Summer Outfit Ideas",
"description": "Perfect summer looks for 2025...",
"link": "https://example.com/article",
"url": "https://www.pinterest.com/pin/123456789/",
"dominantColor": "#e8d5b7",
"images": {
"small": "https://i.pinimg.com/236x/...",
"medium": "https://i.pinimg.com/474x/...",
"large": "https://i.pinimg.com/736x/...",
"original": "https://i.pinimg.com/originals/..."
},
"video": null,
"creator": {
"id": "987654321",
"username": "fashionbrand",
"fullName": "Fashion Brand Official",
"avatarUrl": "https://..."
},
"board": {
"id": "111222333",
"name": "Summer Collection",
"url": "/fashionbrand/summer-collection/"
},
"engagement": {
"saves": 15420,
"comments": 234,
"reactions": {}
},
"metadata": {
"createdAt": "2025-06-15T10:30:00Z",
"isPromoted": false,
"isVideo": false,
"isShoppable": true,
"domain": "example.com",
"richMetadata": null
},
"scrapedAt": "2025-07-05T06:00:00Z"
}

Board

{
"id": "111222333",
"type": "board",
"name": "Summer Collection",
"description": "Our best summer looks",
"url": "https://www.pinterest.com/fashionbrand/summer-collection/",
"privacy": "public",
"owner": {
"id": "987654321",
"username": "fashionbrand",
"fullName": "Fashion Brand Official"
},
"engagement": {
"pinCount": 342,
"followerCount": 12500,
"collaboratorCount": 0
},
"pins": [ ... ]
}

User Profile

{
"id": "987654321",
"type": "user",
"username": "fashionbrand",
"fullName": "Fashion Brand Official",
"bio": "Inspiring style since 2010",
"profileUrl": "https://www.pinterest.com/fashionbrand/",
"avatarUrl": "https://...",
"engagement": {
"followerCount": 250000,
"followingCount": 120,
"pinCount": 5430,
"boardCount": 28,
"monthlyViews": 1500000
},
"boards": [ ... ],
"recentPins": [ ... ]
}

🏗️ Architecture

pinterest-scraper/
├── apify.json # Actor manifest & input schema
├── Dockerfile # node:20 + Playwright + Chromium
├── package.json
├── README.md
├── INPUT_SCHEMA.md
└── src/
├── index.js # Entry point — orchestrator
├── config.js # API endpoints, headers, rate limits
├── controllers/
│ ├── pinController.js # Pin extraction
│ ├── boardController.js # Board metadata + pin listing
│ ├── userController.js # User profiles + boards + pins
│ └── searchController.js # Search, trending, discovery
└── utils/
├── httpClient.js # Authenticated HTTP client
└── parser.js # Response normalization

Data Flow

Input (URLs/keywords/usernames/boards)
PlaywrightCrawler → Visit pinterest.com → Extract cookies + CSRF
PinterestHttpClient (authenticated fetch)
├──▶ PinController → /resource/PinResource/get/
├──▶ BoardController → /resource/BoardResource/get/
├──▶ UserController → /resource/UserResource/get/
└──▶ SearchController → /resource/BaseSearchResource/get/
Parser (normalize JSON) → Apify Dataset

⚙️ Technical Details

Authentication

The Actor uses Playwright to visit Pinterest and obtain session cookies + CSRF token automatically. Optionally, you can provide pre-set cookies in the input for faster startup.

Rate Limiting

  • 40 requests/minute (configurable)
  • 1.5 second delay between API calls
  • 3 retries on failure with exponential backoff
  • Max concurrency: 5 parallel requests

Pagination

All Pinterest endpoints use bookmark-based cursor pagination. The Actor follows cursors until results are exhausted or the maxResultsPerEndpoint limit is reached.

Proxy Strategy

  • Uses Apify residential proxies by default when running on the platform
  • Supports custom proxy URLs for self-hosted runs
  • Session rotation on proxy failures

💰 Pricing Estimate

VolumeEst. CostNotes
100 results~$0.20Quick test
1,000 results~$1.99Standard run
10,000 results~$15Large extraction
100,000 results~$120Enterprise batch

Costs depend on proxy usage, compute time, and Apify plan.


📋 Limitations

  • Pinterest may change internal API endpoints without notice
  • Anonymous sessions have lower rate limits than authenticated ones
  • Video content URLs may expire after a few hours
  • Some promoted/ad pins may have limited metadata

📄 License

ISC