Pinterest Pins Scraper avatar

Pinterest Pins Scraper

Under maintenance

Pricing

from $1.99 / 1,000 results

Go to Apify Store
Pinterest Pins Scraper

Pinterest Pins Scraper

Under maintenance

Pinterest 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

Scrapers Hub

Maintained by Community

Actor 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.

CategoryFieldsWhat it gives you
πŸ†” Record identityid, type, entity_type, name, title, urlUnique identifier, record type, entity classification, display name, title, and canonical Pinterest URL
πŸ–ΌοΈ Media & imagerymedia, coverURL, thumbnailURL, slashURLMedia object plus cover, thumbnail, and short-link image URLs for downloading or embedding
πŸ‘€ Creator & ownershipowner, creator, profileOwner object, creator reference, and the full profile record when scraping profiles
πŸ“‹ Board contextboard, board_ref, pinCountThe board a pin belongs to, an enriched board reference, and how many pins a board holds
πŸ” Provenancequery, source_url, seed_type, seed_valueThe search query, source page, and the seed that generated the record β€” essential for attribution
😊 Sentiment enrichmentsentiment_score, sentiment_score_normalized, sentiment_confidence, sentiment_labelHeuristic sentiment analysis of the pin description with a raw score, normalised score, confidence, and label
🏷️ Content classificationcontent_category_label, content_category_path, content_category_confidence, content_category_match_typeCategory label, hierarchical category path, confidence value, and how the match was made
πŸ“¦ Extended datapin, schema, extraRaw 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

FeatureDescription
πŸ”€ Four result typesA single type selector switches between all pins, video pins, boards, and creator profiles
πŸ”‘ Keywords or URLsSupply plain keyword strings in queries, Pinterest search URLs in startUrls, or both in one run
πŸ“‹ Board enrichmentenrich_boards fetches full board detail β€” owner, preview images, cover images β€” so board_ref.extra is complete
🏷️ Content analysiscontent_analysis attaches hashtags, extracted links, word count, and a has-price flag to each pin
😊 Sentiment scoringsentiment_analysis adds a heuristic sentiment score, normalised value, confidence, and label per pin description
πŸͺ Optional cookie supportSupply a Pinterest cookie header from a logged-in session to improve reliability and result depth
πŸ“ˆ Per-search result caplimit sets the maximum records saved per keyword, so you can validate cheaply then scale up
πŸ›‘οΈ Automatic proxy rotationProxy handling is built into the Actor β€” there is no proxy field to configure
⚑ Browser-free extractionRuns 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

FieldTypeRequiredDefaultDescription
startUrlsarrayNoprefilled with a home decor searchPinterest search URLs, e.g. https://www.pinterest.com/search/pins/?q=home%20decor. Only URLs containing a ?q= query are usable
queriesarrayNoprefilled with home decorPlain keyword strings; each is expanded into a Pinterest search
typestringNoall-pinsWhat kind of results to collect. Options: all-pins, videos, boards, profiles
limitintegerNo50000Maximum number of records to save for each keyword search
enrich_boardsbooleanNotrueFetch full board details (owner, preview images, cover images) so board_ref.extra is complete. Adds one cached request per unique board
content_analysisbooleanNofalseAttach a lightweight content_analysis object (hashtags, extracted links, word count, has_price) to each pin
sentinent_analysisbooleanNofalseAttach a lightweight heuristic sentiment score for the pin description
cookiesstringNoβ€”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

FieldTypeDescription
querystring | nullSearch query that produced this item
idstring | integerUnique identifier of the item
namestring | nullName of the item
titlestring | nullTitle of the item
urlstring | nullCanonical URL of the scraped item
typestring | nullType of the item
entity_typestring | nullEntity type of the item
coverURLstring | nullURL of the item's cover image
thumbnailURLstring | nullURL of the thumbnail image
slashURLstring | nullURL of the item's slash link
mediaobject | nullMedia object for the item
pinβ€”Pin payload for the item
creatorstring | nullCreator of the item
ownerobject | nullOwner of the item
source_urlstring | nullURL the item was scraped from
seed_typestring | nullSeed type that generated the item
seed_valueβ€”Seed value that generated the item
schemaobject | nullSchema information for the item
extraβ€”Additional attributes for the item

🧾 Board, Profile & Enrichment Output Fields

FieldTypeDescription
boardobject | nullBoard record, returned when scraping boards
board_refβ€”Board reference attached to a pin
pinCountinteger | nullNumber of pins on the board
profileobject | nullProfile record, returned when scraping profiles
sentiment_scorenumber | nullRaw sentiment score for the description
sentiment_score_normalizednumber | nullNormalised sentiment score
sentiment_confidencenumber | nullConfidence in the sentiment result
sentiment_labelstring | nullSentiment label for the description
content_category_labelstring | nullContent category label assigned to the item
content_category_patharray | nullHierarchical content category path
content_category_confidencenumber | nullConfidence in the content category assignment
content_category_match_typestring | nullHow 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 Counter
from apify_client import ApifyClient
client = 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 0
if confidence >= 0.7 and item.get("content_category_label"):
categories[(item.get("query"), item["content_category_label"])] += 1
for (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 limit first. 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 type per job. Pins, videos, boards, and profiles have different field shapes; mixing them in a single dataset makes downstream analysis needlessly awkward.
  • Disable enrich_boards when board context is irrelevant. It costs one additional cached request per unique board, which is meaningful on large runs and pointless if you never read board_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_confidence before 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.