Skip to content

How to Scrape Pinterest: Pins, Boards, Profiles, Search Results and Comments

Scrape Pinterest pins, boards, profiles, idea pages and search results without a login: title, description, images, source domain, likes, saves, board, comments and profile stats. No-code presets, curl, Python, Node.js and MCP, plus a real run, exact costs and the limits that matter.

Published
Reading time
8 min read
Pixel-art robot with an orange >_ on its terminal head pulls an image pin with a red save button off a cork board topped with the red Pinterest logo and covered in photo pins of different heights, and drops it into a crate
In this article
  1. What data you can get from Pinterest
  2. How to scrape Pinterest without code
  3. How to scrape Pinterest with the API
  4. With an AI agent (MCP)
  5. A real run: "small balcony ideas"
  6. What it costs
  7. What to watch out for
  8. Is it legal to scrape Pinterest?
  9. Why Scrape.ly for Pinterest
  10. FAQ
  11. Can you scrape Pinterest for free?
  12. How do I scrape all pins from a Pinterest board?
  13. Can I scrape Pinterest comments?
  14. Can I download Pinterest images?
  15. Can I scrape a Pinterest profile's followers?
  16. Can I scrape Pinterest with Python?

To scrape Pinterest, give a ready-made Actor a keyword or the URL of a pin, board, idea page or profile, and it returns one row per pin or profile: title, description, images in several sizes, the site the pin links to, likes, saves, board and pinner, plus comments and profile stats when you ask for them. On Scrape.ly that's a preset and one click, or one API call, with no Pinterest login and no developer app.

This guide covers the fields you get, the no-code presets, the same job in curl, Python, Node.js and through an AI agent, a real run from 27 October 2026, what it costs, and the one Pinterest quirk that decides which input you should use.

What data you can get from Pinterest

The Pinterest Scraper saves one row per pin or profile:

Field What it holds
type, id, url, inputSource pin or profile, the ID and link, and which input found it
grid_title, description The pin's title and description
images Image URLs by size, including the original (orig)
domain The site the pin links to, such as a shop or a blog
like_count, repin_count, comment_count Engagement; saves (repin_count) come with full details
board, pinner, owner The board it's on and the account behind it
created_at When the pin was created
comments Public comments and replies, when enabled
username, full_name, follower_count, pin_count, board_count Profile rows

Pin URLs and the pins listed on a profile come back as full records, with saves, SEO fields and comments. Pins found in a search, on a board or on an idea page carry the list fields: title, description when the pinner wrote one, images, board, pinner, likes and created date. More on why in "What to watch out for".

How to scrape Pinterest without code

  1. Open the Pinterest Scraper in the Scrape.ly Store.
  2. Pick a preset that matches your input:

The search preset fills in this input:

json
{
  "search": "nail art",
  "maxItems": 10,
  "endPage": 1,
  "getDetails": false,
  "includeComments": false,
  "includeCommentReplies": false,
  "includeUserInfoOnly": false
}
  1. Change the keyword or paste your URLs and click Start.
  2. Open the dataset and export it as JSON, CSV, Excel, XML, HTML or RSS.

The input fields that matter most:

  • startUrls: public pin, board, idea, profile or pin-search URLs. Mix them freely in one run.
  • search: a keyword. It runs alongside any URLs.
  • maxItems: total pins and profiles to save (default 10).
  • endPage: the last page to fetch per list. A page holds about 25 pins or 10 comments.
  • minLikes, minRepins: keep only pins above an engagement threshold.
  • getDetails, includeComments, includeCommentReplies: full records, comments and replies, for the pins Pinterest opens without a login.
  • includeUserInfoOnly: for profile URLs, save just the profile row with its counts.

How to scrape Pinterest with the API

Create a token under Settings → API & Integrations in the dashboard and store it as SCRAPELY_TOKEN. Start the run, wait for it, then read the rows:

shell
# 1. start the run; the response's data.id is the run ID
curl -X POST "https://api.scrape.ly/v2/actors/echofield~pinterest-scraper/runs" \
  -H "Authorization: Bearer $SCRAPELY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"search": "small balcony ideas", "maxItems": 50, "endPage": 2}'
# 2. wait (up to 60 s per call; repeat until status is SUCCEEDED)
curl "https://api.scrape.ly/v2/actor-runs/RUN_ID?waitForFinish=60" \
  -H "Authorization: Bearer $SCRAPELY_TOKEN"
# 3. read the pins (CSV here)
curl "https://api.scrape.ly/v2/actor-runs/RUN_ID/dataset/items?format=csv" \
  -H "Authorization: Bearer $SCRAPELY_TOKEN"

The API docs explain each step.

In Python (pip install scrapely-client-python), this trend-spotting script searches a few keywords, keeps pins with at least 10 likes, and counts which websites those pins link to. For an ecommerce team, that's a list of who wins Pinterest traffic in your category:

python
import os
from collections import Counter

from scrapely_client import ScrapelyClient

client = ScrapelyClient(os.environ["SCRAPELY_TOKEN"], api_url="https://api.scrape.ly")

domains = Counter()
for keyword in ["small balcony ideas", "balcony furniture", "balcony plants"]:
    run = client.actor("echofield/pinterest-scraper").call(
        run_input={"search": keyword, "maxItems": 200, "endPage": 8, "minLikes": 10}
    )
    for pin in client.dataset(run.default_dataset_id).iterate_items():
        if pin.get("type") == "pin" and pin.get("domain"):
            domains[pin["domain"]] += 1
for domain, n in domains.most_common(15):
    print(domain, n)

In JavaScript or Node.js (npm install scrapely-client), compare brand accounts by their profile stats without collecting their pins:

javascript
import { ScrapelyClient } from 'scrapely-client';

const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN, baseUrl: 'https://api.scrape.ly' });

const run = await client.actor('echofield/pinterest-scraper').call({
  startUrls: ['https://www.pinterest.com/ikea/', 'https://www.pinterest.com/target/'],
  includeUserInfoOnly: true,
  maxItems: 2,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const p of items) console.log(p.username, p.follower_count, p.pin_count, p.board_count);

The Pinterest API page shows the same Actor as a ready-made API, and the Python client docs cover paging through large datasets.

With an AI agent (MCP)

Scrape.ly runs a hosted MCP server at https://mcp.scrape.ly. In Cursor, add it to ~/.cursor/mcp.json:

json
{
  "mcpServers": {
    "scrapely": {
      "url": "https://mcp.scrape.ly",
      "headers": { "Authorization": "Bearer YOUR_TOKEN" }
    }
  }
}

In Claude Code, run claude mcp add --transport http scrapely https://mcp.scrape.ly, then /mcp to sign in with OAuth. Then ask: "Use scrapely to search Pinterest for 'capsule wardrobe', 100 pins, and tell me which shops the most-liked pins link to and what the top titles have in common." The MCP docs list ChatGPT, VS Code, Windsurf and the other clients.

A real run: "small balcony ideas"

We ran the Actor on 27 October 2026 with a keyword and a profile URL in one input:

json
{
  "startUrls": ["https://www.pinterest.com/ikea/"],
  "search": "small balcony ideas",
  "maxItems": 8,
  "endPage": 1,
  "getDetails": true
}

It saved 8 rows in 11 seconds: one profile and seven search pins. The pins, with the pinners left out because several are private people:

Pin title Links to Likes Created
3 Lighting Layers Every Room Needs indochinalight.com 56 2026-06-21
Cozy Balcony Ideas \ Minimal & Aesthetic Uploaded by user 23 2026-10-02
(12) Facebook facebook.com 8 2026-10-04
15 Pretty Small Balcony Ideas midnightscribble.com 0 2026-10-07
Идеи для маленького балкона в квартире: удачное решение Uploaded by user 0 2026-10-12
Small Balcony Ideas That Feel Like a Private Retreat nextideadecor.com 6 2026-09-10
23 Sophisticated Very Small Balcony Ideas That Actually Work apartmentabc.com 7 2026-04-01

The log line that matters:

Text
2026-10-27T17:11:18.866Z [scrapely.actor] INFO  [Status message]: Saved 8 results, 7 feed pins without details or comments (Pinterest only opens pin URLs and profile pins without a login).

What the run shows:

  • Where the clicks go. Four of the seven pins link to blogs and shops (domain), two are uploads with no outbound link, and one points at a Facebook photo. Counting domains across a few hundred pins, as the Python script above does, shows which publishers own a topic.
  • Fresh pins rank. Five of the seven were created in the last two months, which tells you how quickly a seasonal topic turns over.
  • Search isn't only English or on topic. One pin is in Russian and the most-liked one is about lighting, not balconies. Filter on grid_title or description before you count.
  • Search pins carry list fields. The status message counts them: title, description, images, board and likes, but no saves or comments. For those, pass pin URLs or a profile.
  • Check the profile handle. /ikea/ resolved to an older IKEA account with 59,357 followers and no public pins or boards. Open a handle in your browser before you put it in a schedule.

What it costs

The Actor charges one event per saved pin or profile, with platform usage (compute, proxy and browser) included. Price checked on the Store page on 27 October 2026: $0.000095 per result, which is $0.095 per 1,000 pins. Comments, replies and boards nested inside a row aren't charged separately.

Our run above saved 8 results for $0.00076 at list price ($0.000608 charged, because our plan has a Store discount). Examples: 10 pins cost $0.00095. A keyword taken to its limit of about 600 unique pins costs about $0.057. Ten keywords at that depth come to roughly $0.57.

At that price, Pinterest is a cheap source to add to a social or ecommerce dashboard, and the Free plan's $5 monthly credit goes a long way.

What to watch out for

  • Search, board and idea pins have scrambled IDs. Without a login, Pinterest gives pins in those lists an ID that starts with e1_, and answers "Pin not found" when anyone tries to open it, on its API, the pin page and in a real browser alike. Those rows keep the list fields but get no full details or comments. For saves, SEO fields or comments, pass pin URLs with a numeric ID, or a profile URL, whose pins open normally.
  • About 600 unique pins per search. Pinterest starts repeating pins after roughly 25 search pages. Use several keywords or boards for bigger jobs.
  • Saves can be missing in search rows. The public search feed often omits repin_count, so minRepins keeps pins without a count. Filter on minLikes for search results.
  • No comment likes. The public payload doesn't include like counts on comments.
  • Private content is skipped. Private profiles, secret boards and anything that asks you to sign in aren't collected.
  • Pinners are personal data. The pinner's username, name and follower count identify a person. Keep brands and verified accounts you target on purpose; drop or pseudonymise everyone else, as we did in the run above.

Pinterest's own API is built for apps that act on behalf of Pinterest users. Its Connect app guide says "Application requests are reviewed by Pinterest", and its rate limits page caps Trial access at "1000 requests per day for all API requests". If you're building a Pinterest integration for your users, that's the route. For research on public pins and boards, the Actor gets you there today.

The Actor reads only public pages that any logged-out visitor can see. Pinterest's Terms of Service (effective April 30, 2025, read on 27 October 2026; an update takes effect on November 12, 2026) say: "In using Pinterest, you agree not to scrape, collect, search, copy or otherwise access data or content from Pinterest in unauthorized ways, such as by using automated means (without our express prior permission)". Whether and how those terms bind you depends on your jurisdiction, whether you have a Pinterest account that accepted them, and your use.

Two more things to keep in mind. Pins are images, and images are usually copyrighted by their creators: analyse them, don't republish them. And pinners and commenters are personal data under the GDPR and similar laws, so collect only what you need and pseudonymise people in anything you publish. Our guide to whether web scraping is legal covers the basics, including the GDPR. This is not legal advice; for a commercial project, ask a lawyer about your case.

Why Scrape.ly for Pinterest

  • No app review, no login. Public pins, boards, profiles and searches with one Scrape.ly token, without a developer app or daily request quota.
  • Every input in one run. Keywords, pin URLs, boards, idea pages and profiles together, deduplicated by pin ID and username.
  • Built for the quirks. The Actor knows which pins Pinterest will open and which it won't, fetches full details where it can, and counts the list-only rows in the run's status message.
  • One platform for social data. The same token runs TikTok, TikTok comments, Instagram and YouTube; our social media scraping guide shows how they fit together.

FAQ

Can you scrape Pinterest for free?

Yes. The Free plan includes $5 of usage credit every month with no credit card, and at $0.095 per 1,000 results that covers tens of thousands of pins.

How do I scrape all pins from a Pinterest board?

Paste the board URL into startUrls and raise endPage (about 25 pins per page) and maxItems. Board pins come with the list fields; for full details on specific pins, pass their pin URLs, or use the owner's profile URL, whose pins open normally.

Can I scrape Pinterest comments?

Yes, for pin URLs with a numeric ID and pins listed on a profile: turn on includeComments, and includeCommentReplies for replies. Pins found in searches, boards and idea pages have no readable comment thread without a login.

Can I download Pinterest images?

Each row carries image URLs in several sizes, including the original. You can fetch them yourself, but images are usually copyrighted by their creators, so use them for analysis, not republishing.

Can I scrape a Pinterest profile's followers?

The Actor returns profile stats: follower, pin and board counts, name, bio and website. It doesn't list individual followers.

Can I scrape Pinterest with Python?

Yes. Install scrapely-client-python and call echofield/pinterest-scraper, as in the trend-spotting script above. The scraping runs in the cloud, so you don't reverse-engineer Pinterest's internal resources or manage proxies.

  • pinterest
  • pins
  • social media
  • ecommerce research
  • python
  • api

About the author

Actor publisher on the Scrape.ly Store

Posts, reels, comments and creator stats, from TikTok and YouTube to Weibo and Bluesky. For social listening, creator research and catching a trend while it is still small. A Scrapely studio.

//Keep reading\\

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes.

No credit card. No setup calls.