# Pinterest Scraper - Search, Pins, Boards & Profiles, No Login (`locaihost/pinterest-scraper`) Actor

Pinterest scraper, $1 per 1,000 rows. Search pins, videos, boards or profiles by keyword, or paste pin, board and profile links. Saves, comments, outbound links, full-size images, MP4 video, followers and monthly views. Fast, no login, new-only mode for schedules.

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

## Pricing

from $0.55 / 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 - Search, Pins, Boards & Profiles, No Login

Get Pinterest pins, boards and profiles as clean rows. Search by keyword, or paste pin, board and profile links. Every
pin comes with its saves, comment count, outbound link, full-size image, created date and MP4 video file when it is a
video. Profiles come with followers, following, monthly views, pin and board counts and the website they list.
**$1 per 1,000 rows.** No login, no cookies, no account needed.

### Try it

Paste this into the Input tab (JSON) and press Start:

```json
{
    "searchQueries": ["minimalist kitchen"],
    "usernames": ["bhg"]
}
```

You get the pins Pinterest shows for "minimalist kitchen" (with what the search list shows: title, image, board,
pinner, date, reactions), plus the Better Homes and Gardens profile and its boards, with full pin details. A run like this takes about 15 seconds.

More examples:

```json
{ "searchQueries": ["fall outfits", "capsule wardrobe"], "searchRefinements": 4 }
```

```json
{ "startUrls": ["https://www.pinterest.com/pin/995154848912179439/"], "relatedPins": 25 }
```

```json
{ "searchQueries": ["interior designer"], "searchType": "profiles" }
```

```json
{ "startUrls": ["https://www.pinterest.com/bhg/bhgs-best-healthy-recipes/"] }
```

### What you get

**Pin rows** (`type: pin`)

| Field | Example |
|---|---|
| `title`, `description` | Monochrome Kitchen Ideas, Modern Minimalist Kitchen Design |
| `saves`, `repins`, `comments`, `reactions` | 122627, 33320, 0, 13917 |
| `link`, `linkDomain` | the page the pin points to, and its domain |
| `imageUrl`, `imageWidth`, `imageHeight` | full-size image (`/originals/`), 1080 x 1920 |
| `isVideo`, `videoUrl`, `videoStreamUrl`, `videoDurationSec` | MP4 (720p), HLS stream, 9.8 |
| `createdAt` | 2025-02-11T15:56:49.000Z |
| `pinnerUsername`, `pinnerName`, `pinnerFollowers`, `creatorUsername` | who saved it and who created it |
| `boardName`, `boardUrl`, `boardId` | the board it is on |
| `hashtags`, `altText`, `dominantColor`, `isPromoted` | |
| `query`, `rank`, `source` | the search that found it and its position |

**Board rows** (`type: board`): name, description, owner, pins, followers, sections, collaborators, cover image,
created date.

**Profile rows** (`type: profile`): username, display name, bio, website (and whether Pinterest verified it),
followers, following, monthly views, pins, boards, business account and verified merchant flags, profile picture,
joined date, last save date.

Pins, boards and profiles that don't exist, searches with no results and unusable links come back as free
`not-found` rows that say what happened.

### Search for pins, videos, boards or profiles

Set **Search for** to pins (the default), video pins, boards or profiles. Searching profiles is a quick way to find
accounts in a niche, with their follower counts and websites.

**Also search Pinterest's refinements** adds the refinement chips Pinterest shows under each search. For "minimalist
kitchen" those are Modern, Counter decor ideas, Design inspiration, Cabinets and more. Each chip is a search of its
own, and duplicates are removed, so 4 refinements turn one keyword into up to about 125 pins.

### How many results per search, board or profile

Pinterest shows a signed-out visitor about 25 results for a search, board or profile, then asks them to log in to
see more. This Actor reads what a signed-out visitor sees and never logs in, so expect about 25 rows per search,
board, profile or refinement. To cover a topic widely, give several keywords, turn on refinements, or add related
pins. When Pinterest had more behind its login prompt, the run's message says so.

### Monitoring

Turn on **Only new since the last run** and schedule the Actor. Each run returns only pins and boards that earlier
runs with the same lookups did not, and charges only for those. Profile rows come back every run, so a schedule also
tracks follower and monthly view changes. A run with nothing new charges nothing.

### Price

Pay per row: **$1 per 1,000 rows** (pins, boards or profiles) on the Starter plan, $0.75 on Scale, $0.55 on
Business. Full pin details are included at no extra cost. Free `not-found` rows are never charged, and nothing else
is charged on top.

Apify's free plan is capped at 1,000 rows per run; any paid Apify plan removes the cap.

### Good to know

- Only what a signed-out visitor sees. No account, no login cookies. Secret boards are never reachable.
- Fast: no browser, just the same data Pinterest's own site loads. 25 pins with full details take a few seconds.
- Pins found by keyword search, video search or as related pins carry what that list shows (details "listing").
  Pinterest lists them under a link that it opens only for logged-in visitors, so their own pages are not read.
  Pins from boards and profiles get full details.
- About people we keep only what the public profile shows: username, display name, bio, counts and the website it
  lists. E-mail addresses and phone numbers written into bios and descriptions are replaced with
  `[contact removed]`. Comment text is not read.
- Board section links are read as the whole board.
- Big requests are split fairly across the run's time limit. If time runs short, the run ends successfully with the
  rows so far and says what to narrow.
- Everything about the run (requests, rows by kind, free rows, timing) is in the `SUMMARY` record of the run's
  key-value store.

### Use it lawfully

You are responsible for how you use the data. Images and videos belong to the people who made them: link to them or
ask before you republish them. Follow privacy law (such as GDPR) if you store or process data about people, and don't
use the data to contact, profile or harass anyone. Use it for research, trend spotting and marketing analysis of
public content.

### Questions

Open an issue on the Issues tab. Feature requests are welcome.

### Did it help?

If this saved you time, a quick rating on the Store helps other people find it. Something not working? Open an issue on the Issues tab and we usually reply within a day.

# Actor input Schema

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

Search Pinterest the way its search box does. Each keyword returns the pins (or videos, boards or profiles, see Search for) Pinterest shows for it.

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

What each keyword search returns: pins, video pins, boards, or profiles (accounts).

## `searchRefinements` (type: `integer`):

Pinterest shows refinement chips under each search (for minimalist kitchen: Modern, Counter decor ideas, Cabinets...). Also search the first this many of them. Each chip adds about 25 results, so 4 turns one keyword into about 125. 0 searches only your keywords.

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

Paste pin, board, profile or search links. Any country site works (pinterest.co.uk, de.pinterest.com...) and so do pin.it short links. A pin link returns that pin with full details; a board link returns the board and its pins; a profile link returns the profile, its boards and (see Pins from profiles) its pins.

## `usernames` (type: `array`):

Pinterest usernames as they appear in the profile link, like bhg for https://www.pinterest.com/bhg/. Each returns a profile row: display name, bio, website, followers, following, monthly views, pin and board counts.

## `maxItemsPerSource` (type: `integer`):

Pinterest shows a signed-out visitor about 25 results per search, board or profile, then asks them to log in. This Actor reads what a signed-out visitor sees, so 25 is the practical most. For more per topic, add keywords or turn on refinements.

## `profileBoards` (type: `boolean`):

For each username or profile link, also return its public boards (name, description, pin and follower counts, cover image).

## `maxBoardsPerProfile` (type: `integer`):

Up to about 25, the boards a signed-out visitor is shown.

## `profilePins` (type: `string`):

For each username or profile link, also return pins: the ones it created (its Created tab) or its latest saves. Off by default.

## `relatedPins` (type: `integer`):

For each pin link, also return the related pins Pinterest shows under it ("More to explore", usually 10 to 25). 0 turns this off.

## `fullDetails` (type: `boolean`):

Open each pin found in a search, board or profile on its own page for saves, comment count, outbound link, created date and video file. Profiles found by search get their full profile too. Pins from keyword search, video search and related pins always carry what the list showed: Pinterest opens their pages only for logged-in visitors. Turn off for a faster, lighter run: rows then carry what the list showed (details: listing).

## `onlyNew` (type: `boolean`):

Skip pins and boards an earlier run with the same lookups already returned, and charge only for new ones. Profile rows are always returned fresh, because their counts change. Made for scheduled runs.

## `maxResults` (type: `integer`):

Stop after this many charged rows. 0 means no limit.

## Actor input object example

```json
{
  "searchQueries": [
    "minimalist kitchen",
    "fall outfits",
    "wedding cake ideas"
  ],
  "searchType": "pins",
  "searchRefinements": 0,
  "startUrls": [
    "https://www.pinterest.com/pin/995154848912179439/",
    "https://www.pinterest.com/bhg/bhgs-best-healthy-recipes/",
    "https://www.pinterest.com/bhg/"
  ],
  "usernames": [
    "bhg",
    "marthastewart"
  ],
  "maxItemsPerSource": 25,
  "profileBoards": true,
  "maxBoardsPerProfile": 25,
  "profilePins": "none",
  "relatedPins": 0,
  "fullDetails": true,
  "onlyNew": false,
  "maxResults": 0
}
```

# Actor output Schema

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

One row per pin: title, image, saves, comments, outbound link, pinner, board, created date, video file.

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

One row per board: name, owner, pin and follower counts, sections, cover image.

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

One row per profile: display name, followers, following, monthly views, pins, boards, website, bio.

## `full` (type: `string`):

Every field of every row, including free not-found rows.

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

Counts, free rows by reason, anything that failed, access stats and cost.

# 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": [
        "minimalist kitchen"
    ],
    "usernames": [
        "bhg"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("locaihost/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": ["minimalist kitchen"],
    "usernames": ["bhg"],
}

# Run the Actor and wait for it to finish
run = client.actor("locaihost/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": [
    "minimalist kitchen"
  ],
  "usernames": [
    "bhg"
  ]
}' |
apify call locaihost/pinterest-scraper --silent --output-dataset

```

## MCP server setup

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