# Pinterest Scraper (`automly/pinterest-scraper`) Actor

Pinterest Scraper: Scrape Pinterest pins by keyword, board or profile: title, description, image, video, link, saves, comments, pinner and board, plus board and profile stats. No login. Export to CSV, JSON or Excel, schedule runs or use the API.

- **URL**: https://apify.com/automly/pinterest-scraper.md
- **Developed by:** [Automly](https://apify.com/automly) (community)
- **Categories:** Social media
- **Stats:** 9 total users, 5 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 pins

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

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Pinterest Scraper - Pins, Boards, Profiles & Search

### What is Pinterest Scraper?

**Pinterest Scraper** is a tool that lets you **scrape pins from Pinterest search results, boards and profiles**: title, description, full-size image, video, outbound link and domain, save count, comments, repins, reactions, creation date, the pinner and the board, plus **follower, pin and board counts for every board and profile** you ask for. Type a keyword or paste any Pinterest link, click **Start**, and download the pins as Excel, CSV or JSON.

- ⚡ **Fast:** a 1,150-pin board in about 30 seconds, 4,800 pins from three keywords, a board and a profile in under 2 minutes (our tests)
- 🔗 **Any link, any mix:** keywords, pins, boards, profiles, search pages and pin.it short links in one run
- 📊 **Engagement numbers:** saves, comments, repins, shares and reactions for every pin
- 🔓 **No login:** no Pinterest account needed
- 💸 **Free to try:** the $5 of free usage every Apify account gets each month covers about 3,300 pins

### What can Pinterest Scraper do?

- **Scrape Pinterest search results** for any keyword, like `modern kitchen` or `easy dinner recipes`
- **Scrape every pin on a Pinterest board**, with the board's followers, pin count and sections
- **Scrape a Pinterest profile**: followers, following, boards, pins, bio and website, plus the profile's pins
- **Scrape single Pinterest pins** from their links, including pin.it short links
- **Download Pinterest images** in full size and **Pinterest videos** (as MP4 files with full pin details)
- **Find the websites behind Pinterest pins**: every pin's outbound link and domain
- **Track Pinterest pin performance** over time with save, comment and repin counts
- Export to Excel, CSV, JSON, HTML or XML, or send the data to Google Sheets, Make, Zapier and more

### What data can you extract from Pinterest?

| | | |
|---|---|---|
| 📌 Pin title and description | 🖼️ Full-size image and thumbnail | 🎬 Video file and length |
| 🔗 Outbound link and domain | 💾 Saves | 💬 Comments |
| 🔁 Repins and shares | ❤️ Reactions | 📅 Date created |
| #️⃣ Hashtags | 🎨 Dominant color | 🏷️ Image description (alt text) |
| 👤 Pinner: username, name, followers | 📋 Board: name, link, owner | 📢 Promoted pin flag |
| 🗂️ Board followers, pins, sections, collaborators | 🧑 Profile followers and following | 🌐 Profile website, bio and Instagram |

### How to scrape Pinterest

1. [Create a free Apify account](https://console.apify.com/sign-up) (no credit card needed).
2. Open **Pinterest Scraper**.
3. Enter search keywords, or paste Pinterest pin, board or profile links, one per line.
4. Set how many pins you want per keyword or link, turn on **Include full pin details** if you need save and comment counts for search results, then click **Start**.
5. When the run finishes, download the pins as Excel, CSV, JSON, HTML or XML.

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

You pay only for the rows you get: per pin, and per board or profile summary row. The price per 1,000 depends on your Apify plan:

| Apify plan | Pins per 1,000 | Boards per 1,000 | Profiles per 1,000 |
|---|---|---|---|
| Free | **$1.50** | **$2.00** | **$2.00** |
| Starter (Bronze) | **$1.35** | **$2.00** | **$2.00** |
| Scale (Silver) | **$1.20** | **$2.00** | **$2.00** |
| Business (Gold) and higher | **$1.00** | **$2.00** | **$2.00** |

Platform usage is included in these prices, so you pay nothing extra for it.

Example: 1,000 pins cost $1.50 on the Free plan and $1.00 on Business. A board link with 1,000 pins adds one board row, $0.002 on any plan.

Every Apify account gets **$5 of free usage each month**, enough for about 3,300 pins. Setting **Max pins per keyword or link** keeps the cost of a run under control, and you can also set a maximum cost per run. See the **Pricing** tab for details.

### ⬇️ Input

| Setting | What it does |
|---|---|
| **Search keywords** | Words to search Pinterest for, like `modern kitchen` |
| **Pin, board or profile links** | Any mix of pins (`https://www.pinterest.com/pin/982910687447280283/`), boards (`https://www.pinterest.com/marthastewart/letscelebrate-pin-party/`), profiles (`https://www.pinterest.com/marthastewart/`), search pages and `pin.it` short links, from any Pinterest country site |
| **Max pins per keyword or link** | How many pins to save for each keyword, board or profile (default 100). Set 0 for all of them |
| **Include full pin details** | Adds save, comment, repin and share counts and the MP4 video to pins from search results, boards and profiles |

Pins for two keywords:

```json
{
  "searchQueries": ["modern kitchen", "boho bedroom"],
  "maxItems": 200
}
```

Every pin on a board, and a profile's stats with all its pins:

```json
{
  "startUrls": [
    "https://www.pinterest.com/marthastewart/letscelebrate-pin-party/",
    "https://www.pinterest.com/marthastewart/"
  ],
  "maxItems": 0
}
```

Search results with save and comment counts:

```json
{
  "searchQueries": ["wedding cake"],
  "maxItems": 100,
  "includeDetails": true
}
```

### ⬆️ Output

Every pin is one row. A board link also gives one board row, and a profile link one profile row; the `type` field says which. A pin from a search with full details on:

```json
{
  "type": "pin",
  "id": "703756188206293",
  "url": "https://www.pinterest.com/pin/703756188206293/",
  "title": "White Three Tier Wedding Cake",
  "description": "White three tier wedding cake with edible pearls",
  "link": "https://www.melanieparentevents.com/country-club-wedding/",
  "domain": "melanieparentevents.com",
  "imageUrl": "https://i.pinimg.com/originals/6f/07/55/6f07553c5ccd7c4e91bba0c9ce8408f5.jpg",
  "imageWidth": 801,
  "imageHeight": 1201,
  "thumbnailUrl": "https://i.pinimg.com/236x/6f/07/55/6f07553c5ccd7c4e91bba0c9ce8408f5.jpg",
  "isVideo": false,
  "videoUrl": null,
  "saves": 19737,
  "comments": 0,
  "repinCount": 2994,
  "shareCount": 86,
  "reactions": 544,
  "createdAt": "2025-04-16T14:31:15Z",
  "hashtags": [],
  "dominantColor": "#938773",
  "isPromoted": false,
  "isRepin": true,
  "pinner": {
    "username": "wendyywu001",
    "fullName": "Wendy H",
    "followerCount": 83,
    "profileUrl": "https://www.pinterest.com/wendyywu001/"
  },
  "board": {
    "name": "wedding",
    "url": "https://www.pinterest.com/wendyywu001/wedding/",
    "owner": "wendyywu001"
  },
  "source": "wedding cake",
  "sourceType": "search",
  "scrapedAt": "2026-10-01T15:17:27Z"
}
```

A board row:

```json
{
  "type": "board",
  "id": "32088284784058747",
  "url": "https://www.pinterest.com/marthastewart/letscelebrate-pin-party/",
  "name": "#LetsCelebrate Pin Party",
  "pinCount": 1165,
  "followerCount": 1507545,
  "sectionCount": 0,
  "collaboratorCount": 13,
  "isCollaborative": true,
  "category": "diy_crafts",
  "owner": {"username": "marthastewart", "fullName": "Martha Stewart", "isVerified": true}
}
```

A profile row has `username`, `fullName`, `about`, `websiteUrl`, `followerCount`, `followingCount`, `boardCount`, `pinCount`, `isVerified`, `isBusiness`, `instagramUrl`, `createdAt` and `lastPinSavedAt`.

The **Overview** tab lists every row, and the **Pins**, **Boards** and **Profiles** tabs show each kind as its own table with images. The run report names any pin, board or profile that does not exist.

### Which fields come with which input?

| Field | Search | Board | Profile | Pin link |
|---|---|---|---|---|
| Title, description, image, link, date, pinner, board | ✅ | ✅ | ✅ | ✅ |
| Saves | with details | ✅ | ✅ | ✅ |
| Repins | with details | ✅ | with details | ✅ |
| Comments and shares | with details | with details | with details | ✅ |
| MP4 video | with details | with details | with details | ✅ |

Pins with no title or link on Pinterest have empty `title` or `link` fields.

### How can I use Pinterest data?

- **Trend research:** see which ideas, products and styles get the most saves for a keyword
- **Content planning for creators and brands:** study top pins in your niche, their titles, descriptions and hashtags
- **Competitor tracking:** follow a competitor's boards and profile, their follower growth and best pins
- **Influencer discovery:** find active pinners in a niche with their follower counts and websites
- **E-commerce and affiliate research:** collect the websites and products pins link to
- **Image and video datasets:** download full-size images and videos with their descriptions

### How many pins can I get?

Boards and profiles are read to the end: every public pin on a board, and thousands of pins on a profile. For a search keyword, Pinterest shows visitors who are not logged in about 800 to 1,000 pins; add more keywords (`kitchen ideas`, `small kitchen ideas`, `kitchen decor`) to collect more. A pin that appears twice in one search, board or profile is saved once.

### Scrape more social media data

| Actor | What it gets |
|---|---|
| [Instagram Posts & Reels Scraper](https://apify.com/automly/instagram-profile-posts-scraper) | Posts and reels from any public Instagram profile: captions, likes, comment counts, hashtags, images and videos |
| [Instagram Profile Scraper](https://apify.com/automly/instagram-profile-data-scraper) | Public Instagram profiles: bio, followers, following, post count, website and verified badge |
| [TikTok Hashtag Scraper](https://apify.com/automly/tiktok-hashtag-scraper) | TikTok videos from any hashtag: captions, views, likes, comments, shares and creator |
| [TikTok Search Scraper](https://apify.com/automly/tiktok-search-scraper) | TikTok videos or accounts for a keyword, ranked as TikTok shows them |
| [YouTube Search Scraper - Videos, Channels & Playlists](https://apify.com/automly/youtube-search-results-scraper) | Ranked YouTube videos, channels and playlists for a keyword, with views, durations and upload dates |

### ❓FAQ

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

$1.50 per 1,000 pins on the Free plan, down to $1.00 on Business, and $2.00 per 1,000 board or profile rows. See the cost section above for every plan.

#### How many pins can I scrape from one keyword?

About 800 to 1,000 pins per search keyword, the number Pinterest shows visitors. Boards are read to the end, and profiles give thousands of pins. Add more keywords to collect more search results.

#### Can I download Pinterest images and videos?

Yes. `imageUrl` is the full-size original image and `thumbnailUrl` a small version. For video pins, `videoUrl` is the video; turn on **Include full pin details** to get an MP4 file for search, board and profile pins.

#### Can I scrape a Pinterest board's sections?

Paste the board's own link: its pins come through, including the pins in its sections. Links to a single section are not supported yet.

#### Do I need a Pinterest account?

No. The scraper reads the same public pins, boards and profiles anyone can see without signing in. Private boards and secret pins are not available.

#### What happens with a deleted pin or a wrong link?

The run goes on with the other inputs, and the run report lists the pins, boards and profiles that do not exist. A link that is not a Pinterest pin, board, profile or search page is named in the error message before the run starts.

#### Can I connect Pinterest Scraper to other tools or AI agents?

Yes. Start runs and download results with the Apify API or the Python and JavaScript clients, send results to Make, Zapier, n8n, Google Sheets or Slack with Apify integrations and webhooks, or let AI assistants and agents run it through the Apify MCP server at [mcp.apify.com](https://mcp.apify.com).

You can also call its real-time API at `/search?query=...` and `/url?url=...`, which answers with the pins directly, without starting a run.

#### Is it legal to scrape Pinterest?

This scraper collects only publicly available pins, boards and profiles. Profiles and pins can contain personal data, which may be protected by laws such as the GDPR, so only collect it for a legitimate reason, respect copyright when you reuse images, and ask a lawyer if you are unsure. You can read more in [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

Pinterest Scraper is an independent tool. It is not affiliated with, endorsed by or sponsored by Pinterest.

#### Something isn't working?

Open the **Issues** tab with your input and what you expected, or tell us which field you need. We read every one and usually reply within a day.

### ⭐ Your feedback

Have an idea or found a problem? Open the **Issues** tab and tell us. If Pinterest Scraper saved you time, a short review on the **Reviews** tab helps other people find it.

# Actor input Schema

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

Enter keywords to search Pinterest pins for, one per line ("modern kitchen", "easy dinner recipes").

## `startUrls` (type: `array`):

Paste Pinterest links in any mix: pins (pinterest.com/pin/...), boards (pinterest.com/username/board-name/), profiles (pinterest.com/username/), search pages or pin.it short links. Any Pinterest country site works.

## `maxItems` (type: `integer`):

How many pins to save for each keyword, board or profile. Set 0 for all of them. A board or profile link also gives one summary row.

## `includeDetails` (type: `boolean`):

Add save, comment, repin and share counts and the MP4 video file to every pin from search results, boards and profiles. Slower: about 3 times fewer pins per minute.

## `proxyConfiguration` (type: `object`):

Apify Proxy works out of the box.

## Actor input object example

```json
{
  "searchQueries": [
    "modern kitchen"
  ],
  "startUrls": [
    "https://www.pinterest.com/marthastewart/"
  ],
  "maxItems": 50,
  "includeDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

No description

## `pins` (type: `string`):

No description

## `boards` (type: `string`):

No description

## `profiles` (type: `string`):

No description

## `results` (type: `string`):

No description

## `report` (type: `string`):

No description

# 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": [
        "modern kitchen"
    ],
    "startUrls": [
        "https://www.pinterest.com/marthastewart/"
    ],
    "maxItems": 50,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("automly/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": ["modern kitchen"],
    "startUrls": ["https://www.pinterest.com/marthastewart/"],
    "maxItems": 50,
    "proxyConfiguration": { "useApifyProxy": True },
}

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

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).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": [
    "modern kitchen"
  ],
  "startUrls": [
    "https://www.pinterest.com/marthastewart/"
  ],
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call automly/pinterest-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,automly/pinterest-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/0sCLMXvu0dRXTz0qd/builds/yoICMgAJzcy4dNIDc/openapi.json
