# Pinterest Visual Search Scraper (`piotrv1001/pinterest-visual-search-scraper`) Actor

The Pinterest Visual Search Scraper finds Pinterest pins that look like your photo (Pinterest Lens), returning titles, descriptions, source links and domains, full-size images, save and repin counts, pinners and dates, with an optional crop box — ideal for trend research and image tracing.

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

## Pricing

from $10.00 / 1,000 image searches

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 Visual Search Scraper

Find Pinterest pins that look like your photo. The **Pinterest Visual Search Scraper** takes image URLs and returns the visually similar pins Pinterest finds for them, the same results as Pinterest Lens. Each row has the pin title and description, the outbound link and its website, the full-size image, save and repin counts, the pinner and the date it was pinned. Built for trend and inspiration research, finding where a product or photo is shared, tracing the shops and blogs behind an image, and collecting visually similar images at scale.

### ✨ Features

- 📷 **Photo in, pins out**: Any direct image URL (JPG, PNG, WebP, GIF or AVIF, up to 10 MB) or data: URL. Large photos are resized for you. One search per image.
- ✂️ **Crop to one object**: Optional crop box, like dragging the Lens box over the sofa in a room photo or the shoes in an outfit.
- 🔗 **Source links**: The website each pin links to (shops, blogs, recipes, brands), with its domain.
- 📈 **Popularity and people**: Save count, repin count, comment count, the pinner's username, name, profile link and follower count, and the board ID.
- 🖼️ **Full-size images**: Original image URL with width and height, plus 736 px and 474 px versions, dominant color and alt text.
- 🔢 **Deep results**: Up to ~270 similar pins per photo, most similar first, with no repeated pins.
- 💸 **Pay per search**: One price per image searched. Images that fail to load or find no pins are free.

### 🛠️ How It Works

1. **Paste image URLs**: Product photos, interiors, outfits, recipes, landmarks or any picture.
2. **Pick depth and, optionally, a crop box**: How many pins per image, and which part of the photo to search.
3. **Run the scraper**: You get one row per similar pin, numbered by similarity and grouped by the photo that found it.

### 💰 Pricing

| Event        |    Price | What you get                                                                    |
| ------------ | -------: | ------------------------------------------------------------------------------- |
| Actor start  | $0.00005 | Once per run                                                                    |
| Image search |    $0.01 | One image searched: the first page of similar pins (up to 250, usually 80-220)  |
| Results page |   $0.005 | The rest of the pins for the same image, only when you ask for more than page 1 |

100 images at the default 50 pins cost $1.00 to $1.50 ($0.005 more for each image whose first page holds fewer than 50 pins). The deepest search, about 270 pins for one image, costs $0.015. Images that cannot be loaded or find no pins are not charged. The run stops at your maximum charge per run.

### 📥 Input

| Field                | Type    | Description                                                                                 |
| -------------------- | ------- | ------------------------------------------------------------------------------------------- |
| `imageUrls`          | array   | Image URLs (or data: URLs) to search with.                                                  |
| `maxResultsPerImage` | integer | Similar pins per image, most similar first. Default `50`, maximum `300`.                    |
| `cropBox`            | string  | Optional part of each photo to search: `x,y,width,height` as fractions, e.g. `0.5,0,0.5,1`. |
| `proxyConfiguration` | object  | Keep the default.                                                                           |

Example:

```json
{
    "imageUrls": [
        "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a0/Modern_luxury_living_room_with_kitchen_interior.jpg/960px-Modern_luxury_living_room_with_kitchen_interior.jpg"
    ],
    "maxResultsPerImage": 100,
    "cropBox": "0.5,0,0.5,1"
}
```

### 📊 Sample Output Data

One row per similar pin. Example (two pins for a sneaker photo):

```json
[
    {
        "searchImage": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/70/Nike_Air_Jordan.jpg/960px-Nike_Air_Jordan.jpg",
        "position": 1,
        "id": "4610771322566419008",
        "url": "https://www.pinterest.com/pin/4610771322566419008/",
        "title": "Nike Tanjun Men's Running Shoes, Gray",
        "description": "100% Authentic\nBlack/Red-White\nVietnam\nNike Mens Air Jordan 1 Retro High OG \"Bloodline\" Black/Red-White Leather Size 10",
        "altText": null,
        "link": "https://www.amazon.com/Jordan-Retro-Bloodline-Red-White-Leather/dp/B0825955HD?ref_=pinterest_fplfs",
        "domain": "amazon.com",
        "imageUrl": "https://i.pinimg.com/originals/a5/18/8e/a5188ef526da503c53d1f7e2f56893ee.jpg",
        "imageWidth": 2000,
        "imageHeight": 1500,
        "imageLargeUrl": "https://i.pinimg.com/736x/a5/18/8e/a5188ef526da503c53d1f7e2f56893ee.jpg",
        "imageMediumUrl": "https://i.pinimg.com/474x/a5/18/8e/a5188ef526da503c53d1f7e2f56893ee.jpg",
        "dominantColor": "#ffffff",
        "saveCount": null,
        "repinCount": 1,
        "commentCount": 0,
        "price": null,
        "currency": null,
        "isVideo": false,
        "isPromoted": false,
        "createdAt": "2026-09-26T20:04:54.000Z",
        "pinnerUsername": "amazon",
        "pinnerName": "Amazon",
        "pinnerUrl": "https://www.pinterest.com/amazon/",
        "pinnerFollowers": 2308635,
        "boardId": "746964356886045799",
        "scrapedAt": "2026-10-09T10:25:43.951Z"
    },
    {
        "searchImage": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/70/Nike_Air_Jordan.jpg/960px-Nike_Air_Jordan.jpg",
        "position": 36,
        "id": "106679084916406141",
        "url": "https://www.pinterest.com/pin/106679084916406141/",
        "title": "Fashion, Sneakers, Air Jordans",
        "description": "Jordan Air Jordan 1 Retro High OG \"Chicago Lost And Found\" sneakers $832 Import duties included",
        "altText": null,
        "link": "https://www.farfetch.com/in/shopping/men/jordan-air-jordan-1-retro-high-og-chicago-lost-and-found-sneakers-item-18316489.aspx?storeid=11218",
        "domain": "farfetch.com",
        "imageUrl": "https://i.pinimg.com/originals/9c/55/f0/9c55f0b85835b31d6adcbe23ce8586d2.jpg",
        "imageWidth": 1000,
        "imageHeight": 1334,
        "imageLargeUrl": "https://i.pinimg.com/736x/9c/55/f0/9c55f0b85835b31d6adcbe23ce8586d2.jpg",
        "imageMediumUrl": "https://i.pinimg.com/474x/9c/55/f0/9c55f0b85835b31d6adcbe23ce8586d2.jpg",
        "dominantColor": "#ffffff",
        "saveCount": 130,
        "repinCount": 107,
        "commentCount": 0,
        "price": 832,
        "currency": "USD",
        "isVideo": false,
        "isPromoted": false,
        "createdAt": "2023-04-27T10:39:49.000Z",
        "pinnerUsername": "kapilbatus",
        "pinnerName": "Kapil Batus",
        "pinnerUrl": "https://www.pinterest.com/kapilbatus/",
        "pinnerFollowers": 11,
        "boardId": "106679153612729507",
        "scrapedAt": "2026-10-09T10:25:43.951Z"
    }
]
```

- `price` and `currency` are filled only on shopping pins that carry a product price (a few percent of pins). Elsewhere they are `null`.
- `link` and `domain` are `null` for pins uploaded straight to Pinterest with no source website.
- `saveCount` is the total saves of the image across Pinterest; `repinCount` counts repins of this pin.
- How many pins come back depends on the photo: popular subjects (interiors, fashion, landmarks) return 200+, unusual photos fewer. Pinterest shows at most ~270 per photo.
- Images that fail come back as `{ "searchImage": "...", "status": "image_error" | "failed" | "no_matches", "error": "..." }` rows and are not charged.

### 🔗 Use cases

- **Trend and inspiration research**: See how a look, room style or product is pinned, saved and described.
- **Find where a photo is shared**: Trace the shops, blogs and brands that link to pins of your product or image.
- **Competitor and product discovery**: Find look-alike products and the sites selling them.
- **Visual datasets**: Collect visually similar images with titles, alt text and colors.

### 🔗 Related Actors

- [AliExpress Image Search Scraper](https://apify.com/piotrv1001/aliexpress-image-search-scraper): find AliExpress products that look like your photo.
- [Amazon Image Search Scraper](https://apify.com/piotrv1001/amazon-image-search-scraper): find Amazon products that look like your photo.
- [Yandex Reverse Image Search Scraper](https://apify.com/piotrv1001/yandex-reverse-image-search-scraper): similar images, other sizes and the pages that use a photo.
- [Bing Visual Search Scraper](https://apify.com/piotrv1001/bing-visual-search-scraper): visually similar images from Bing.
- [IKEA Visual Search Scraper](https://apify.com/piotrv1001/ikea-visual-search-scraper): find IKEA products that match a photo.
- [Vinted Image Search Scraper](https://apify.com/piotrv1001/vinted-image-search-scraper) — find Vinted listings that look like your photo on 26 Vinted sites.

Turn pictures into pins. Run the **Pinterest Visual Search Scraper** today! 🚀

# Actor input Schema

## `imageUrls` (type: `array`):

Photos to find similar Pinterest pins for: direct image URLs (JPG, PNG, WebP, GIF or AVIF, up to 10 MB) or data: URLs. One search per image. Leave empty to try two example photos.

## `maxResultsPerImage` (type: `integer`):

Similar pins to return per image, most similar first. A results page holds up to 100; Pinterest returns up to ~270 per photo, often fewer for unusual photos.

## `cropBox` (type: `string`):

Search only part of each photo, like dragging the Pinterest Lens box over one object. Four fractions of the image size: x,y,width,height, measured from the top-left corner. Example: 0.5,0,0.5,1 = the right half. Leave empty to search the whole photo.

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

Keep the default.

## Actor input object example

```json
{
  "imageUrls": [
    "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a0/Modern_luxury_living_room_with_kitchen_interior.jpg/960px-Modern_luxury_living_room_with_kitchen_interior.jpg",
    "https://upload.wikimedia.org/wikipedia/commons/thumb/7/70/Nike_Air_Jordan.jpg/960px-Nike_Air_Jordan.jpg"
  ],
  "maxResultsPerImage": 50,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `pins` (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 = {
    "imageUrls": [
        "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a0/Modern_luxury_living_room_with_kitchen_interior.jpg/960px-Modern_luxury_living_room_with_kitchen_interior.jpg",
        "https://upload.wikimedia.org/wikipedia/commons/thumb/7/70/Nike_Air_Jordan.jpg/960px-Nike_Air_Jordan.jpg"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("piotrv1001/pinterest-visual-search-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 = {
    "imageUrls": [
        "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a0/Modern_luxury_living_room_with_kitchen_interior.jpg/960px-Modern_luxury_living_room_with_kitchen_interior.jpg",
        "https://upload.wikimedia.org/wikipedia/commons/thumb/7/70/Nike_Air_Jordan.jpg/960px-Nike_Air_Jordan.jpg",
    ],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("piotrv1001/pinterest-visual-search-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 '{
  "imageUrls": [
    "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a0/Modern_luxury_living_room_with_kitchen_interior.jpg/960px-Modern_luxury_living_room_with_kitchen_interior.jpg",
    "https://upload.wikimedia.org/wikipedia/commons/thumb/7/70/Nike_Air_Jordan.jpg/960px-Nike_Air_Jordan.jpg"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call piotrv1001/pinterest-visual-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,piotrv1001/pinterest-visual-search-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/7HqLChE1UHwzAhzfN/builds/mDIJGuiqkKJadldhz/openapi.json
