# Pinterest Scraper - Search, Pins & Profiles (`swerve/pinterest-scraper`) Actor

Scrape Pinterest without login: search pins by keyword, pull any pin full details (image, outbound link, saves, comments), and read profile stats (followers, verified, website). No API key. Pay only for the results you get.

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

## Pricing

from $5.00 / 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.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Pinterest Scraper - Search, Pins & Profiles

Scrape **Pinterest** in one run: search pins by keyword, pull any pin's full details, and read profile stats. **No login and no API key.** One tool instead of the usual three.

### What you can do with it

- Search a keyword and export every matching pin (title, image, outbound link, domain, saves)
- Find products and the sites they link to for a niche (e.g. "home decor", "wedding invitations")
- Pull a pin's full detail: save count, comments, board, and the person who pinned it
- Read profile stats for creators and brands (followers, pin count, verified, website)

### Input

| Field | What it does | Example |
|-------|--------------|---------|
| **Search terms** | Find pins by keyword. | `home decor`, `tattoo ideas` |
| **Pin or profile URLs** | A pin URL returns that pin's full detail; a profile URL returns the account's stats. | `https://www.pinterest.com/pin/225039312627881892/`, `https://www.pinterest.com/nike/` |
| **Pins per search term** | How many pins to collect per term. | `100` |
| **Full pin details for search results** | Add save and comment counts to each search pin (slower). | off |

### Output

Each row has a `type` of `pin` or `profile`.

Pin:

```json
{
  "type": "pin",
  "pinId": "225039312627881892",
  "url": "https://www.pinterest.com/pin/225039312627881892/",
  "title": "Cozy Reading Nook",
  "description": "...",
  "link": "https://sixpenny.com/products/neva-round-daybed",
  "domain": "sixpenny.com",
  "imageUrl": "https://i.pinimg.com/originals/...jpg",
  "isVideo": false,
  "saveCount": 34798,
  "commentCount": 0,
  "dominantColor": "#b8a99a",
  "pinnerUsername": "erinturnage",
  "boardName": "Reading Room Inspo",
  "scrapedAt": "2026-07-13T10:00:00.000Z"
}
````

Profile:

```json
{
  "type": "profile",
  "username": "nike",
  "url": "https://www.pinterest.com/nike/",
  "fullName": "Nike",
  "followerCount": 1090485,
  "boardCount": 10,
  "verified": true,
  "websiteUrl": "http://www.nike.com",
  "imageUrl": "https://i.pinimg.com/...jpg",
  "scrapedAt": "2026-07-13T10:00:00.000Z"
}
```

### How it works

Pinterest's website loads its data from an internal JSON API. This actor calls that same API directly, so it is fast and needs no browser and no login. Search results paginate automatically to the count you ask for.

### Limits

- Public data only. Search returns results from Pinterest's logged-out index; some non-English queries return fewer or no results there.
- Search pins carry the core fields; turn on "Full pin details" to add save and comment counts to each one.

### Export formats

Results download as JSON, CSV, Excel or XML, or pull them straight from the Apify API into your own app, spreadsheet or database.

### Frequently asked questions

**Do I need a Pinterest API key or login?** No. This Pinterest scraper needs no API key and no account. It reads Pinterest's public data directly.

**Can I search Pinterest and export the pins?** Yes. Give it a keyword and it returns matching pins with title, image, the website each pin links to, board and pinner, paginated to the count you ask for.

**Can I download Pinterest images?** Yes. Every pin row includes the full-resolution image URL, so you can collect or download images for a keyword, board or profile.

**Can I get a pin's outbound link and save count?** Yes. Paste a pin URL for full detail, or turn on "Full pin details" for search results, to get the destination link, saves and comments.

**Can I scrape a Pinterest profile?** Yes. Paste a profile URL or username to get followers, board count, pin count, website and verified status.

**Is scraping Pinterest legal?** This tool collects only public data. You are responsible for how you use it. Review Pinterest's terms and your local laws before large-scale use.

### Pricing

Pay per result. You only pay for the pins and profiles you actually get.

# Actor input Schema

## `searchTerms` (type: `array`):

Find pins by keyword. Each term is searched and its pins are returned. Examples: home decor, healthy recipes, tattoo ideas.

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

Paste Pinterest pin URLs or profile URLs (or a bare username). A pin URL returns that pin's full detail; a profile URL returns the account's stats. Examples: https://www.pinterest.com/pin/225039312627881892/ , https://www.pinterest.com/nike/ , nike

## `resultsPerSearch` (type: `integer`):

How many pins to collect for each search term. Default 100.

## `enrichPins` (type: `boolean`):

Fetch each search pin's full detail to add save and comment counts. More complete, but slower (one extra request per pin). Off by default.

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

Optional overall cap on rows returned. Leave blank for everything your inputs point to.

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

Optional. Pinterest answers without a proxy; add one only for very large runs to avoid rate limits.

## Actor input object example

```json
{
  "searchTerms": [
    "home decor"
  ],
  "startUrls": [],
  "resultsPerSearch": 100,
  "enrichPins": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# 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 = {
    "searchTerms": [
        "home decor"
    ],
    "startUrls": [],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

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

# Run the Actor and wait for it to finish
run = client.actor("swerve/pinterest-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchTerms": [
    "home decor"
  ],
  "startUrls": [],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call swerve/pinterest-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=swerve/pinterest-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Pinterest Scraper - Search, Pins & Profiles",
        "description": "Scrape Pinterest without login: search pins by keyword, pull any pin full details (image, outbound link, saves, comments), and read profile stats (followers, verified, website). No API key. Pay only for the results you get.",
        "version": "0.1",
        "x-build-id": "Q84RPy5BT8DksPd7y"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/swerve~pinterest-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-swerve-pinterest-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/swerve~pinterest-scraper/runs": {
            "post": {
                "operationId": "runs-sync-swerve-pinterest-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/swerve~pinterest-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-swerve-pinterest-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "searchTerms": {
                        "title": "Search terms",
                        "type": "array",
                        "description": "Find pins by keyword. Each term is searched and its pins are returned. Examples: home decor, healthy recipes, tattoo ideas.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "startUrls": {
                        "title": "Pin or profile URLs",
                        "type": "array",
                        "description": "Paste Pinterest pin URLs or profile URLs (or a bare username). A pin URL returns that pin's full detail; a profile URL returns the account's stats. Examples: https://www.pinterest.com/pin/225039312627881892/ , https://www.pinterest.com/nike/ , nike",
                        "items": {
                            "type": "string"
                        }
                    },
                    "resultsPerSearch": {
                        "title": "Pins per search term",
                        "minimum": 1,
                        "type": "integer",
                        "description": "How many pins to collect for each search term. Default 100.",
                        "default": 100
                    },
                    "enrichPins": {
                        "title": "Full pin details for search results",
                        "type": "boolean",
                        "description": "Fetch each search pin's full detail to add save and comment counts. More complete, but slower (one extra request per pin). Off by default.",
                        "default": false
                    },
                    "maxItems": {
                        "title": "Max results in total",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Optional overall cap on rows returned. Leave blank for everything your inputs point to."
                    },
                    "proxyConfiguration": {
                        "title": "Proxy",
                        "type": "object",
                        "description": "Optional. Pinterest answers without a proxy; add one only for very large runs to avoid rate limits.",
                        "default": {
                            "useApifyProxy": false
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
