# Pinterest Scraper — Pins, Boards & Search Results (`automation-lab/pinterest-scraper`) Actor

Extract Pinterest pins from search queries, board URLs, or pin URLs. Get images, descriptions, saves, pinner and board metadata, hashtags, source domains, and outbound links without login.

- **URL**: https://apify.com/automation-lab/pinterest-scraper.md
- **Developed by:** [Stas Persiianenko](https://apify.com/automation-lab) (community)
- **Categories:** Social media, Marketing
- **Stats:** 822 total users, 254 monthly users, 99.3% runs succeeded, 2 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### What does Pinterest Scraper do?

**Pinterest Scraper** extracts pin data from [Pinterest](https://www.pinterest.com) — the world's largest visual discovery platform. Search for pins by keyword, scrape entire boards, or extract data from individual pin URLs. No login or API key required.

The scraper returns **images, descriptions, save counts, hashtags, pinner info, and board details** for every pin. It uses Pinterest's internal API for fast, reliable extraction with pure HTTP requests — no browser overhead.

Try it now with the default input or [read the full guide](https://apify.com/automation-lab/pinterest-scraper) to get started.

### Who is it for?

**Marketing teams & content creators**

- Track trending visual content in your niche
- Analyze competitor Pinterest strategies and top-performing pins
- Research hashtags and descriptions that drive engagement

**E-commerce & product managers**

- Monitor how your products appear on Pinterest
- Extract product imagery and descriptions from competitor boards
- Build visual mood boards for product development

**Data analysts & researchers**

- Study visual trends across industries and time periods
- Collect large datasets of images with metadata for analysis
- Track save counts and engagement patterns

**SEO & social media specialists**

- Find high-performing keywords and hashtags on Pinterest
- Monitor brand mentions and pins linking to your website
- Analyze outbound link patterns from popular pins

### Why use Pinterest Scraper?

- 📌 **Three scraping modes** — search by keyword, scrape boards, or extract individual pins
- ⚡ **Pure HTTP, no browser** — 10x faster and cheaper than browser-based alternatives
- 🔒 **No login required** — works without a Pinterest account
- 🖼️ **Full-resolution images** — get original image URLs, not just thumbnails
- 📊 **Engagement metrics** — save counts for every pin
- \#️⃣ **Hashtag extraction** — automatically parses hashtags from descriptions
- 🔄 **Pagination support** — extract up to 1,000 pins per query
- 📁 **Export anywhere** — JSON, CSV, Excel, or connect to 5,000+ apps via API

### Fast-start recipe

1. Paste the smallest input that matches your job: one keyword, one URL, one listing ID, one username, or a short domain list.
2. Keep the first run small (result limit of 10-50) to validate fields and cost.
3. Export the dataset as CSV/Excel for spreadsheet review, or use the Apify API/webhooks for scheduled monitoring.
4. Scale the same input pattern once the sample output matches your workflow.

### Which mode should I use?

| Mode | Best for | First-run example |
|---|---|---|
| Search query | Trend discovery and topic research | `searchQueries: ["home office ideas"]`, `maxPins: 25` |
| Board URL | Competitor or creator audits | Paste one board URL and keep the pin limit small |
| Pin URL | Enriching known pins | Paste 1-5 pin URLs to validate fields |

### FAQ

**Can I scrape profiles or comments?**

This actor focuses on pins, search results, boards, and pin URLs. It does not claim full profile or comment scraping.

Need to validate demand around Pinterest topics? Pair the output with [Google Search Results Scraper](https://apify.com/automation-lab/google-search-scraper), or use [Google Shopping Scraper](https://apify.com/automation-lab/google-shopping-scraper) after discovering visual product trends.

### What data can you extract?

Each pin includes up to **18 data fields**:

| Category | Fields |
|----------|--------|
| 📌 **Pin info** | id, title, description, URL, creation date |
| 🖼️ **Images** | Full-resolution image URL, thumbnail URL, dominant color, alt text |
| 📊 **Engagement** | Save count (repins) |
| 👤 **Pinner** | Username, display name, follower count |
| 📋 **Board** | Board name, board URL |
| 🔗 **Links** | Source domain, outbound link URL |
| #️⃣ **Tags** | Extracted hashtags, video flag |

### How much does it cost to scrape Pinterest?

This Actor uses **pay-per-event** pricing — you pay only for what you scrape. No monthly subscription. All platform costs are **included**.

| | Free | Starter ($29/mo) | Scale ($199/mo) | Business ($999/mo) |
|---|---|---|---|---|
| **Per pin** | $0.00345 | $0.003 | $0.00234 | $0.0018 |
| **1,000 pins** | $3.45 | $3.00 | $2.34 | $1.80 |

Higher-tier plans get additional volume discounts.

**Real-world cost examples:**

| Query | Pins | Duration | Cost (Free tier) |
|---|---|---|---|
| "cats" | 5 | ~5s | ~$0.02 |
| "home office ideas" | 25 | ~10s | ~$0.09 |
| "wedding decorations" | 50 | ~14s | ~$0.17 |
| "travel photography" | 100 | ~21s | ~$0.35 |

With the free $5 credit, you can scrape approximately **1,400 pins** at no cost.

### How to scrape Pinterest pins

1. Go to the [Pinterest Scraper](https://apify.com/automation-lab/pinterest-scraper) page on Apify Store
2. Click **Try for free** to open the actor in Apify Console
3. Enter your search query (e.g., "minimalist kitchen design") in the **Search queries** field
4. Set **Max pins per query** to control how many results to extract (default: 25)
5. Click **Start** and wait for the run to complete
6. Download your data as JSON, CSV, or Excel from the **Dataset** tab

**Example: Search for pins**

```json
{
    "searchQueries": ["minimalist kitchen design"],
    "maxPins": 25
}
```

**Example: Scrape a board**

```json
{
    "boardUrls": ["https://www.pinterest.com/username/board-name/"],
    "maxPins": 100
}
```

**Example: Extract a single pin**

```json
{
    "pinUrls": ["https://www.pinterest.com/pin/123456789/"]
}
```

### Input parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `searchQueries` | string\[] | `[]` | Pinterest search terms. Each query returns up to `maxPins` results. |
| `boardUrls` | string\[] | `[]` | Pinterest board URLs to scrape pins from (e.g., `https://www.pinterest.com/user/board/`). |
| `pinUrls` | string\[] | `[]` | Individual pin URLs to extract data from. |
| `maxPins` | number | `50` | Maximum pins to extract per query or board. Range: 1–1,000. |
| `proxy` | object | Apify auto | Proxy configuration. Uses Apify proxy by default. |

### Output example

```json
{
    "id": "1020839440598637528",
    "title": "Small Japandi Kitchen Ideas That Make Your Space Look Bigger & Warmer",
    "description": "Looking for small kitchen design ideas that feel warm, modern, and clutter-free?...",
    "url": "https://www.pinterest.com/pin/1020839440598637528/",
    "imageUrl": "https://i.pinimg.com/originals/5d/67/cc/5d67ccc90f6d35b8e064841fb611bed3.png",
    "thumbnailUrl": "https://i.pinimg.com/236x/5d/67/cc/5d67ccc90f6d35b8e064841fb611bed3.jpg",
    "altText": "a kitchen filled with lots of wooden cabinets and counter top space",
    "domain": "Uploaded by user",
    "link": null,
    "saves": 2,
    "pinnerUsername": "CozyNestDesigns22",
    "pinnerName": "Cozy Nest Designs2",
    "pinnerFollowers": 336,
    "boardName": "Kitchen Ideas",
    "boardUrl": "https://www.pinterest.com/CozyNestDesigns22/kitchen-ideas/",
    "dominantColor": "#ae957e",
    "createdAt": "Wed, 04 Mar 2026 22:41:54 +0000",
    "isVideo": false,
    "hashtags": []
}
```

### Tips for best results

- 📌 **Start small** — set `maxPins` to 10–25 for your first run to check data quality before scaling up
- 🔍 **Use specific queries** — "mid-century modern living room" returns more relevant pins than "living room"
- 📋 **Board URLs must include the username** — format: `https://www.pinterest.com/username/board-name/`
- 💰 **Control costs** — each pin costs $0.003 (Starter tier), so 1,000 pins = $3.00
- ⏰ **Schedule regular runs** — set up weekly scrapes to track trending content over time
- 🖼️ **Use `imageUrl` for full resolution** — the `thumbnailUrl` field is a 236px preview

### Integrations

- **Pinterest Scraper → Google Sheets** — automatically export new pins to a spreadsheet for your content calendar
- **Pinterest Scraper → Slack/Discord** — get notified when new trending pins match your keywords
- **Pinterest Scraper → Make/Zapier** — trigger workflows when pins with specific hashtags are found
- **Scheduled runs** — scrape Pinterest weekly to monitor trending content in your industry
- **Webhooks** — process pins in real-time as they're extracted for immediate analysis
- **API integration** — call the scraper programmatically from your app to build Pinterest data pipelines

### API usage

**Node.js:**

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });

const run = await client.actor('automation-lab/pinterest-scraper').call({
    searchQueries: ['minimalist kitchen design'],
    maxPins: 50,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

**Python:**

```python
from apify_client import ApifyClient

client = ApifyClient('YOUR_API_TOKEN')

run = client.actor('automation-lab/pinterest-scraper').call(run_input={
    'searchQueries': ['minimalist kitchen design'],
    'maxPins': 50,
})

items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)
```

**cURL:**

```bash
curl "https://api.apify.com/v2/acts/automation-lab~pinterest-scraper/runs" \
  -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -d '{"searchQueries": ["minimalist kitchen design"], "maxPins": 50}'
```

### Use with AI agents via MCP

Pinterest Scraper is available as a tool for AI assistants that support the [Model Context Protocol (MCP)](https://docs.apify.com/platform/integrations/mcp).

Add the Apify MCP server to your AI client — this gives you access to all Apify actors, including this one:

#### Setup for Claude Code

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/pinterest-scraper"
```

#### Setup for Claude Desktop, Cursor, or VS Code

Add this to your MCP config file:

```json
{
    "mcpServers": {
        "apify": {
            "url": "https://mcp.apify.com?tools=automation-lab/pinterest-scraper"
        }
    }
}
```

Your AI assistant will use OAuth to authenticate with your Apify account on first use.

#### Example prompts

Once connected, try asking your AI assistant:

- "Search Pinterest for 'boho bedroom ideas' and save the top 50 pins to a spreadsheet (use automation-lab/pinterest-scraper)"
- "Extract all pins from this Pinterest board and show me which ones have the most saves"
- "Find Pinterest pins about 'vegan meal prep' and list the ones that link to external recipe websites"

Learn more in the [Apify MCP documentation](https://docs.apify.com/platform/integrations/mcp).

### Legality: is it legal to scrape Pinterest?

Web scraping of publicly available data is generally legal, as confirmed by the 2022 US court ruling in *hiQ Labs v. LinkedIn*. This scraper only accesses publicly visible Pinterest content — no login credentials are used.

Always use scraped data responsibly:

- Respect Pinterest's terms of service
- Comply with GDPR and other data protection laws when handling personal data
- Do not use scraped data for spam, harassment, or unauthorized commercial purposes
- Consider the intended use of collected data and its impact on individuals

For more information, see Apify's guide on [ethical web scraping](https://blog.apify.com/is-web-scraping-legal/).

### FAQ

**How fast is Pinterest Scraper?**
The scraper extracts approximately 5–10 pins per second using pure HTTP requests. A typical 100-pin search completes in about 20 seconds. It's significantly faster than browser-based alternatives.

**How much does it cost to scrape 10,000 Pinterest pins?**
At the Starter tier ($29/mo), 10,000 pins cost $30. On the free plan ($5 credit), you can scrape about 1,400 pins at no cost. Higher-tier plans offer discounts up to 72%.

**How does this compare to Pinterest's official API?**
Pinterest's official API requires an approved developer account and has strict rate limits. This scraper works without any API key or approval process. It extracts more data fields than the standard API, including save counts and full-resolution images.

**Why are some fields empty or null?**
Some pins don't have titles, outbound links, or hashtags. The `link` field is null when the pin was uploaded directly (not saved from a website). The `hashtags` field is empty when the description doesn't contain any hashtags.

**Why did my board scrape return 0 results?**
Board scraping requires a valid, public board URL in the format `https://www.pinterest.com/username/board-name/`. Private boards and boards from deactivated accounts will return empty results.

### How do you find trending content on Pinterest for a specific niche?

Pinterest does not publish a public trending feed via its API, but you can approximate it by monitoring keyword search results over time:

1. Run the scraper weekly with the same `searchQueries` (e.g., "minimalist home office 2026").
2. Sort results by `saves` descending — pins with the most saves tend to reflect what Pinterest's algorithm is surfacing.
3. Compare across weekly datasets: pins that jump in save count between runs are gaining traction.
4. Look at `pinnerFollowers` — high-save pins from small accounts signal organic virality rather than influencer amplification.

This approach works well for content planning, identifying rising hashtags, and spotting trending aesthetics before they peak.

### How do you monitor a competitor's Pinterest board for new content?

Use the `boardUrls` input mode and schedule recurring runs:

1. Find your competitor's board URL (format: `https://www.pinterest.com/username/board-name/`).
2. Add it to `boardUrls` and set `maxPins` to a reasonable number (e.g., 50).
3. Schedule the scraper to run weekly in Apify Console.
4. Connect a webhook to Slack or email to be notified when the run completes.
5. Compare each run's dataset to the previous one — new pins will have `createdAt` timestamps after your last run.

This is useful for tracking competitor campaign launches, seasonal content strategies, and new product imagery.

### How does Pinterest Scraper compare to the official Pinterest API?

The official Pinterest API requires applying for developer access, going through an approval process, and agreeing to strict usage restrictions. It has rate limits, requires OAuth authentication, and limits the data fields available per endpoint.

This scraper bypasses all of that — no approval, no OAuth, no restrictions on data volume. It also returns more fields than the official API in many cases, including `dominantColor`, full-resolution `imageUrl`, and parsed `hashtags`. The trade-off is that Pinterest may update its internal API structure without notice, which can require scraper maintenance.

### How do you extract Pinterest images for a dataset or visual AI project?

Each pin output includes two image URLs:

- `imageUrl` — the original full-resolution upload (PNG or JPEG, typically 600–4000px wide)
- `thumbnailUrl` — a 236px preview version

For dataset collection, use `imageUrl` and download programmatically using any HTTP client. The URLs are direct `i.pinimg.com` links that do not require authentication. For large-scale image collection (thousands of pins), consider running the scraper via the Apify API and processing the dataset stream in batches to avoid memory issues.

### Related social media scrapers

- [Instagram Scraper](https://apify.com/automation-lab/instagram-scraper) — extract posts, reels, and profile data from Instagram
- [TikTok Scraper](https://apify.com/automation-lab/tiktok-scraper) — scrape TikTok videos, profiles, and hashtags
- [Twitter/X Scraper](https://apify.com/automation-lab/twitter-scraper) — extract tweets, profiles, and trends from X
- [Threads Scraper](https://apify.com/automation-lab/threads-scraper) — scrape Meta Threads posts and profiles
- [Bluesky Scraper](https://apify.com/automation-lab/bluesky-scraper) — scrape Bluesky posts, profiles, and search results
- [YouTube Scraper](https://apify.com/automation-lab/youtube-scraper) — extract videos, channels, and comments from YouTube
- [Reddit Scraper](https://apify.com/automation-lab/reddit-scraper) — scrape posts, comments, and subreddits from Reddit

### Use with AI agents via x402 (no Apify account)

Agent workflows can run this actor through Apify MCP without an Apify account when the MCP client uses a funded x402 wallet. Use the actor-specific MCP endpoint:

`https://mcp.apify.com?tools=automation-lab/pinterest-scraper&payment=x402`

This keeps existing Apify MCP/API usage unchanged; x402 only changes payment/authentication for clients that support it. Learn more in Apify's [x402 integration docs](https://docs.apify.com/platform/integrations/x402).

# Actor input Schema

## `searchQueries` (type: `array`):

Enter Pinterest search terms. Each query returns up to maxPins results.

## `boardUrls` (type: `array`):

Enter Pinterest board URLs to scrape all pins from. Format: https://www.pinterest.com/username/board-name/

## `pinUrls` (type: `array`):

Enter individual Pinterest pin URLs to scrape. Format: https://www.pinterest.com/pin/123456789/

## `maxPins` (type: `integer`):

Maximum number of pins to extract per search query or board. Keep low for first runs to control costs.

## `proxy` (type: `object`):

Select proxies to use for scraping. The default US residential route avoids empty Pinterest responses from cloud datacenter IPs.

## Actor input object example

```json
{
  "searchQueries": [
    "minimalist kitchen design"
  ],
  "boardUrls": [],
  "pinUrls": [],
  "maxPins": 5,
  "proxy": {
    "useApifyProxy": true,
    "groups": [
      "RESIDENTIAL"
    ],
    "countryCode": "US"
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

Dataset containing all extracted Pinterest pin records.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchQueries": [
        "minimalist kitchen design"
    ],
    "boardUrls": [],
    "pinUrls": [],
    "maxPins": 5,
    "proxy": {
        "useApifyProxy": true,
        "groups": [
            "RESIDENTIAL"
        ],
        "countryCode": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/pinterest-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchQueries": ["minimalist kitchen design"],
    "boardUrls": [],
    "pinUrls": [],
    "maxPins": 5,
    "proxy": {
        "useApifyProxy": True,
        "groups": ["RESIDENTIAL"],
        "countryCode": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/pinterest-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQueries": [
    "minimalist kitchen design"
  ],
  "boardUrls": [],
  "pinUrls": [],
  "maxPins": 5,
  "proxy": {
    "useApifyProxy": true,
    "groups": [
      "RESIDENTIAL"
    ],
    "countryCode": "US"
  }
}' |
apify call automation-lab/pinterest-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=automation-lab/pinterest-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/Kb4YyqF4k8jzlhhVO/builds/Nt38EGYPC5rQJw99O/openapi.json
