# Pinterest Scraper: Ideas, Pins & Monitoring (`scrapingmonkey/pinterest-scraper`) Actor

Scrape Pinterest pins, Ideas feeds, topics, profiles, boards, sections, comments and product data. Find creators, filter results, and monitor new pins or engagement changes—no login required.

- **URL**: https://apify.com/scrapingmonkey/pinterest-scraper.md
- **Developed by:** [ScrapingMonkey](https://apify.com/scrapingmonkey) (community)
- **Categories:** E-commerce, Lead generation, Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.25 / 1,000 pinterest pins

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 web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## Pinterest Scraper - Pins, Ideas, Profiles, Boards, Products and Monitoring

Extract public Pinterest search results, the main Ideas feed, Ideas topic pages, pin details, videos, profiles, boards, sections, comments, Tried It responses, product offers, creator leads, and monitored changes into structured datasets ready for analysis or automation.

- Search pins, videos, boards, or profiles with automatic pagination
- Scrape both the main `/ideas/` feed and individual `/ideas/topic/id/` pages
- Mix Pin, profile, board, search, and Ideas URLs in one Auto run
- Collect detailed pin media, creator, engagement, annotation, and shopping metadata
- Extract profile information together with created pins and owned boards
- Crawl board pins, sections, and the pins inside each section
- Collect public comments and Pinterest Tried It responses
- Filter by saves, followers, domain, date, Pin type, price, currency, or merchant verification
- Generate deduplicated creator-lead rows and a run-level analytics summary
- Monitor only new pins or new pins plus engagement and commerce changes
- Process up to 100 search terms, Pin IDs, profiles, boards, Ideas URLs, or mixed start URLs in one run
- Run up to 20 independent inputs and detail enrichments concurrently
- Choose a request language and residential-proxy country without supplying credentials
- Export results to JSON, CSV, Excel, XML, or access them through the Apify API

### What can you do with this Pinterest Scraper?

| Mode | Input | Output | Best for |
| --- | --- | --- | --- |
| `search` | Search terms and `searchType` | Pins, video pins, boards, or profiles | Discovery, content research, market mapping |
| `auto` | Mixed public Pinterest URLs | The correct record type for every recognized URL | Multi-source collection in one scheduled run |
| `ideas` | Main Ideas URL or Ideas topic URLs | Root discovery pins; topic metadata and topic pins | Trend discovery and category research |
| `pinDetails` | Numeric Pin IDs or Pin URLs | Complete pin records; optional comments | Creative, product, media, and engagement analysis |
| `profile` | Usernames, @usernames, or profile URLs | Profile plus optional created pins and boards | Creator and brand research |
| `board` | Public board URLs | Board, pins, sections, and optional section pins | Topic and collection analysis |
| `comments` | Numeric Pin IDs or Pin URLs | Comments and Tried It responses | Audience feedback research |
| `relatedPins` | Numeric Pin IDs or Pin URLs | Pinterest recommendations related to each source pin | Content expansion and similarity research |

Choose one specialized mode or use `auto` to combine supported URL types. Batch inputs run concurrently, while output order remains deterministic. Every content row includes source metadata so results can be traced back to the search term, profile, board, Ideas page, section, or source pin that produced it.

### Quick start

1. Open the Actor and click **Try for free**.
2. Keep `search` selected and enter a keyword such as `modern kitchen`.
3. Choose pins, videos, boards, or profiles and set `maxResults`.
4. Click **Start**.
5. Preview the dataset or download it in your preferred format.

The default input is a small search for public pins and requires no Pinterest account, API key, cookies, or user-supplied proxy configuration.

### Input examples

#### Search pins, videos, boards, or profiles

```json
{
  "mode": "search",
  "searchTerms": ["modern kitchen", "home office ideas"],
  "searchType": "pins",
  "maxResults": 20,
  "country": "US",
  "language": "en",
  "includePinDetails": false
}
```

`maxResults` applies separately to each search term. One row represents one pin, board, or profile returned for that term.

#### Combine mixed Pinterest URLs

```json
{
  "mode": "auto",
  "startUrls": [
    "https://www.pinterest.com/ideas/",
    "https://www.pinterest.com/pinterest/",
    "https://www.pinterest.com/pin/500532946109224497/",
    "https://www.pinterest.com/search/pins/?q=summer%20fashion"
  ],
  "maxResults": 25,
  "maxItems": 100,
  "maxConcurrency": 5,
  "includePinDetails": false
}
```

#### Scrape the main Ideas feed and a topic

```json
{
  "mode": "ideas",
  "ideasUrls": [
    "https://www.pinterest.com/ideas/",
    "https://www.pinterest.com/ideas/beauty/935541271955/"
  ],
  "maxResults": 50,
  "includeTopicMetadata": true,
  "includePinDetails": false,
  "country": "US",
  "language": "en"
}
```

The main Ideas page uses its own cursor-based discovery feed. A topic URL returns one complete `ideaTopic` row when `includeTopicMetadata` is enabled, followed by its paginated pins.

#### Get complete pin details and comments

```json
{
  "mode": "pinDetails",
  "pinIds": ["1020909809261285009", "https://www.pinterest.com/pin/500532946109224497/"],
  "includeComments": true,
  "maxComments": 100,
  "country": "US",
  "language": "en"
}
```

#### Collect profiles, created pins, and boards

```json
{
  "mode": "profile",
  "profiles": ["fitnessmagazine", "https://www.pinterest.com/94nissans/"],
  "maxResults": 50,
  "includePins": true,
  "includeBoards": true,
  "includePinDetails": false,
  "country": "US",
  "language": "en"
}
```

#### Collect a board, its sections, and their pins

```json
{
  "mode": "board",
  "boardUrls": ["https://www.pinterest.com/luizacordery/fits/"],
  "maxResults": 50,
  "includePins": true,
  "includeSections": true,
  "includeSectionPins": true,
  "includePinDetails": false,
  "country": "US",
  "language": "en"
}
```

#### Collect comments and Tried It responses

```json
{
  "mode": "comments",
  "pinIds": ["1020909809261285009"],
  "maxComments": 100,
  "country": "US",
  "language": "en"
}
```

#### Discover related pins

```json
{
  "mode": "relatedPins",
  "pinIds": ["500532946109224497"],
  "maxResults": 100,
  "includePinDetails": true,
  "country": "US",
  "language": "en"
}
```

#### Filter product pins and generate creator leads plus analytics

```json
{
  "mode": "search",
  "searchTerms": ["minimalist furniture"],
  "searchType": "pins",
  "maxResults": 200,
  "maxItems": 100,
  "includePinDetails": true,
  "pinType": "product",
  "minSaves": 10,
  "minPrice": 20,
  "maxPrice": 500,
  "currency": "USD",
  "verifiedMerchantsOnly": false,
  "includeCreatorLeads": true,
  "includeAnalytics": true
}
```

#### Emit only new pins and later engagement changes

```json
{
  "mode": "board",
  "boardUrls": ["https://www.pinterest.com/luizacordery/fits/"],
  "maxResults": 500,
  "includePins": true,
  "monitorMode": "engagementChanges",
  "monitorKey": "fashion-board-daily",
  "maxConcurrency": 5
}
```

The first monitoring run emits every discovered Pin as `monitorStatus: "new"`. Later runs suppress unchanged Pins and emit only new Pins or Pins whose engagement or commerce snapshot changed.

### Complete output examples

Every row has a stable top-level shape for its `recordType`. Source fields that Pinterest does not provide are returned as `null`, `false`, empty objects, or empty arrays; top-level keys are not omitted. Dynamic image-size objects always contain the ten normalized size keys shown below. A failed primary input produces the documented `error` row instead of silently disappearing.

#### Complete `pin` output - 76 top-level fields

```json
{
  "recordType": "pin",
  "pinId": "500532946109224497",
  "nodeId": "UGluOjUwMDUzMjk0NjEwOTIyNDQ5Nw==",
  "url": "https://www.pinterest.com/pin/500532946109224497/",
  "type": "pin",
  "title": "Modern kitchen inspiration",
  "gridTitle": "Kitchen ideas",
  "description": "Warm wood kitchen with product links #kitchen",
  "descriptionHtml": "<p>Warm wood kitchen with product links</p>",
  "altText": "Modern kitchen with wood cabinets",
  "autoAltText": "A kitchen with wooden cabinets and white counters",
  "seoTitle": "Modern kitchen inspiration",
  "seoDescription": "Ideas for a modern wood kitchen",
  "createdAt": "2026-07-28T14:20:00+00:00",
  "domain": "example.com",
  "link": "https://example.com/kitchen",
  "trackedLink": "https://example.com/kitchen?ref=pinterest",
  "utmLink": "https://example.com/kitchen?utm_source=pinterest",
  "dominantColor": "#B8A58F",
  "privacy": "public",
  "method": "uploaded",
  "isVideo": true,
  "isStoryPin": true,
  "isCarousel": true,
  "isProductPin": true,
  "isPromoted": false,
  "isRepin": false,
  "isUploaded": true,
  "isNative": true,
  "isPlayable": true,
  "isOutOfStock": false,
  "isStaleProduct": false,
  "saveCount": 1240,
  "repinCount": 1240,
  "commentCount": 37,
  "shareCount": 18,
  "reactionCount": 12,
  "reactionCounts": {
    "heart": 9,
    "idea": 3
  },
  "image": {
    "url": "https://i.pinimg.com/originals/example.jpg",
    "width": 1000,
    "height": 1500,
    "dominantColor": "#B8A58F"
  },
  "images": {
    "60x60": {"url": "https://i.pinimg.com/60x60/example.jpg", "width": 60, "height": 60, "dominantColor": "#B8A58F"},
    "136x136": {"url": "https://i.pinimg.com/136x136/example.jpg", "width": 136, "height": 136, "dominantColor": "#B8A58F"},
    "170x": {"url": "https://i.pinimg.com/170x/example.jpg", "width": 170, "height": 255, "dominantColor": "#B8A58F"},
    "236x": {"url": "https://i.pinimg.com/236x/example.jpg", "width": 236, "height": 354, "dominantColor": "#B8A58F"},
    "474x": {"url": "https://i.pinimg.com/474x/example.jpg", "width": 474, "height": 711, "dominantColor": "#B8A58F"},
    "564x": {"url": "https://i.pinimg.com/564x/example.jpg", "width": 564, "height": 846, "dominantColor": "#B8A58F"},
    "600x315": {"url": "https://i.pinimg.com/600x315/example.jpg", "width": 600, "height": 315, "dominantColor": "#B8A58F"},
    "736x": {"url": "https://i.pinimg.com/736x/example.jpg", "width": 736, "height": 1104, "dominantColor": "#B8A58F"},
    "1200x": {"url": "https://i.pinimg.com/1200x/example.jpg", "width": 1000, "height": 1500, "dominantColor": "#B8A58F"},
    "orig": {"url": "https://i.pinimg.com/originals/example.jpg", "width": 1000, "height": 1500, "dominantColor": "#B8A58F"}
  },
  "video": {
    "format": "V_720P",
    "url": "https://v.pinimg.com/videos/example.mp4",
    "width": 720,
    "height": 1280,
    "durationMs": 11000,
    "thumbnail": "https://i.pinimg.com/video-thumbnail.jpg",
    "captions": [{"language": "en", "url": "https://v.pinimg.com/captions/en.vtt"}]
  },
  "videos": [{
    "format": "V_720P",
    "url": "https://v.pinimg.com/videos/example.mp4",
    "width": 720,
    "height": 1280,
    "durationMs": 11000,
    "thumbnail": "https://i.pinimg.com/video-thumbnail.jpg",
    "captions": [{"language": "en", "url": "https://v.pinimg.com/captions/en.vtt"}]
  }],
  "story": {
    "id": "story-123",
    "pageCount": 1,
    "pages": [{
      "id": "page-1",
      "type": "story_pin_page",
      "title": "Choose the cabinets",
      "description": "Start with the cabinet finish",
      "image": {"url": "https://i.pinimg.com/story-page.jpg", "width": 720, "height": 1280, "dominantColor": "#B8A58F"},
      "video": {"format": "V_720P", "url": "https://v.pinimg.com/story-page.mp4", "width": 720, "height": 1280, "durationMs": 8000, "thumbnail": "https://i.pinimg.com/story-video.jpg", "captions": [{"language": "en", "url": "https://v.pinimg.com/captions/story-en.vtt"}]}
    }]
  },
  "carousel": {
    "itemCount": 1,
    "items": [{
      "id": "slot-1",
      "title": "Oak cabinet",
      "description": "Natural oak finish",
      "link": "https://example.com/oak-cabinet",
      "image": {"url": "https://i.pinimg.com/carousel.jpg", "width": 736, "height": 1104, "dominantColor": "#B8A58F"},
      "video": {"format": "V_720P", "url": "https://v.pinimg.com/carousel.mp4", "width": 720, "height": 1280, "durationMs": 7000, "thumbnail": "https://i.pinimg.com/carousel-video.jpg", "captions": [{"language": "en", "url": "https://v.pinimg.com/captions/carousel-en.vtt"}]}
    }]
  },
  "pinner": {
    "id": "241224261199462628",
    "nodeId": "VXNlcjoyNDEyMjQyNjExOTk0NjI2Mjg=",
    "username": "fitnessmagazine",
    "fullName": "Fitness Magazine",
    "firstName": "Fitness",
    "followerCount": 190000,
    "avatarUrl": "https://i.pinimg.com/75x75_RS/avatar.jpg",
    "avatarSmallUrl": "https://i.pinimg.com/30x30_RS/avatar.jpg",
    "websiteUrl": "https://www.fitnessmagazine.com/",
    "domainUrl": "fitnessmagazine.com",
    "isVerifiedMerchant": false,
    "isPrimaryWebsiteVerified": true,
    "domainVerified": true,
    "isPartner": false
  },
  "originalCreator": {
    "id": "555",
    "nodeId": "VXNlcjo1NTU=",
    "username": "designstudio",
    "fullName": "Design Studio",
    "firstName": "Design",
    "followerCount": 45000,
    "avatarUrl": "https://i.pinimg.com/75x75_RS/creator.jpg",
    "avatarSmallUrl": "https://i.pinimg.com/30x30_RS/creator.jpg",
    "websiteUrl": "https://example.com/",
    "domainUrl": "example.com",
    "isVerifiedMerchant": true,
    "isPrimaryWebsiteVerified": true,
    "domainVerified": true,
    "isPartner": true
  },
  "board": {
    "id": "500533014775145249",
    "nodeId": "Qm9hcmQ6NTAwNTMzMDE0Nzc1MTQ1MjQ5",
    "name": "Modern kitchens",
    "url": "https://www.pinterest.com/designstudio/modern-kitchens/",
    "description": "Kitchen inspiration",
    "privacy": "public",
    "category": "home_decor",
    "pinCount": 250,
    "followerCount": 3200,
    "sectionCount": 4,
    "isCollaborative": false,
    "collaboratorCount": 0,
    "coverImageUrl": "https://i.pinimg.com/board-cover.jpg",
    "owner": {"id": "555", "nodeId": "VXNlcjo1NTU=", "username": "designstudio", "fullName": "Design Studio", "avatarUrl": "https://i.pinimg.com/75x75_RS/creator.jpg"}
  },
  "price": 6.99,
  "currency": "USD",
  "priceText": "6.99 USD",
  "standardPrice": 9.99,
  "discountPercent": 30.03,
  "availability": "in stock",
  "products": [{
    "id": "product-1",
    "itemId": "sku-123",
    "itemSetId": "set-45",
    "name": "Oak cabinet sample",
    "purchaseUrl": "https://example.com/oak-cabinet",
    "price": 6.99,
    "standardPrice": 9.99,
    "currency": "USD",
    "inStock": true,
    "availability": "in stock",
    "condition": "new",
    "minAdPrice": 6.5,
    "hasMultipleImages": true,
    "additionalImages": [{"url": "https://i.pinimg.com/product-alt.jpg", "width": 800, "height": 800, "dominantColor": "#B8A58F"}],
    "shippingInfo": {"price": 4.99, "currency": "USD", "deliveryText": "Delivery in 3-5 days"},
    "offers": [{"id": "offer-1", "name": "Standard offer", "price": 6.99, "currency": "USD", "standardPrice": 9.99, "minAdPrice": 6.5, "availability": "in stock", "condition": "new", "inStock": true}]
  }],
  "merchant": {
    "id": "merchant-1",
    "username": "designshop",
    "fullName": "Design Shop",
    "followerCount": 87000,
    "isVerifiedMerchant": true,
    "avatarUrl": "https://i.pinimg.com/75x75_RS/merchant.jpg",
    "websiteUrl": "https://example.com/"
  },
  "aggregateRating": {"ratingValue": 4.7, "ratingCount": 215, "reviewCount": 84},
  "annotations": {
    "visual": ["kitchen", "cabinet"],
    "withLinks": [{"name": "Kitchen design", "url": "https://www.pinterest.com/ideas/kitchen-design/"}],
    "manualInterestTags": ["interior design"],
    "visualObjects": [{"label": "cabinet", "score": 0.98, "x": 0.1, "y": 0.2, "width": 0.5, "height": 0.6}]
  },
  "hashtags": ["kitchen"],
  "topics": [{"id": "topic-1", "name": "Kitchen design"}],
  "shoppingFlags": ["product_pin"],
  "detailsEnriched": true,
  "enrichmentError": null,
  "sourceType": "relatedPins",
  "sourceValue": "500532946109224497",
  "sourceUrl": "/pin/500532946109224497/",
  "sourceRank": 1,
  "searchTerm": null,
  "searchType": null,
  "country": "US",
  "language": "en",
  "scrapedAt": "2026-08-08T06:30:00+00:00",
  "monitorStatus": "changed",
  "monitorKey": "fashion-board-daily",
  "previousScrapedAt": "2026-08-07T06:30:00+00:00",
  "changedFields": ["saveCount", "reactionCount"],
  "previousSnapshot": {
    "title": "Modern kitchen inspiration",
    "description": "Warm wood kitchen with product links #kitchen",
    "url": "https://www.pinterest.com/pin/500532946109224497/",
    "link": "https://example.com/kitchen",
    "saveCount": 1201,
    "repinCount": 1201,
    "commentCount": 37,
    "shareCount": 18,
    "reactionCount": 10,
    "price": 6.99,
    "currency": "USD",
    "availability": "in stock",
    "isOutOfStock": false
  }
}
```

#### Complete `board` output - 31 top-level fields

```json
{
  "recordType": "board",
  "boardId": "500533014775145249",
  "nodeId": "Qm9hcmQ6NTAwNTMzMDE0Nzc1MTQ1MjQ5",
  "url": "https://www.pinterest.com/luizacordery/fits/",
  "name": "fits !",
  "description": "Outfit inspiration",
  "privacy": "public",
  "category": "womens_fashion",
  "layout": "default",
  "pinCount": 175,
  "sectionCount": 4,
  "sectionlessPinCount": 47,
  "followerCount": 25800,
  "collaboratorCount": 0,
  "isCollaborative": false,
  "followedByMe": false,
  "collaboratedByMe": false,
  "shouldShowCollaborators": false,
  "allowHomefeedRecommendations": true,
  "owner": {"id": "500533083494204555", "nodeId": "VXNlcjo1MDA1MzMwODM0OTQyMDQ1NTU=", "username": "luizacordery", "fullName": "Luiza Cordery", "avatarUrl": "https://i.pinimg.com/75x75_RS/owner.jpg"},
  "coverImage": {"url": "https://i.pinimg.com/board-cover.jpg", "width": 736, "height": 1104, "dominantColor": "#AEA195"},
  "images": [{"url": "https://i.pinimg.com/board-preview.jpg", "width": 236, "height": 354, "dominantColor": "#AEA195"}],
  "pinThumbnailUrls": ["https://i.pinimg.com/75x75/thumbnail.jpg"],
  "eligiblePinTypeFilters": ["all", "videos", "products"],
  "sourceType": "board",
  "sourceValue": "https://www.pinterest.com/luizacordery/fits/",
  "sourceUrl": "/luizacordery/fits/",
  "sourceRank": 1,
  "country": "US",
  "language": "en",
  "scrapedAt": "2026-08-08T06:30:00+00:00"
}
```

#### Complete `boardSection` output - 20 top-level fields

```json
{
  "recordType": "boardSection",
  "sectionId": "5407676776130327804",
  "nodeId": "Qm9hcmRTZWN0aW9uOjU0MDc2NzY3NzYxMzAzMjc4MDQ=",
  "title": "doll outfit inspo",
  "slug": "doll-outfit-inspo",
  "url": "https://www.pinterest.com/luizacordery/fits/doll-outfit-inspo/",
  "description": "Outfits and accessories",
  "pinCount": 48,
  "boardId": "500533014775145249",
  "boardName": "fits !",
  "boardUrl": "https://www.pinterest.com/luizacordery/fits/",
  "owner": {"id": "500533083494204555", "nodeId": "VXNlcjo1MDA1MzMwODM0OTQyMDQ1NTU=", "username": "luizacordery", "fullName": "Luiza Cordery", "avatarUrl": "https://i.pinimg.com/75x75_RS/owner.jpg"},
  "previewPins": [{"pinId": "500532946109468743", "url": "https://www.pinterest.com/pin/500532946109468743/", "title": "Outfit idea", "image": {"url": "https://i.pinimg.com/236x/outfit.jpg", "width": 236, "height": 419, "dominantColor": "#AEA195"}}],
  "sourceType": "boardSection",
  "sourceValue": "https://www.pinterest.com/luizacordery/fits/",
  "sourceUrl": "/luizacordery/fits/doll-outfit-inspo/",
  "sourceRank": 1,
  "country": "US",
  "language": "en",
  "scrapedAt": "2026-08-08T06:30:00+00:00"
}
```

#### Complete `profile` output - 63 top-level fields

```json
{
  "recordType": "profile",
  "profileId": "241224261199462628",
  "nodeId": "VXNlcjoyNDEyMjQyNjExOTk0NjI2Mjg=",
  "username": "fitnessmagazine",
  "url": "https://www.pinterest.com/fitnessmagazine/",
  "fullName": "Fitness Magazine",
  "firstName": "Fitness",
  "lastName": "Magazine",
  "about": "Workout, wellness, and healthy living ideas",
  "websiteUrl": "https://www.fitnessmagazine.com/",
  "listedWebsiteUrl": "fitnessmagazine.com",
  "domainUrl": "fitnessmagazine.com",
  "imageSmallUrl": "https://i.pinimg.com/30x30_RS/profile.jpg",
  "imageMediumUrl": "https://i.pinimg.com/75x75_RS/profile.jpg",
  "imageLargeUrl": "https://i.pinimg.com/140x140_RS/profile.jpg",
  "imageXLargeUrl": "https://i.pinimg.com/280x280_RS/profile.jpg",
  "profileCoverUrl": "https://i.pinimg.com/profile-cover.jpg",
  "followerCount": 190000,
  "followingCount": 150,
  "explicitFollowingCount": 120,
  "interestFollowingCount": 30,
  "pinCount": 14200,
  "nativePinCount": 3200,
  "videoPinCount": 420,
  "storyPinCount": 85,
  "boardCount": 120,
  "groupBoardCount": 4,
  "pinsDoneCount": 12,
  "profileViews": 2500000,
  "profileReach": 1800000,
  "isVerifiedMerchant": false,
  "isVerifiedIdentity": true,
  "verifiedIdentityName": "fitnessmagazine",
  "isPartner": true,
  "partner": {"nodeId": "UGFydG5lcjoyNDEyMjQyNjExOTk0NjI2Mjg=", "isBoostAPinPartner": false, "enableProfileMessage": false},
  "domainVerified": true,
  "isPrimaryWebsiteVerified": true,
  "isPrivateProfile": false,
  "isAdsOnlyProfile": false,
  "isDefaultImage": false,
  "isInspirationalMerchant": false,
  "isTastemaker": true,
  "isBusinessAccount": true,
  "hasCatalog": false,
  "hasShoppingShowcase": false,
  "hasShowcase": true,
  "hasPublishedPins": true,
  "indexed": true,
  "instagramUsername": "fitnessmagazine",
  "instagramUrl": "https://www.instagram.com/fitnessmagazine/",
  "createdAt": "2012-05-10T12:00:00+00:00",
  "lastPinSaveTime": "2026-08-07T18:22:00+00:00",
  "seoTitle": "Fitness Magazine on Pinterest",
  "seoDescription": "Workout and wellness inspiration",
  "seoNoindexReason": null,
  "recentPinImages": [{"url": "https://i.pinimg.com/222x/recent.jpg", "width": 222, "height": 333, "dominantColor": "#A0815F"}],
  "sourceType": "profile",
  "sourceValue": "fitnessmagazine",
  "sourceUrl": "/fitnessmagazine/",
  "sourceRank": 1,
  "country": "US",
  "language": "en",
  "scrapedAt": "2026-08-08T06:30:00+00:00"
}
```

#### Complete `comment` output - 29 top-level fields

```json
{
  "recordType": "comment",
  "commentId": "comment-123",
  "nodeId": "Q29tbWVudDoxMjM=",
  "pinId": "1020909809261285009",
  "pinUrl": "https://www.pinterest.com/pin/1020909809261285009/",
  "aggregatedPinId": "5277747762016869223",
  "type": "aggregatedcomment",
  "text": "This layout worked well in my kitchen.",
  "createdAt": "2026-08-01T11:30:00+00:00",
  "helpfulCount": 14,
  "likeCount": 8,
  "commentCount": 2,
  "reactionCount": 5,
  "reactionCounts": {"heart": 4, "idea": 1},
  "highlightedByPinOwner": true,
  "isEdited": false,
  "isTranslatable": true,
  "markedHelpfulByMe": false,
  "likedByMe": false,
  "media": {
    "type": "video",
    "image": {"url": "https://i.pinimg.com/comment-image.jpg", "width": 720, "height": 960, "dominantColor": "#C4B6A4"},
    "video": {"format": "V_720P", "url": "https://v.pinimg.com/comment-video.mp4", "width": 720, "height": 1280, "durationMs": 9000, "thumbnail": "https://i.pinimg.com/comment-video.jpg", "captions": [{"language": "en", "url": "https://v.pinimg.com/captions/comment-en.vtt"}]}
  },
  "images": [{"url": "https://i.pinimg.com/comment-extra.jpg", "width": 720, "height": 960, "dominantColor": "#C4B6A4"}],
  "videos": [{"format": "V_720P", "url": "https://v.pinimg.com/comment-extra.mp4", "width": 720, "height": 1280, "durationMs": 9000, "thumbnail": "https://i.pinimg.com/comment-extra-video.jpg", "captions": [{"language": "en", "url": "https://v.pinimg.com/captions/comment-extra-en.vtt"}]}],
  "tags": ["helpful"],
  "taggedUsers": [{"id": "555", "nodeId": "VXNlcjo1NTU=", "username": "designstudio", "fullName": "Design Studio", "firstName": "Design", "followerCount": 45000, "avatarUrl": "https://i.pinimg.com/75x75_RS/creator.jpg", "avatarSmallUrl": "https://i.pinimg.com/30x30_RS/creator.jpg", "websiteUrl": "https://example.com/", "domainUrl": "example.com", "isVerifiedMerchant": true, "isPrimaryWebsiteVerified": true, "domainVerified": true, "isPartner": true}],
  "user": {"id": "777", "nodeId": "VXNlcjo3Nzc=", "username": "homecreator", "fullName": "Home Creator", "firstName": "Home", "followerCount": 1200, "avatarUrl": "https://i.pinimg.com/75x75_RS/commenter.jpg", "avatarSmallUrl": "https://i.pinimg.com/30x30_RS/commenter.jpg", "websiteUrl": "https://home.example/", "domainUrl": "home.example", "isVerifiedMerchant": false, "isPrimaryWebsiteVerified": false, "domainVerified": false, "isPartner": false},
  "sourceRank": 1,
  "country": "US",
  "language": "en",
  "scrapedAt": "2026-08-08T06:30:00+00:00"
}
```

#### Complete `triedIt` output - 25 top-level fields

```json
{
  "recordType": "triedIt",
  "triedItId": "didit-456",
  "nodeId": "VXNlckRpZEl0RGF0YTo0NTY=",
  "pinId": "1020909809261285009",
  "pinUrl": "https://www.pinterest.com/pin/1020909809261285009/",
  "aggregatedPinId": "5277747762016869223",
  "type": "userdiditdata",
  "details": "I tried this with darker cabinets and recommend it.",
  "doneAt": "2026-07-20T09:15:00+00:00",
  "textTags": ["recommended"],
  "helpfulCount": 22,
  "likeCount": 11,
  "commentCount": 3,
  "likedByMe": false,
  "markedHelpfulByMe": false,
  "images": [{"url": "https://i.pinimg.com/tried-it.jpg", "width": 720, "height": 960, "dominantColor": "#6F6257"}],
  "videos": [{"format": "V_720P", "url": "https://v.pinimg.com/tried-it.mp4", "width": 720, "height": 1280, "durationMs": 12000, "thumbnail": "https://i.pinimg.com/tried-it-video.jpg", "captions": [{"language": "en", "url": "https://v.pinimg.com/captions/tried-it-en.vtt"}]}],
  "imageSignatures": ["35c65aaa5238fbfa72540eb46090c656"],
  "tags": ["kitchen", "renovation"],
  "taggedUsers": [{"id": "555", "nodeId": "VXNlcjo1NTU=", "username": "designstudio", "fullName": "Design Studio", "firstName": "Design", "followerCount": 45000, "avatarUrl": "https://i.pinimg.com/75x75_RS/creator.jpg", "avatarSmallUrl": "https://i.pinimg.com/30x30_RS/creator.jpg", "websiteUrl": "https://example.com/", "domainUrl": "example.com", "isVerifiedMerchant": true, "isPrimaryWebsiteVerified": true, "domainVerified": true, "isPartner": true}],
  "user": {"id": "888", "nodeId": "VXNlcjo4ODg=", "username": "renovator", "fullName": "Weekend Renovator", "firstName": "Weekend", "followerCount": 680, "avatarUrl": "https://i.pinimg.com/75x75_RS/renovator.jpg", "avatarSmallUrl": "https://i.pinimg.com/30x30_RS/renovator.jpg", "websiteUrl": null, "domainUrl": null, "isVerifiedMerchant": false, "isPrimaryWebsiteVerified": false, "domainVerified": false, "isPartner": false},
  "sourceRank": 2,
  "country": "US",
  "language": "en",
  "scrapedAt": "2026-08-08T06:30:00+00:00"
}
```

#### Complete `ideaTopic` output - 38 top-level fields

```json
{
  "recordType": "ideaTopic",
  "topicId": "935541271955",
  "nodeId": null,
  "url": "https://www.pinterest.com/ideas/beauty/935541271955/",
  "slug": "beauty",
  "key": "beauty",
  "canonicalTerm": "Beauty",
  "name": "Beauty",
  "title": "Beauty ideas and inspiration",
  "description": "Discover beauty ideas, looks, products, and inspiration.",
  "image": {
    "url": "https://i.pinimg.com/ideas/beauty.jpg",
    "width": 736,
    "height": 1104,
    "dominantColor": "#D9B7AE"
  },
  "imageSize": {"width": 736, "height": 1104},
  "imageSignature": "6dd7441e84b61ec140dd2b645727ea55",
  "imageSource": {"url": "https://i.pinimg.com/ideas/beauty.jpg", "width": 736, "height": 1104},
  "backgroundColor": "#D9B7AE",
  "followerCount": 2385000,
  "searchCount": 18200000,
  "isIdeasHub": true,
  "isInterest": true,
  "isKlpTerm": true,
  "relatedBoards": [{"id": "board-1", "name": "Beauty inspiration"}],
  "relatedInterests": [{"id": "interest-1", "name": "Makeup"}],
  "relatedQuestions": ["What beauty looks are trending?"],
  "trendingSearches": ["natural makeup", "summer nails"],
  "pivots": [{"title": "Hair", "url": "/ideas/hair/935541270803/"}],
  "seoBreadcrumbs": [{"name": "Ideas", "url": "/ideas/"}, {"name": "Beauty", "url": "/ideas/beauty/935541271955/"}],
  "holidays": {"name": "Summer", "date": "2026-06-21"},
  "articles": [{"title": "Beauty ideas", "url": "https://www.pinterest.com/ideas/beauty/935541271955/"}],
  "feedUpdatedAt": "2026-08-08T04:00:00+00:00",
  "topicUpdatedAt": "2026-08-07T22:10:00+00:00",
  "pageMetadata": {"title": "Beauty ideas", "description": "Beauty inspiration on Pinterest"},
  "sourceType": "ideaTopic",
  "sourceValue": "https://www.pinterest.com/ideas/beauty/935541271955/",
  "sourceUrl": "/ideas/beauty/935541271955/",
  "sourceRank": 1,
  "country": "US",
  "language": "en",
  "scrapedAt": "2026-08-08T06:30:00+00:00"
}
```

#### Complete `creatorLead` output - 25 top-level fields

```json
{
  "recordType": "creatorLead",
  "leadId": "241224261199462628",
  "username": "fitnessmagazine",
  "url": "https://www.pinterest.com/fitnessmagazine/",
  "fullName": "Fitness Magazine",
  "followerCount": 190000,
  "websiteUrl": "https://www.fitnessmagazine.com/",
  "domainUrl": "fitnessmagazine.com",
  "instagramUsername": "fitnessmagazine",
  "instagramUrl": "https://www.instagram.com/fitnessmagazine/",
  "avatarUrl": "https://i.pinimg.com/75x75_RS/avatar.jpg",
  "isVerifiedMerchant": false,
  "isPrimaryWebsiteVerified": true,
  "domainVerified": true,
  "isPartner": false,
  "isBusinessAccount": true,
  "hasCatalog": true,
  "hasShoppingShowcase": true,
  "leadScore": 70,
  "sourceType": "profile",
  "sourceValue": "fitnessmagazine",
  "sourceUrl": "/fitnessmagazine/",
  "country": "US",
  "language": "en",
  "scrapedAt": "2026-08-08T06:30:00+00:00"
}
```

#### Complete `analytics` output - 24 top-level fields

```json
{
  "recordType": "analytics",
  "totalPins": 95,
  "totalBoards": 4,
  "totalBoardSections": 6,
  "totalProfiles": 2,
  "totalComments": 18,
  "totalTriedIt": 3,
  "totalIdeaTopics": 1,
  "totalCreatorLeads": 12,
  "productPins": 31,
  "videoPins": 22,
  "storyPins": 8,
  "totalSaves": 84230,
  "totalReactions": 1380,
  "averageSaves": 886.6316,
  "priceStats": {"count": 31, "minimum": 5.99, "maximum": 499.0, "average": 84.4513},
  "currencyCounts": {"USD": 27, "EUR": 4},
  "topDomains": [{"domain": "etsy.com", "count": 19}, {"domain": "example.com", "count": 12}],
  "topHashtags": [{"hashtag": "homedecor", "count": 17}, {"hashtag": "diy", "count": 11}],
  "topCreators": [{"username": "designstudio", "count": 14}, {"username": "fitnessmagazine", "count": 8}],
  "sourceTypeCounts": {"search": 40, "ideas": 25, "profilePins": 20, "creatorLead": 12},
  "country": "US",
  "language": "en",
  "scrapedAt": "2026-08-08T06:30:00+00:00"
}
```

#### Complete `error` output - 12 top-level fields

```json
{
  "recordType": "error",
  "mode": "pinDetails",
  "input": "999999999999999999",
  "inputType": "pinId",
  "url": "https://www.pinterest.com/pin/999999999999999999/",
  "errorType": "not_found",
  "errorMessage": "Pinterest pin 999999999999999999 was not found",
  "httpStatus": 404,
  "country": "US",
  "language": "en",
  "retryable": false,
  "scrapedAt": "2026-08-08T06:30:00+00:00"
}
```

### What data can you extract?

| Record | Complete field inventory |
| --- | --- |
| Pin identity and content | `recordType`, `pinId`, `nodeId`, `url`, `type`, `title`, `gridTitle`, `description`, `descriptionHtml`, `altText`, `autoAltText`, `seoTitle`, `seoDescription`, `createdAt`, `domain`, `link`, `trackedLink`, `utmLink`, `dominantColor`, `privacy`, `method` |
| Pin flags and engagement | `isVideo`, `isStoryPin`, `isCarousel`, `isProductPin`, `isPromoted`, `isRepin`, `isUploaded`, `isNative`, `isPlayable`, `isOutOfStock`, `isStaleProduct`, `saveCount`, `repinCount`, `commentCount`, `shareCount`, `reactionCount`, `reactionCounts` |
| Pin media, people, and commerce | `image`, `images`, `video`, `videos`, `story`, `carousel`, `pinner`, `originalCreator`, `board`, `price`, `currency`, `priceText`, `standardPrice`, `discountPercent`, `availability`, `products`, `merchant`, `aggregateRating`, `annotations`, `hashtags`, `topics`, `shoppingFlags`, `detailsEnriched`, `enrichmentError` |
| Shared source traceability and monitoring | `sourceType`, `sourceValue`, `sourceUrl`, `sourceRank`, `searchTerm`, `searchType`, `country`, `language`, `scrapedAt`, `monitorStatus`, `monitorKey`, `previousScrapedAt`, `changedFields`, `previousSnapshot` |
| Board | `recordType`, `boardId`, `nodeId`, `url`, `name`, `description`, `privacy`, `category`, `layout`, `pinCount`, `sectionCount`, `sectionlessPinCount`, `followerCount`, `collaboratorCount`, `isCollaborative`, `followedByMe`, `collaboratedByMe`, `shouldShowCollaborators`, `allowHomefeedRecommendations`, `owner`, `coverImage`, `images`, `pinThumbnailUrls`, `eligiblePinTypeFilters`, `sourceType`, `sourceValue`, `sourceUrl`, `sourceRank`, `country`, `language`, `scrapedAt` |
| Board section | `recordType`, `sectionId`, `nodeId`, `title`, `slug`, `url`, `description`, `pinCount`, `boardId`, `boardName`, `boardUrl`, `owner`, `previewPins`, `sourceType`, `sourceValue`, `sourceUrl`, `sourceRank`, `country`, `language`, `scrapedAt` |
| Profile | `recordType`, `profileId`, `nodeId`, `username`, `url`, `fullName`, `firstName`, `lastName`, `about`, `websiteUrl`, `listedWebsiteUrl`, `domainUrl`, `imageSmallUrl`, `imageMediumUrl`, `imageLargeUrl`, `imageXLargeUrl`, `profileCoverUrl`, `followerCount`, `followingCount`, `explicitFollowingCount`, `interestFollowingCount`, `pinCount`, `nativePinCount`, `videoPinCount`, `storyPinCount`, `boardCount`, `groupBoardCount`, `pinsDoneCount`, `profileViews`, `profileReach`, `isVerifiedMerchant`, `isVerifiedIdentity`, `verifiedIdentityName`, `isPartner`, `partner`, `domainVerified`, `isPrimaryWebsiteVerified`, `isPrivateProfile`, `isAdsOnlyProfile`, `isDefaultImage`, `isInspirationalMerchant`, `isTastemaker`, `isBusinessAccount`, `hasCatalog`, `hasShoppingShowcase`, `hasShowcase`, `hasPublishedPins`, `indexed`, `instagramUsername`, `instagramUrl`, `createdAt`, `lastPinSaveTime`, `seoTitle`, `seoDescription`, `seoNoindexReason`, `recentPinImages`, `sourceType`, `sourceValue`, `sourceUrl`, `sourceRank`, `country`, `language`, `scrapedAt` |
| Comment | `recordType`, `commentId`, `nodeId`, `pinId`, `pinUrl`, `aggregatedPinId`, `type`, `text`, `createdAt`, `helpfulCount`, `likeCount`, `commentCount`, `reactionCount`, `reactionCounts`, `highlightedByPinOwner`, `isEdited`, `isTranslatable`, `markedHelpfulByMe`, `likedByMe`, `media`, `images`, `videos`, `tags`, `taggedUsers`, `user`, `sourceRank`, `country`, `language`, `scrapedAt` |
| Tried It response | `recordType`, `triedItId`, `nodeId`, `pinId`, `pinUrl`, `aggregatedPinId`, `type`, `details`, `doneAt`, `textTags`, `helpfulCount`, `likeCount`, `commentCount`, `likedByMe`, `markedHelpfulByMe`, `images`, `videos`, `imageSignatures`, `tags`, `taggedUsers`, `user`, `sourceRank`, `country`, `language`, `scrapedAt` |
| Ideas topic | `recordType`, `topicId`, `nodeId`, `url`, `slug`, `key`, `canonicalTerm`, `name`, `title`, `description`, `image`, `imageSize`, `imageSignature`, `imageSource`, `backgroundColor`, `followerCount`, `searchCount`, `isIdeasHub`, `isInterest`, `isKlpTerm`, `relatedBoards`, `relatedInterests`, `relatedQuestions`, `trendingSearches`, `pivots`, `seoBreadcrumbs`, `holidays`, `articles`, `feedUpdatedAt`, `topicUpdatedAt`, `pageMetadata`, `sourceType`, `sourceValue`, `sourceUrl`, `sourceRank`, `country`, `language`, `scrapedAt` |
| Creator lead | `recordType`, `leadId`, `username`, `url`, `fullName`, `followerCount`, `websiteUrl`, `domainUrl`, `instagramUsername`, `instagramUrl`, `avatarUrl`, `isVerifiedMerchant`, `isPrimaryWebsiteVerified`, `domainVerified`, `isPartner`, `isBusinessAccount`, `hasCatalog`, `hasShoppingShowcase`, `leadScore`, `sourceType`, `sourceValue`, `sourceUrl`, `country`, `language`, `scrapedAt` |
| Analytics summary | `recordType`, `totalPins`, `totalBoards`, `totalBoardSections`, `totalProfiles`, `totalComments`, `totalTriedIt`, `totalIdeaTopics`, `totalCreatorLeads`, `productPins`, `videoPins`, `storyPins`, `totalSaves`, `totalReactions`, `averageSaves`, `priceStats`, `currencyCounts`, `topDomains`, `topHashtags`, `topCreators`, `sourceTypeCounts`, `country`, `language`, `scrapedAt` |
| Error | `recordType`, `mode`, `input`, `inputType`, `url`, `errorType`, `errorMessage`, `httpStatus`, `country`, `language`, `retryable`, `scrapedAt` |

### Input parameters

| Parameter | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `mode` | string | Yes | `search` | `search`, `auto`, `ideas`, `pinDetails`, `profile`, `board`, `comments`, or `relatedPins` |
| `searchTerms` | string\[] | In search mode | `['modern kitchen']` | Up to 100 keywords or phrases, processed separately |
| `searchType` | string | No | `pins` | `pins`, `videos`, `boards`, or `profiles` |
| `startUrls` | string\[] | In auto mode | Two example URLs | Up to 100 mixed Pin, profile, board, search, main Ideas, or Ideas topic URLs |
| `ideasUrls` | string\[] | In ideas mode | `['https://www.pinterest.com/ideas/']` | Up to 100 main Ideas or `/ideas/topic-slug/numeric-id/` URLs |
| `pinIds` | string\[] | In pinDetails/comments/relatedPins | `['1020909809261285009']` | Up to 100 numeric Pin IDs or public Pin URLs |
| `profiles` | string\[] | In profile mode | `['pinterest']` | Up to 100 usernames, @usernames, or profile URLs |
| `boardUrls` | string\[] | In board mode | One example URL | Up to 100 public board URLs in `/username/board-slug/` format |
| `maxResults` | integer | No | `50` | 1-5,000 results per search term, profile feed, board feed, section, source pin, or Ideas feed |
| `maxItems` | integer | No | `0` | Global filtered primary-record limit across all inputs; `0` means unlimited; derived lead and analytics rows are additional |
| `maxConcurrency` | integer | No | `5` | 1-20 independent inputs and pin-detail enrichments processed concurrently |
| `country` | string | No | `US` | ISO 3166-1 alpha-2 country used by the managed residential proxy |
| `language` | string | No | `en` | Language or locale such as `en`, `de`, `pt-BR`, or `zh-CN` |
| `includePinDetails` | boolean | No | `false` | Enrich feed pins with detailed media, commerce, creator, and annotation data |
| `includeComments` | boolean | No | `false` | Also return comments in `pinDetails` mode |
| `maxComments` | integer | No | `100` | 1-5,000 comment and Tried It rows per pin |
| `includePins` | boolean | No | `true` | Include created profile pins or sectionless board pins |
| `includeBoards` | boolean | No | `true` | Include boards owned by each requested profile |
| `includeSections` | boolean | No | `true` | Include detailed section records for requested boards |
| `includeSectionPins` | boolean | No | `false` | Paginate pins inside every board section |
| `includeTopicMetadata` | boolean | No | `true` | Add a complete `ideaTopic` row for every Ideas topic URL |
| `includeCreatorLeads` | boolean | No | `false` | Add deduplicated public creator-lead rows with a 0-100 lead score |
| `includeAnalytics` | boolean | No | `false` | Add one complete analytics row for the emitted dataset |
| `deduplicate` | boolean | No | `true` | Keep one row per entity across overlapping inputs |
| `minSaves` | number | No | - | Minimum Pin saves |
| `minFollowers` | number | No | - | Minimum creator, profile, lead, or board followers |
| `domainFilter` | string | No | - | Comma-separated allowed destination domains; matching includes subdomains |
| `createdAfter` | ISO date/time | No | - | Keep Pins created on or after this value |
| `createdBefore` | ISO date/time | No | - | Keep Pins created on or before this value |
| `pinType` | string | No | `all` | `all`, `image`, `video`, `product`, or `story` |
| `minPrice` | number | No | - | Minimum parsed Pin product price |
| `maxPrice` | number | No | - | Maximum parsed Pin product price |
| `currency` | string | No | - | Required product currency code, such as `USD` |
| `verifiedMerchantsOnly` | boolean | No | `false` | Keep only Pins and creator records tied to verified merchants |
| `monitorMode` | string | No | `off` | `off`, `newPins`, or `engagementChanges` |
| `monitorKey` | string | When monitoring | `pinterest-monitor` | Stable state identity shared by recurring runs of the same monitor |

### Use cases

#### Creative and content research

Search a topic, collect the main Ideas discovery feed or a specific Ideas category, compare descriptions and media formats, and use related-pin mode to expand from promising examples into adjacent visual themes.

#### Product and merchant intelligence

Enable detail enrichment to collect product offers, price, currency, stock state, merchant identity, destination links, ratings, shopping flags, and image or video assets from public product pins.

#### Creator and brand analysis

Collect profile identity, verification flags, follower and content counts, recent images, created pins, and owned boards for repeatable comparisons across public accounts. Enable `includeCreatorLeads` for a deduplicated prospect table with public website, Instagram, verification, audience, and lead-score fields.

#### Audience feedback research

Collect comments, reactions, attached media, helpful counts, and Tried It responses to understand how people respond to a public Pin or idea.

#### Scheduled monitoring

Set `monitorMode` and a stable `monitorKey`, then use Apify schedules to rerun the same input. The first run emits known Pins; later runs can emit only newly discovered Pins or new Pins plus engagement and commerce changes. Webhooks can send the compact change dataset into a database, Google Sheets, Make, Zapier, n8n, Airbyte, Slack, or a data warehouse.

### Performance and cost

This Actor is prepared for pay per event. The current prices are shown on the Actor's **Pricing** tab; measured runtime figures depend on selected feeds, enrichment options, Pinterest response times, and Apify proxy usage.

| Event | What one event represents |
| --- | --- |
| `pin-result` | One non-enriched Pin from search, Ideas, profile, board, section, or related Pins |
| `pin-detail` | One Pin returned from Pin details or successfully enriched with detailed data |
| `profile-result` | One public profile record |
| `board-result` | One board or board-section record |
| `comment-result` | One public Comment or Tried It response |
| `idea-topic` | One complete Ideas topic metadata record |
| `creator-lead` | One deduplicated creator-lead record |
| `analytics-summary` | One run-level analytics summary row |

Explicit `error` rows are stored without a custom paid event. `includePinDetails`, `includeComments`, `includeSectionPins`, creator leads, analytics, large batches, and high limits can add requests or chargeable output. `maxConcurrency` controls 1-20 independent inputs and detail enrichments; pagination remains bounded and stops at Pinterest's terminal cursor.

### API usage

The public Actor owner is not assigned yet. Replace `YOUR_USERNAME` after publication:

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/YOUR_USERNAME~pinterest-scraper/runs?token=APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "mode": "search",
    "searchTerms": ["modern kitchen"],
    "searchType": "pins",
    "maxResults": 10,
    "country": "US",
    "language": "en"
  }'
```

The default dataset can be consumed through the Apify API or connected to Google Sheets, Make, Zapier, n8n, Airbyte, webhooks, cloud storage, or a data warehouse.

### Best for / not for

**Best for:** public Pinterest discovery, creative research, creator and brand analysis, product-pin monitoring, collection analysis, public audience feedback, and scheduled exports.

**Not for:** private boards or profiles, authenticated home feeds, Pinterest Trends, account actions, publishing pins, direct binary media downloads, or real-time event streaming.

### Limits and good to know

- Choose one specialized mode, or use `auto` to mix recognized public Pinterest URL types in one run. Up to 100 primary inputs are accepted.
- `maxResults` is per term or requested feed, `maxComments` is per Pin, and `maxItems` is the global filtered primary-row limit across all inputs.
- Pinterest controls which public records, localized text, metrics, cursors, media variants, comments, and product fields are available.
- `/ideas/` and `/ideas/topic/id/` are separate feed implementations: the first returns discovery Pins, while a topic can also return an `ideaTopic` metadata row.
- The Actor never embeds dump cookies or account credentials. For the protected main Ideas stream it may establish a fresh anonymous web session and echo that session's short-lived anti-forgery token; it does not access private content.
- All Pinterest traffic uses Apify Residential Proxy automatically. There is no direct-traffic fallback and no proxy input to configure.
- A sticky proxy session is used for each logical input. Retryable failures use exponential backoff and rotate the session before retrying.
- Pin enrichment failures preserve the original feed row and populate `enrichmentError`.
- All 219 declared Dataset fields are exposed in the single **Results** view. A failed primary input creates an `error` row in that same view; other batch inputs continue. The run fails when every operation ends in a non-terminal infrastructure, network, API, or parsing failure.
- Empty source feeds return zero content rows. Missing source values are represented with stable `null`, `false`, empty-object, or empty-array values.

### Frequently asked questions

#### What input should I provide?

Use search keywords in `search`, numeric IDs or `/pin/ID/` URLs for pin-based modes, usernames or profile URLs for `profile`, public `/username/board-slug/` URLs for `board`, `/ideas/` or `/ideas/topic/id/` URLs for `ideas`, or combine all supported URL types in `auto`.

#### How many results can I extract?

The Actor accepts 1-5,000 for `maxResults` and `maxComments`, plus a global `maxItems` of 0-100,000 primary records. The actual number can be lower when filters remove rows or Pinterest ends pagination, returns fewer matches, removes content, or does not expose a feed publicly.

#### Why are some fields empty?

Pinterest record types differ. A normal image Pin has no video or shopping offer, some profiles do not publish websites, and some metrics are not exposed to unauthenticated visitors. The Actor keeps the documented top-level shape and uses empty normalized values.

#### Can I process multiple inputs?

Yes. Supply up to 100 entries in a mode-specific array, or use `auto` for mixed URLs. `maxResults` applies independently to each source and `maxItems` caps the filtered primary output across the complete run.

#### Can I schedule recurring runs?

Yes. Use Apify schedules for recurring jobs and webhooks to notify another system when a run completes.

#### Do I need a Pinterest account, API key, cookies, or proxy?

No Pinterest account, API key, or authentication cookie is required. The Actor creates and uses Apify Residential Proxy internally; users do not provide a proxy field.

### Responsible use

This Actor extracts publicly available Pinterest information. Users are responsible for complying with applicable laws, privacy regulations, contractual obligations, and Pinterest's terms. Avoid collecting personal data without a lawful purpose.

Pinterest is a trademark of Pinterest, Inc. This Actor is an independent product and is not affiliated with, endorsed by, or sponsored by Pinterest.

### Support

If you encounter a problem, create an issue in the Actor's **Issues** tab. Include the run ID, the relevant non-sensitive input, the mode used, and what you expected to receive. Do not post account credentials, tokens, or private data.

### Local development

```bash
pip install -r requirements.txt
python -m unittest discover -s tests -v
python -m my_actor
```

# Actor input Schema

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

Choose one source type or Auto for a mixed URL list.

## `searchTerms` (type: `array`):

Keywords or phrases for Search mode. Every term is paginated independently.

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

Return pins, video pins, boards, or public profiles.

## `startUrls` (type: `array`):

For Auto mode: mix Pin, profile, board, search, /ideas/, and /ideas/topic/id/ URLs in one run.

## `ideasUrls` (type: `array`):

The main https://www.pinterest.com/ideas/ feed or topic URLs such as /ideas/beauty/935541271955/.

## `pinIds` (type: `array`):

Numeric Pin IDs or pinterest.com/pin/ID/ URLs for Pin details, Comments, and Related pins modes.

## `profiles` (type: `array`):

Pinterest usernames, @usernames, or public profile URLs.

## `boardUrls` (type: `array`):

Public Pinterest board URLs in /username/board-slug/ format.

## `maxResults` (type: `integer`):

Maximum feed rows per search term, profile, board, section, source pin, Ideas feed, or Ideas topic.

## `maxItems` (type: `integer`):

Stop after this many filtered primary records across all inputs. Use 0 for unlimited. Optional creator-lead and analytics rows are additional.

## `maxConcurrency` (type: `integer`):

Number of independent inputs and pin-detail enrichments processed in parallel. Lower this if a target is unusually sensitive.

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

Two-letter country for the mandatory Apify Residential Proxy, such as US, DE, or PH.

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

Pinterest request language or locale, such as en, de, pt-BR, or zh-CN.

## `includePinDetails` (type: `boolean`):

Fetch every feed pin's detail resource for richer commerce, media, creator, and metadata fields.

## `includeComments` (type: `boolean`):

In Pin details and Auto Pin processing, also return public comments and Tried It responses.

## `maxComments` (type: `integer`):

Maximum Comment and Tried It rows per pin.

## `includePins` (type: `boolean`):

Include created pins in Profile mode and sectionless board pins in Board mode.

## `includeBoards` (type: `boolean`):

Include boards owned by requested profiles.

## `includeSections` (type: `boolean`):

Return detailed section records for requested boards.

## `includeSectionPins` (type: `boolean`):

Also paginate pins inside every section of each requested board.

## `includeTopicMetadata` (type: `boolean`):

For topic URLs, add one complete ideaTopic record before the topic pins.

## `includeCreatorLeads` (type: `boolean`):

Add deduplicated creatorLead rows with public profile, website, verification, follower, Instagram, and lead-score fields.

## `includeAnalytics` (type: `boolean`):

Add one analytics row with counts, saves, prices, currencies, domains, hashtags, creators, and source breakdowns.

## `deduplicate` (type: `boolean`):

Keep one record per Pinterest entity even when the same entity appears in multiple inputs.

## `minSaves` (type: `number`):

Keep pins with at least this many saves. Leave empty to disable.

## `minFollowers` (type: `number`):

Keep pins, profiles, boards, and creator leads meeting this follower threshold.

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

Comma-separated destination domains, for example etsy.com,example.com. Subdomains are included.

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

Keep pins created on or after this ISO date or timestamp.

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

Keep pins created on or before this ISO date or timestamp.

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

Keep all pins or only image, video, product, or story pins.

## `minPrice` (type: `number`):

Keep pins with a parsed price at or above this value.

## `maxPrice` (type: `number`):

Keep pins with a parsed price at or below this value.

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

Keep prices in one currency code, such as USD or EUR.

## `verifiedMerchantsOnly` (type: `boolean`):

Keep pins and creator records connected to verified merchants.

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

Emit every matching row, only newly discovered pins, or new pins plus engagement/commerce changes.

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

Stable name that identifies this monitor across scheduled Actor runs.

## Actor input object example

```json
{
  "mode": "search",
  "searchTerms": [
    "modern kitchen"
  ],
  "searchType": "pins",
  "startUrls": [
    "https://www.pinterest.com/ideas/",
    "https://www.pinterest.com/pinterest/"
  ],
  "ideasUrls": [
    "https://www.pinterest.com/ideas/"
  ],
  "pinIds": [
    "1020909809261285009"
  ],
  "profiles": [
    "pinterest"
  ],
  "boardUrls": [
    "https://www.pinterest.com/pinterest/official-news/"
  ],
  "maxResults": 50,
  "maxItems": 0,
  "maxConcurrency": 5,
  "country": "US",
  "language": "en",
  "includePinDetails": false,
  "includeComments": false,
  "maxComments": 100,
  "includePins": true,
  "includeBoards": true,
  "includeSections": true,
  "includeSectionPins": false,
  "includeTopicMetadata": true,
  "includeCreatorLeads": false,
  "includeAnalytics": false,
  "deduplicate": true,
  "pinType": "all",
  "verifiedMerchantsOnly": false,
  "monitorMode": "off",
  "monitorKey": "pinterest-monitor"
}
```

# Actor output Schema

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

Complete normalized Pinterest pins, boards, sections, profiles, comments, Tried It responses, Ideas topics, creator leads, analytics, monitored changes, and explicit error rows.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapingmonkey/pinterest-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 = {}

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

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

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

```

## CLI example

```bash
echo '{}' |
apify call scrapingmonkey/pinterest-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapingmonkey/pinterest-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/yu9o8JlME6LZ4u78H/builds/o9hTMqc6H6FAH2ikd/openapi.json
