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

\[$1.50/1K pins] Scrape Pinterest by keyword, profile, board or pin URL: title, description, full-size image, outbound link and domain, date, board, pinner with followers, video link. Optional saves and comments. No login, no run fee.

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

## Pricing

from $1.05 / 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.
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** collects pins from **Pinterest search, profiles, boards and pin URLs** and returns one row per pin: **title, description, full-size image, outbound link and domain, creation date, board, the pinner with followers, and the video link for video pins**. Profiles also come with a **profile row: followers, monthly views, pins, boards, bio and website**. Switch on one option for **exact saves and comments** per pin.

**$0.0015 per pin** — $1.50 per 1,000. No Pinterest account, no login, no start fee. Pins removed by your filters and inputs that fail are free.

### What is Pinterest Scraper?

Pinterest is a visual search engine where people plan purchases, homes, trips and weddings. This Actor reads the same data the Pinterest website loads and hands you clean rows — for trend and product research, finding shops and blogs that drive Pinterest traffic, competitor boards, creative inspiration datasets and influencer discovery.

### What is in every row

| Field | Meaning |
|---|---|
| `title`, `description`, `altText`, `url`, `pinId` | The pin |
| `imageUrl`, `imageWidth`, `imageHeight`, `dominantColor` | Full-size image |
| `link`, `domain` | Where the pin leads — the shop or blog behind it |
| `createdAt`, `topics` | When it was pinned, Pinterest's topics |
| `isVideo`, `videoUrl` | Video pins with their stream |
| `pinnerUsername`, `pinnerName`, `pinnerFollowers`, `boardName`, `boardUrl` | Who pinned it and where |
| `saves`, `comments`, `reactions` | With **Exact saves and comments** on |
| Profile rows: `followers`, `monthlyViews`, `pinCount`, `boardCount`, `about`, `websiteUrl` | For profile inputs |

### How much does it cost?

| Event | Price |
|---|---|
| Pin | **$0.0015** |
| Exact saves and comments (optional) | **$0.0005** per pin |
| Profile row | **$0.002** |

- Pins removed by **Only pins with an outbound link**: **$0**.
- Searches, profiles, boards or pins that fail: **$0**.

#### Bulk export: what 50,000 rows actually cost

This Actor is built for bulk jobs — hundreds of inputs in one run, or a daily schedule. There is **no
fee per run, no fee per page and no proxy charge**: you pay for the rows you keep.

| Job | This Actor | Most-used Actor in this category |
|---|---|---|
| 50,000 pins across 100 searches | **$75** | $200 |
| 10,000 pins with saves and comments | **$20** | $40 + |

Checked on the Apify Store on 23 September 2026 against the Actor with the most monthly users in this category
($0.004 per pin). Some Actors here ask less per row — this table compares against the one buyers actually use most.

### How to use it in three steps

1. Type **search queries** and/or paste **profiles, boards or pins**.
2. Set **Pins per source**, switch on **Exact saves and comments** if you need engagement.
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
{
  "searchQueries": ["bali villa", "boho bedroom"],
  "urls": ["https://www.pinterest.com/natureinvestmentgroup/"],
  "maxPinsPerSource": 200,
  "onlyWithLink": true
}
```

### ⬆️ Output

```json
{
  "type": "pin",
  "source": "search",
  "sourceValue": "bali villa",
  "position": 3,
  "pinId": "1123225963432535440",
  "url": "https://www.pinterest.com/pin/1123225963432535440/",
  "title": "Luxury Villas in Ubud, Bali",
  "description": "Discover top rated luxury villas in Ubud, surrounded by Bali’s lush greenery and tranquil rice terraces. Perfect for a serene escape with modern villa design lu…",
  "altText": "an artist's rendering of a modern house with palm trees in the front yard",
  "link": "https://lexrichert.substack.com/p/from-a-pinterest-villa-picture-to/?luxury-villas-in-ubud-bali",
  "domain": "lexrichert.substack.com",
  "createdAt": "2026-09-07T18:26:49.000Z",
  "imageUrl": "https://i.pinimg.com/originals/1a/92/24/1a922426695698c4e92642760ba64b25.png",
  "imageWidth": 816,
  "imageHeight": 1456,
  "dominantColor": "#777766",
  "isVideo": false,
  "videoUrl": null,
  "pinnerUsername": "luxurybalioq",
  "pinnerName": "Luxury Bali villa Property - Nusa Dua| Ubud| Canggu| Villa Smart",
  "pinnerFollowers": 3,
  "pinnerUrl": "https://www.pinterest.com/luxurybalioq/",
  "boardName": "Bali Villa Ubud Design Interiors",
  "boardUrl": "https://www.pinterest.com/luxurybalioq/bali-villa-ubud-design-interiors/",
  "boardPinCount": 92,
  "isPromoted": false,
  "saves": null,
  "comments": null,
  "reactions": 1,
  "topics": [
    "Tropical House Indonesia",
    "Simple Villa Design",
    "Modern Tropical Villa Exterior",
    "Vacation Villa Design",
    "Bali Style House"
  ],
  "scrapedAt": "2026-09-23T12:46:48.735Z"
}
```

Profile row:

```json
{
  "type": "profile",
  "username": "natureinvestmentgroup",
  "fullName": "Nature Investment Group | Bali Real Estate & Villas",
  "url": "https://www.pinterest.com/natureinvestmentgroup/",
  "about": "Buy a villa in Bali 🌴 Aesthetic Balinese architecture, sustainable materials, thoughtful design and up to 15% ROI. We de…",
  "websiteUrl": "http://natureinvestment.group",
  "followers": 2,
  "pinCount": 267,
  "boardCount": 9,
  "monthlyViews": 9244
}
```

### Use cases

#### Product and trend research

What people save for a keyword right now — images, titles and the shops behind them.

#### Traffic sources

**Only pins with an outbound link** — which domains Pinterest sends traffic to for your niche.

#### Competitor and brand tracking

A brand's profile and boards with monthly views and pin counts.

#### Creative datasets

Full-size images with titles, alt text and topics.

### Integrations

Every run is available through the Apify API, and the Actor works out of the box with n8n, Make, Zapier, Google Sheets, LangChain and the Apify MCP server.

### FAQ

**Do I need a Pinterest account?** No. Nothing is logged in.

**How many pins per search?** Pinterest keeps scrolling for hundreds of pins on popular searches.

**Why are saves empty?** Search and board lists do not carry them; switch on **Exact saves and comments**.

**Can I download the images?** `imageUrl` is the full-size original — download it with any tool. Respect the creator's copyright.

**Is this legal?** The Actor reads public pins that anyone can see without logging in. Use the data and images in line with Pinterest's terms and copyright law.

# Changelog

This Actor's version history is a separate document: https://apify.com/lergassy/pinterest-scraper/changelog.md

# Actor input Schema

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

Anything you would type into Pinterest search, one per line.

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

Profile (pinterest.com/<user>/ or just the username), board (pinterest.com/<user>/<board>/), pin (pinterest.com/pin/<id>/) or pin.it short links. Profiles also give a profile row.

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

How many pins to take from each source.

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

Opens every pin for its save count, comment count and reactions. +$0.0005 per pin.

## `onlyWithLink` (type: `boolean`):

Keep only pins that link to a website — handy for finding shops and blogs. Skipped pins are not charged.

## `concurrency` (type: `integer`):

How many searches, profiles or boards to read at the same time.

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

Requests go to Pinterest directly first; a refused request is retried on a fresh Apify datacenter address. Residential is never switched on by itself.

## Actor input object example

```json
{
  "searchQueries": [
    "bali villa"
  ],
  "maxPinsPerSource": 30,
  "includeDetails": false,
  "onlyWithLink": false,
  "concurrency": 3,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

One row per Pinterest pin (and profile rows): image, link, date, board, pinner.

## `runSummary` (type: `string`):

JSON summary of the run: rows delivered, rows filtered out, failed inputs (free) and request statistics.

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

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

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

```

## MCP server setup

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