# Pinterest Scraper — Pins, Boards & Search, Cheap (`fabrikit/pinterest-scraper`) Actor

Pinterest scraper for search results, boards, profiles and pin URLs: image, title, description, outbound link, domain, board, creator, saves, date, colour, video. Optional pin details (saves, comments). No login, no cookies. From US$1 per 1,000 pins.

- **URL**: https://apify.com/fabrikit/pinterest-scraper.md
- **Developed by:** [Fabrikit](https://apify.com/fabrikit) (community)
- **Categories:** Social media, E-commerce, SEO tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 pin scrapeds

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, Boards & Search, Cheap

Scrape public Pinterest pins from search results, boards, creator profiles and pin links. No login, no cookies, no browser.

### What you get

- **Search** by keyword (pins or video pins), or paste a Pinterest search URL.
- **Boards and profiles**: paste a board URL or a creator's profile URL and page through their public pins.
- **Single pins**: paste pin URLs (or `pin.it` short links) to get the full record.
- **Rich pin data**: largest image, title, description, alt text, outbound link and domain, board, creator display name and profile URL, creation date, dominant colour, topic tags, video file for video pins.
- **Optional pin details** (`includeDetails`): saves, repin count and comment count.
- Ads are skipped, duplicates removed, and `maxItems` is exact.
- Only public content is read. No follower lists, no emails, no private data.

### Input

| Field | Description |
|---|---|
| `searchQueries` | Keywords to search |
| `startUrls` | Pin, board, profile or search URLs / pin IDs, one per line |
| `searchType` | `pins` or `videos` |
| `maxItems` | Total pins to save (default 50) |
| `maxPinsPerSource` | Optional cap per query/board/profile |
| `includeDetails` | Add saves, repins, comments (add-on price) |
| `proxyConfiguration` | Datacenter by default; switches to residential automatically if blocked |

```json
{
  "searchQueries": ["kitchen ideas"],
  "startUrls": ["https://www.pinterest.com/TileBar/tiles-backsplashes/"],
  "maxItems": 100,
  "includeDetails": false
}
```

### Output

```json
{
  "id": "101049585382283341",
  "url": "https://www.pinterest.com/pin/101049585382283341/",
  "title": "Explore Montauk Gin 2x8 White Ceramic Subway Wall Tile",
  "description": "The Montauk Gin 2x8 White Ceramic Wall Tile reimagines the subway format ...",
  "imageUrl": "https://i.pinimg.com/originals/bc/54/e8/bc54e89cd5e3e093314c3349401ec38e.png",
  "link": "https://www.tilebar.com/montauk-gin-2x8-ceramic-wall-tile-satin.html",
  "domain": "tilebar.com",
  "boardName": "Tiles & Backsplashes",
  "boardUrl": "https://www.pinterest.com/TileBar/tiles-backsplashes/",
  "pinnerName": "TileBar",
  "pinnerUrl": "https://www.pinterest.com/TileBar/",
  "saves": 6371,
  "repinCount": 5646,
  "commentCount": 0,
  "createdAt": "2024-01-14T07:22:59.000Z",
  "dominantColor": "#846c4c",
  "isVideo": false,
  "videoUrl": null
}
```

`saves` is present on board/profile pins and on every pin with `includeDetails`; plain search results do not include it.

### Pricing

| Event | Price |
|---|---|
| Pin scraped | **US$1.00 per 1,000 pins** |
| Pin details (add-on, only with `includeDetails`) | US$0.50 per 1,000 pins |

Set a maximum cost per run and the Actor stops exactly at your limit.

### FAQ

**Do I need a Pinterest account?** No. Only public pins, boards and profiles are read.
**Why are `saves`/`repinCount` empty?** Search results omit them. Turn on `includeDetails`.
**How deep can I go?** Search and board paging goes hundreds of pins deep (500 pins from one search in ~30 s locally).
**Private boards?** Not supported.

### Use cases

Trend and keyword research, product and inspiration monitoring, SEO and backlink research (outbound links and domains), content curation, mood-board datasets.

### En español

Extrae pines públicos de Pinterest desde búsquedas, tableros, perfiles de creadores o enlaces de pines: imagen, título, descripción, enlace externo, dominio, tablero, creador, fecha, color y video. Sin login ni cookies. US$1 por cada 1.000 pines.

# Actor input Schema

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

Keywords to search on Pinterest (e.g. `kitchen ideas`, `wedding dress`). Leave empty if you only provide URLs.

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

One per line: pin URLs (`/pin/123…`, `pin.it` short links or the numeric ID), board URLs (`/user/board-name/`), public profile URLs (`/user/`) or search URLs (`/search/pins/?q=…`).

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

What search queries return: regular pins or video pins.

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

Hard cap on pins saved in the whole run.

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

Optional cap for each search query, board or profile. 0 = only the total limit applies.

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

Open each pin to also get saves, repin count and comment count (and a video file URL). Slower and billed as an add-on per pin. Direct pin URLs always include details at no extra cost.

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

Datacenter proxy by default. If Pinterest blocks it, the Actor automatically switches to Residential proxies for the rest of the run.

## Actor input object example

```json
{
  "searchQueries": [
    "kitchen ideas"
  ],
  "startUrls": [],
  "searchType": "pins",
  "maxItems": 50,
  "maxPinsPerSource": 0,
  "includeDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

All pins collected during the 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 = {
    "searchQueries": [
        "kitchen ideas"
    ],
    "maxItems": 50,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

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

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

```

## MCP server setup

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