# Pinterest Search Scraper (`data_wiki/pinterest-search-scraper`) Actor

Search Pinterest by keyword and get pins, videos, boards and creators with images, authors, saves and product prices. No login needed. Great for trend spotting, content ideas and finding top creators. Export to Excel or CSV.

- **URL**: https://apify.com/data_wiki/pinterest-search-scraper.md
- **Developed by:** [Data WiKi](https://apify.com/data_wiki) (community)
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.80 / 1,000 results

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

### 🚀 What is Pinterest Search Scraper?

Pinterest Search Scraper is an Apify Actor that searches Pinterest by keyword or search link and returns pins, video pins, boards or creators as structured data: titles, images, authors, reaction counts, products with prices and related searches. No Pinterest account is needed, and you can download the results as JSON, CSV or Excel.

- **Four search types:** pins, videos, boards or creators from one input form.
- **Many searches per run:** each keyword or link gets its own result limit, set with `maxItems`.
- **Related searches on every row:** Pinterest related searches for your keyword are saved with each result.
- **Live results:** every result is saved as soon as it is read, so the Output tab fills while the run is going.
- **Five tables:** results, creators, boards, products and one row per search, each with its own columns.

Click **Try for free**, type a keyword and press **Start**.

### 📊 What data can you extract from Pinterest?

Every result is one row with fields that depend on the search type. This Pinterest data scraper returns pin and video rows with the fields below, plus board and creator rows with their own columns. You can export them as JSON, CSV, Excel, XML or HTML. The example values are made up and only show the shape of the data.

| Field | Description | Example |
|---|---|---|
| `type` | Result type: pin, video, board or user | `pin` |
| `id`, `url` | Pinterest ID and link of the pin, board or profile | `1000000000000000001` |
| `title`, `description`, `altText` | Pin text and image description | `Modern white kitchen with marble island` |
| `name` | Board name (board results) | `Kitchen ideas` |
| `username`, `fullName` | Profile username and display name (creator results) | `example_user`, `Example User` |
| `date` | Object with `formatted` day and the original `initial` timestamp | `2026-10-08` |
| `imageURL`, `imageWidth`, `imageHeight`, `imageSizes` | Best image link, its size in pixels and links by size | `https://i.pinimg.com/originals/aa/bb/cc/example.jpg` |
| `dominantColor` | Main colour of the image, handy for Pinterest moodboard ideas | `#e8e4df` |
| `video` | Video link, stream link, duration, size and thumbnail (video pins) | `{"durationSeconds": 12.4}` |
| `link`, `domain` | Website the pin points to and its domain, useful for Pinterest domain research | `example.com` |
| `isUserUpload`, `isSponsored`, `isStoryPin`, `storyPageCount` | Flags for uploads, promoted pins, story pins and the number of story pages; the sponsored flag helps spot Pinterest sponsored pins | `false` |
| `isShoppable`, `products` | True when the pin has products, with name, price, currency, brand and link | `true` |
| `reactionCount` | Total reactions on the pin, the base for finding Pinterest top pins | `15` |
| `topics`, `annotations` | Topic labels and visual annotation labels of the pin | `["kitchen design"]` |
| `pinner`, `board` | Author of the pin and the board it is saved on | `{"username": "example_user"}` |
| `pinCount`, `sectionCount`, `collaboratorCount`, `isCollaborative` | Board size, sections, collaborators and group-board flag, the base of a Pinterest group board finder | `3327` |
| `coverImageURL`, `thumbnails`, `lastUpdated`, `owner` | Board cover, preview images, last change and owner | `2026-10-01T08:00:00Z` |
| `avatarURL`, `followers`, `boardCount` | Creator picture, followers and number of boards | `1799` |
| `isVerifiedMerchant`, `isDomainVerified`, `lastPinSavedAt`, `recentPins` | Creator flags, when the creator last saved a pin and recent pin images; filter on the merchant flag to list Pinterest verified merchants | `false` |
| `query`, `searchType`, `position`, `page` | Keyword that found the result, search type, rank within the search and result page | `modern kitchen`, `pins`, `1`, `1` |
| `relatedSearches` | Related search phrases for the keyword | `["modern kitchen design"]` |

Pinterest pin data varies by result, so fields such as `video`, `products`, `storyPageCount` and `altText` are filled only when Pinterest provides them.

### 💡 Use cases for Pinterest data

- **Pinterest keyword research:** read `relatedSearches` and the Searches table to see which phrases Pinterest suggests around a topic.
- **Pinterest content ideas:** study the `title`, `description` and `topics` of the pins that rank for your keyword before you plan your own pins. The `relatedSearches` list adds Pinterest SEO keyword ideas for titles and descriptions.
- **Find Pinterest influencers:** search with the creators type and sort the Creators table by `followers`, `boardCount` and `pinCount`.
- **Pinterest competitor analysis:** compare the boards and pinners that appear for a niche keyword, using `pinCount`, `owner` and `collaboratorCount`.
- **Pinterest product discovery:** the Products table lists name, price, currency and brand of shoppable pins, and each row links back to its pin.
- **Pinterest trend research:** run the same keyword on a schedule and compare `position`, `date` and `reactionCount` between runs.
- **Pinterest market research:** put several keywords of one market into a single run and compare how many results and which creators each one returns.
- **Pinterest inspiration research:** collect `imageURL`, `dominantColor` and `topics` for a theme such as a room style or wedding colour.

### 🛠️ How to scrape Pinterest search results

1. Create an Apify account and open **Pinterest Search Scraper** in the Apify Store.
2. Type your keywords or paste Pinterest search links into **Search keywords or links**, one per line.
3. Choose a **Search type**: Pins (images), Videos, Boards or Creators.
4. Set **Max results**, which is the limit for each keyword or link. The form default is 10.
5. Click **Start** and watch the log; each saved result is counted as it arrives.
6. Open the **Output** tab, pick a table and download the data as JSON, CSV or Excel.

The Actor runs in Apify Console, so there is nothing to install. For a first test, keep **Max results** small.

#### Pins and videos

Choose **Pins (images)** or **Videos** as the search type. Pin rows hold image links, text and reaction counts. Video rows add the video link and duration. Choose Videos to scrape Pinterest videos from a keyword. Choose Pins to scrape Pinterest pins for a keyword list.

#### Boards

Choose **Boards** as the search type to scrape Pinterest board results for a keyword. Each board row has `name`, `pinCount`, `sectionCount`, `collaboratorCount` and the `owner`. The Boards table keeps one row per board.

#### Creators

Choose **Creators** as the search type to scrape Pinterest profiles that match a keyword. Each row has `username`, `followers`, `boardCount` and `pinCount`. Use the rows for Pinterest creator discovery in a niche.

#### Search links

Paste a link such as `https://www.pinterest.com/search/boards/?q=minimalist%20bedroom` into **Search keywords or links**. The search type in the link overrides the **Search type** field for that link, so one run can mix pins and boards.

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

Pinterest Search Scraper uses pay per event pricing. This Pinterest scraper charges for every result saved to the main dataset, plus a small fee when the Actor starts. Rows in the creators, boards, products and searches tables are not charged.

- **Result** (`main_result`): charged once for every pin, video, board or creator saved to the dataset.
- **Actor start** (`apify-actor-start`): $0.00005 per run. The Actor is set to 1024 MB of memory, which is one start event.

Apify platform usage (compute) is billed on top of the events above.

| Plan tier | Price per 1,000 results (`main_result`) |
|---|---|
| Free | $2.50 (1,000 x $0.0025) |
| Bronze | $2.25 (1,000 x $0.00225) |
| Silver | $2.00 (1,000 x $0.002) |
| Gold and above | $1.80 (1,000 x $0.0018) |

Example: 3 keywords with `maxItems` 50 give up to 150 results. On the Free tier that is 150 x $0.0025 = $0.375, and on Gold 150 x $0.0018 = $0.27, plus the start fee of $0.00005 and platform usage.

You can set a maximum cost per run in Apify. When it is reached, the run stops cleanly and keeps every result already saved. See the Pricing tab for current rates.

### ⬇️ Input

The only required field is **Search keywords or links** (`urls`). Open the Input tab for every option.

> 💡 Keep `maxItems` low for a first test run.

This example searches one keyword for pins and takes up to 30 results:

```json
{
  "urls": ["modern kitchen"],
  "searchType": "pins",
  "maxItems": 30
}
```

- `urls`: keywords or Pinterest search links, one per line. Duplicates are removed.
- `searchType`: `pins`, `videos`, `boards` or `users` (creators). The default is `pins`.
- `maxItems`: results to save for each keyword or link. The form default is 10, and `0` means everything Pinterest returns. Three keywords with `50` give up to 150 results.
- `proxyConfiguration`: optional and off by default. If Pinterest rejects requests, the Actor switches to a proxy automatically. You can also set your own.

> ⚠️ Pinterest may return fewer results than `maxItems` for a keyword. The Searches table shows the status of each keyword.

### ⬆️ Output

The scraped results are shown as a Pinterest dataset in the **Storage** tab, and the Output tab groups them into tables: All results, Pins, Videos, Boards and Creators for the main results, plus Creators table, Boards table, Products and Searches. The table view doesn't show **all the fields**. The Pinterest data export is available as JSON, CSV, Excel, XML and HTML.

One pin row for the input above (example values, not real data):

```json
{
  "id": "1000000000000000001",
  "url": "https://www.pinterest.com/pin/1000000000000000001/",
  "title": "Modern white kitchen with marble island",
  "description": "A bright kitchen with a marble island and bar stools",
  "type": "pin",
  "date": { "formatted": "2026-10-08", "initial": "Thu, 08 Oct 2026 22:56:15 +0000" },
  "imageURL": "https://i.pinimg.com/originals/aa/bb/cc/example.jpg",
  "imageWidth": 1000,
  "imageHeight": 1500,
  "dominantColor": "#e8e4df",
  "isSponsored": false,
  "isShoppable": false,
  "products": [],
  "reactionCount": 15,
  "topics": ["kitchen design"],
  "pinner": { "username": "example_user", "fullName": "Example User", "followers": 1799 },
  "board": { "name": "Kitchen ideas", "pinCount": 3327 },
  "query": "modern kitchen",
  "searchType": "pins",
  "position": 1,
  "page": 1,
  "relatedSearches": ["modern kitchen design", "modern kitchen ideas"]
}
```

#### Boards and creators output

With `"searchType": "boards"` each row is a board, and with `"searchType": "users"` each row is a creator. Boards carry `name`, `pinCount`, `sectionCount`, `collaboratorCount`, `isCollaborative`, `coverImageURL`, `lastUpdated` and `owner`. Creators carry `username`, `fullName`, `followers`, `boardCount`, `pinCount`, `isVerifiedMerchant`, `isDomainVerified`, `lastPinSavedAt` and `recentPins`.

```json
{
  "id": "2000000000000000002",
  "type": "board",
  "url": "https://www.pinterest.com/example_user/kitchen-ideas/",
  "name": "Kitchen ideas",
  "pinCount": 3327,
  "sectionCount": 4,
  "collaboratorCount": 0,
  "isCollaborative": false,
  "owner": { "username": "example_user", "followers": 1799 },
  "query": "modern kitchen",
  "searchType": "boards",
  "position": 1,
  "page": 1
}
```

#### Searches table output

Each keyword or link also gets one row in the Searches table:

```json
{
  "query": "modern kitchen",
  "search_type": "pins",
  "status": "limit",
  "results_found": 30,
  "results_saved": 30,
  "pages_read": 1,
  "related_searches": ["modern kitchen design", "modern kitchen ideas"],
  "searched_at": "2026-10-27T10:00:00Z"
}
```

### ⚠️ Limitations and error handling

- The Pinterest data extractor reads only public search results that any visitor can see. Private boards and anything behind a login are not returned.
- The Actor returns image and video links, not the image or video files themselves.
- It does not return search volumes, so use it as a Pinterest keyword research tool for related phrases, not for volume numbers.
- It also does not return trend charts or comments, and it does not post or save pins.
- The number of results can be lower than `maxItems`, because Pinterest decides how many results a keyword has. With `0` the Actor stops at the end of the results or after 3 empty pages in a row.
- A pin found by two different keywords is saved once for each keyword, and both are charged.
- Several searches run at the same time, and rows can arrive in a mixed order across keywords. Use `query` and `position` to sort.

| `status` in the Searches table | Meaning | What to do |
|---|---|---|
| `ok` | The end of the results was reached | Nothing |
| `limit` | The result limit for this search was reached | Raise `maxItems` if you want more |
| `empty` | Pinterest returned no results of the chosen type | Try a broader keyword or another search type |
| `error` | The search stopped early, for example after a rejected page | Read the log and run again later |
| `unreachable` | Pinterest could not be reached for this search | Run again later or set your own proxy |

If the search type is not `pins`, `videos`, `boards` or `users`, or `maxItems` is not a whole number, the run stops at the start with a message that says what to fix. If Pinterest cannot be reached at all and nothing was saved, the run ends as failed with the message "Pinterest could not be reached (blocked or changed). Try again later."

### 🔌 Integrating Pinterest Search Scraper with other apps

Pinterest Search Scraper runs on the Apify platform, so you can start runs from code, schedule them and trigger webhooks when a run finishes. The API tab shows ready-made JavaScript, Python and CLI snippets, and the run URL is `https://api.apify.com/v2/actors/data_wiki~pinterest-search-scraper/runs`. The Pinterest scraper API is the Apify API: start a run and read its dataset.

- **Schedules:** repeat a search daily or weekly with [Apify schedules](https://docs.apify.com/actors/running/schedules) and compare `position` and `reactionCount` between runs.
- **Apps:** send results to Google Sheets, Make, Zapier, Slack or Airbyte through the [Apify integrations](https://docs.apify.com/integrations).
- **API reference:** the [Apify API documentation](https://docs.apify.com/api/v2) covers starting runs and reading datasets from code.
- **AI agents:** the hosted [Apify MCP server](https://docs.apify.com/mcp) at `https://mcp.apify.com` lets an agent find the Actor with `search-actors`, check it with `fetch-actor-details` and start it with `call-actor`.

### 🔗 Other social media scrapers by data_wiki

None of the other Actors by data_wiki is about Pinterest. These four cover other platforms that suit similar research on trends, products and creators.

| Actor | What it extracts | When to use it |
|---|---|---|
| [Instagram Hashtag Scraper](https://apify.com/data_wiki/instagram-hashtag-scraper) | Public Instagram reels found by hashtag or keyword | You also follow visual trends on Instagram |
| [TikTok Shop Search Scraper](https://apify.com/data_wiki/tiktok-shop-search-scraper) | TikTok Shop products found by keyword, with prices and units sold | You compare product ideas with real sales on TikTok Shop |
| [TikTok Data Extractor](https://apify.com/data_wiki/tiktok-data-extractor) | TikTok videos from links, profiles, hashtags or keywords | Your keyword research also covers short videos |
| [1688 Wholesale Products Scraper](https://apify.com/data_wiki/1688-wholesale-products-scraper) | 1688 wholesale products with bulk price tiers | You want supplier prices for a product idea |

For the source of the data see [Pinterest](https://www.pinterest.com).

### ⚖️ Is it legal to scrape Pinterest?

Pinterest Search Scraper only extracts data that people have made publicly available on Pinterest and does not extract private data. Results can still contain personal details such as usernames, so scrape Pinterest data only with a legitimate reason and consider GDPR and CCPA. Check Pinterest's terms and consult a lawyer if you are unsure. Read more about [the legality of web scraping](https://blog.apify.com/is-web-scraping-legal/) and [ethical web scraping](https://blog.apify.com/what-is-ethical-web-scraping-and-how-do-you-do-it/).

### ❓ FAQ

#### How much does a run cost?

You pay $0.00005 per run start plus a price per result saved: $2.50 per 1,000 on the Free tier down to $1.80 per 1,000 on Gold and above. Platform usage is billed on top.

#### Can you scrape Pinterest without a login?

Yes. The Actor reads public search results the way a logged-out visitor sees them, so no Pinterest account or cookies are needed.

#### How to scrape images from Pinterest?

The Pinterest image scraper returns image links in `imageURL`, `imageSizes` and `coverImageURL`, not the image files. Use the links and the pin text to build a Pinterest image dataset of links and metadata in your own tools.

#### Do I need to write code to web scrape Pinterest?

No. Fill in the input form in Apify Console and press **Start**. Code is optional and only needed if you start runs through the API.

#### How many keywords can I search in one run?

As many as you like, and each keyword has its own `maxItems` limit. Putting related keywords into one run suits Pinterest niche research.

#### How many results can I get?

Set `maxItems` for each keyword. The form default is 10, and `0` returns everything Pinterest has for that keyword. The Searches table tells you whether the end of the results was reached.

#### Which search types does the Actor support?

Pins, videos, boards and creators. A search link can set the type for that link. Pins are the default, so a Pinterest pin scraper run needs only a keyword. The creators type is the Pinterest users scraper mode.

#### Can I use the results for Pinterest SEO keywords?

Yes, as a starting point. The `relatedSearches` field and the Searches table list the phrases Pinterest shows for each keyword, but they carry no search volume.

#### Can I scrape private boards?

No. Only public results are read.

#### Do I need proxies?

No. The Actor starts without a proxy and switches to a proxy automatically when Pinterest rejects requests. You can also set your own in `proxyConfiguration`.

#### Can I use the results through the API?

Yes. The Actor is an Apify Pinterest scraper, so you can start it with the Apify API and read the run's dataset, using the `apify-client` packages for Node.js or Python.

#### Can I use Pinterest Search Scraper through MCP?

Yes. Add the Actor to an AI agent through the hosted Apify MCP server (`https://mcp.apify.com`) and let the agent call it with your keywords.

### 💬 Your feedback

Found a bug or need another field? Open an issue on the Actor's Issues tab. Need a custom solution? Contact hello.datawiki@gmail.com.

# Actor input Schema

## `urls` (type: `array`):

Keywords (for example: modern kitchen) or Pinterest search links, one per line. Add as many as you like.

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

Pins (images), videos, boards or creators. A Pinterest search link overrides this for that link.

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

Results to save for EACH keyword or link (3 keywords with 50 give up to 150 results). 0 = everything Pinterest returns.

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

Optional. Runs without a proxy first and switches to a stronger proxy automatically if Pinterest rejects requests.

## Actor input object example

```json
{
  "urls": [
    "modern kitchen"
  ],
  "searchType": "pins",
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

Every pin, video, board or creator.

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

Pin columns.

## `videos` (type: `string`):

Video columns.

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

Board columns.

## `users` (type: `string`):

Creator columns.

## `creators` (type: `string`):

One row per creator seen.

## `boardsTable` (type: `string`):

One row per board seen.

## `products` (type: `string`):

One row per product on pins.

## `keywords` (type: `string`):

One row per searched keyword.

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

Counts for this run.

# 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 = {
    "urls": [
        "modern kitchen"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("data_wiki/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 = {
    "urls": ["modern kitchen"],
    "proxyConfiguration": { "useApifyProxy": False },
}

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

```

## MCP server setup

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