# Pinterest Scraper API – Pins, Boards & Profiles, No Login (`k-data-lab/pinterest-scraper`) Actor

Get Pinterest pins, video pins, boards and profiles from search terms or profile, board and pin links, with no login: saves, outbound links, full-size images, video URLs, product prices, pinner and board. From $0.90 per 1,000 pins, 500 free each month.

- **URL**: https://apify.com/k-data-lab/pinterest-scraper.md
- **Developed by:** [K-Data Lab](https://apify.com/k-data-lab) (community)
- **Categories:** Social media, Marketing, SEO tools
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.70 / 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

**Get Pinterest pins, video pins, boards and profiles from a search term or a link: title, description, outbound link, full-size image, video URL, save count, reactions, product price, pinner and board.** No login, no cookies, no browser. From **$0.90 per 1,000 pins**, and the first 500 pins, 50 boards, 50 profiles and 50 pin details every month are free.

Type `home office ideas`, press Start, and get 50 pins in about 5 seconds. The prefilled run uses 50 of your free pins, so it costs only the $0.005 run start, which Apify's free monthly credit covers. Run it from the Console, on a schedule, or as an API from Python, n8n, Make, Zapier or an AI agent.

```json
{
  "type": "pin",
  "pinId": "63965257213101837",
  "url": "https://www.pinterest.com/pin/63965257213101837/",
  "title": "Best Gnocchi Recipe- Creamy Chicken Gnocchi",
  "description": "Best Gnocchi Recipe- This Creamy Chicken Gnocchi is a rich and comforting meal made with tender chicken, pillowy gnocchi, and a creamy broth…",
  "altText": "creamy chicken gnocchi with spinach and cheese in a skillet",
  "link": "https://thecozycook.com/chicken-gnocchi/",
  "domain": "thecozycook.com",
  "imageUrl": "https://i.pinimg.com/originals/18/0a/89/180a896496b6fafac87103960959f744.jpg",
  "imageWidth": 736,
  "imageHeight": 1545,
  "savesCount": 1146,
  "reactionsCount": 6,
  "createdAt": "2026-06-30T11:51:27Z",
  "pinnerUsername": "TheCozyCook",
  "boardName": "Delicious Family Dinner Recipes",
  "boardUrl": "https://www.pinterest.com/TheCozyCook/delicious-family-dinner-recipes/",
  "siteName": "The Cozy Cook",
  "source": "profile:pins",
  "position": 662
}
```

### What you can do with it

- **Research a niche or trend.** Search any term and get hundreds of pins with titles, descriptions and Pinterest's own keyword suggestions (`keywords`, `topics`): the words people search for around your topic.
- **Track competitors and creators.** Give a profile and get its follower count, monthly reach and newest pins with save counts. Add `postedAfter` and schedule it daily to pay only for new pins.
- **Find the content that drives traffic.** Every pin carries its outbound `link` and `domain`, so you can see which pages and shops get pinned for a keyword.
- **Collect product pins with prices.** Shopping searches return the price and currency Pinterest shows (e.g. `$135.00 USD`, nike.com).
- **Build image and video datasets.** Full-size image URLs with width, height and dominant colour; video pins come with the stream URL and duration.
- **Discover boards and influencers.** Search boards or profiles for a topic and rank them by pins and followers.

### How to use it

1. Add **search terms** and pick a **search type**: pins, video pins, boards or profiles.
2. Or paste **Pinterest links**: profiles, boards, pins, a profile's boards page or search links. Country domains such as `de.pinterest.com` and `pinterest.co.uk` work too. Usernames can go in their own field.
3. Set **Max results per input** (default 50, up to 5,000).
4. For profiles, choose whether you want the latest pins (on by default) and the boards.
5. Optional: turn on **Pin details** for comment, share and repin counts, hashtags and the SEO title of each profile pin.

| Input | What you get |
|---|---|
| Search term + Pins / Video pins | Pins in Pinterest's order, 25 per page, 500+ deep for most terms |
| Search term + Boards | Boards with pin count, cover and owner |
| Search term + Profiles | Creators and brands with followers, pins and boards |
| Profile link or username | 1 profile row + its newest pins (with saves) and/or its boards |
| Board link | 1 board row + the board's pins (with saves) |
| Pin link | 1 pin with all details |

Every row has `source` (e.g. `search:pins`, `board:pins`), `input` and `position`, so a run with many inputs is easy to split. If an input finds nothing, you get a free `notice` row saying why (`NO_RESULTS`, `NOT_FOUND`, `INVALID_INPUT`…) instead of a silent empty result.

### Pricing

Pay per result. Notice rows are free, and nothing is charged for inputs that return nothing.

| Event | Free plan | Bronze | Silver | Gold and up | Free each month |
|---|---|---|---|---|---|
| Pin (any pin row) | $0.0010 | $0.0009 | $0.0008 | $0.0007 | 500 |
| Board | $0.0010 | $0.0009 | $0.0008 | $0.0007 | 50 |
| Profile | $0.0015 | $0.0012 | $0.0011 | $0.0010 | 50 |
| Pin details (add-on) | $0.0015 | $0.0012 | $0.0011 | $0.0010 | 50 |
| Run start | $0.005 | $0.005 | $0.005 | $0.005 | |

Examples on Bronze, after the free monthly results: 1,000 search pins = $0.90 + $0.005. A profile with its 200 newest pins = $0.0012 + $0.18. Set a maximum cost per run in the Console and the run stops cleanly at that amount.

### How it compares

Prices are the Store list prices on 2026-11-10, Bronze plan, for 1,000 pins from a search.

| Actor | Price per 1,000 pins | Run start | Free each month | Proxy it asks you for |
|---|---|---|---|---|
| **This actor** | **$0.90** | $0.005 | 500 pins + 50 boards/profiles/details | none |
| silentflow/pinterest-scraper-ppr | $1.90 | $0.00005 | none | none |
| automation-lab/pinterest-scraper | $3.00 | $0.01 | none | residential (default) |
| easyapi/pinterest-search-scraper | $2.99 | $0.09 | none | |
| fatihtahta/pinterest-scraper-search | $3.49 | | none | residential (default) |
| epctex/pinterest-scraper | $0.10 summaries + $0.0015 per search query; $3.10 full pins | | first page of each query | |

What you get here that is easy to miss elsewhere: the outbound link and domain on every pin, product price and currency, Pinterest's keyword suggestions, video URL and duration, save counts on profile and board pins, a `postedAfter` filter that stops paging early, and free notice rows instead of empty runs.

### Output

One dataset with a `type` column (`pin`, `board`, `profile`, `notice`) and four ready-made views in the Console: Pins, Boards, Profiles, Notices. Download as JSON, CSV, Excel or XML, or read it from the API.

**Pin fields:** pinId, url, title, description, altText, link, domain, imageUrl, imageWidth, imageHeight, thumbnailUrl, dominantColor, isVideo, videoUrl, videoDurationSec, savesCount, reactionsCount, createdAt, pinnerUsername, pinnerName, pinnerFollowers, pinnerUrl, boardId, boardName, boardUrl, topics, keywords, isPromoted, richPinType, siteName, price, currency. With details: commentsCount, repinCount, shareCount, hashtags, seoTitle.

**Board fields:** boardId, url, name, description, pinCount, followerCount, sectionCount, isCollaborative, collaboratorCount, coverImageUrl, createdAt, lastPinnedAt, ownerUsername, ownerName, ownerFollowers.

**Profile fields:** userId, username, url, fullName, about, followerCount, followingCount, pinCount, boardCount, monthlyReach, websiteUrl, websiteDomain, isWebsiteVerified, isVerified, isVerifiedMerchant, imageUrl, createdAt, lastPinSavedAt.

The key-value store holds `RUN_SUMMARY`: rows per input, status per input, charged and free counts, free results left this month, and request statistics.

### FAQ

**Do I need a Pinterest account, cookies or a proxy?** No. The actor reads the same public data pinterest.com shows a signed-out visitor. It starts with direct requests and moves to Apify datacenter proxies by itself only if Pinterest slows it down, at no extra cost to you.

**Why is `savesCount` empty for search results?** Pinterest doesn't show save counts to signed-out visitors in search. Profile pins, board pins and pin links do have them. To get saves for a topic, search boards for it, then scrape the top boards.

**Why do search and board pins have IDs like `e1_Afq…`?** That is the encrypted ID Pinterest itself gives signed-out visitors, and the `url` built from it opens the pin in any browser. Pinterest doesn't let anyone look these IDs up, so the Pin details add-on works on profile pins and numeric pin links only. A pin link with an `e1_` ID returns a free notice.

**How deep does search go?** In our tests, 800 pins for "christmas decor" with no duplicates, and 2,400 rows across three inputs in 52 seconds. Pinterest decides when a search ends; the actor stops there and tells you.

**Are comments or related pins included?** No. Pinterest only shows those to signed-in users, and this actor never logs in.

**How do I monitor a profile for new pins?** Add the username, set `postedAfter` to yesterday's date and schedule the actor daily. The profile's pins are newest first, so paging stops at the first page older than that date, and you pay only for new pins.

**Can I scrape private boards or secret pins?** No. Only what anyone can see without an account.

**Is this affiliated with Pinterest?** No. It is an independent, unofficial tool. Please use the data in line with Pinterest's terms and the laws that apply to you; images and texts belong to their creators.

### Use it from AI agents (MCP)

This actor fits tasks like "find popular Pinterest pins about a topic", "get this Pinterest profile's latest pins" or "list the boards about wedding planning". Load it as a tool in Claude, Cursor or any MCP client:

```text
https://mcp.apify.com?tools=actors,k-data-lab/pinterest-scraper
```

A typical call:

```json
{ "searchQueries": ["capsule wardrobe"], "searchType": "pins", "maxResultsPerInput": 30 }
```

Agents don't need the exact field names: `query`, `queries`, `startUrls`, `maxItems` and `type` work too. `RUN_SUMMARY` tells the agent what happened, and the free monthly results make test calls cheap.

### More from K-Data Lab

Social and video:

- [TikTok Scraper](https://apify.com/k-data-lab/tiktok-scraper): video stats, transcripts and profiles
- [YouTube Scraper](https://apify.com/k-data-lab/youtube-scraper) and [YouTube Comments Scraper](https://apify.com/k-data-lab/youtube-comments-scraper)
- [X (Twitter) Tweet Scraper](https://apify.com/k-data-lab/x-tweet-scraper): likes, replies and media
- [Telegram Scraper](https://apify.com/k-data-lab/telegram-channel-scraper): channels and keyword search

Marketing research:

- [Google Trends Scraper](https://apify.com/k-data-lab/google-trends-scraper): interest, related queries and Trending now
- [Google Ads Transparency Scraper](https://apify.com/k-data-lab/google-ad-library-scraper): competitors' ads
- [Amazon Best Sellers Scraper](https://apify.com/k-data-lab/amazon-bestsellers-scraper): top 100 and rank changes
- [App Store Scraper](https://apify.com/k-data-lab/app-store-scraper) and [Google Play Scraper](https://apify.com/k-data-lab/google-play-scraper): apps and reviews

Something wrong or missing? Open an issue on the Issues tab.

# Actor input Schema

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

Words you would type in Pinterest's search box, e.g. "home office ideas" or "fall nails". One search per line. What comes back is set by Search type below.

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

What each search term returns: pins (image and video pins), videos (video pins only), boards, or profiles (creators and brands).

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

Any mix of Pinterest links: a profile (pinterest.com/marthastewart/), a board (pinterest.com/marthastewart/holiday-entertaining/), a pin (pinterest.com/pin/32088216099809635/), a profile's boards page (…/marthastewart/boards/) or a search link (pinterest.com/search/pins/?q=…). Country domains (de.pinterest.com, pinterest.co.uk) work too.

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

Pinterest usernames (the part after pinterest.com/), e.g. marthastewart. Each gives the profile, plus its latest pins and/or boards depending on the options below.

## `maxResultsPerInput` (type: `integer`):

Upper limit of pins, boards or profiles for each search term, link or username (1–5,000). The profile or board row itself is not counted. Searches usually go 500+ pins deep.

## `includeProfilePins` (type: `boolean`):

For profile links and usernames, also return the pins the profile created, newest first, with save counts.

## `includeBoards` (type: `boolean`):

For profile links and usernames, also return the profile's public boards (name, pin count, followers, cover image).

## `includePinDetails` (type: `boolean`):

Open each profile pin for its comment count, share count, hashtags, SEO title and rich-pin data (article, recipe or product title and price). Pin links always include details. Pins from searches and boards can't be opened by signed-out visitors, so they keep their list fields. Charged per pin as 'pin-details'.

## `postedAfter` (type: `string`):

Keep only pins created on or after this date (YYYY-MM-DD). Profile pins stop paging at the first older pin, so a scheduled run with this date only pays for new pins.

## Actor input object example

```json
{
  "searchQueries": [
    "home office ideas",
    "chocolate chip cookies"
  ],
  "searchType": "pins",
  "urls": [
    "https://www.pinterest.com/marthastewart/",
    "https://www.pinterest.com/pin/32088216099809635/"
  ],
  "usernames": [
    "marthastewart"
  ],
  "maxResultsPerInput": 50,
  "includeProfilePins": true,
  "includeBoards": false,
  "includePinDetails": false
}
```

# Actor output Schema

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

No description

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

No description

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

No description

## `all` (type: `string`):

No description

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

No description

# 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": [
        "home office ideas"
    ],
    "maxResultsPerInput": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("k-data-lab/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": ["home office ideas"],
    "maxResultsPerInput": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("k-data-lab/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": [
    "home office ideas"
  ],
  "maxResultsPerInput": 50
}' |
apify call k-data-lab/pinterest-scraper --silent --output-dataset

```

## MCP server setup

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