Pinterest Scraper — Pins, Boards & Profiles avatar

Pinterest Scraper — Pins, Boards & Profiles

Pricing

$2.50 / 1,000 pin, board or profiles

Go to Apify Store
Pinterest Scraper — Pins, Boards & Profiles

Pinterest Scraper — Pins, Boards & Profiles

Scrape Pinterest pins from keyword search, boards, sections, profiles and pin URLs: images in all sizes, video, outbound link, saves, comments, product price, board and pinner data.

Pricing

$2.50 / 1,000 pin, board or profiles

Rating

0.0

(0)

Developer

Trevor Ortega

Trevor Ortega

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

4

Monthly active users

5 days ago

Last modified

Share

Scrape Pinterest pins from keyword search, boards, board sections, profiles and pin URLs into a clean dataset: title, description, image URLs in every size, video URL, outbound link and domain, saves, repins, comments, reactions, created date, board name and URL, pinner username, name and follower count, and rich-pin product data (price, currency, in stock) when the pin has it. Board and profile URLs also give one metadata item each: followers, pin and board counts, description, website, owner.

No login, no cookies, no browser: the Actor reads the same public JSON Pinterest's own web app loads for logged-out visitors, about 25 pins per request. Download the results as JSON, CSV or Excel, or pull them through the API into your own app, Google Sheets or an LLM pipeline. You pay per item you get.

What data does Pinterest Scraper extract?

Every pin (type: "pin"):

FieldDescription
id, urlPin id and URL (https://www.pinterest.com/pin/<id>/)
title, description, altTextTitle as shown (falls back to the rich-pin title), the pin description, and the image alt text
link, domainOutbound link of the pin and its domain (null for pins uploaded without a link)
imageUrl, imageWidth, imageHeightOriginal-size image and its size
imagesEvery size Pinterest lists: {"236x": {url, width, height}, "474x": ..., "736x": ..., "orig": ...}
dominantColorMain color of the image (#5c5747)
isVideo, videoUrl, videoHlsUrl, videoDurationSec, videoThumbnailUrlVideo pins: MP4 (with Fetch full pin details, or for pin URLs) or the HLS stream (.m3u8), duration in seconds, poster image
saveCount, repinCountSaves and repins as Pinterest counts them. Board, section and profile pins always have them; search pins get them with Fetch full pin details
commentCount, shareCountWith Fetch full pin details and for pin URLs
reactionCountSum of the pin's reactions
createdAtWhen the pin was created (ISO 8601, UTC)
boardId, boardName, boardUrlThe board the pin is saved to
pinnerId, pinnerUsername, pinnerFullName, pinnerUrl, pinnerImageUrl, pinnerVerifiedWho saved the pin
pinnerFollowerCountFollower count of the pinner as shown in search results and pin pages (null in board feeds, which do not carry it)
richPinType, siteNameRich-pin type (product, article, recipe) and the source site name
productProduct pins: {name, price, priceValue, currency, availability, inStock, siteName}, e.g. "$120.00", 120, "USD", "in_stock"
hashtagsHashtags of the pin
isPromoted, isRepinAd flag (ads are skipped unless you turn them on) and whether the pin is a repin
sourceType, source, scrapedAtWhere the pin came from (search + the term, board, section, profile, pin + the URL) and when
changeTypeOnly with Only new or changed items on: new
detailErrorOnly when Fetch full pin details is on and that one pin's page could not be loaded (the pin keeps its feed data)

Boards (type: "board") from board URLs and from /<user>/_saved/: id, url, name, description, pinCount, sectionlessPinCount, followerCount, sectionCount, collaboratorCount, isCollaborative, category, coverImageUrl, createdAt, lastModifiedAt, ownerId, ownerUsername, ownerFullName, ownerUrl.

Profiles (type: "profile") from profile URLs: id, username, url, fullName, about, websiteUrl, domainUrl, domainVerified, followerCount, followingCount, pinCount, boardCount, videoPinCount, monthlyViews (as shown; Pinterest caps it at 10,000,001 = "10m+"), imageUrl, coverImageUrl, isVerified, isVerifiedMerchant, isPartner, createdAt, lastPinSavedAt.

How to use Pinterest Scraper

  1. Type Search terms (one per line) and/or paste Pinterest URLs:

    URLWhat you get
    https://www.pinterest.com/bhg/adorable-pets/Board item + the board's pins
    https://www.pinterest.com/bhg/<board>/<section>/The pins of one board section
    https://www.pinterest.com/bhg/ (or /_created/)Profile item + the user's pins, newest first
    https://www.pinterest.com/bhg/_saved/Profile item + one item per board of the user
    https://www.pinterest.com/pin/670473463305409641/, https://pin.it/...That pin, with full details
    https://www.pinterest.com/search/pins/?q=..., /search/videos/?q=...Pin or video search

    Country domains (pinterest.co.uk, de.pinterest.com, ...) work too.

  2. Set Max results (total, caps the cost) and, with several sources, Max pins per search / board / profile.

  3. Turn on Fetch full pin details if you need comment counts, MP4 video URLs or save counts for search results (one extra request per pin, same price per result).

  4. Click Start. Results appear in the Dataset tab; export from there or use the API.

Input example

{
"searchTerms": ["cottage garden ideas"],
"startUrls": [
{ "url": "https://www.pinterest.com/bhg/adorable-pets/" },
{ "url": "https://www.pinterest.com/bhg/" }
],
"maxPinsPerSource": 50,
"maxItems": 200,
"includeDetails": false,
"includeBoardAndProfileInfo": true,
"proxyConfiguration": { "useApifyProxy": true }
}

Output example

A pin from a board (a few null fields left out):

{
"type": "pin",
"id": "56787645295483271",
"url": "https://www.pinterest.com/pin/56787645295483271/",
"title": "Throw a Puppy Picnic for Your Four-Legged Pals This Summer",
"description": "Show your furry friends some love with a festive outdoor party, complete with homemade dog treats and plenty of playtime. ... #partyfordogs #outdoorpartyideas #dogbirthday #dogpartyideas #bhg",
"altText": "a basket filled with lots of signs next to a building",
"link": "https://www.bhg.com/party/puppy-picnic/?utm_source=pinterest.com&utm_medium=social&utm_campaign=bhg_5304692&utm_content=standard_seasonal&utm_term=adorablepets_202106",
"domain": "bhg.com",
"imageUrl": "https://i.pinimg.com/originals/b7/27/6b/b7276b5079c927f16572d26cf4b59677.jpg",
"imageWidth": 1244,
"imageHeight": 1560,
"images": {
"236x": { "url": "https://i.pinimg.com/236x/b7/27/6b/b7276b5079c927f16572d26cf4b59677.jpg", "width": 236, "height": 295 },
"474x": { "url": "https://i.pinimg.com/474x/b7/27/6b/b7276b5079c927f16572d26cf4b59677.jpg", "width": 474, "height": 594 },
"736x": { "url": "https://i.pinimg.com/736x/b7/27/6b/b7276b5079c927f16572d26cf4b59677.jpg", "width": 736, "height": 922 },
"orig": { "url": "https://i.pinimg.com/originals/b7/27/6b/b7276b5079c927f16572d26cf4b59677.jpg", "width": 1244, "height": 1560 }
},
"dominantColor": "#726351",
"isVideo": false,
"videoUrl": null,
"saveCount": 3,
"repinCount": 2,
"commentCount": null,
"reactionCount": 0,
"createdAt": "2021-06-04T00:04:44Z",
"boardId": "56787713990443348",
"boardName": "Adorable Pets",
"boardUrl": "https://www.pinterest.com/bhg/adorable-pets/",
"pinnerUsername": "bhg",
"pinnerFullName": "Better Homes and Gardens",
"pinnerUrl": "https://www.pinterest.com/bhg/",
"pinnerVerified": true,
"richPinType": null,
"product": null,
"hashtags": ["partyfordogs", "outdoorpartyideas", "dogbirthday", "dogpartyideas", "bhg"],
"isPromoted": false,
"sourceType": "board",
"source": "https://www.pinterest.com/bhg/adorable-pets/",
"scrapedAt": "2026-10-09T23:42:57Z"
}

A product pin with full details (shortened):

{
"type": "pin",
"id": "670473463305409641",
"title": "Nike Dunk Low",
"link": "https://www.nike.com/t/dunk-low-womens-shoes-ppQwKZ",
"domain": "nike.com",
"saveCount": 250,
"repinCount": 1222,
"commentCount": 0,
"shareCount": 21,
"createdAt": "2024-02-13T23:39:27Z",
"pinnerUsername": "Juniebu6",
"pinnerFollowerCount": 89,
"richPinType": "product",
"siteName": "Nike.com",
"product": { "name": "Nike Dunk Low", "price": "$120.00", "priceValue": 120, "currency": "USD", "availability": "in_stock", "inStock": true, "siteName": "Nike.com" }
}

A board item:

{
"type": "board",
"id": "56787713990443348",
"url": "https://www.pinterest.com/bhg/adorable-pets/",
"name": "Adorable Pets",
"pinCount": 431,
"followerCount": 3395457,
"sectionCount": 0,
"category": "animals",
"lastModifiedAt": "2024-05-24T22:25:10Z",
"ownerUsername": "bhg",
"ownerFullName": "Better Homes and Gardens"
}

How to scrape Pinterest pins by keyword

Put your keywords in Search terms, one per line, or paste a Pinterest search URL (/search/pins/?q=... for pins, /search/videos/?q=... for video pins). The Actor pages through the results the way the site does when you scroll, about 25 pins per request; searches go several hundred pins deep. Promoted pins (ads) are skipped unless you turn on Include promoted pins. Search results do not include save or comment counts; turn on Fetch full pin details to add them.

How to scrape a Pinterest board or profile

Paste the board URL (pinterest.com/<user>/<board>/) or a section URL to get every pin of the board with saves, repins, outbound link and created date, plus one board item. A profile URL (pinterest.com/<user>/) gives the profile item (followers, monthly views, website, pin and board counts) and the user's pins, newest first; pinterest.com/<user>/_saved/ lists the user's boards instead. Use Max pins per search / board / profile to take, say, the 50 newest pins of each.

Monitor changes on a schedule

Turn on Only new or changed items and save the input as a task: each run then outputs only pins that earlier runs of the same task have not returned, for example new pins on a competitor's board or profile, or pins entering the top results of a search. Pins already returned are dropped before any detail request and are not charged, so a daily run where nothing changed costs almost nothing. Each run looks at the first Max pins per search / board / profile pins of every source (or Max results when that is empty). To schedule it, open the saved task in Apify Console and choose Schedule, for example daily at 07:00. New items carry changeType: "new"; use Monitoring key to keep several schedules on the same input separate.

Does it work without a Pinterest login?

Yes. It only reads what Pinterest shows logged-out visitors: no account, cookies or session are needed, and nothing behind a login is collected. Pinterest sometimes shows logged-out visitors a shortened board ("see more ideas" after the first page); the Actor detects that and retries the page, so long boards come back complete.

Can I download Pinterest images and videos?

Every pin has imageUrl (original size) and images with all sizes Pinterest lists. Video pins have videoHlsUrl (an .m3u8 stream) and, with Fetch full pin details or for pin URLs, an MP4 videoUrl. The Actor returns the links; it does not download the files.

How much does it cost to scrape Pinterest?

You pay per saved item (pin, board or profile), plus the small platform usage of the run (paid by you, about 1 request per 25 pins on the default datacenter proxy). Pins already seen in monitoring mode and skipped ads are not charged. Fetch full pin details adds one request per pin but no extra charge per result.

Proxy note

The default Apify datacenter proxy works: Pinterest answers it normally. Responses are 15-300 KB (about 8 KB per pin), so proxy traffic stays small and RESIDENTIAL is not needed.

Integrations and API

Use the run in Zapier, Make, n8n, Google Sheets, or call it from Python/Node with the Apify client. See the API tab for ready-made snippets.

The Actor collects only data Pinterest shows publicly to any logged-out visitor: pins, boards and public profiles, including the public usernames and display names of pinners and board owners. It does not log in and does not collect anything private, hidden or behind a login. You are responsible for how you use the data and for complying with Pinterest's terms and applicable law (for example GDPR when you process personal data such as usernames).

Support

Found a bug or need a field added? Open an issue in the Issues tab; it is usually answered within a day.