# Pinterest Search Scraper — Pins, Boards & Trends (`anuarbakty/pinterest-search-scraper`) Actor

Pinterest scraper for search results, boards and profiles without login: pins with real pin links, saves, repins, comments, image and video links, plus Pinterest Trends with weekly interest and search suggestions for keyword research. Only new pins on a schedule.

- **URL**: https://apify.com/anuarbakty/pinterest-search-scraper.md
- **Developed by:** [Anuar Bakty](https://apify.com/anuarbakty) (community)
- **Categories:** Social media, SEO tools, E-commerce
- **Security:** Limited permissions
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.04 / 1,000 results

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 Search Scraper** scrapes Pinterest search results, boards and profiles without a login and gives every pin as a clean row: **a working pin link and the save count** even where Pinterest hides them, repins, reactions, comments, the original image and video links, the outbound link, the pinner and the board. It also reads **Pinterest Trends** (growing, top and seasonal terms with a year of weekly interest and their most saved pins) and Pinterest's own search suggestions for keyword research. Search by keyword, paste board, profile and pin links, and get only the new pins of a keyword or board on a schedule.

Since October 2026 Pinterest shows a visitor who is not logged in the pins of a search and of a board feed under encrypted IDs: no working link, no save count. This Actor looks each one up by its picture and brings back its working link and save count, inside the price of the row.

### What does Pinterest Search Scraper do?

- **Scrapes Pinterest search results** for any keyword: pins, video pins, boards or people, as deep as Pinterest goes. One test run read 1,095 pins of one keyword.
- **Finds the real pin link and the saves** of pins Pinterest shows under an encrypted ID, by looking each one up in its board and its creator's pins.
- **Exports boards and board sections**: their pins with images, links and saves.
- **Reads profiles**: followers, monthly views, website, the pins the account created or saved, and its boards.
- **Opens pin links and pin IDs** with the full pin: saves, repins, reactions, comment count, date, product price, video, and up to 1,000 comments with their text, date, author ID and likes.
- **Pinterest Trends**: growing, top monthly, top yearly and seasonal terms for any country, with weekly, monthly and yearly change, seasonality, a year of weekly interest and the most saved pins of each term.
- **Pinterest keyword research**: Pinterest's own search suggestions for any seed, in Pinterest's order.
- **Monitors new pins**: with **Only new pins** on, a scheduled run delivers only the pins that earlier runs did not, with a message to Slack, Discord, Telegram or any webhook.

### Why use this Pinterest scraper?

| What goes wrong elsewhere | What happens here |
|---|---|
| Search pins come back with an `e1_…` ID: the link does not open, saves are empty or a fake zero | Each such pin is looked up by its picture, and its working link and save count come back in the same row, included in the price. Empty stays empty, never a fake zero |
| "Returns 0 and no error" | Every input that gives nothing produces a free row with the reason: not found, private, encrypted link, no results |
| "Only 100 pins" | Reading goes on as long as Pinterest gives pages; each input gets a free summary row with pins read, delivered and why reading stopped |
| "Limit 5, got 95 rows" | The run stops exactly at your limit and at the maximum cost you set for the run |
| An automation built for another Pinterest scraper has to be rebuilt | Inputs of other Pinterest scrapers run as they are: 114 inputs of 49 Pinterest Actors (their examples, form defaults and public tasks) were tested |
| Blocked after a few hundred requests | No proxy needed: Pinterest answers Apify's servers directly, and a part of Pinterest that slows one address down moves to Apify datacenter proxies by itself, then comes back |

### What Pinterest data can you extract?

| Data | Fields |
|---|---|
| The pin | Pin ID and working link, title, description, alt text, created date, hashtags, promoted or not, position in the search |
| Engagement | Saves, repins, reactions, comment count, share count, and where the saves came from |
| Media | Original image and every size, dominant color, video stream (HLS), MP4 link and length, idea pin pages |
| Links | Outbound link, website, uploaded by the user or not, product name, price, currency and stock |
| Comments | Text, date, author ID and likes of each comment |
| Pinner and board | Pinner name, username, followers and link; board name, link and pin count |
| Boards | Name, description, pin count, followers, sections, collaborative or not, cover, owner |
| Profiles | Name, about, website and its verification, followers, following, pins, boards, monthly views, verified merchant |
| Pinterest Trends | Term, rank, search index, weekly, monthly and yearly change, seasonality, a year of weekly interest |
| Search suggestions | The suggestion and its place in Pinterest's list |

The full list is in [Output](#output).

### What can you use it for?

- **Content ideas for clinics, dentists and home services**: the most saved pins of "dental clinic interior design", "teeth whitening" or "kitchen remodel", with the websites they link to.
- **Pinterest analytics of any public pin**: saves, repins, reactions and comments for a keyword, a board or a competitor's profile.
- **Pinterest SEO and keyword research**: Pinterest's own suggestions for a seed, and the terms that grow in Pinterest Trends this week.
- **Seasonal planning**: seasonal and growing Pinterest Trends terms with a year of weekly interest, to plan posts before the peak.
- **Competitor monitoring**: the new pins of a keyword, a board or a profile every morning, in Slack or Telegram.
- **Exporting a Pinterest board**: the pins of a board with their image links and saves, as Excel or CSV.
- **AI agents and automation**: clean rows for n8n, Make, Zapier or an MCP agent.

### How to scrape Pinterest search results

1. Type keywords into **Search keywords**, or paste Pinterest links (search, board, section, profile, pin or `pin.it`) into **Pinterest links**, one per line.
2. Set **Max results per keyword, board or profile**, and the filters and order if you need them.
3. Click **Start**. 50 pins of a keyword with their links, saves and comments took 83 seconds in our test.
4. Open the **Output** tab and export the rows to Excel, CSV or JSON, or read them through the API.

| You give | You get |
|---|---|
| `dental clinic interior design` | Pins of the search with links, saves and repins |
| `dental clinic interior design`, **Search for** = boards | Boards about it, with pin counts and followers |
| `https://www.pinterest.com/mayoclinic/cardiology/` | The pins of the board with links and saves |
| `https://www.pinterest.com/mayoclinic/` | The profile row, the pins it created, and its boards when asked |
| `https://www.pinterest.com/pin/973481275688876750/` | The full pin, with its comments when asked |
| **Pinterest Trends: countries** = `US` | Today's growing terms in the US with their weekly interest |

### How much does it cost to scrape Pinterest?

You pay per result, not for time or memory. Real links, save counts and comments are included in the price of the pin.

| What | Price on the Free plan |
|---|---|
| A pin, board, profile, search suggestion or trend term | **$1.50 per 1,000 results** |
| Run start, Apify's standard start fee | $0.00003 with the default 512 MB of memory |
| Summary rows, rows that explain an empty input, pins left out by the filters, a pin that two inputs share | free |

Paid Apify plans pay less per result: $1.30 on Bronze, $1.17 on Silver, $1.04 on Gold per 1,000.

| Example | Cost on the Free plan |
|---|---|
| 1,000 pins of a keyword with links and saves | $1.50 |
| A dental clinic's profile with 50 of its pins and its 25 boards | $0.11 |
| Growing, monthly, yearly and seasonal Pinterest Trends of the US, 25 terms each, with the 3 most saved pins of each term | $0.60 |
| A daily check of 5 keywords that finds 20 new pins | $0.03 |

Apify's free plan includes $5 of credit every month, enough for about 3,300 results.

### Input

Keywords go into **Search keywords**, links into **Pinterest links**; a link of any kind can go into either field, and the Actor tells them apart. A long list can be pasted at once with **Bulk edit**.

```json
{
    "searchQueries": ["dental clinic interior design", "veterinary clinic reception"],
    "startUrls": ["https://www.pinterest.com/mayoclinic/cardiology/"],
    "maxResultsPerSource": 100,
    "sortPins": "saves",
    "includeComments": true
}
```

Filters (pins left out are free): **Min saves**, **Min reactions**, **Only pins with a link**, **Link website contains**, **Leave out ads**, **Created on or after** (a date or a number of days back), **Pictures or videos**. **Order**: Pinterest's own, the most saved first, or the newest first.

Limits: **Max results per keyword, board or profile**, **Max paid rows in the run**, and the maximum cost of the run that you set in Apify.

#### Pinterest Trends input

```json
{
    "trendsCountries": ["US"],
    "trendsList": ["growing", "seasonal"],
    "trendsKeywords": ["teeth", "skin", "home"],
    "trendsHistory": true,
    "trendsTopPins": 3
}
```

**Pinterest Trends: lists** are growing, top monthly, top yearly and seasonal. **Compared period** sets what the change is measured against (7 days to a year).

#### Coming from another Pinterest scraper?

Paste your input as it is. These field names are read too: `queries`, `search`, `query`, `keywords`, `searchTerms`, `urls`, `pinUrls`, `boardUrls`, `profileUrls`, `usernames`, `maxPins`, `limit`, `maxResults`, `maxItems`, `type`, `searchType`, `operationMode`, `trendsRegion`, `trendsType`, `onlyNew`, `monitorMode`, `sinceDate`, `sortBy` and more. A field that does not apply here is named in the log with the reason.

### Output

Every row has a `type`: `pin`, `board`, `profile`, `suggestion` or `trend` (paid), `summary` (free, one per input) or `notice` (free, an input that gave nothing, with a `code`: `NOT_FOUND`, `NO_RESULTS`, `ENCRYPTED_PIN`, `INVALID_INPUT`, `FETCH_FAILED`, `TRENDS_LIMIT`, `SCAN_LIMIT`).

One row per pin:

```json
{
    "type": "pin",
    "source": "dental clinic interior design",
    "sourceType": "search",
    "position": 1,
    "id": "1020839440598637528",
    "url": "https://www.pinterest.com/pin/1020839440598637528/",
    "idEncrypted": false,
    "title": "Calm reception for a family dental clinic",
    "description": "Warm wood, soft light and plants in the waiting area of Example Dental Studio.",
    "createdAt": "2026-10-17T00:17:46.000Z",
    "link": "https://example-dental.com/blog/reception",
    "domain": "example-dental.com",
    "imageUrl": "https://i.pinimg.com/originals/17/59/a2/1759a2a169f6255c18ed89f05eeb0ad9.jpg",
    "isVideo": false,
    "saves": 1465,
    "savesFrom": "boardWidget",
    "repinCount": 12,
    "reactionCount": 14,
    "commentCount": 3,
    "comments": [
        { "id": "5404536928934605458", "text": "Which paint color is this?", "createdAt": "2026-10-20T16:52:55.000Z", "authorId": "1100000000000000001", "likeCount": 2 }
    ],
    "pinnerUsername": "example_dental_studio",
    "pinnerFollowers": 1183,
    "boardName": "Dental office ideas",
    "boardUrl": "https://www.pinterest.com/example_dental_studio/dental-office-ideas/",
    "tags": [],
    "scrapedAt": "2026-11-07T12:00:00.000Z"
}
```

`savesFrom` says where the save count came from: `pin` (the pin itself) or the lookup that found it (`boardWidget`, `creatorPins`, `boardFeed`). `idEncrypted: true` marks a pin whose numeric ID Pinterest did not show; it keeps its `encryptedId`, picture, title, link, date and pinner.

One row per trend term:

```json
{
    "type": "trend",
    "source": "US growing",
    "country": "US",
    "trendList": "growing",
    "position": 1,
    "trendTerm": "november nails ideas 2026",
    "searchIndex": 25,
    "weeklyChange": 3,
    "monthlyChange": 100.01,
    "yearlyChange": 100.01,
    "weeklyInterest": [{ "date": "2026-11-02", "value": 100 }],
    "trendsEndDate": "2026-11-03"
}
```

Changes are as Pinterest reports them: 0.3 means +30%.

#### Summary rows

Each input also gets a free `summary` row: pins read and delivered, how many were left out by the filters, seen before or delivered by another input, how many encrypted pins got a real link and a save count, and why reading stopped. Each run also writes a `SUMMARY` record to its key-value store.

### Pinterest Trends scraper: growing, top and seasonal terms

Set **Pinterest Trends: countries** to one or more two-letter country codes, for example `US`, and pick the lists. Each term comes with its search index, its weekly, monthly and yearly change and its seasonality; turn on **Pinterest Trends: weekly interest** for a year of weekly values, and set **Pinterest Trends: top pins per term** to get the most saved pins of each term. In our test, 10 terms of two US lists, each with 53 weeks of interest and its 3 most saved pins, took 66 seconds.

### Pinterest keyword research with search suggestions

Type seeds into **Search suggestions for these words**: each gives Pinterest's own suggestions in Pinterest's order. "dental clinic" gave 12 in our test, such as "dental clinic interior", "dental clinic ideas" and "dental clinic logo". Use them as keywords in the same or the next run.

### Monitor new Pinterest pins on a schedule

1. Put keywords, boards or profiles into the input and turn on **Only new pins**.
2. Give the watch list a **Memory name**, one per list.
3. Paste a Slack or Discord webhook, a Telegram bot link or any webhook into **Send a message when the run ends**.
4. Save the input as a task and schedule it daily or weekly.

The first run delivers what it finds and remembers it. Every later run delivers only the pins that were not delivered before; pins it skips are free.

### Is it legal to scrape Pinterest?

The Actor reads only what Pinterest shows any visitor without logging in: public pins, boards, profiles and Pinterest Trends. It does not log in and reads nothing behind a login.

Rows can still contain personal data, for example the name and username of a pinner. Collect and use it only for a purpose you can justify under the rules that apply to you, such as the GDPR. If you are not sure, ask a lawyer.

### Integrations and API

Results export to JSON, CSV, Excel and HTML. Runs can be scheduled, called through the Apify API and connected to Make, Zapier, n8n, Google Sheets or your own webhook.

```bash
curl -X POST "https://api.apify.com/v2/acts/anuarbakty~pinterest-search-scraper/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"searchQueries": ["dental clinic interior design"], "maxResultsPerSource": 50}'
```

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_TOKEN>")
run = client.actor("anuarbakty/pinterest-search-scraper").call(run_input={"searchQueries": ["dental clinic interior design"], "maxResultsPerSource": 50})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(row["type"], row.get("title"), row.get("saves"))
```

#### Use it from AI agents (MCP)

The Actor works as a tool through the [Apify MCP server](https://mcp.apify.com): `https://mcp.apify.com/?tools=anuarbakty/pinterest-search-scraper`. A typical request:

> Find the most saved Pinterest pins about dental clinic interior design.

The agent calls the Actor with `{"searchQueries": ["dental clinic interior design"], "sortPins": "saves", "fastMode": true}`. **Fast mode** answers within about 30 seconds with up to 10 rows; it took 12 seconds in our test. A mistyped input comes back as a free row that says what to fix.

Apify's video shows how to set up the MCP server:

https://www.youtube.com/watch?v=1i-dKo-0puk

### More from this developer

- **[Google Ads Library Scraper](https://apify.com/anuarbakty/google-ads-library-scraper)**: Google ads of any brand or website from the Google Ads Transparency Center: ad text read even from pictures, variations, countries, EU reach and targeting, no login.
- **[Facebook Ads Library Scraper](https://apify.com/anuarbakty/facebook-ads-library-scraper)**: Facebook and Instagram ads from the Meta Ad Library by keyword, brand, page or Instagram account, with copy, creatives, EU reach and advertiser contacts, no login.
- **[App Store Reviews & Google Play Reviews Scraper](https://apify.com/anuarbakty/app-store-play-scraper)**: reviews, app details, ratings histogram, search, top charts and keyword rankings from both stores in one run.
- **[YouTube Transcript Scraper](https://apify.com/anuarbakty/youtube-transcript-scraper)**: transcripts and subtitles of YouTube videos, Shorts, channels, playlists and search, as text, timestamps, SRT or VTT.
- **[Instagram Transcript Generator](https://apify.com/anuarbakty/instagram-reels-transcript-generator)**: Instagram reels to text with timestamps, SRT and VTT subtitles and the opening hook.
- **[Threads Scraper](https://apify.com/anuarbakty/threads-scraper)**: posts, all replies and profiles from Threads without login, keyword search and only-new monitoring.
- **[2GIS Places Scraper](https://apify.com/anuarbakty/2gis-places-scraper)**: businesses from 2GIS with phones, WhatsApp, Telegram, emails and websites.
- **[2GIS Reviews Scraper](https://apify.com/anuarbakty/2gis-reviews-scraper)**: 2GIS reviews with star, topic and date filters and only-new monitoring.

### FAQ

**Do I need a Pinterest account, cookies or an API key?**
No. The Actor reads what Pinterest shows a visitor who is not logged in and takes no cookies.

**Does Pinterest have an API?**
Pinterest's official API works through an app that Pinterest approves and an OAuth login, and is built around your own account: your pins, boards, ads and analytics. This Actor needs no app and no login: it reads the public search results, boards, profiles and Trends of any keyword or account, through the Apify API or MCP.

**How many pins can I get per keyword?**
As many as Pinterest gives. One test run read 1,095 pins of one keyword and delivered 938 different ones; Pinterest repeats some pins further down the list, and the repeats are skipped for free. Set **Max results per keyword, board or profile** to the number you need.

**How do I get the save count and the real link of a pin from a Pinterest search?**
Keep **Find real links and save counts** on (it is on by default). Each pin that Pinterest shows under an encrypted ID is looked up in its board and its creator's pins; the link, saves and repins come back in the same row. Turn it off for a faster run without lookups.

**How do I download the pins of a Pinterest board?**
Paste the board link, for example `https://www.pinterest.com/mayoclinic/cardiology/`, and set the limit. Each pin comes with its original image link, its video link if it has one, its title, link and saves; export them as CSV and use the image links to save the pictures.

**Can I get Pinterest analytics of a competitor?**
Yes, for everything public: paste the competitor's profile link to get its followers, monthly views and the saves, repins and comments of its pins, or watch its boards with **Only new pins**.

**How do I find trending topics on Pinterest?**
Set **Pinterest Trends: countries** and pick growing or seasonal lists. Add words to **Pinterest Trends: only terms with these words**, for example `teeth` or `kitchen`, to stay in your niche.

**How do I export Pinterest data to Excel or Google Sheets?**
When the run ends, open the **Output** tab and export to Excel or CSV, or connect the Actor to Google Sheets to get the rows after every run.

**A run finished as "succeeded" but some inputs gave nothing.**
There is a free row for each of them that says why: no such board or profile, a private one, an encrypted pin link, or no results. The run succeeds so that an automation keeps going; turn on **Fail the run when nothing is delivered** if you want a failed status.

**Something does not work or a field is missing.**
Open an issue on the Issues tab with the run ID. Every input that gave less than asked already explains why in its summary or notice row.

# Actor input Schema

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

One keyword or phrase per line, searched on Pinterest like in its search box. Each keyword gets its own pins and its own summary row.

## `searchFor` (type: `string`):

What a keyword search returns: pins (pictures and videos), video pins only, boards, or people (profiles). Pinterest finds people by short words, one or two.

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

Pins (pinterest.com/pin/…, pin.it short links or pin IDs), boards, board sections, profiles (pinterest.com/<user>/, @user, or /\_created/, /\_saved/), search links and idea pages. Country domains (de.pinterest.com, pinterest.co.uk) work too.

## `maxResultsPerSource` (type: `integer`):

Paid rows to deliver for each keyword, link or profile. Pinterest search goes past 800 pins deep for a common keyword.

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

Stops the run after this many paid rows in total. Empty = no limit besides the run's maximum cost.

## `findRealLinks` (type: `boolean`):

Since October 2026 Pinterest shows pins of a search and a board feed under encrypted IDs: no working link, no save count. On: each such pin is looked up by its picture in its board's latest pins, its creator's pins and its board feed (included in the price, a few extra requests per board). Off: faster; these pins keep the encrypted ID and empty saves.

## `lookupFeedPages` (type: `integer`):

How deep the board feed is read (25 pins a page) to find the save count of an encrypted pin. 0 = only the board's latest pins and the creator's pins.

## `includeComments` (type: `boolean`):

Comments of each pin, when Pinterest shows them to a visitor who is not logged in. Included in the price of the pin.

## `maxComments` (type: `integer`):

Comments to read for each pin.

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

For a profile link: its created pins (made by the account), its saved pins (saved to its boards), or only the profile row. A link that ends with /\_created/ or /\_saved/ chooses by itself.

## `includeProfileBoards` (type: `boolean`):

Also one paid row per board of each profile: name, pin count, followers, sections.

## `suggestionSeeds` (type: `array`):

Pinterest's own search suggestions for each seed, in its own order: the words people type on Pinterest.

## `trendsCountries` (type: `array`):

Two-letter codes of the countries whose Pinterest Trends lists to read, such as US, GB, DE, FR, BR, CA, AU.

## `trendsList` (type: `array`):

Growing (fastest risers), top monthly, top yearly, seasonal.

## `trendsKeywords` (type: `array`):

Each list keeps only the terms that contain one of these words. Empty = the whole list.

## `trendsExclude` (type: `array`):

Terms that contain one of these words are left out.

## `trendsMaxTerms` (type: `integer`):

Terms to deliver from each list (Pinterest gives up to 100).

## `trendsLookback` (type: `string`):

The period the growth of each term is measured over.

## `trendsHistory` (type: `boolean`):

Add a year of weekly search interest to each term, on its own scale (its best week = 100).

## `trendsTopPins` (type: `integer`):

For each term, this many pins of its search, the most saved first. 0 = none. Each pin is a paid row.

## `minSaves` (type: `integer`):

Only pins saved at least this many times. Pins whose save count is unknown are left out.

## `minReactions` (type: `integer`):

Only pins with at least this many reactions.

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

Only pins that lead to a website.

## `linkDomainContains` (type: `string`):

Only pins whose website contains one of these words, comma-separated, such as "etsy, amazon".

## `excludePromoted` (type: `boolean`):

Leave out promoted pins.

## `createdAfter` (type: `string`):

A date like 2026-10-01, or a number of days back like "30 days". Pins without a date are left out.

## `pinMedia` (type: `string`):

Keep all pins, only pictures, or only videos.

## `sortPins` (type: `string`):

Pinterest's own order, the most saved first, or the newest first. A sorted input collects three times its limit of pins that pass the filters, then delivers the best.

## `locale` (type: `string`):

Language of the Pinterest session, such as en-US, de-DE, pt-BR: Pinterest shows results for it.

## `onlyNewPins` (type: `boolean`):

Deliver only pins that earlier runs with the same memory did not deliver. Schedule the run daily or weekly to get new pins only. The first run delivers what it finds and remembers it.

## `monitorStoreName` (type: `string`):

Name of the memory of "Only new pins" in your account. Use one name per watch list, so that lists do not mix.

## `webhookUrl` (type: `string`):

A Slack or Discord webhook, a Telegram bot link (https://api.telegram.org/bot<token>/sendMessage?chat_id=<chat>) or any webhook (Make, n8n, Zapier): it gets the count of results and the dataset link.

## `notifyWhen` (type: `string`):

"When there are results" skips runs that found nothing.

## `tags` (type: `array`):

Added to every row, to tell runs and lists apart in one table.

## `includeErrorRows` (type: `boolean`):

A free row for each input that gave nothing, with the reason, and a free summary row per input.

## `failIfAllInputsFail` (type: `boolean`):

Off: a run that delivers nothing still succeeds and explains why in free rows, so schedules and integrations keep going.

## `strictInput` (type: `boolean`):

On: an unknown field name stops the run before anything is read or charged.

## `fastMode` (type: `boolean`):

Answers within about 30 seconds: at most 10 rows, no board feed lookups, no weekly interest.

## `maxConcurrency` (type: `integer`):

How many inputs are read at the same time. Pinterest limits each address, so more mostly waits longer.

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

Pinterest answers Apify's server address without a proxy, so none is used by default. Choose a proxy here to always use it.

## `proxyFallback` (type: `boolean`):

When Pinterest keeps refusing the server address, the run moves to Apify datacenter proxies for a while, then tries the server address again.

## `residentialFallback` (type: `boolean`):

When Pinterest also keeps refusing datacenter addresses, move to residential ones for a while.

## Actor input object example

```json
{
  "searchQueries": [
    "dental clinic interior design"
  ],
  "searchFor": "pins",
  "maxResultsPerSource": 20,
  "findRealLinks": true,
  "lookupFeedPages": 3,
  "includeComments": false,
  "maxComments": 20,
  "profilePins": "created",
  "includeProfileBoards": false,
  "trendsList": [
    "growing"
  ],
  "trendsMaxTerms": 25,
  "trendsLookback": "30d",
  "trendsHistory": false,
  "trendsTopPins": 0,
  "onlyWithLink": false,
  "excludePromoted": false,
  "pinMedia": "all",
  "sortPins": "relevance",
  "locale": "en-US",
  "onlyNewPins": false,
  "monitorStoreName": "pinterest-monitor",
  "notifyWhen": "results",
  "includeErrorRows": true,
  "failIfAllInputsFail": false,
  "strictInput": false,
  "fastMode": false,
  "maxConcurrency": 2,
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "proxyFallback": true,
  "residentialFallback": false
}
```

# Actor output Schema

## `results` (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": [
        "dental clinic interior design"
    ],
    "maxResultsPerSource": 20,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("anuarbakty/pinterest-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 = {
    "searchQueries": ["dental clinic interior design"],
    "maxResultsPerSource": 20,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("anuarbakty/pinterest-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 '{
  "searchQueries": [
    "dental clinic interior design"
  ],
  "maxResultsPerSource": 20,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call anuarbakty/pinterest-search-scraper --silent --output-dataset

```

## MCP server setup

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