How to use it: 3 steps
- Make a free Apify accountApify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
- Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example:
home office ideasin Search keywords. Each start is one run. - Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.
This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.
What it does
Pinterest Search Scraper gets pins and boards from Pinterest search, public boards and public profiles, with no login and no cookies, and saves them as clean rows: title, description, image URL, outbound link, board, pinner, saves, created date and dominant color.
- search: you give keywords (or
pinterest.com/search/...URLs). You get the pins, or the boards, that Pinterest shows for each keyword. - board: you give board URLs. You get the pins of each board.
- profile: you give profile URLs or usernames. You get the pins of the profile, or its boards.
Good for
- Find popular pins and outbound shop links for a product keyword.
- Collect the boards and board stats (pins, followers) of a brand profile.
- Build a list of image URLs, titles and colors for a mood board or a dataset.
Not a good fit
- No login. Private boards, secret boards and your own account data are not available.
- A board gives only about 100 of its newest pins without login. The Actor tells you this in the run summary when a board has more pins.
- Pinterest decides how deep a search goes. One keyword usually gives 300–970 pins, and the number changes from day to day.
- Comments as text, related pins, board sections and video files are not collected.
Who uses it
Ecommerce marketers
Find popular pins and shop links for a product keyword.
Brand managers
Compare the boards and stats of competitor profiles.
Designers
Collect image links and colors for a mood board.
Price
Pay per event: you pay for each result the tool saves, plus a small start fee for each run. The price includes Apify platform costs. Apify bills you, not us. Prices below are for the Apify free plan.
| What you pay for | Price | When |
|---|---|---|
| Start fee | $0.004 | Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more. |
| Pin or board row | $0.0015 (from $0.0012 on paid Apify plans) | One pin or board row saved to the Dataset. Inputs that are empty, not found or invalid add no rows and are not charged. |
Examples
- One pin or board: about $0.0055.
- 1,000 pins and boards: about $1.50.
- Every day 100 pins and boards, for 30 days: about $4.62 a month.
Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed. That is enough for about 3,300 pins and boards.
Prices checked on 24 October 2026. See the current price on Apify.
Questions
How many pins can I get for one keyword?
Pinterest decides. One keyword usually gives 300 to 970 pins.
Why do I get only about 100 pins from a board?
Without login, Pinterest shows about 100 of the newest pins of a board.
Does it download the images?
No. It saves image links that you can download later.
Can I get pin comments?
Not in this version. You get a reaction count, and a comment count in search with pin details.
Do I need a Pinterest account or cookies?
No. The Actor reads only what a logged-out visitor sees. Do not put cookies or passwords in the input.
Why do I get different pins than yesterday?
Pinterest changes search results all the time and shows logged-out visitors different results. Each run is a snapshot of that moment.
Is the output the same as other Pinterest scrapers?
The rows are flat: one level, no nested objects. If you move from another Pinterest Actor, map the field names using the tables above.
Can I scrape comments, related pins or board sections?
Not in this version. You get reactionCount in every pin row. commentCount comes only from pin details, which work for search pins with a numeric ID.
Details
Step by step on Apify
- Open the Input tab.
- Keep What to scrape =
searchand type a keyword in Search keywords, for examplehome office ideas. - Keep Max results per keyword or URL =
20(the form's prefill; the API default is 50). - Click Start.
- Open the Output tab and the Pins view. Check the
title,imageUrlandlinkcolumns.
Use cases
| Task | Input | You get | Key fields | Next step |
|---|---|---|---|---|
| Trend and content research | mode: search, queries | pin | title, description, reactionCount, createdAt | sort by createdAt in a spreadsheet |
| Find shops and outbound links | mode: search, queries | pin | domain, link (when Pinterest returns it) | group by domain |
| Competitor or brand boards | mode: profile, urls, resultType: boards | board | name, pinCount, followerCount | compare profiles |
| Collect one board | mode: board, urls | pin | imageUrl, title, dominantColor | mood board, image dataset |
Tips for better results
- Sort by saves in a spreadsheet to find the top pins.
- Group rows by domain to see which shops get the most pins.
- Raise the run timeout for more than about 2,000 rows.
Limits and good to know
- Pin or board row: one event per row saved to the Dataset
- Up to 50 keywords and URLs per run, up to 1,000 rows each. Our largest test: 10 keywords × 1000 gave 9,097 rows in about 5 minutes with no blocks
- Search depth is set by Pinterest: usually 300–970 pins per keyword
- Boards: about 100 newest pins without login
- Up to 3 inputs at a time and up to 4 requests to Pinterest at a time
- The default run timeout is 300 seconds. For more than about 2,000 rows, raise the timeout in the run options
For developers
Sample result
One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.
{
"type": "pin",
"pinId": "e1_AfqPShxiIokPON5Bkrb3QXdJSK8aiWmECI9gI4-cnk4XlqGBCAA",
"url": "https://www.pinterest.com/pin/e1_AfqPShxiIokPON5Bkrb3QXdJSK8aiWmECI9gI4-cnk4XlqGBCAA/",
"title": "How to Make a Geometric Hanging Mobile Decoration",
"description": "Follow along with our easy tutorial for a hanging abstract mobile decoration. …",
"altText": "an image of a table with food on it and the title how to make a geometric hanging mobile decoration",
"imageUrl": "https://i.pinimg.com/originals/22/24/85/222485d96c8714a333d90bf8d5157e5e.jpg",
"imageWidth": 600,
"imageHeight": 900,
"link": "https://www.marthastewart.com/265650/the-modern-baby-shower",
"domain": "marthastewart.com",
"isVideo": false,
"isPromoted": false,
"boardId": "32088284784055018",
"boardName": "Baby Shower Planning and Ideas",
"boardUrl": "https://www.pinterest.com/marthastewart/baby-shower-planning-and-ideas/",
"pinnerUsername": "marthastewart",
"pinnerFullName": "Martha Stewart",
"pinnerFollowerCount": null,
"saves": 359,
"commentCount": null,
"reactionCount": 0,
"createdAt": "2020-07-16T01:25:28.000Z",
"dominantColor": "#d3d5d1",
"mode": "board",
"searchQuery": null,
"inputUrl": "https://www.pinterest.com/marthastewart/baby-shower-planning-and-ideas/",
"input": "https://www.pinterest.com/marthastewart/baby-shower-planning-and-ideas/",
"position": 3,
"fetchedAt": "2026-10-18T12:07:33.659Z"
}Use it from code
Actor ID: cliqtomedia/pinterest-search-scraper. You need your Apify API token from Apify Console → Settings → API & Integrations.
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/pinterest-search-scraper").call(run_input={
"mode": "search",
"queries": [
"home office ideas"
]
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~pinterest-search-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode": "search", "queries": ["home office ideas"]}'# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool
tool = ApifyActorsTool("cliqtomedia/pinterest-search-scraper")
result = tool.invoke({"run_input": {"mode": "search", "queries": ["home office ideas"]}})
print(result)The cURL call waits for the results, up to 300 seconds. For longer runs, start a run (/runs) and get the results with a webhook or by checking the run. Apify API docs. LlamaIndex, MCP for AI agents and the JavaScript client: AI agents & MCP.
Data fields (39)
| Field | Type | Meaning |
|---|---|---|
type | string | Row type: pin or board. Use the Pins or Boards view. |
pinId | string | Pinterest pin ID (pin rows). |
url | string | Link to the pin or board on pinterest.com. |
title | string | Pin title as shown on Pinterest (pin rows). |
description | string | Pin or board description. |
altText | string | Image alt text written by Pinterest or the pinner. |
imageUrl | string | Largest available image URL on i.pinimg.com. The image is linked, not downloaded. |
imageWidth | integer | Image width in pixels. |
imageHeight | integer | Image height in pixels. |
link | string | Outbound website link of the pin; null for pins uploaded without a link. |
domain | string | Domain of the outbound link, e.g. etsy.com; null for uploaded pins. |
isVideo | boolean | true for video pins. |
isPromoted | boolean | true for promoted (ad) pins. |
boardId | string | Pinterest board ID (board rows). |
boardName | string | Name of that board. |
boardUrl | string | URL of that board. |
pinnerUsername | string | Username of the account that saved the pin. |
pinnerFullName | string | Display name of that account. |
pinnerFollowerCount | integer | Followers of that account. |
saves | integer | How many times the pin was saved. Board and profile pins include it; search pins usually not (only numeric-ID pins with 'Try to add saves' on). |
commentCount | integer | Comments on the pin, when Pinterest provides it. |
reactionCount | integer | Total reactions on the pin. |
createdAt | string | When the pin or board was created (ISO 8601, UTC). |
dominantColor | string | Dominant image color as #rrggbb. |
name | string | Board name (board rows). |
pinCount | integer | Pins on the board. |
followerCount | integer | Board followers. |
sectionCount | integer | Sections on the board. |
collaboratorCount | integer | Collaborators on the board. |
isCollaborative | boolean | true for group boards. |
ownerUsername | string | Username of the board owner. |
ownerFullName | string | Display name of the board owner. |
coverImageUrl | string | Board cover image URL. |
mode | string | Mode that produced the row. |
searchQuery | string | Keyword for search rows; null for board and profile rows. |
inputUrl | string | Pinterest URL of the search, board or profile the row came from. |
input | string | Your keyword or URL exactly as entered. |
position | integer | 1-based position of the row within its keyword, board or profile, in Pinterest's order. |
fetchedAt | string | When the row was read (ISO 8601, UTC). |
Input settings (7)
The main fields of the input form. With the API you send them as JSON.
| Setting | Name in the API | Type | Example value |
|---|---|---|---|
| What to scrape required | mode | string | "search" |
| Search keywords | queries | array | ["home office ideas"] |
| Pinterest URLs | urls | array | |
| Results | resultType | string | "pins" |
| Max results per keyword or URL | maxItems | integer | 20 |
| Try to add saves to search pins | includePinDetails | boolean | false |
| Proxy | proxyConfiguration | object | {"useApifyProxy": true} |
Use cases with this tool
Each guide shows all the steps and the other tools.