Pinterest Scraper: Pins, Search, Boards & Profiles
Pricing
from $1.20 / 1,000 pins
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
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
3 days ago
Last modified
Categories
Security
Limited permissionsShare
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
| Source | Coverage | Data |
|---|---|---|
| Pinterest search | Any keyword | pin title, description, image, link, saves, board, pinner |
| Boards | Any public board URL | same fields |
| Profiles | Any public profile URL | same fields |
How to use it
- Click Try for free (or Start): the prefilled input runs a quick test.
- Fill in the input fields (see the examples below). Every field is optional.
- Click Start and wait a few seconds to minutes, depending on how many pins you ask for.
- 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
| Field | Type | Description |
|---|---|---|
searchQueries | array | Pinterest 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… |
urls | array | Pinterest profile URLs or usernames (pinterest.com/pinterest/ or pinterest), board URLs (pinterest.com/pinterest/official-news/) or single pin URLs (pinterest.com/pin/… |
maxPinsPerSource | integer | Cap per keyword, profile or board. Pinterest returns about 25 pins per page; the Actor pages until this cap or the end of the feed. |
maxResults | integer | Hard 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
| Field | Description |
|---|---|
pinId | Pinterest pin id. Search results from logged-out Pinterest carry an obfuscated id (e1_...); profile, board and pin results carry the numeric id |
pinUrl | Link to the pin |
pinIdType | numeric or obfuscated (see pinId) |
title | Pin title (empty for many user uploads) |
description | Pin description |
altText | Alt text (from the creator or Pinterest's automatic description) |
imageUrl | Largest image URL (original size when available) |
imageWidth | Image width in px |
imageHeight | Image height in px |
dominantColor | Dominant image color (hex) |
isVideo | True if the pin has a video |
videoUrl | Video URL (MP4 720p when available, else HLS .m3u8) |
videoDurationSec | Video length in seconds |
isIdeaPin | True for Idea/Story pins |
link | Outbound link (the website the pin points to), when the pin has one |
domain | Domain of the outbound link |
createdAt | Pin creation date (ISO 8601, UTC) |
reactionCount | Total reactions shown by Pinterest |
saves | Save count, when Pinterest exposes it (usually on profile/board/pin results) |
commentCount | Comment count, when exposed |
repinCount | Repin count, when exposed |
isPromoted | True for promoted (ad) pins |
boardName | Board the pin is saved to |
boardUrl | Board URL |
boardId | Board id |
pinnerUsername | Username of the account that saved the pin |
pinnerName | Display name of that account |
pinnerFollowers | Follower count of that account, when exposed |
pinnerUrl | Profile URL of that account |
sourceType | search, profile, board or pin |
source | The keyword or URL that produced the row |
scrapedAt | When 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
| Run | Pins | Cost |
|---|---|---|
| Quick test | 20 | $0.035 |
| Small run | 100 | $0.155 |
| Regular run | 1,000 | $1.505 |
| Large run | 10,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 ApifyClientclient = 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 andsaves. 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.