# Pinterest Search Scraper — Pins, Boards, People & Links (`lergassy/pinterest-search-scraper`) Actor

\[$1.60/1K results] Pinterest search for any keyword: pins with title, outbound link and domain, full-size image, video, topic tags, hashtags, reactions, pinner and board — or boards and people. Optional saves, comments, shares. Promoted pins free. No login, no run fee.

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

## Pricing

from $1.12 / 1,000 results

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/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 Search Scraper** scrapes Pinterest search results by keyword and returns pins as JSON — title, description, outbound link and its domain, full-size image, video file, Pinterest's topic tags, hashtags, reactions, pinner with follower count, board and date — or, if you choose, boards or people (profiles) matching the keyword. Saves, comments and shares per pin are one switch away.

**$0.0016 per result** — 1,000 pins for $1.60. No start fee, no login, no browser. Promoted pins are skipped and never charged; searches that fail are free.

### Tested head-to-head — 15 October 2026

The same search ("bali villa", 20 pins) on this Actor and the five most-used Pinterest search Actors we could run with a $0.10 cost cap, each on a fresh free-plan account:

| | This Actor | Other Pinterest search Actors |
|---|---|---|
| Pins returned of 20 | **20 of 20** | 20 of 20 for three; one stopped at 10, one returned 3 boards instead of pins |
| Cost of the run on the free plan | **$0.032** | $0.033 (for 10 pins) – $0.098 (for 3 rows) |
| Start fee | **none** | none to $0.09 per run |
| Time | **2 s** | 2 – 90 s |
| Columns | **36 flat columns** — topic tags, link domain, pinner followers, board size side by side | 13–21 flat columns, or 63–759 nested raw fields |

### What is Pinterest Search Scraper?

A trend, content and competitor research tool for marketers, e-commerce brands, content creators, agencies and AI agents. It asks Pinterest the same question the search box does and turns every result into a clean row: what people pin for "minimalist kitchen", which websites those pins send traffic to, which creators and boards dominate a topic.

Typical uses:

- **Content and trend research** — what images, titles and descriptions win for your keyword this week.
- **Traffic source discovery** — `linkDomain` shows which websites Pinterest sends clicks to for a topic; a list of competitors comes out of one search.
- **Creator and board discovery** — switch **What to search** to *People* or *Boards* and get the accounts to partner with, with follower counts.
- **Video pin research** — *Video pins* returns the video file and duration for every result.
- **Image datasets** — full-size originals with width, height and dominant colour.

### What is in every row

| Field | Meaning |
|---|---|
| `pinId`, `url`, `title`, `description`, `altText` | The pin |
| `link`, `linkDomain` | Where the pin sends people — the website behind it |
| `imageUrl`, `imageWidth`, `imageHeight`, `dominantColor` | The full-size original image |
| `isVideo`, `videoUrl`, `videoDurationSec` | For video pins |
| `thumbnailUrl` | A small 236 px preview of the same image |
| `tags`, `hashtags` | Topic labels Pinterest attaches to the pin ("Bali Villa Floor Plan", "Modern Courtyard") and the #hashtags from its description |
| `reactions` | Reactions shown on the pin |
| `saves`, `comments`, `shares` | Only with **📊 Add details** on — Pinterest search does not show them, so without details these fields are left out rather than sent empty |
| `pinnerId`, `pinnerUsername`, `pinnerName`, `pinnerFollowers`, `pinnerUrl`, `pinnerAvatarUrl` | Who saved the pin |
| `boardId`, `boardName`, `boardUrl`, `boardPinCount` | The board it sits on |
| `createdAt`, `isPromoted` | Date; promoted flag |
| `price`, `priceCurrency` | Shopping pins only (left out on other pins) |
| `query`, `searchType`, `page`, `position` | Which search and where in the results |
| `searchedAs` | Only when Pinterest corrected your spelling: the words it actually searched ("minimalst kitchn" → "minimalist kitchen") |

**Board rows** (`type: board`): `boardId`, `name`, `url`, `description`, `pins`, `sections`, `isCollaborative`, `ownerUsername`, `ownerName`, `coverImageUrl`, `lastPinnedAt` — plus `followers` with **📊 Add details**.

**Profile rows** (`type: profile`): `username`, `name`, `url`, `followers`, `pins`, `boards`, `isVerified`, `websiteVerified`, `lastPinAt`, `avatarUrl`, `userId` — plus `about` (bio), `website`, `following`, `monthlyViews`, `createdAt` (join date), `isBusiness` and `isPrivate` with **📊 Add details** (Pinterest's people search does not say whether an account is a business one, so without details the field is left out rather than guessed).

**Error rows** (`type: error`, free) explain a search that found nothing, a URL that is not a Pinterest search, or a keyword with no letters — always at the end of the dataset, so the table starts with data.

### How much does it cost?

**$0.0016 per result** — pin, board or profile, one row, one charge. Cheaper on higher Apify plans: $0.00144 (Bronze), $0.00128 (Silver), $0.00112 (Gold and up).

- Promoted pins: skipped and **$0**.
- Searches that fail or find nothing, inputs that are not searches: **$0**. No start fee, no proxy charge.
- **📊 Add details**: same price per row, the run takes about twice as long.

| Job | This Actor | Most-used Pinterest search Actor |
|---|---|---|
| 1,000 pins | **$1.60** | $3.99 |
| 10,000 pins across 50 keywords | **$16** | $39.90 |

Checked on the Apify Store on 14 October 2026 against the Pinterest search Actor with the most monthly users ($0.00399 per result on the free plan, $0.00199 on Gold). Other popular Pinterest search Actors charge $0.002–0.00345 per result, some plus a start fee of $0.01–0.09 per run.

Set **Max cost per run** in the run options to cap a run: the Actor stops by itself, green, once the cap is reached, and everything written is paid for.

### How to use it in three steps

1. Type keywords into **🔍 Search keywords**, one per line — or paste Pinterest search URLs.
2. Pick **What to search** (Pins, Video pins, Boards or People) and how many **Results per search**.
3. Press **Start**, then download JSON, CSV or Excel — or call the run from the API, n8n, Make, Zapier or an AI agent.

### ⬇️ Input

```json
{
  "keywords": ["minimalist kitchen", "fall outfits"],
  "searchType": "pins",
  "maxItemsPerQuery": 200,
  "fetchPinStats": false
}
```

`fetchPinStats` is the **📊 Add details** switch (the API also accepts `fetchDetails`).

### ⬆️ Output

A real row from `{"keywords": ["cake recipe"], "searchType": "videos", "fetchPinStats": true}` (14 October 2026, shortened):

```json
{
  "type": "pin",
  "pinId": "140806234512418",
  "url": "https://www.pinterest.com/pin/140806234512418/",
  "title": "Hershey’s “perfectly chocolate” Chocolate Cake",
  "link": "https://tastesbetterfromscratch.com/hersheys-perfectly-chocolate-chocolate-cake/",
  "linkDomain": "tastesbetterfromscratch.com",
  "imageUrl": "https://i.pinimg.com/originals/79/99/fc/7999fcd5874a64ebce32b38d599bd0a7.jpg",
  "isVideo": true,
  "videoUrl": "https://v1.pinimg.com/videos/iht/hls/ca/c5/5f/cac55f5cf2298e231c12061035d88962_v2.m3u8",
  "videoDurationSec": 21,
  "reactions": 930,
  "saves": 9705,
  "comments": 0,
  "shares": 1586,
  "tags": ["Juicy Chocolate Cake", "Easy Cakes To Bake", "Chocolate Cake Chocolate Frosting"],
  "hashtags": [],
  "pinnerUsername": "xtina_nic",
  "pinnerFollowers": 475,
  "boardName": "Sweet corner",
  "boardPinCount": 835,
  "createdAt": "2025-10-21T00:34:27.000Z",
  "query": "cake recipe",
  "searchType": "videos",
  "position": 3
}
```

### Tips

- **Find the websites behind a niche:** run a keyword with 500 results and group rows by `linkDomain`.
- **Engagement ranking:** turn on **📊 Add details** and sort by `saves`.
- **Topic map:** count `tags` across 500 pins of a keyword — the labels Pinterest itself uses for the niche.
- **Typos:** Pinterest quietly searches a corrected spelling; the run's status message and `searchedAs` tell you when it did. A keyword Pinterest does not recognise at all still returns loose matches — the status message warns about it.
- **Deep searches:** on popular keywords Pinterest keeps paging well past 100 results; niche terms run out sooner.

### Integrations and API

Run it from the [Apify API](https://docs.apify.com/api/v2), the JavaScript and Python clients, a schedule, or a webhook, and push results to Google Sheets, Airtable, Slack or a database through **n8n**, **Make** or **Zapier**. The [Apify MCP server](https://mcp.apify.com) exposes it to Claude, ChatGPT and other agents as a tool: "find the 100 most-saved Pinterest pins about Bali villas and the sites they link to".

### For AI agents

- **Minimal input:** `{"keywords": ["bali villa"]}` — 50 pins. Add `"searchType": "boards"` or `"people"` for boards or profiles, `"maxItemsPerQuery": 200` for more.
- **Returns:** `type: "pin"`, `"board"` or `"profile"` rows; `type: "error"` rows (free) only at the end of the dataset. Every row carries `query` and `position`.
- **Cost:** $0.0016 per row, nothing per run; failed and empty searches are free.

### FAQ

**Is it legal to scrape Pinterest?** The Actor reads public search results any visitor sees without an account. Profile names and usernames are public business or creator information; you are responsible for how you use the data and for complying with Pinterest's terms and the privacy laws that apply to you (GDPR, CCPA).

**Do I need a Pinterest account or API key?** No.

**Why is `link` empty on some pins?** Those pins were uploaded straight to Pinterest and point nowhere — Pinterest shows them as "Uploaded by user".

### You might also like

- [Pinterest Scraper](https://apify.com/lergassy/pinterest-scraper) — the all-in-one version: search, profiles, boards and pin URLs in one run.
- [Pinterest Profile Scraper](https://apify.com/lergassy/pinterest-profile-scraper) — full profiles, their boards and their pins.
- [Threads Scraper](https://apify.com/lergassy/threads-scraper) — posts, profiles and replies from Threads.
- [TikTok Influencer Scraper](https://apify.com/lergassy/tiktok-influencer-scraper) — creator reach and engagement.

# Actor input Schema

## `keywords` (type: `array`):

One search per line — <b>bali villa</b>, <b>minimalist kitchen</b>, <b>fall outfits</b>. A repeated line is searched once.

## `searchType` (type: `string`):

Pins is what Pinterest shows by default. Boards and People return board and profile rows instead.

## `maxItemsPerQuery` (type: `integer`):

Pinterest pages through 25 at a time; the Actor keeps going until it has this many or Pinterest runs out.

## `fetchPinStats` (type: `boolean`):

Opens each result once more for what Pinterest search does not show. Pins: saves, comments and shares. Boards: followers. People: bio, website, following, monthly views and join date. Same price per row, about twice as slow.

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

Paste pinterest.com/search/pins/?q=… (or /boards/, /users/, /videos/) URLs instead of keywords. Pin, board and profile URLs are not searches — they come back as a free row that says so.

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

Off by default — Pinterest answers a direct request. A refused request is retried through a proxy automatically.

## Actor input object example

```json
{
  "keywords": [
    "bali villa"
  ],
  "searchType": "pins",
  "maxItemsPerQuery": 50,
  "fetchPinStats": false,
  "startUrls": [],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

One row per pin, board or profile found.

# 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 = {
    "keywords": [
        "bali villa"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("lergassy/pinterest-search-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 = {
    "keywords": ["bali villa"],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("lergassy/pinterest-search-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 '{
  "keywords": [
    "bali villa"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call lergassy/pinterest-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,lergassy/pinterest-search-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/UEf1BYb3pPUcUwayQ/builds/4MzipQ04gELtcsejd/openapi.json
