Pinterest Pins Scraper
Under maintenancePricing
from $1.99 / 1,000 results
Pinterest Pins Scraper
Under maintenancePinterest Pins Scraper collects pins and boards by query or URL with owner, pin count, cover and thumbnail images, plus optional sentiment scoring and content categorisation. π For trend research and creative competitor analysis.
Pricing
from $1.99 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Hub
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
π Pinterest Pins Scraper β Pins, Boards, Videos & Creator Profile Data
The Pinterest Pins Scraper extracts pins, video pins, boards, and creator profiles from Pinterest search results at scale, returning media URLs, board references, owner details, and optional sentiment and content-category enrichment for every record. Feed it Pinterest search URLs or plain keywords, choose the result type you want, and it collects structured records you can use for visual trend research, competitor monitoring, affiliate discovery, or building an image dataset.
Pinterest is a visual discovery engine rather than a conventional social network, which makes it uniquely useful as a demand signal. People search Pinterest with intent β planning a kitchen renovation, sourcing a wedding palette, choosing autumn outfits β often months before they buy. Pins surfaced for a keyword are therefore a forward-looking read on consumer taste rather than a record of what already happened.
This Pinterest scraper handles four distinct result types from the same input: all pins, video pins, boards, and profiles. Proxy rotation is handled automatically inside the Actor, no headless browser is required, and an optional cookie header lets you improve reliability and result depth when you need deeper pagination.
π What Data Can You Extract with This Pinterest Scraper?
Records vary by the type you request. The fields below cover the full schema across pins, boards, and profiles.
| Category | Fields | What it gives you |
|---|---|---|
| π Record identity | id, type, entity_type, name, title, url | Unique identifier, record type, entity classification, display name, title, and canonical Pinterest URL |
| πΌοΈ Media & imagery | media, coverURL, thumbnailURL, slashURL | Media object plus cover, thumbnail, and short-link image URLs for downloading or embedding |
| π€ Creator & ownership | owner, creator, profile | Owner object, creator reference, and the full profile record when scraping profiles |
| π Board context | board, board_ref, pinCount | The board a pin belongs to, an enriched board reference, and how many pins a board holds |
| π Provenance | query, source_url, seed_type, seed_value | The search query, source page, and the seed that generated the record β essential for attribution |
| π Sentiment enrichment | sentiment_score, sentiment_score_normalized, sentiment_confidence, sentiment_label | Heuristic sentiment analysis of the pin description with a raw score, normalised score, confidence, and label |
| π·οΈ Content classification | content_category_label, content_category_path, content_category_confidence, content_category_match_type | Category label, hierarchical category path, confidence value, and how the match was made |
| π¦ Extended data | pin, schema, extra | Raw pin payload, schema information, and additional attributes carried through from the source |
The field that changes what you can do with the data is content_category_path. Because it is a hierarchical path rather than a single flat label, you can aggregate at whichever level of granularity your analysis needs β roll everything up to a top-level category for a market overview, or drill down to a leaf node to compare narrow niches. Combined with content_category_confidence, it lets you exclude weak classifications before charting anything.
π Key Features of the Pinterest Pins Scraper
| Feature | Description |
|---|---|
| π Four result types | A single type selector switches between all pins, video pins, boards, and creator profiles |
| π Keywords or URLs | Supply plain keyword strings in queries, Pinterest search URLs in startUrls, or both in one run |
| π Board enrichment | enrich_boards fetches full board detail β owner, preview images, cover images β so board_ref.extra is complete |
| π·οΈ Content analysis | content_analysis attaches hashtags, extracted links, word count, and a has-price flag to each pin |
| π Sentiment scoring | sentiment_analysis adds a heuristic sentiment score, normalised value, confidence, and label per pin description |
| πͺ Optional cookie support | Supply a Pinterest cookie header from a logged-in session to improve reliability and result depth |
| π Per-search result cap | limit sets the maximum records saved per keyword, so you can validate cheaply then scale up |
| π‘οΈ Automatic proxy rotation | Proxy handling is built into the Actor β there is no proxy field to configure |
| β‘ Browser-free extraction | Runs over direct HTTP requests without a headless browser, keeping runs light |
π Why Choose This Pinterest Scraper?
Four data shapes from one Actor. Pins, videos, boards, and profiles are usually four separate tools. Switching type here means one integration, one output dataset, and one set of credentials to manage regardless of which Pinterest entity you are researching.
Enrichment is opt-in and priced by you. enrich_boards, content_analysis, and sentiment_analysis each add data at the cost of extra work per record. Because they are separate toggles, you decide per run whether you want a fast, cheap sweep or a fully enriched dataset.
Provenance is preserved on every record. query, source_url, seed_type, and seed_value mean you always know which keyword or URL produced a given pin. That matters enormously when you run twenty keywords in one job and need to attribute results back to the right search.
Content categorisation with a confidence signal. Returning content_category_confidence and content_category_match_type alongside the label lets you filter out uncertain classifications rather than treating every category assignment as equally trustworthy.
π₯ Input
{"startUrls": [{ "url": "https://www.pinterest.com/search/pins/?q=home%20decor" }],"queries": ["home decor"],"type": "all-pins","limit": 50000,"enrich_boards": true,"content_analysis": false,"sentinent_analysis": false}
π§ Pinterest Scraper Input Fields
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
startUrls | array | No | prefilled with a home decor search | Pinterest search URLs, e.g. https://www.pinterest.com/search/pins/?q=home%20decor. Only URLs containing a ?q= query are usable |
queries | array | No | prefilled with home decor | Plain keyword strings; each is expanded into a Pinterest search |
type | string | No | all-pins | What kind of results to collect. Options: all-pins, videos, boards, profiles |
limit | integer | No | 50000 | Maximum number of records to save for each keyword search |
enrich_boards | boolean | No | true | Fetch full board details (owner, preview images, cover images) so board_ref.extra is complete. Adds one cached request per unique board |
content_analysis | boolean | No | false | Attach a lightweight content_analysis object (hashtags, extracted links, word count, has_price) to each pin |
sentinent_analysis | boolean | No | false | Attach a lightweight heuristic sentiment score for the pin description |
cookies | string | No | β | Optional Pinterest cookie header from a logged-in browser session. Improves reliability and result depth |
Note that the sentiment toggle is spelled sentinent_analysis in the input schema β the key name is kept exactly as provided in the original input, so use that spelling when calling the Actor via API.
π‘ Input Examples
Quick validation run on a single keyword
{"queries": ["scandinavian kitchen"],"type": "all-pins","limit": 100,"enrich_boards": false}
Video pin research with full enrichment
{"queries": ["diy woodworking", "workshop organisation"],"type": "videos","limit": 500,"content_analysis": true,"sentinent_analysis": true}
Board and profile discovery from search URLs
{"startUrls": [{ "url": "https://www.pinterest.com/search/pins/?q=capsule%20wardrobe" }],"type": "boards","limit": 200,"enrich_boards": true}
π€ Output
{"query": "home decor","id": "1130899671234567890","type": "pin","entity_type": "pin","title": "Minimalist living room styling ideas","url": "https://www.pinterest.com/pin/1130899671234567890/","coverURL": "https://i.pinimg.com/originals/ab/cd/ef/example-cover.jpg","thumbnailURL": "https://i.pinimg.com/236x/ab/cd/ef/example-thumb.jpg","creator": "studio.northlight","board_ref": { "id": "1130899600000000000", "name": "Living Room Ideas" },"media": { "type": "image" },"source_url": "https://www.pinterest.com/search/pins/?q=home%20decor","seed_type": "query","seed_value": "home decor","sentiment_label": "positive","content_category_label": "Home Decor","content_category_path": ["Home", "Interior Design", "Home Decor"],"content_category_confidence": 0.86}
π§Ύ Pinterest Pin & Media Output Fields
| Field | Type | Description |
|---|---|---|
query | string | null | Search query that produced this item |
id | string | integer | Unique identifier of the item |
name | string | null | Name of the item |
title | string | null | Title of the item |
url | string | null | Canonical URL of the scraped item |
type | string | null | Type of the item |
entity_type | string | null | Entity type of the item |
coverURL | string | null | URL of the item's cover image |
thumbnailURL | string | null | URL of the thumbnail image |
slashURL | string | null | URL of the item's slash link |
media | object | null | Media object for the item |
pin | β | Pin payload for the item |
creator | string | null | Creator of the item |
owner | object | null | Owner of the item |
source_url | string | null | URL the item was scraped from |
seed_type | string | null | Seed type that generated the item |
seed_value | β | Seed value that generated the item |
schema | object | null | Schema information for the item |
extra | β | Additional attributes for the item |
π§Ύ Board, Profile & Enrichment Output Fields
| Field | Type | Description |
|---|---|---|
board | object | null | Board record, returned when scraping boards |
board_ref | β | Board reference attached to a pin |
pinCount | integer | null | Number of pins on the board |
profile | object | null | Profile record, returned when scraping profiles |
sentiment_score | number | null | Raw sentiment score for the description |
sentiment_score_normalized | number | null | Normalised sentiment score |
sentiment_confidence | number | null | Confidence in the sentiment result |
sentiment_label | string | null | Sentiment label for the description |
content_category_label | string | null | Content category label assigned to the item |
content_category_path | array | null | Hierarchical content category path |
content_category_confidence | number | null | Confidence in the content category assignment |
content_category_match_type | string | null | How the content category was matched |
Sentiment fields populate only when sentinent_analysis is enabled, and board enrichment fields are fullest when enrich_boards is left on.
π» How to Use the Pinterest Pins Scraper (Step by Step)
Step 1: Choose your seeds β keywords or search URLs
You can drive the Pinterest scraper with plain keywords in queries, with Pinterest search URLs in startUrls, or with both together. Keywords are simpler and each one is expanded into a search automatically. Search URLs give you precise control when you have already refined a search in the browser and want to reproduce it exactly. Only URLs containing a ?q= query parameter are usable, so copy the URL from an actual Pinterest search results page rather than a board or profile page.
Step 2: Select the result type you need
The type field determines the shape of every record in the run. all-pins returns visual posts, videos restricts to video pins, boards returns pin collections, and profiles returns creator pages. Because the four types produce different fields, run them as separate jobs when you need more than one β that keeps each dataset consistent and much easier to analyse.
Step 3: Set a sensible result limit
limit caps the number of records saved per keyword search and defaults to 50000, which is effectively unlimited for most searches. Start far lower β 100 to 500 β while you confirm the keywords return the kind of pins you expected. Once the seeds are validated, raise the limit for the full collection run. A cheap validation pass before a large job is the single most effective habit in Pinterest scraping.
Step 4: Decide which enrichments to enable
enrich_boards is on by default and fetches full board details so board_ref.extra is populated; it adds one cached request per unique board, so disable it for faster, cheaper runs when board context does not matter. content_analysis attaches hashtags, extracted links, word count, and a has-price flag. sentinent_analysis adds heuristic sentiment scoring of the pin description. Enable only what your analysis actually consumes.
Step 5: Optionally supply Pinterest cookies
The cookies field accepts a cookie header copied from a logged-in browser session. This is optional, but it improves reliability and result depth, particularly on deep paginated runs where anonymous access returns thinner results. Treat the cookie value as a credential: it grants session-level access, so store it securely and rotate it if it stops working.
Step 6: Run the Pinterest scraper and inspect the dataset
Press Start and watch the log as each seed is expanded and results are collected. When the run finishes, open the Dataset tab and check three things: that query and seed_value correctly attribute records to their source, that thumbnailURL and coverURL are populated for visual records, and that any enrichment fields you enabled actually contain values.
Step 7: Export, deduplicate, and schedule recurring runs
Export as JSON, CSV, Excel, XML, or HTML, or read the dataset through the API. Deduplicate on id, which is unique per Pinterest entity, when combining runs across keywords or dates. Pinterest search results shift as new content is pinned, so scheduling the Pinterest pins scraper weekly turns a one-time snapshot into a visual trend series showing which aesthetics, products, and creators are gaining traction.
π API Access & Integrations
Run the Pinterest scraper synchronously and get dataset items back directly:
curl -X POST "https://api.apify.com/v2/acts/scrapers-hub~pinterest-pins-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"queries": ["home decor", "scandinavian kitchen"],"type": "all-pins","limit": 200,"enrich_boards": false}'
Group pins by content category with the Python client:
from collections import Counterfrom apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("scrapers-hub/pinterest-pins-scraper").call(run_input={"queries": ["capsule wardrobe", "autumn outfits"],"type": "all-pins","limit": 300,"content_analysis": True,"sentinent_analysis": True,})categories = Counter()for item in client.dataset(run["defaultDatasetId"]).iterate_items():confidence = item.get("content_category_confidence") or 0if confidence >= 0.7 and item.get("content_category_label"):categories[(item.get("query"), item["content_category_label"])] += 1for (query, label), count in categories.most_common(20):print(f"{query} -> {label}: {count} pins")
The Actor also connects to Zapier, Make, Google Sheets, and Slack, and supports webhooks that fire on run completion so fresh Pinterest data can flow into your reporting stack automatically.
π‘ Best Use Cases for Pinterest Pins Data
π¨ Visual trend forecasting
Pinterest search behaviour leads purchasing by months, which makes pin volume and category distribution a genuine leading indicator. Run the same queries on a schedule and track how content_category_label and content_category_path shift over time to see which aesthetics are rising before they reach mainstream retail.
ποΈ E-commerce product and niche research
Enable content_analysis and use the has-price signal and extracted links it attaches to identify which pins are commercially oriented rather than purely inspirational. Cross-reference content_category_path with query to find niches where shopping intent is high but competition is thin.
π₯ Creator and influencer discovery
Set type to profiles or read the creator and owner fields on pin records to build a list of the accounts consistently surfacing for your keywords. Combined with pinCount on boards, this identifies prolific curators in your category who are worth approaching for partnerships.
π Board curation and content strategy analysis
Scraping with type set to boards and enrich_boards enabled returns board names, owners, and preview imagery alongside pinCount. Studying how successful boards in your niche are titled and organised is one of the fastest ways to work out how your own boards should be structured.
π₯ Video pin performance research
Restricting type to videos isolates Pinterest's video content, where the media object and thumbnailURL give you the assets and the title gives you the framing. Analysing which video pins dominate a keyword shows what hook and thumbnail style earn attention in that category.
πΌοΈ Image dataset and mood board assembly
coverURL and thumbnailURL supply direct image links for every pin, making it straightforward to assemble a curated visual reference set for a design brief, a mood board, or a training corpus β with query and source_url preserved so every image retains its provenance.
π Audience sentiment and messaging research
With sentinent_analysis enabled, sentiment_label and sentiment_confidence characterise the emotional tone of pin descriptions in a category. Comparing sentiment distributions across competing keywords reveals which framings resonate positively and which language your own captions should avoid.
βοΈ Tips for Better Pinterest Scraping Results
- Validate with a small
limitfirst. Run 100 records per keyword to confirm your seeds return the right content, then scale up. The default of 50000 is a ceiling, not a target. - Run one
typeper job. Pins, videos, boards, and profiles have different field shapes; mixing them in a single dataset makes downstream analysis needlessly awkward. - Disable
enrich_boardswhen board context is irrelevant. It costs one additional cached request per unique board, which is meaningful on large runs and pointless if you never readboard_ref.extra. - Use specific multi-word keywords. Broad seeds like "decor" return a diffuse mix; "scandinavian kitchen shelving" returns a coherent set you can actually analyse.
- Filter on
content_category_confidencebefore aggregating. Treating low-confidence classifications as equal to high-confidence ones will quietly distort any category chart you build. - Supply cookies for deep paginated runs. Anonymous access is fine for shallow collection; a logged-in cookie header improves reliability and result depth when you are pulling thousands of records per keyword.
π οΈ Troubleshooting
My startUrls produced no results.
Only Pinterest URLs containing a ?q= query parameter are usable by this scraper. Board URLs, profile URLs, and individual pin URLs will not work as seeds. Copy the URL from an actual Pinterest search results page, or use the queries field with plain keywords instead.
Sentiment fields are all null.
Sentiment analysis is opt-in and disabled by default. Enable it by setting sentinent_analysis to true β note the spelling, which is preserved exactly as it appears in the input schema.
board_ref is present but sparse.
Full board detail is fetched only when enrich_boards is enabled. With it disabled, board_ref carries the basic reference without the enriched extra payload containing owner and preview imagery.
I am getting fewer results than my limit allows.
limit is a ceiling per keyword search, not a guarantee. Narrow or unusual keywords simply do not have that many matching pins. Broaden the keyword, add more seeds to queries, or supply a cookie header to improve result depth on deep pagination.
Results thin out on very large runs.
Anonymous deep pagination returns progressively less. Supplying a valid Pinterest cookie header in the cookies field improves reliability and depth. If a cookie stops working, refresh it from a current logged-in browser session.
β Frequently Asked Questions About Pinterest Scraping
What can the Pinterest Pins Scraper extract? Pins, video pins, boards, and creator profiles from Pinterest search results, including media URLs, board references, owner and creator details, provenance fields, and optional sentiment and content-category enrichment.
Do I need Pinterest login credentials?
No. The cookies field is optional. Supplying a cookie header from a logged-in browser session improves reliability and result depth, but the Pinterest scraper works without it.
How do I scrape only video pins?
Set type to videos. That restricts the run to Pinterest's video content rather than all visual posts.
Can I use keywords instead of URLs?
Yes. Put plain keyword strings in queries and each one is expanded into a Pinterest search automatically. You can also combine keywords with startUrls in the same run.
What kind of Pinterest URLs work as seeds?
Only search URLs containing a ?q= query parameter, such as https://www.pinterest.com/search/pins/?q=home%20decor.
What does enrich_boards actually add?
It fetches full board details β owner, preview images, cover images β so that board_ref.extra is complete. It costs one cached request per unique board encountered.
Why is the sentiment input field spelled sentinent_analysis?
The key name is kept exactly as provided in the original input schema. Use that spelling when calling the Actor through the API, or the toggle will be ignored.
How many pins can I collect per keyword?
limit controls the maximum records saved per keyword search and defaults to 50000. The practical ceiling also depends on how many results Pinterest surfaces for that keyword.
Does the Pinterest scraper need proxy configuration? No. Proxy rotation is handled automatically inside the Actor and there is no proxy field in the input schema.
Does it use a headless browser? No. It works over direct HTTP requests, which keeps runs faster and lighter than browser-based Pinterest scraping.
How do I attribute results back to the keyword that produced them?
Use query, seed_type, and seed_value, which are carried on every record, plus source_url for the exact page the item came from. This matters when you run many keywords in one job.
Can I download the images the scraper finds?
The records include coverURL and thumbnailURL as direct image links. Downloading and reusing those images is subject to the rights of whoever created them, so check licensing before republishing.
How do I deduplicate results across scheduled runs?
Deduplicate on id, which is unique per Pinterest entity. Keep query alongside it if the same pin can legitimately appear under several keywords.
What export formats does the Pinterest scraper support? Apify datasets export to JSON, CSV, Excel, XML, and HTML, and are also readable through the dataset API. Zapier, Make, Google Sheets, Slack, and webhook integrations are all supported.
Can I get a customised version of this Pinterest scraper?
Yes. Email scraperhubapi@gmail.com to discuss additional fields, different result types, or integration with your own analytics pipeline.
π Support & Feedback
If the Pinterest scraper returns unexpected results, misses records, or a run fails, report it on the Issues tab of the Actor page. Including your input configuration and the run ID makes reproduction much faster.
For custom work β larger Pinterest data pipelines, additional enrichment, or a tailored version of this Pinterest pins scraper built around your own schema β email scraperhubapi@gmail.com.
If this Actor is useful for your visual research, please leave a review on the Apify Store. Ratings and written feedback directly influence which features get built next.
βοΈ Disclaimer
The Pinterest Pins Scraper collects publicly visible content from Pinterest search results. It does not bypass authentication or access private boards, secret boards, or any content that is not publicly available. Where a cookie header is supplied, it is used only to access content that the corresponding session can already see.
You are responsible for how you use the data this Pinterest scraper produces. Comply with Pinterest's terms of service, crawl at reasonable rates, and respect the platform's technical limits. Pins, boards, and profiles frequently relate to identifiable individuals β creators, owners, and the people shown in images β so where you process such records, data protection law including the GDPR applies to you as the data controller, and you must establish a lawful basis, honour data subject rights, and apply appropriate retention limits.
Images and media returned by this Actor remain the property of their creators. Collecting a URL is not a licence to republish the asset; obtain permission before reusing any creative work commercially. Data is provided as-is and reflects the state of Pinterest search results at the time of the run.
If you believe data returned by this Actor should be removed or corrected, email scraperhubapi@gmail.com with the details and the request will be reviewed.