Pinterest Search Scraper: Keyword to Pins avatar

Pinterest Search Scraper: Keyword to Pins

Pricing

from $1.00 / 1,000 pins

Go to Apify Store
Pinterest Search Scraper: Keyword to Pins

Pinterest Search Scraper: Keyword to Pins

Search Pinterest by keyword and get every matching pin: image URL, save count, board, destination link and timestamp. No login, no API key. Works in Claude, ChatGPT and any MCP compatible AI agent.

Pricing

from $1.00 / 1,000 pins

Rating

0.0

(0)

Developer

The Mine Works

The Mine Works

Maintained by Community

Actor stats

0

Bookmarked

6

Total users

2

Monthly active users

a day ago

Last modified

Share

1,197 Pinterest pins from 6 searches in 186 seconds

From The Mine Works, makers of Threads Scraper and B2B Leads Finder, with over 140,000 runs across 170+ public actors.

Type the words a shopper or a planner would type into Pinterest (mens diamond ring, boho living room, cartier trinity ring) and get back the public pins Pinterest shows for them: the full size image, the title and description, the board it sits on, who pinned it, the outside link the pin sends people to, that link's domain and the date it was pinned. No Pinterest login, no API key and no browser session to manage.

Why choose this actor?

  • Hundreds of pins per keyword in seconds. On 2 October six searches with maxItems: 200 returned 1,197 pins in 186 seconds, and five searches of 100 returned 499 pins in 86 seconds. Up to 250 pins per keyword, and as many keywords as you like in one run.
  • The link behind the pin, ready for competitor and product research. Each pin carries its outbound link and domain, so you can count which shops (Etsy, eBay, brand sites) own a search. In the 1,197 pin run, 322 pins pointed at etsy.com and 1,122 had an outside link.
  • Pay only for pins delivered. $1 per 1,000 pins on every Apify plan. A keyword that Pinterest blocks or that returns nothing, and the two report rows at the end of each run, cost nothing beyond the start fee.

Run it on Apify

Part of The Mine Works Social media and video family: Threads Scraper, Reddit Scraper, Threads Search Scraper, Instagram Profile Scraper, Instagram Followers & Following, Reddit Search Scraper.

Try it in one minute

Paste this into the JSON tab of the input page and press Start:

{
"searchQueries": ["cartier trinity ring"],
"maxItems": 10
}

You get 10 pins in well under a minute. Our daily check of this exact search (with 5 pins) finishes in about 23 seconds, most of it container start.

The only input is searchQueries: a list of keywords or phrases, each searched on Pinterest on its own, the way you would type them in Pinterest's search box. Any language works. maxItems sets how many pins to collect for each keyword (1 to 250, default 40). There is no URL, board or profile input in this actor; for one account's profile and pins, use Pinterest Profile Scraper.

Apify's free plan includes $5 of credit every month, which covers about 4,800 pins at this actor's price ($0.001 a pin plus the $0.01 start fee at the default 2 GB memory, in runs of 250 pins).

Copy to your AI assistant

themineworks/pinterest-search-scraper on Apify. Searches Pinterest by keyword and returns one row per public pin with image URL, title, description, board, pinner, outbound link, link domain, video flag and pin date. Call ApifyClient("TOKEN").actor("themineworks/pinterest-search-scraper").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items. Required: searchQueries (string[], one Pinterest search per entry). Optional: maxItems (pins per query, 1 to 250, default 40). Each pin row has _source = the query that found it; a pin found by two queries appears (and is charged) once per query, so dedupe on pin_id. Rows with _type "summary" or "info" are run reports, never billed. Full spec: GET https://api.apify.com/v2/acts/themineworks~pinterest-search-scraper/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral

Key features

  • Up to 17 fields per pin: pin_id, url, title, description, image_url (the original size image on Pinterest's CDN), is_video, board, board_url, pinner, pinner_username, link, domain, dominant_color, timestamp, scraped_at, plus _mode and _source (the keyword that found the pin).
  • Up to 250 pins per keyword. Pinterest's search feed is read 25 pins at a time, up to 14 pages, until your maxItems is reached or Pinterest has no more results for the term.
  • Many keywords in one run. Each keyword is its own search; rows are tagged with _source so you can group or compare them. Repeated keywords in your list are searched once.
  • Plain HTTP, no browser in the normal path. The actor calls the same JSON search feed Pinterest's own web app uses, so a 200 pin search takes seconds. If Pinterest refuses a request, it moves to Apify's datacenter proxy, then to at most two residential proxy attempts for that keyword, then to a headless browser over datacenter, before it reports the keyword as blocked. You pay nothing extra for any of these steps.
  • Clean failure handling. A keyword that fails every route returns a short row marked blocked and is not charged. After 12 failed keywords in a row the run stops instead of spending more, and it ends 15 seconds before its timeout with everything collected so far.

How to use it

Basic: one keyword, 100 pins

{
"searchQueries": ["minimalist wedding invitations"],
"maxItems": 100
}

Several keywords at once

{
"searchQueries": [
"mens diamond ring",
"mens diamond wedding band",
"mens engagement ring diamond"
],
"maxItems": 200
}

Each keyword is searched separately and every row says which one found it in _source. Pinterest often shows the same pin for related searches: in our 6 keyword run, 176 of the 1,197 rows were pins that another of the six keywords had also returned. Each keyword's copy is delivered and charged, so if you only want unique pins, dedupe on pin_id after the run, or use fewer, more distinct keywords.

{
"searchQueries": ["lab grown diamond earrings", "tennis bracelet", "solitaire pendant"],
"maxItems": 250
}

Group the rows by domain to see which websites Pinterest sends traffic to for each term (in our men's ring run, etsy.com led with 322 pins, then instagram.com with 98 and ebay.com with 68). Rows where domain is Uploaded by user are pins with no outside website. Group by pinner_username to find the accounts that publish most in your niche.

Weekly trend and content tracking

{
"searchQueries": ["fall outfits 2026", "halloween table decor"],
"maxItems": 150
}

Save it as a task and schedule it weekly (for example 0 8 * * 1). The actor does not remember earlier runs, so compare pin_id lists between runs to find the pins that are new to the results, and use timestamp to see how recent the pins Pinterest ranks are.

Image sets for mood boards and creative briefs

{
"searchQueries": ["japandi bedroom", "terracotta kitchen"],
"maxItems": 60
}

image_url points at the original size image on Pinterest's public CDN (i.pinimg.com). Download images straight from there; the actor itself never downloads image files, which keeps runs fast. Check the rights of each image before you reuse it.

Input parameters

ParameterTypeDefaultWhat it does
searchQueriesarray of stringsrequired (form prefill: cartier trinity ring)One Pinterest search per entry, typed the way you would type it on Pinterest. Specific product, brand or style words give cleaner results than single generic words.
maxItemsinteger (1 to 250)40Most pins to collect for each search query. A query can return fewer when Pinterest has fewer results for it.

"Form prefill" values fill the Console form for you but are not defaults: an API call must send searchQueries itself.

Run options. The default memory is 2 GB and the default timeout is 600 seconds. Our 6 keyword, 1,197 pin run took 186 seconds, so for 10 or more keywords at 250 pins each, raise the timeout to 1,200 seconds or split the list across runs. The memory setting also sets the start fee (see Pricing). We test and run this actor at the default 2 GB, which leaves room for the headless browser fallback.

What data do you get?

One row per pin per search query. Fields Pinterest does not return for a pin are left out of that row rather than sent as null.

The pin: pin_id, url (the pin's page on pinterest.com), title, description, image_url, is_video (true for video pins; the image is the video's cover), dominant_color (a hex color such as #af826e), timestamp (when the pin was created, ISO format).

Where it lives and who saved it: board (board name), board_url, pinner (display name), pinner_username.

Where it sends people: link (the outside page the pin opens) and domain (that page's domain, or Uploaded by user when the pin has no outside website).

Run context: _mode (always search), _source (the search query that returned the pin) and scraped_at.

What you do not get: save counts, comment counts and video files. Pinterest's search feed did not return save or comment numbers for any of the 1,881 pins in our September and October sample runs, and video pins come with their cover image but no video file URL. If you need a pin's saves, open its url.

Each run ends with a _type: "summary" row (requested, targets_scraped, pins_delivered, blocked, not_found, charged_for and which route answered, in ladder_success) and a _type: "info" row with a short message. A keyword that failed every route adds one short row marked blocked, naming the keyword. None of these rows is a pin and none is ever charged. Keep only rows that have a pin_id when you load pins.

Stable fields for automations

These 13 fields were present in every pin row we sampled (1,881 rows from five runs between 25 September and 2 October 2026):

FieldWhat it holds
pin_idPinterest's pin ID, as text
urlPin page URL on pinterest.com
image_urlOriginal size image URL on i.pinimg.com
is_videotrue for video pins, otherwise false
boardName of the board the pin is saved to
board_urlBoard page URL
pinnerDisplay name of the account that saved the pin
pinner_usernameThat account's Pinterest username
domainDomain of the pin's outside link, or Uploaded by user
timestampWhen the pin was created, ISO timestamp
_modeAlways search in this actor
_sourceThe search query that returned this row
scraped_atISO timestamp when the row was captured

title (in 84% of sampled rows), description (86%), link (91%) and dominant_color (all but 4 rows) are left out when the pin has none. We will not rename these fields. New fields may be added over time; existing ones keep their names.

Output examples

Real rows from our runs on 2 October 2026, with long descriptions trimmed.

A product pin that links to an Etsy listing (query mens diamond ring):

{
"_mode": "search",
"_source": "mens diamond ring",
"pin_id": "4591912504518487168",
"url": "https://www.pinterest.com/pin/4591912504518487168/",
"title": "0.50 CT Baguette Diamond Men's Ring 14k Gold Modern Geometric Tension Set Band Minimalist Solitaire Engagement Ring Anniversary Gift for Him",
"description": "0.50 CT Baguette Diamond Men's Ring 14k Yellow Gold Modern Geometric Tension Set Band…",
"image_url": "https://i.pinimg.com/originals/50/8e/34/508e34ba9c0b26235fabc2a59f67478c.jpg",
"is_video": false,
"board": "Products",
"board_url": "https://www.pinterest.com/etsy/_products/",
"pinner": "Etsy",
"pinner_username": "etsy",
"link": "https://www.etsy.com/listing/4493316137/050-ct-baguette-diamond-mens-ring-14k",
"domain": "etsy.com",
"dominant_color": "#af826e",
"timestamp": "2026-04-23T08:15:58.000Z",
"scraped_at": "2026-10-02T12:57:14.049Z"
}

A video pin from a jeweler's own board (same run):

{
"_mode": "search",
"_source": "mens diamond ring",
"pin_id": "190980840442344754",
"url": "https://www.pinterest.com/pin/190980840442344754/",
"title": "Men’s diamond eternity wedding band",
"description": "This stylish hammered finish diamond eternity men’s wedding band crafted in 14k white gold…",
"image_url": "https://i.pinimg.com/originals/2e/85/82/2e8582a2d5a7d009583710312aca23e0.jpg",
"is_video": true,
"board": "Men's Collection",
"board_url": "https://www.pinterest.com/javda/mens-collection/",
"pinner": "Javda",
"pinner_username": "javda",
"link": "https://www.javda.com/jewelrydetail.asp?tid=642352",
"domain": "javda.com",
"dominant_color": "#d3b68a",
"timestamp": "2023-08-08T10:13:06.000Z",
"scraped_at": "2026-10-02T12:57:13.822Z"
}

The summary row that ended the 1,197 pin run (never charged):

{
"_type": "summary",
"requested": 6,
"by_mode": { "search": 6 },
"targets_scraped": 6,
"pins_delivered": 1197,
"blocked": 0,
"not_found": 0,
"charged_for": 1197,
"ladder_attempts": { "direct": 6 },
"ladder_success": { "direct": 6 },
"playwright_fallback_targets": 0,
"scraped_at": "2026-10-02T12:58:09.826Z"
}

Pricing

Pay per event: you pay for each pin delivered to your dataset, plus a small start fee per run. The pin price is the same on every Apify plan.

EventFreeBronzeSilverGold and above
pin-scraped, per pin$0.001$0.001$0.001$0.001
pin-scraped, per 1,000 pins$1.00$1.00$1.00$1.00
apify-actor-start, per run$0.005 per GB of run memory, minimum one eventsamesamesame

The start fee, exactly. Apify's apify-actor-start event is charged once when a run starts, at $0.005 for each GB of memory the run uses, with a minimum of one event. This actor runs on 2 GB by default, so a default run pays two events: $0.01. Our own runs show exactly that (apify-actor-start: 2).

Worked examples. One keyword at the default 40 pins: $0.04 plus $0.01. Six keywords at 200 pins (our 1,197 pin run): $1.197 plus $0.01. Proxy and compute costs are included in these prices; you pay nothing else to run it.

Never charged: a keyword that Pinterest blocks on every route, a keyword with no results, the summary and info rows, and failed requests and their retries. A run that delivers nothing pays only the start fee.

Charged once per query, not once per pin overall: when two of your keywords return the same pin, it is delivered and charged under each keyword. Use distinct keywords, or dedupe on pin_id afterwards.

There is no scheduled price change for this actor. The Pricing tab on this page always shows the rate for your plan; if it and this table ever differ, the Pricing tab is right.

FAQ

What is Pinterest search? Pinterest is a visual discovery site where people save images ("pins") to boards, and each pin can link to a website. Its search shows the pins Pinterest ranks for a keyword, the same results any visitor sees without signing in. This actor reads that public search feed.

How many pins can I get? Up to 250 per keyword (maxItems), and as many keywords per run as you list. Pinterest sometimes has fewer results for a narrow or brand new term; in our runs, two of eleven keywords returned 198 and 199 pins against a limit of 200. The summary row shows pins_delivered against what you asked for.

Does it return save counts or comment counts? No. Pinterest's search feed did not include save or comment numbers for any of the 1,881 pins in our sample runs, so the rows do not carry them. You get the pin's link, board, pinner and date instead. Open a pin's url if you need its saves.

How fresh is the data? Every run queries Pinterest live; nothing is cached between runs. timestamp is when each pin was created. Search results mix new and old pins: one sample spanned pins from 2014 to late September 2026.

Do I need a Pinterest account, cookies or an API key? No. You need only an Apify account. The actor never asks for or stores a Pinterest login.

Which proxy does it use? It picks its own route per keyword: first a direct request, then Apify's datacenter proxy, then at most two residential proxy attempts, then a headless browser over datacenter. Every keyword in our recorded runs was answered on the first, direct route. The proxy cost of any later step is ours, not yours.

Can I search in languages other than English? Yes. Type the keyword in any language; results are whatever Pinterest returns for that term.

Why did a keyword return fewer pins than maxItems? Either Pinterest ran out of results for the term, or its feed ended early. Results are capped at 14 pages of 25 per keyword, which is more than the 250 maximum, so the cap is never the reason.

What happens if Pinterest blocks a keyword? The actor tries the next route, up to the browser fallback. If all fail, the keyword gets a row marked blocked, the summary counts it in blocked, and nothing is charged for it. The other keywords in the run carry on.

Can I run it on a schedule? Yes. Save your input as a task, then in Apify Console go to Schedules, Create new, and pick a time or a cron expression such as 0 8 * * 1 for Monday mornings. The actor has no memory between runs, so each run returns and charges every pin it finds; compare pin_id lists between runs to spot new pins.

How do I export the data? From the run's Storage tab as JSON, CSV, Excel, XML or HTML, or through the Apify API. Keep only rows that have a pin_id if you want pins only.

Can I use it from Claude, ChatGPT or another AI assistant?

  • Connector URL: https://mcp.apify.com/?tools=themineworks/pinterest-search-scraper.
  • Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
  • ChatGPT: developer mode, add an MCP connector with the URL, sign in with Apify.
  • Cursor or VS Code: add it as an HTTP MCP server with that URL.
  • Claude Code: claude mcp add -t http pinterest-search-scraper "https://mcp.apify.com/?tools=themineworks/pinterest-search-scraper".

Is it legal to scrape Pinterest? The actor reads only public search results that anyone can see on Pinterest without logging in, and it does not get past any login wall. Pins can include people's display names and usernames and copyrighted images, so you are responsible for how you use the data and the images, including Pinterest's terms, copyright, and data protection laws such as GDPR and CCPA. This is general information, not legal advice.

Integrations

  • Google Sheets: export a run to a sheet, or use Apify's Google Sheets integration to append each run's pins.
  • Make, Zapier and n8n: use the Apify app or node to start a run and send the pins to Airtable, Notion, Slack or your content calendar.
  • Webhooks: have Apify call your URL when a run succeeds, then read the dataset.
  • API and client libraries: start runs and read datasets from Python, JavaScript or any HTTP client. The "Copy to your AI assistant" block above has the exact call.
  • MCP clients: Claude, ChatGPT, Cursor, VS Code and Claude Code can call the actor as a tool through https://mcp.apify.com.

For one account's profile, follower count and recent pins, use Pinterest Profile Scraper.

More from The Mine Works

Social media and video

Leads and business directories

Marketing, SEO and reviews

LinkedIn

Real estate

Science, health and government data

Jobs and hiring

Company and business data

E-commerce and marketplaces

Food and local services

Developer and AI tools

More tools

Support

Found a keyword that comes back blocked or short, or need a field we do not return yet? Open an issue on the Issues tab of this page with your input and the run ID, and we will reply there. To ask for a new source, email dmineworks@gmail.com. A guide for this actor also lives at themineworks.com.

Pinterest Search Scraper turns Pinterest keyword searches into clean pin rows with images, boards, pinners and outbound links, at $1 per 1,000 pins.