Pinterest Search Scraper: Keyword to Pins
Pricing
from $1.00 / 1,000 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
Maintained by CommunityActor stats
0
Bookmarked
6
Total users
2
Monthly active users
a day ago
Last modified
Categories
Share
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: 200returned 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
linkanddomain, 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.
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_modeand_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
maxItemsis 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
_sourceso 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.
Competitor and shop research: who owns a search?
{"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
| Parameter | Type | Default | What it does |
|---|---|---|---|
searchQueries | array of strings | required (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. |
maxItems | integer (1 to 250) | 40 | Most 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):
| Field | What it holds |
|---|---|
pin_id | Pinterest's pin ID, as text |
url | Pin page URL on pinterest.com |
image_url | Original size image URL on i.pinimg.com |
is_video | true for video pins, otherwise false |
board | Name of the board the pin is saved to |
board_url | Board page URL |
pinner | Display name of the account that saved the pin |
pinner_username | That account's Pinterest username |
domain | Domain of the pin's outside link, or Uploaded by user |
timestamp | When the pin was created, ISO timestamp |
_mode | Always search in this actor |
_source | The search query that returned this row |
scraped_at | ISO 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.
| Event | Free | Bronze | Silver | Gold 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 event | same | same | same |
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
- Threads Scraper
- Reddit Scraper
- Threads Search Scraper
- Instagram Profile Scraper
- Instagram Followers & Following
- Reddit Search Scraper
- Twitter / X Scraper
- YouTube Transcript
- Xiaohongshu (RED) Scraper
- Telegram Channel Scraper
- Telegram Channel Finder
- Pinterest Profile Scraper
Leads and business directories
Marketing, SEO and reviews
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.

