# Pinterest Scraper: Pins, Profiles, Boards & Saves (`precious_bathmat/pinterest-scraper`) Actor

Scrape Pinterest pins from searches, profiles and boards with save counts, links, websites, images and videos. Get profile stats (followers, monthly views, boards) and board stats too. No login, no API key.

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

## Pricing

from $1.50 / 1,000 pins

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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, Profiles, Boards & Saves

Scrape **Pinterest** with **no login and no API key**: pins from **searches**, **profiles** and **boards**, each with its **save count**, link, website, image and video, plus **profile and board stats**.

- **Pins from anywhere**: a keyword search, a profile, a board, a single pin or a pin.it short link
- **Save counts**: every pin from a profile or board comes with its saves; switch on one option to get saves for search pins too
- **Where pins send traffic**: the outbound link, the website it belongs to (Amazon short links folded into amazon.com) and whether it is an affiliate link
- **Images and videos**: original image URL, video URL and length, format (image, video or Idea Pin)
- **Profile stats**: followers, **monthly views**, total pins and boards, verified website and merchant badges, posting pace in the last 30 days, average saves per pin, and every board with its pins and followers
- **Board stats**: pins, followers, collaborators, category, last pin date
- **Up to 10,000 pins per search, profile or board**

### What does this Pinterest scraper do?

```
pinterest.com/kingarthurbaking
 135,778 followers · 8,686,481 monthly views · 17,383 pins on 82 boards
 Verified merchant · website verified · 6 new pins in the last 30 days
 Average 337 saves per pin across its 300 latest pins
```

1. Enter **search keywords** and/or **Pinterest addresses** (profiles, boards, pins).
2. Choose how many pins to take from each.
3. You get **one row per pin** and **one row per profile or board**.

```mermaid
flowchart LR
    A[Keywords] --> D[Pins<br/>saves, link, website,<br/>image, video, date]
    B[Profiles] --> D
    C[Boards] --> D
    P[Pin URLs] --> D
    B --> E[Profile stats<br/>followers, monthly views,<br/>boards, posting pace]
    C --> F[Board stats<br/>pins, followers]
```

### Who is it for?

- **Pinterest marketers and bloggers**: see which pins in your niche get saved most and which websites they send traffic to
- **E-commerce and Etsy sellers**: find the products, styles and stores that win on Pinterest
- **Brands and agencies**: benchmark competitors' profiles (followers, monthly views, posting pace, average saves)
- **Content creators**: collect ideas, images and Idea Pins for a topic
- **Researchers and data teams**: build image and trend datasets

### What data do you get?

**Pins** (default dataset, one row per pin)

| Field | What it tells you |
|---|---|
| `pinId`, `pinUrl`, `title`, `description`, `altText` | The pin |
| `saves`, `reactions`, `comments` | How popular it is |
| `link`, `website`, `isAffiliateLink` | Where it sends people |
| `imageUrl`, `videoUrl`, `videoDurationSec`, `format`, `dominantColor` | The media: image, video or Idea Pin |
| `createdAt`, `ageDays` | When it was pinned |
| `creatorUsername`, `creatorFollowers`, `creatorUrl`, `attributedTo` | The account that pinned it |
| `boardName`, `boardUrl`, `pinterestTopics`, `isPromoted` | Where it lives, Pinterest's topic tags, whether it is an ad |
| `source`, `sourceType`, `position` | Which search, profile or board it came from, and its rank there |

**Profiles and boards** (second dataset)

| Field | What it tells you |
|---|---|
| `username`, `displayName`, `about`, `website`, `websiteVerified` | The account |
| `followers`, `following`, `monthlyViews`, `pins`, `boards` | Size and reach |
| `isBusinessAccount`, `isVerifiedMerchant` | Account type |
| `latestPinAt`, `pinsLast30Days`, `avgSavesPerPin`, `videoOrIdeaPinPercent` | Activity, from the pins read |
| `topBoards` | Every board: name, pins, followers, collaborators, last pin date |
| Board rows: `name`, `owner`, `pins`, `followers`, `collaborators`, `category`, `lastPinAt` | One row per board asked for |

### Example: 7 October 2026

Four searches, three profiles and one board, **300 pins each: 2,401 pins in 8 minutes 25 seconds.**

| Source | Median saves | Most saved pin | Websites pins send traffic to |
|---|---|---|---|
| Search "fall nail designs" | 1,173 | 136,006 | etsy.com (40), amazon.com (11) |
| Search "small business ideas" | 105 | 40,725 | instagram.com (29), dollarsanity.com (8) |
| Search "sourdough bread" | 41 | 95,522 | instagram.com (36), etsy.com (9) |
| Search "boho living room" | 32.5 | 36,533 | amazon.com (20), indochinadecor.com (5) |
| Profile kingarthurbaking | 19 | 5,278 | kingarthurbaking.com (299) |
| Profile IKEAUSA | 2 | 62 | ikea.com (259), ikea.us (38) |

| Profile | Followers | Monthly views | Pins | New pins, last 30 days |
|---|---|---|---|---|
| marthastewart | 1,868,075 | 5,851,192 | 105,475 | 263 of the 300 read |
| IKEAUSA | 771,713 | 10M+ | 568,681 | 30 |
| kingarthurbaking | 135,778 | 8,686,481 | 17,383 | 6 |

- **Search pins beat brand profiles on saves** by a wide margin: the median "fall nail designs" pin has 1,173 saves; the median IKEA pin has 2.
- **Etsy and Amazon** are the top destinations for nail and decor searches; recipe searches send more people to Instagram.
- IKEA posts mostly **Idea Pins** (87% of its latest 300).

### Pricing

**$0.0015 per pin**, **$0.003 per profile or board**, and **$0.001 per search pin** when **Save counts for search pins** is on.

- 100 pins from a profile, with the profile stats: **$0.15**
- 100 search pins with save counts: **$0.25**
- The run above (2,401 pins, 1,164 search pin pages, 4 profiles and boards): **$4.78**

Set **Pins per search, profile or board** to 0 to pay only for profile and board stats.

### Good to know

- **Saves for search pins**: Pinterest's search results do not include save counts. With the option on, each search pin's page is opened for it (about 97% succeed). Pins from profiles and boards always include saves.
- **Monthly views** of 10,000,001 means Pinterest shows "10M+" for that profile.
- **No personal names**: pins carry the creator's public username only.
- **A profile's boards** include group boards it joined, listed with their real owner.
- **Speed**: about 300 profile or board pins in a few seconds (250 per request); search with save counts is slower, about 4 pins a second.
- Data comes from **Pinterest's public pages**. **Not affiliated with Pinterest.**

### Input

| Field | Meaning |
|---|---|
| **Search keywords** | One search per line |
| **Profiles, boards and pins** | Pinterest addresses or @usernames, one per line; any country domain and pin.it links work |
| **Pins per search, profile or board** | 0 to 10,000 (default 100) |
| **Save counts for search pins** | Off by default |
| **List each profile's boards** | On by default |

### Integrations

Export to JSON, CSV, Excel or Google Sheets, or connect through the Apify API, webhooks, Make, Zapier and n8n. **Schedule it weekly** on your competitors' profiles to track followers, monthly views and posting pace over time.

# Actor input Schema

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

One search per line, as you would type it on Pinterest ("sourdough bread", "boho living room").

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

Pinterest addresses, one per line: a profile (pinterest.com/kingarthurbaking or @kingarthurbaking), a board (pinterest.com/user/board-name), a pin (pinterest.com/pin/123...) or a pin.it short link. Any country domain works.

## `maxPinsPerSource` (type: `integer`):

Most pins to save from each search, profile or board. 0 saves only the profile and board stats.

## `pinDetails` (type: `boolean`):

Pins from search arrive without their save count. Turn this on to open each search pin's page for saves, comments and Pinterest's topic tags ($0.001 per pin). Pins from profiles and boards always include saves.

## `includeBoards` (type: `boolean`):

Add the profile's boards (name, pins, followers, last pin date) to the profile row.

## Actor input object example

```json
{
  "searchQueries": [
    "sourdough bread"
  ],
  "startUrls": [
    "https://www.pinterest.com/kingarthurbaking/"
  ],
  "maxPinsPerSource": 100,
  "pinDetails": false,
  "includeBoards": true
}
```

# Actor output Schema

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

One row per pin: title, description, saves, link, website, image, video, format, date, creator, board, topics.

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

Profile stats (followers, monthly views, pins, boards, posting pace, average saves) and board stats.

## `summary` (type: `string`):

Counts and problems.

# 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": [
        "sourdough bread"
    ],
    "startUrls": [
        "https://www.pinterest.com/kingarthurbaking/"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("precious_bathmat/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": ["sourdough bread"],
    "startUrls": ["https://www.pinterest.com/kingarthurbaking/"],
}

# Run the Actor and wait for it to finish
run = client.actor("precious_bathmat/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": [
    "sourdough bread"
  ],
  "startUrls": [
    "https://www.pinterest.com/kingarthurbaking/"
  ]
}' |
apify call precious_bathmat/pinterest-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,precious_bathmat/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/rFcL9UUwkaTwIFthn/builds/g8fEWPEBvQ3l5Rh66/openapi.json
