# Pinterest Pin Listings Scraper (`ecomscrape/pinterest-pin-listings-scraper`) Actor

Search and extract YouTube video metadata at scale using keywords, filters, or channel/playlist URLs. Retrieve titles, view counts, thumbnails, keywords, and more — with full control over upload date, duration, features, and sort order.

- **URL**: https://apify.com/ecomscrape/pinterest-pin-listings-scraper.md
- **Developed by:** [ecomscrape](https://apify.com/ecomscrape) (community)
- **Categories:** Automation, Developer tools, Social media
- **Stats:** 4 total users, 3 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $2.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Contact

If you encounter any issues or need to exchange information, please feel free to contact us through the following link:
[My profile](https://apify.com/ecomscrape)

## Pinterest Search Scraper: Extract Pin Data for Visual Content Research & Marketing Intelligence

### Introduction

Pinterest stands as the world's leading visual discovery and bookmarking platform, hosting billions of pins across countless topics including fashion, home decor, recipes, DIY projects, technology, and consumer products. As a unique hybrid of social media and search engine, Pinterest serves as both a trend indicator and a product discovery platform where users actively seek inspiration and make purchasing decisions.

For businesses engaged in content marketing, trend forecasting, product research, or competitive analysis, Pinterest data provides invaluable insights into consumer interests, visual trends, and product popularity. However, manually collecting pin data across multiple boards, searches, or categories is extremely inefficient when conducting comprehensive market research or competitive intelligence gathering.

The Pinterest Search Scraper automates this process, enabling systematic extraction of pins, videos, boards, and associated metadata. Whether you're analyzing design trends, tracking competitor content strategies, identifying popular products, or building visual content databases, this scraper transforms what would require days of manual work into hours of automated collection.

### Scraper Overview

The Pinterest Search Scraper is a comprehensive data extraction tool designed to collect detailed information from Pinterest pins, videos, and boards. It captures rich metadata including visual content, engagement metrics, creator information, product data, and content attributes.

The tool supports both URL-based extraction for targeted board scraping and keyword-based search for discovering content across Pinterest's entire platform. It's valuable for digital marketers analyzing visual content performance, e-commerce businesses tracking product trends, content creators researching popular formats, trend forecasters identifying emerging patterns, and competitive analysts monitoring competitor Pinterest strategies.

The scraper extracts extensive data including images, descriptions, engagement counts, creator profiles, product metadata, SEO information, and platform-specific attributes like story pins and promoted content indicators.

### Input Configuration

Example url 1: https://www.pinterest.com/collectsideshow/marvel-collectibles/x-men/

Example url 2: https://www.pinterest.com/search/pins/?q=anime&rs=content_type_filter

Example url 3: https://www.pinterest.com/AegonTheGreat/anime-world/
    
Example Screenshot of product information page:
    
![](https://i.ibb.co/PvZcMxT4/Screenshot-from-2026-03-31-21-46-38.png)

#### Input Format

The scraper offers two extraction methods: URL-based board scraping and keyword-based search.

##### Scrape with URLs:
```json
{
  "urls": [
    "https://www.pinterest.com/collectsideshow/marvel-collectibles/x-men/"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}
````

**The `urls` parameter**: Add URLs of Pinterest boards or sections you want to scrape. Can include specific board URLs, board sections, or collection pages. Use bulk edit for multiple URLs.

**The `ignore_url_failures` parameter**: Continue scraping even if individual URLs fail after maximum retries. Essential for large-scale multi-board extraction.

*When using URLs, search filter options are disabled.*

##### Scrape with Search Filters:

```json
{
  "keyword": "minimalist home decor",
  "type": "pins",
  "max_items_per_url": 20
}
```

**The `keyword` parameter**: Search term for finding pins, videos, or boards. Use specific keywords matching user search behavior (e.g., "vintage fashion", "healthy recipes", "modern interior design").

**The `type` parameter**: Filter results by content type:

- `"pins"` - Standard pins and images
- `"videos"` - Video pins and video content
- `"boards"` - Pinterest boards and collections

*When using search filters, leave the URLs field empty.*

##### General Options:

**The `max_items_per_url` parameter**: Limit items extracted per URL or search query. Default: 20.

**The `max_retries_per_url` parameter**: Retry attempts for failed requests. Default: 2.

#### Output Format

```json
[
  {
  "node_id": "UGluOjk4OTI0Mzg3NDQxOTAxMzAyNg==",
  "id": "989243874419013026",
  "is_uploaded": true,
  "call_to_action_text": null,
  "link": "https://www.daabbeautystudio.com/post/how-to-prepare-your-skin-for-a-full-day-tattoo-session",
  "is_native": true,
  "embed": null,
  "is_repin": false,
  "seo_url": "/pin/989243874419013026/",
  "native_creator": {
    "node_id": "VXNlcjo5ODkyNDQwMTE4MDgxNjUxMTU=",
    "is_ads_only_profile": false,
    "full_name": "Defined Arch & Beyond Studio",
    "is_primary_website_verified": false,
    "ads_only_profile_site": null,
    "type": "user",
    "username": "daab_studio",
    "image_small_url": "https://i.pinimg.com/30x30_RS/02/eb/f5/02ebf512506e01f750fbace92da48d26.jpg",
    "blocked_by_me": false,
    "id": "989244011808165115",
    "is_verified_merchant": false,
    "verified_identity": {},
    "explicitly_followed_by_me": false,
    "image_large_url": "https://i.pinimg.com/140x140_RS/02/eb/f5/02ebf512506e01f750fbace92da48d26.jpg"
  },
  "video_status_message": null,
  "grid_attribution": null,
  "promoted_lead_form": null,
  "rich_summary": null,
  "is_stale_product": false,
  "seo_title": "Pin on Blog Posts",
  "grid_title": "How to prepare your skin for a full-day tattoo session",
  "is_downstream_promotion": false,
  "domain": "daabbeautystudio.com",
  "campaign_id": null,
  "dominant_color": "#9f7467",
  "title": "How to prepare your skin for a full-day tattoo session",
  "insertion_id": null,
  "access": [],
  "images": {
    "170x": {
      "width": 236,
      "height": 295,
      "url": "https://i.pinimg.com/236x/14/9e/f1/149ef131d390c2cbae18460ef6ac2a92.jpg"
    },
    "136x136": {
      "width": 136,
      "height": 136,
      "url": "https://i.pinimg.com/136x136/14/9e/f1/149ef131d390c2cbae18460ef6ac2a92.jpg"
    },
    "236x": {
      "width": 236,
      "height": 295,
      "url": "https://i.pinimg.com/236x/14/9e/f1/149ef131d390c2cbae18460ef6ac2a92.jpg"
    },
    "474x": {
      "width": 474,
      "height": 592,
      "url": "https://i.pinimg.com/474x/14/9e/f1/149ef131d390c2cbae18460ef6ac2a92.jpg"
    },
    "736x": {
      "width": 736,
      "height": 920,
      "url": "https://i.pinimg.com/736x/14/9e/f1/149ef131d390c2cbae18460ef6ac2a92.jpg"
    },
    "orig": {
      "width": 1080,
      "height": 1350,
      "url": "https://i.pinimg.com/originals/14/9e/f1/149ef131d390c2cbae18460ef6ac2a92.png"
    }
  },
  "created_at": "Sun, 29 Mar 2026 23:41:11 +0000",
  "is_eligible_for_related_products": false,
  "view_tags": [],
  "should_open_in_stream": false,
  "is_whitelisted_for_tried_it": true,
  "promoted_is_lead_ad": false,
  "rich_metadata": null,
  "story_pin_data_id": "3368719703653225280",
  "pinner": {
    "node_id": "VXNlcjo5ODkyNDQwMTE4MDgxNjUxMTU=",
    "is_ads_only_profile": false,
    "full_name": "Defined Arch & Beyond Studio",
    "is_primary_website_verified": false,
    "ads_only_profile_site": null,
    "type": "user",
    "username": "daab_studio",
    "image_small_url": "https://i.pinimg.com/30x30_RS/02/eb/f5/02ebf512506e01f750fbace92da48d26.jpg",
    "blocked_by_me": false,
    "id": "989244011808165115",
    "is_verified_merchant": false,
    "verified_identity": {},
    "explicitly_followed_by_me": false,
    "image_large_url": "https://i.pinimg.com/140x140_RS/02/eb/f5/02ebf512506e01f750fbace92da48d26.jpg"
  },
  "seo_noindex_reason": null,
  "is_eligible_for_web_closeup": false,
  "additional_hide_reasons": [],
  "video_status": null,
  "description_html": " ",
  "is_quick_promotable_by_pinner": false,
  "promoted_is_removable": false,
  "auto_alt_text": null,
  "price_currency": "USD",
  "comment_count": 0,
  "creator_analytics": null,
  "image_signature": "149ef131d390c2cbae18460ef6ac2a92",
  "debug_info_html": null,
  "tracking_params": "CwABAAAAEDMxNjA1ODE0NTAyNTc2MDYGAAMAlQsABwAAAApuZ2FwaS9wcm9kAA",
  "link_utm_applicable_and_replaced": 1,
  "product_metadata": null,
  "ad_match_reason": 0,
  "privacy": "public",
  "repin_count": 0,
  "is_quick_promotable": false,
  "shopping_flags": [],
  "promoter": null,
  "manual_interest_tags": null,
  "grid_description": " ",
  "is_oos_product": false,
  "sponsorship": null,
  "story_pin_data": {
    "node_id": "U3RvcnlQaW5EYXRhOjMzNjg3MTk3MDM2NTMyMjUyODA=",
    "pages_preview": [
      {
        "blocks": [
          {
            "type": "story_pin_image_block",
            "block_style": {
              "rotation": 0,
              "y_coord": 0,
              "width": 100,
              "corner_radius": 0,
              "height": 100,
              "x_coord": 0
            },
            "image": {
              "images": {
                "originals": {
                  "url": "https://i.pinimg.com/originals/14/9e/f1/149ef131d390c2cbae18460ef6ac2a92.jpg",
                  "width": 1080,
                  "height": 1350
                },
                "1200x": {
                  "url": "https://i.pinimg.com/1200x/14/9e/f1/149ef131d390c2cbae18460ef6ac2a92.jpg",
                  "width": 1080,
                  "height": 1350
                },
                "474x": {
                  "url": "https://i.pinimg.com/474x/14/9e/f1/149ef131d390c2cbae18460ef6ac2a92.jpg",
                  "width": 474,
                  "height": 592
                },
                "236x": {
                  "url": "https://i.pinimg.com/236x/14/9e/f1/149ef131d390c2cbae18460ef6ac2a92.jpg",
                  "width": 236,
                  "height": 295
                },
                "736x": {
                  "url": "https://i.pinimg.com/736x/14/9e/f1/149ef131d390c2cbae18460ef6ac2a92.jpg",
                  "width": 736,
                  "height": 920
                }
              },
              "dominant_color": "#9f7467"
            },
            "image_signature": "149ef131d390c2cbae18460ef6ac2a92",
            "block_type": 2
          }
        ]
      }
    ],
    "type": "storypindata",
    "total_video_duration": 0,
    "id": "3368719703653225280",
    "static_page_count": 1,
    "metadata": {
      "pin_title": "How to prepare your skin for a full-day tattoo session",
      "is_compatible": false,
      "recipe_data": null,
      "is_editable": false,
      "basics": null,
      "diy_data": null,
      "version": "0.16.0",
      "root_user_id": "989244011808165115",
      "is_promotable": true,
      "template_type": null,
      "canvas_aspect_ratio": 0.8,
      "compatible_version": "0.16.0",
      "root_pin_id": "989243874419013026",
      "showreel_data": null,
      "pin_image_signature": "149ef131d390c2cbae18460ef6ac2a92"
    },
    "has_affiliate_products": false,
    "pages": [
      {
        "blocks": [
          {
            "type": "story_pin_image_block",
            "block_style": {
              "rotation": 0,
              "y_coord": 0,
              "width": 100,
              "corner_radius": 0,
              "height": 100,
              "x_coord": 0
            },
            "image": {
              "images": {
                "originals": {
                  "url": "https://i.pinimg.com/originals/14/9e/f1/149ef131d390c2cbae18460ef6ac2a92.jpg",
                  "width": 1080,
                  "height": 1350
                },
                "1200x": {
                  "url": "https://i.pinimg.com/1200x/14/9e/f1/149ef131d390c2cbae18460ef6ac2a92.jpg",
                  "width": 1080,
                  "height": 1350
                },
                "474x": {
                  "url": "https://i.pinimg.com/474x/14/9e/f1/149ef131d390c2cbae18460ef6ac2a92.jpg",
                  "width": 474,
                  "height": 592
                },
                "236x": {
                  "url": "https://i.pinimg.com/236x/14/9e/f1/149ef131d390c2cbae18460ef6ac2a92.jpg",
                  "width": 236,
                  "height": 295
                },
                "736x": {
                  "url": "https://i.pinimg.com/736x/14/9e/f1/149ef131d390c2cbae18460ef6ac2a92.jpg",
                  "width": 736,
                  "height": 920
                }
              },
              "dominant_color": "#9f7467"
            },
            "image_signature": "149ef131d390c2cbae18460ef6ac2a92",
            "block_type": 2
          }
        ]
      }
    ],
    "has_product_pins": false,
    "page_count": 1,
    "is_deleted": false,
    "last_edited": null
  },
  "attribution": null,
  "price_value": 0,
  "has_been_boost_promoted": false,
  "is_promoted": false,
  "videos": null,
  "method": "photos",
  "type": "pin",
  "reaction_counts": {},
  "is_eligible_for_pdp": false,
  "board": {
    "node_id": "Qm9hcmQ6OTg5MjQzOTQzMDkwMzY5Njcw",
    "name": "Blog Posts",
    "url": "/daab_studio/blog-posts/",
    "owner": {
      "node_id": "VXNlcjo5ODkyNDQwMTE4MDgxNjUxMTU=",
      "is_ads_only_profile": false,
      "full_name": "Defined Arch & Beyond Studio",
      "is_primary_website_verified": false,
      "ads_only_profile_site": null,
      "type": "user",
      "username": "daab_studio",
      "image_small_url": "https://i.pinimg.com/30x30_RS/02/eb/f5/02ebf512506e01f750fbace92da48d26.jpg",
      "blocked_by_me": false,
      "id": "989244011808165115",
      "is_verified_merchant": false,
      "verified_identity": {},
      "explicitly_followed_by_me": false,
      "image_large_url": "https://i.pinimg.com/140x140_RS/02/eb/f5/02ebf512506e01f750fbace92da48d26.jpg"
    },
    "type": "board",
    "id": "989243943090369670",
    "privacy": "public",
    "layout": "default",
    "collaborated_by_me": false,
    "image_thumbnail_url": "https://i.pinimg.com/upload/989243943090369670_board_thumbnail_2026-03-29-23-43-34_13139_60.jpg",
    "is_collaborative": false,
    "followed_by_me": false
  },
  "alt_text": null,
  "link_domain": {
    "node_id": "RG9tYWluOjkwMjYyMDIyNTE2NDI4NzQwMQ==",
    "official_user": null
  },
  "is_playable": false,
  "aggregated_pin_data": {
    "node_id": "QWdncmVnYXRlZFBpbkRhdGE6MzM2ODcxOTcyMjYxMDAzNzUwNA==",
    "id": "3368719722610037504",
    "creator_analytics": null,
    "is_shop_the_look": false,
    "has_xy_tags": false,
    "aggregated_stats": {
      "saves": 1,
      "done": 0
    }
  },
  "comments": {
    "uri": "/v3/pins/989243874419013026/comments/",
    "data": [],
    "bookmark": null
  },
  "has_required_attribution_provider": false,
  "is_video": false,
  "image_crop": {
    "min_y": 0,
    "max_y": 1
  },
  "collection_pin": null,
  "utm_link": "https://www.daabbeautystudio.com/post/how-to-prepare-your-skin-for-a-full-day-tattoo-session?utm_source=Pinterest&utm_medium=organic",
  "description": " ",
  "carousel_data": null,
  "digital_media_source_type": null,
  "product_pin_data": null,
  "from_url": "https://www.pinterest.com/daab_studio/_created"
}
]
```

The scraper returns comprehensive pin data with 80+ fields:

**Core Identification:**

- **Node ID** / **ID**: Unique pin identifiers. *Essential for tracking pins, avoiding duplicates, building databases.*
- **Type**: Content type classification. *Distinguishes pins, videos, boards for analysis.*
- **Method**: How content was created. *Indicates original vs. repinned content.*

**Visual Content:**

- **Images**: Image URLs and metadata. *Primary visual assets for analysis and archiving.*
- **Videos**: Video content URLs and data. *For video content analysis and downloads.*
- **Dominant Color**: Main color in the image. *Useful for color trend analysis and visual clustering.*
- **Image Signature**: Unique image identifier. *Enables duplicate detection and image tracking.*
- **Alt Text** / **Auto Alt Text**: Accessibility descriptions. *Provides AI-generated content descriptions.*

**Content Details:**

- **Title** / **Grid Title**: Pin titles. *Key for understanding content focus and SEO.*
- **Description** / **Description HTML**: Full pin descriptions. *Contains detailed content information and keywords.*
- **Grid Description**: Shortened description. *Summary text for quick reference.*
- **SEO Title** / **SEO URL**: Search-optimized metadata. *Reveals content optimization strategies.*

**Engagement Metrics:**

- **Repin Count**: Number of times pin was saved. *Primary engagement indicator showing popularity.*
- **Comment Count**: Number of comments. *Indicates discussion level and engagement.*
- **Reaction Counts**: Emotional reactions data. *Shows sentiment and engagement types.*

**Creator Information:**

- **Pinner**: User who created/pinned content. *Identifies content creators for influencer analysis.*
- **Native Creator**: Original content creator. *Distinguishes original creators from curators.*
- **Creator Analytics**: Creator performance data. *Provides insights into creator success metrics.*

**Product & Commerce:**

- **Price Value** / **Price Currency**: Product pricing. *Critical for e-commerce and pricing analysis.*
- **Product Metadata**: Detailed product information. *Contains specifications, availability, variants.*
- **Product Pin Data**: E-commerce specific data. *Structured product information for shopping pins.*
- **Is Stale Product** / **Is OOS Product**: Product availability status. *Indicates if products are outdated or out of stock.*
- **Shopping Flags**: Commerce-related indicators. *Shows shopping features and capabilities.*

**Promotional & Advertising:**

- **Is Promoted**: Indicates paid promotion. *Identifies sponsored content.*
- **Campaign ID** / **Insertion ID**: Ad campaign identifiers. *For tracking advertising campaigns.*
- **Promoter**: Entity promoting the content. *Identifies advertisers and sponsors.*
- **Ad Match Reason**: Why ad was shown. *Reveals targeting criteria.*
- **Tracking Params**: Tracking parameters. *Contains analytics and attribution data.*

**Links & Attribution:**

- **Link** / **UTM Link**: External URLs. *Destination links with tracking.*
- **Domain** / **Link Domain**: Source website domains. *Identifies content sources.*
- **Attribution**: Content attribution data. *Credits original sources.*
- **Embed**: Embedded content information. *For embeddable pins.*

**Board & Organization:**

- **Board**: Associated Pinterest board. *Shows organizational context.*
- **Collection Pin**: Collection membership. *Indicates pin groupings.*

**Rich Content:**

- **Story Pin Data** / **Story Pin Data ID**: Multi-page story pins. *For analyzing story pin formats.*
- **Carousel Data**: Carousel pin information. *Multi-image pin data.*
- **Rich Metadata** / **Rich Summary**: Enhanced content data. *Additional structured information.*
- **Videos**: Video-specific metadata. *Detailed video content information.*

**Platform Features:**

- **Is Video**: Video content indicator. *Quick video identification.*
- **Is Playable**: Playability status. *Indicates if video can be played.*
- **Has Been Boost Promoted**: Boost advertising history. *Shows promotional investment.*
- **Manual Interest Tags**: User-assigned topic tags. *Reveals content categorization.*
- **View Tags**: Viewability classifications. *Platform classification data.*

**Engagement Indicators:**

- **Is Eligible For Web Closeup**: Closeup view eligibility. *Shows content quality level.*
- **Is Eligible For Related Products**: Product recommendation eligibility. *Indicates product pin quality.*
- **Is Eligible For PDP**: Product detail page eligibility. *For shopping experience.*
- **Should Open In Stream**: Display behavior. *UI presentation preference.*

**Quality & Moderation:**

- **Privacy**: Privacy settings. *Public/private status.*
- **Access**: Access permissions. *Content availability.*
- **Additional Hide Reasons**: Content moderation data. *Why content may be hidden.*
- **SEO Noindex Reason**: SEO indexing status. *Search visibility information.*

Each field enables specific analysis: trend identification, competitor monitoring, content strategy development, product research, influencer discovery, and advertising intelligence.

### Usage Guide

#### Option 1: Scraping Pinterest Boards via URLs

**Collecting Board URLs:**

1. Navigate to target Pinterest boards
2. Copy full board URLs including sections
3. Can include user boards, brand boards, or curated collections

**Configuration:**

- Add multiple board URLs for comprehensive extraction
- Enable `ignore_url_failures` for robustness
- Set appropriate `max_items_per_url` based on board size

**Best Practices:**

- Test individual boards before batch processing
- Monitor for private or restricted boards
- Track board ownership for creator analysis
- Organize URLs by topic or campaign

#### Option 2: Keyword-Based Search Scraping

**Keyword Strategy:**

**Trend Research:**

- "2024 fashion trends"
- "minimalist home decor"
- "healthy meal prep"

**Product Discovery:**

- "smart home devices"
- "eco-friendly products"
- "handmade jewelry"

**Content Inspiration:**

- "infographic design"
- "social media templates"
- "logo design ideas"

**Type Filtering:**

- Use `"pins"` for standard visual content
- Use `"videos"` for video marketing research
- Use `"boards"` for curator and collection analysis

**Advanced Techniques:**

**Competitive Analysis:**

- Search competitor brand names
- Track their popular pins
- Analyze engagement patterns
- Monitor content strategies

**Trend Forecasting:**

- Search seasonal keywords
- Track emerging visual styles
- Monitor engagement velocity
- Identify rising topics

**Content Strategy:**

- Research high-performing formats
- Analyze description strategies
- Study hashtag usage
- Identify optimal posting patterns

**Product Research:**

- Search product categories
- Analyze pricing trends
- Track product variations
- Monitor seasonal availability

#### Data Analysis Applications

**Visual Trend Analysis:**

- Cluster by dominant colors
- Track design style evolution
- Identify emerging aesthetics
- Monitor seasonal patterns

**Engagement Intelligence:**

- Correlate titles with repin counts
- Analyze description length impact
- Study optimal posting times via created\_at
- Compare organic vs. promoted performance

**E-commerce Insights:**

- Track product pricing strategies
- Monitor product availability
- Analyze shopping pin adoption
- Identify successful product categories

**Creator Research:**

- Identify high-performing creators
- Analyze creator content strategies
- Build influencer databases
- Track creator analytics

**SEO & Content Optimization:**

- Study successful title patterns
- Analyze description keywords
- Track link strategies
- Monitor hashtag effectiveness

### Benefits and Applications

**Primary Applications:**

**Content Marketing Strategy:** Identify high-performing visual content formats, research successful description strategies, analyze engagement patterns, and optimize content for Pinterest SEO.

**Trend Forecasting:** Track emerging visual trends, monitor seasonal patterns, identify rising topics before mainstream adoption, and analyze color and design evolution.

**Competitive Intelligence:** Monitor competitor Pinterest presence, analyze their engagement rates, track content strategies, and identify successful campaigns.

**Product Research:** Discover trending products, analyze pricing strategies, monitor product seasonality, and identify market gaps.

**Influencer Marketing:** Identify relevant creators, analyze creator performance, build influencer databases, and track creator content strategies.

**Visual Content Database:** Build searchable image libraries, create mood boards, organize design inspiration, and maintain visual asset collections.

**E-commerce Optimization:** Research product presentation strategies, analyze shopping pin performance, track pricing trends, and optimize product listings.

**The scraper provides advantages through:**

- Comprehensive metadata beyond visual content
- Engagement metrics for performance analysis
- Product and pricing data for e-commerce
- Creator information for influencer research
- SEO data for optimization strategies
- Advertising indicators for competitive intelligence

Data integrates with analytics platforms, content management systems, CRM tools, and business intelligence dashboards for immediate activation.

### Conclusion

The Pinterest Search Scraper transforms manual visual research into automated intelligence gathering. By extracting detailed pin data including images, engagement metrics, product information, and creator analytics, it enables data-driven decisions about content strategy, product development, and market positioning.

Whether analyzing visual trends, researching competitor strategies, discovering products, or building content databases, this scraper accelerates research and provides insights unavailable through manual collection.

## Your feedback

We are always working to improve Actors' performance. So, if you have any technical feedback about Pinterest Search Scraper or simply found a bug, please create an issue on the Actor's Issues tab in Apify Console.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the Pins list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped after the maximum number of retries is reached.

## `keyword` (type: `string`):

Enter the keyword to search for items

## `type` (type: `string`):

Filter items by Type (Pins, Videos, Boards)

## `max_items_per_url` (type: `integer`):

Limit the number of items per URL or search filters you want to scrape

## `max_retries_per_url` (type: `integer`):

Limit the number of retries for each URL or search filters if the scrape is detected as a bot or the page fails to load

## Actor input object example

```json
{
  "urls": [
    "https://www.pinterest.com/collectsideshow/marvel-collectibles/x-men/"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20,
  "max_retries_per_url": 2
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "urls": [
        "https://www.pinterest.com/collectsideshow/marvel-collectibles/x-men/"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 20,
    "max_retries_per_url": 2
};

// Run the Actor and wait for it to finish
const run = await client.actor("ecomscrape/pinterest-pin-listings-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "urls": ["https://www.pinterest.com/collectsideshow/marvel-collectibles/x-men/"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
    "max_retries_per_url": 2,
}

# Run the Actor and wait for it to finish
run = client.actor("ecomscrape/pinterest-pin-listings-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "urls": [
    "https://www.pinterest.com/collectsideshow/marvel-collectibles/x-men/"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20,
  "max_retries_per_url": 2
}' |
apify call ecomscrape/pinterest-pin-listings-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=ecomscrape/pinterest-pin-listings-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Pinterest Pin Listings Scraper",
        "description": "Search and extract YouTube video metadata at scale using keywords, filters, or channel/playlist URLs. Retrieve titles, view counts, thumbnails, keywords, and more — with full control over upload date, duration, features, and sort order.",
        "version": "0.0",
        "x-build-id": "JgYMgrsLkCQCR3MET"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/ecomscrape~pinterest-pin-listings-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-ecomscrape-pinterest-pin-listings-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/ecomscrape~pinterest-pin-listings-scraper/runs": {
            "post": {
                "operationId": "runs-sync-ecomscrape-pinterest-pin-listings-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/ecomscrape~pinterest-pin-listings-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-ecomscrape-pinterest-pin-listings-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "urls": {
                        "title": "URLs of the Pins list urls to scrape",
                        "type": "array",
                        "description": "Add the URLs of the Pins list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "ignore_url_failures": {
                        "title": "Ignore URL failures",
                        "type": "boolean",
                        "description": "If true, the scraper will continue running even if some URLs fail to be scraped after the maximum number of retries is reached."
                    },
                    "keyword": {
                        "title": "Keyword to search",
                        "type": "string",
                        "description": "Enter the keyword to search for items"
                    },
                    "type": {
                        "title": "Filter Items by Type",
                        "enum": [
                            "pins",
                            "videos",
                            "boards"
                        ],
                        "type": "string",
                        "description": "Filter items by Type (Pins, Videos, Boards)"
                    },
                    "max_items_per_url": {
                        "title": "Limit the number of items per URL or search filters",
                        "type": "integer",
                        "description": "Limit the number of items per URL or search filters you want to scrape"
                    },
                    "max_retries_per_url": {
                        "title": "Limit the number of retries",
                        "type": "integer",
                        "description": "Limit the number of retries for each URL or search filters if the scrape is detected as a bot or the page fails to load"
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
