Pinterest Scraper: Pins, Search, Boards & Profiles avatar

Pinterest Scraper: Pins, Search, Boards & Profiles

Pricing

from $1.20 / 1,000 pins

Go to Apify Store
Pinterest Scraper: Pins, Search, Boards & Profiles

Pinterest Scraper: Pins, Search, Boards & Profiles

Scrape Pinterest pins by keyword, profile, board or pin URL: title, description, original image and video URLs, outbound link, date, saves, reactions, board and pinner info, profile followers. No login, no API keys.

Pricing

from $1.20 / 1,000 pins

Rating

0.0

(0)

Developer

DataDesk

DataDesk

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

3 days ago

Last modified

Security

Limited permissions

Share

Get Pinterest pins as clean JSON/CSV/Excel from keyword search, profiles, boards or single pin URLs: title, description, alt text, original-size image URL, video URL, outbound link and domain, creation date, saves, reactions, board and pinner info, plus profile stats (followers, pins, boards, monthly views). No login, no cookies, no API keys, no paid proxy.

🇪🇸 Español: extrae pines de Pinterest por palabra clave, perfil, tablero o URL de pin: título, descripción, imagen en tamaño original, video, enlace de destino, fecha, guardados, reacciones, tablero y datos del perfil (seguidores, pines, vistas mensuales). Sin cuenta, sin cookies ni API keys. 🇧🇷 Português: extrai pins do Pinterest por palavra-chave, perfil, pasta ou URL de pin: título, descrição, imagem em tamanho original, vídeo, link de destino, data, salvamentos, reações, pasta e dados do perfil (seguidores, pins, visualizações mensais). Sem login, sem cookies nem API keys.

What you get

  • 🔎 Keyword search: the same results as the pinterest.com search box, paged up to your cap (a single keyword returned 955 pins in our tests).
  • 👤 Profiles: pins a user created or saved, with numeric pin ids, outbound links and save counts, plus the profile's followers, pin/board counts, monthly views, website and bio on every row.
  • 📋 Boards: all pins of a public board, with the board's pin and follower counts.
  • 📌 Single pins: pinterest.com/pin/<id>/ URLs.
  • 🖼️ Media: original-size image URL with width/height, dominant color, video URL (MP4 720p when available, else HLS) and duration, Idea Pin flag.
  • 💸 $1.50 per 1,000 pins, plus $0.005 per run. Runs with no results cost nothing.

Sources and coverage

SourceCoverageData
Pinterest searchAny keywordpin title, description, image, link, saves, board, pinner
BoardsAny public board URLsame fields
ProfilesAny public profile URLsame fields

How to use it

  1. Click Try for free (or Start): the prefilled input runs a quick test.
  2. Fill in the input fields (see the examples below). Every field is optional.
  3. Click Start and wait a few seconds to minutes, depending on how many pins you ask for.
  4. Open the Output tab and export as JSON, CSV, Excel, XML or HTML, or read the results via API.

Input examples

Search + profile (default):

{"searchQueries": ["home decor"], "urls": ["https://www.pinterest.com/pinterest/"], "maxPinsPerSource": 20}

Several keywords:

{"searchQueries": ["wedding cake", "boho bedroom"], "maxPinsPerSource": 100}

One board:

{"urls": ["https://www.pinterest.com/pinterest/official-news/"], "maxPinsPerSource": 200}

Input fields

FieldTypeDescription
searchQueriesarrayPinterest search terms (the same as the search box on pinterest.com). Each keyword returns up to 'Max pins per source'. If you leave both this and URLs empty, the Acto…
urlsarrayPinterest profile URLs or usernames (pinterest.com/pinterest/ or pinterest), board URLs (pinterest.com/pinterest/official-news/) or single pin URLs (pinterest.com/pin/…
maxPinsPerSourceintegerCap per keyword, profile or board. Pinterest returns about 25 pins per page; the Actor pages until this cap or the end of the feed.
maxResultsintegerHard cap on pins for the whole run (all sources). Never exceeded.

Output example

One row per item. Values below are example values from a real test run (long text shortened):

{
"pinId": "e1_AfqPShzPBrN_G1_w4wn02-DRp-0dMZRPud1-cjMg7GdMQvDQCN_koA",
"pinUrl": "https://www.pinterest.com/pin/e1_AfqPShzPBrN_G1_w4wn02-DRp-0dMZRPud1-cjMg7GdMQvDQCN_koA/",
"pinIdType": "obfuscated",
"title": "Renter Friendly Light Covers",
"description": "The apartment lighting idea you didn't know you needed. Watch this ceiling lamp shade go up in seconds — no electrician, no tools, just a qu…",
"altText": "a woman is standing in the middle of a room holding a light fixture above her head",
"imageUrl": "https://i.pinimg.com/originals/6c/03/3a/6c033a2ba694315157e990a04e1b821b.jpg",
"imageWidth": 1080,
"imageHeight": 1920,
"dominantColor": "#918883",
"isVideo": true,
"videoUrl": "https://v1.pinimg.com/videos/iht/hls/82/38/25/8238250cfbcd4669607edb304f58e69c.m3u8",
"videoDurationSec": 8.3,
"isIdeaPin": false,
"link": "https://tulipshades.com/products/the-tulip-shade-the-gem?variant=45063847805229",
"domain": "tulipshades.com",
"createdAt": "2026-03-04T15:11:41Z",
"reactionCount": 622
"…": "more fields below"
}

Fields a source does not publish are null.

Output fields

FieldDescription
pinIdPinterest pin id. Search results from logged-out Pinterest carry an obfuscated id (e1_...); profile, board and pin results carry the numeric id
pinUrlLink to the pin
pinIdTypenumeric or obfuscated (see pinId)
titlePin title (empty for many user uploads)
descriptionPin description
altTextAlt text (from the creator or Pinterest's automatic description)
imageUrlLargest image URL (original size when available)
imageWidthImage width in px
imageHeightImage height in px
dominantColorDominant image color (hex)
isVideoTrue if the pin has a video
videoUrlVideo URL (MP4 720p when available, else HLS .m3u8)
videoDurationSecVideo length in seconds
isIdeaPinTrue for Idea/Story pins
linkOutbound link (the website the pin points to), when the pin has one
domainDomain of the outbound link
createdAtPin creation date (ISO 8601, UTC)
reactionCountTotal reactions shown by Pinterest
savesSave count, when Pinterest exposes it (usually on profile/board/pin results)
commentCountComment count, when exposed
repinCountRepin count, when exposed
isPromotedTrue for promoted (ad) pins
boardNameBoard the pin is saved to
boardUrlBoard URL
boardIdBoard id
pinnerUsernameUsername of the account that saved the pin
pinnerNameDisplay name of that account
pinnerFollowersFollower count of that account, when exposed
pinnerUrlProfile URL of that account
sourceTypesearch, profile, board or pin
sourceThe keyword or URL that produced the row
scrapedAtWhen the row was collected (UTC)

The Output tab has a Pins view.

Pricing

Pay-per-event: you pay only for results delivered, no monthly fee.

  • Pin (pin): $1.50 per 1,000 ($0.0015 each)
  • Actor start: $0.005 per run
RunPinsCost
Quick test20$0.035
Small run100$0.155
Regular run1,000$1.505
Large run10,000$15.005

Rows that are not delivered are never charged. Apify's free plan includes monthly credit, and you can set a maximum cost per run in the run options.

Use cases

Trend and keyword research for e-commerce and content · competitor and brand monitoring (which products and domains get saved) · influencer and creator discovery (followers, monthly views) · image datasets and mood boards · feeding AI agents and dashboards with visual trends.

Integrations and API

  • Export results as JSON, CSV, Excel, XML or HTML from the Output tab.
  • Schedule runs (daily, hourly) and send results to Google Sheets, Slack, Zapier, Make, n8n, Airbyte or webhooks.
  • Call it from code with the Apify API:
curl -X POST "https://api.apify.com/v2/acts/datadesk-io~pinterest-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchQueries": ["home decor"], "urls": ["https://www.pinterest.com/pinterest/"], "maxPinsPerSource": 20}'
from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("datadesk-io/pinterest-scraper").call(run_input={'searchQueries': ['home decor'], 'urls': ['https://www.pinterest.com/pinterest/'], 'maxPinsPerSource': 20})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item.get('title'), item.get('domain'))

FAQ

Do I need a Pinterest account or API access? No. Why are some ids e1_...? Pinterest hides numeric ids from logged-out search; profile and pin sources return numeric ids. Issues? Report them on the Issues tab. We usually reply within 48 h.

How fresh is the data? Live: every run reads the source at that moment. Schedule it to keep a dataset up to date.

Why did I get fewer pins than the maximum? The source had fewer matching pins, or duplicates were removed. You only pay for pins delivered.

Is it legal? It collects only publicly available data. You are responsible for using it in line with applicable laws (e.g. GDPR) and the source's terms.

Limitations

  • Logged-out data only. The Actor reads the same JSON the public pinterest.com website loads for visitors who are not signed in. Private boards, secret pins, a profile's followers list and comments text are not returned.
  • Search results carry an obfuscated pin id (e1_..., pinIdType: "obfuscated"): Pinterest hides numeric ids from logged-out search. Use it as a unique key. Save counts are not shown in search results; profile and pin sources return numeric ids and saves. Board sources return saves but obfuscated ids.
  • Not every pin has a title, description or outbound link: many are plain user uploads. In our final 1,600-pin test run 70% had a title, 63% a description and 53% an outbound link; 100% had an image and a date.
  • Board paging can be uneven. Pinterest sometimes answers a later board page empty or without a next-page token for logged-out visitors. The Actor then retries that page in a fresh session and once through the Apify datacenter proxy included in your plan. In our final tests (Oct 27, 2026) boards paged to the end (100 of 100 requested; 50 of a 51-pin board), but earlier builds without those retries sometimes stopped after 24-25 pins. The log says "end of feed" when Pinterest stops serving pages.
  • Search depth is set by Pinterest: a search feed ends on its own (955 pins for "minimalist kitchen" in our test). Counts are Pinterest's own numbers.
  • No paid proxy. In our tests (Oct 27, 2026) on Apify, a run with 6 keywords and 2 profiles returned 1,600 pins in 24 s with no blocks. If Pinterest answers 403/429/5xx, the Actor retries with backoff and then uses the Apify datacenter proxy included in your plan (capped at 40 requests per run); pins already collected are kept.
  • Pins are public, but images and text belong to their creators and can contain personal data. Check Pinterest's terms and the laws that apply to your use (copyright, GDPR/privacy) before you store or republish them.

Support

Found a bug, or need a new field, source or filter? Open an issue in the Issues tab; we usually answer within 24 hours. Custom data work: datadesk.io@proton.me.

Use with AI agents (MCP)

This Actor works as a tool for AI agents through the Apify MCP server. Add it to Claude, ChatGPT, Cursor, VS Code or any MCP client:

https://mcp.apify.com/?tools=datadesk-io/pinterest-scraper

Sign in with OAuth or Authorization: Bearer <APIFY_TOKEN>. Local stdio config:

{"mcpServers": {"pinterest": {"command": "npx", "args": ["-y", "@apify/actors-mcp-server", "--tools", "datadesk-io/pinterest-scraper"], "env": {"APIFY_TOKEN": "<token>"}}}}

What goes in → what comes out: Input: keywords and/or profile, board or pin URLs, plus caps. Output: one JSON row per pin with title, description, image/video URLs, outbound link, date, saves, reactions, board and pinner info. Every input is optional and every output field is documented.

Example prompt: "Search Pinterest for 'boho bedroom' and 'japandi living room', 100 pins each, and list the 10 outbound domains that appear most." Use maxPinsPerSource or maxResults to cap the cost of one call.