{
  "data": {
    "id": "6EBR67S9mHDk9t96v",
    "actId": "HhVE3zC5rfGcXFgpl",
    "userId": "NL4ThgItAwaoBlffQ",
    "startedAt": "2026-11-05T16:15:28.480Z",
    "finishedAt": "2026-11-05T16:16:06.374Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 37728,
      "runTimeSecs": 37.728,
      "computeUnits": 0.04192,
      "imageSizeBytes": 3156145152
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "zifX0mkAFMHe8CatY",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"Pinterest Data Extractor Input\",\n  \"description\": \"Collect public Pinterest Pins, profiles, boards, board sections, comments, idea feeds and search results. Every field is optional; choose a mode or let Auto-detect route your links.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"mode\": {\n      \"title\": \"What to collect\",\n      \"type\": \"string\",\n      \"description\": \"Choose a collection type. Auto-detect accepts mixed public Pinterest Pin, profile, board, board-section, search and idea links.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"auto\",\n        \"pinDetail\",\n        \"comments\",\n        \"searchPins\",\n        \"searchVideos\",\n        \"searchUsers\",\n        \"searchBoards\",\n        \"userProfile\",\n        \"userPins\",\n        \"userBoards\",\n        \"boardDetail\",\n        \"boardPins\",\n        \"boardSections\",\n        \"ideas\"\n      ],\n      \"enumTitles\": [\n        \"Auto-detect links\",\n        \"Pin details\",\n        \"Comments for Pins\",\n        \"Search Pins\",\n        \"Search video Pins\",\n        \"Search people\",\n        \"Search boards\",\n        \"Profile details\",\n        \"Pins created by a person\",\n        \"Boards owned by a person\",\n        \"Board details\",\n        \"Pins inside a board or section\",\n        \"Sections inside a board\",\n        \"Idea topic Pins (list only)\"\n      ],\n      \"default\": \"auto\",\n      \"prefill\": \"pinDetail\"\n    },\n    \"keywords\": {\n      \"title\": \"Search words\",\n      \"type\": \"array\",\n      \"description\": \"One or more words or phrases for the search modes.\",\n      \"editor\": \"stringList\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"pinUrls\": {\n      \"title\": \"Pin URLs or IDs\",\n      \"type\": \"array\",\n      \"description\": \"Public Pin links, numeric Pin IDs, or opaque feed IDs. Opaque IDs are kept as list rows without a detail page.\",\n      \"editor\": \"stringList\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"default\": [],\n      \"prefill\": [\n        \"142567144448888376\"\n      ]\n    },\n    \"usernames\": {\n      \"title\": \"Pinterest usernames\",\n      \"type\": \"array\",\n      \"description\": \"Usernames, @usernames, or public profile links.\",\n      \"editor\": \"stringList\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"boardUrls\": {\n      \"title\": \"Board or section URLs\",\n      \"type\": \"array\",\n      \"description\": \"Public board links or username/board paths. A three-part board-section link is routed to that section's Pins.\",\n      \"editor\": \"stringList\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"ideaUrls\": {\n      \"title\": \"Idea topic URLs\",\n      \"type\": \"array\",\n      \"description\": \"Public idea-topic links such as /ideas/beauty/935541271955/. Pinterest exposes a list-only feed capped at about 17 Pins.\",\n      \"editor\": \"stringList\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"startUrls\": {\n      \"title\": \"Mixed Pinterest URLs\",\n      \"type\": \"array\",\n      \"description\": \"Pin, profile, board, board-section, search and idea links for Auto-detect.\",\n      \"editor\": \"stringList\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"maxItems\": {\n      \"title\": \"Maximum records\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum number of emitted records, including comment and section rows. Set to 0 for no user cap.\",\n      \"default\": 50,\n      \"prefill\": 1,\n      \"minimum\": 0,\n      \"maximum\": 20000\n    },\n    \"maxPages\": {\n      \"title\": \"Maximum pages\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum feed pages per search, profile, or board. 0 follows Pinterest's cursors until the source ends.\",\n      \"default\": 0,\n      \"prefill\": 0,\n      \"minimum\": 0,\n      \"maximum\": 2000\n    },\n    \"minSaves\": {\n      \"title\": \"Minimum saves\",\n      \"type\": \"integer\",\n      \"description\": \"0 means no minimum. For a positive value, keep only Pins where Pinterest supplies a numeric save count at or above it.\",\n      \"default\": 0,\n      \"prefill\": 0,\n      \"minimum\": 0,\n      \"maximum\": 10000000\n    },\n    \"minCreatorFollowers\": {\n      \"title\": \"Minimum creator followers\",\n      \"type\": \"integer\",\n      \"description\": \"0 means no minimum. Keep Pins only when Pinterest supplies a creator follower count at or above this value.\",\n      \"default\": 0,\n      \"prefill\": 0,\n      \"minimum\": 0,\n      \"maximum\": 1000000000\n    },\n    \"verifiedOnly\": {\n      \"title\": \"Verified accounts only\",\n      \"type\": \"boolean\",\n      \"description\": \"Keep only rows that Pinterest explicitly marks as verified.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"requireOutboundLink\": {\n      \"title\": \"Require destination link\",\n      \"type\": \"boolean\",\n      \"description\": \"Keep only Pins with a public destination link supplied by Pinterest.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"imageOnly\": {\n      \"title\": \"Images only\",\n      \"type\": \"boolean\",\n      \"description\": \"Exclude Pins that Pinterest identifies as video.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"excludeAds\": {\n      \"title\": \"Exclude promoted Pins\",\n      \"type\": \"boolean\",\n      \"description\": \"Exclude Pins that Pinterest marks as promoted or sponsored.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"commerceOnly\": {\n      \"title\": \"Shoppable Pins only\",\n      \"type\": \"boolean\",\n      \"description\": \"Keep only Pins with source-backed product, price, or shopping metadata.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"includeComments\": {\n      \"title\": \"Include Pin comments\",\n      \"type\": \"boolean\",\n      \"description\": \"Add one real public comment row per collected numeric Pin. Comment rows count toward Maximum records.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"maxComments\": {\n      \"title\": \"Maximum comments per Pin\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum public comment rows to add per Pin when comments are enabled.\",\n      \"minimum\": 1,\n      \"maximum\": 20000,\n      \"default\": 10,\n      \"prefill\": 10\n    },\n    \"enrichDetails\": {\n      \"title\": \"Enrich Pin details\",\n      \"type\": \"boolean\",\n      \"description\": \"Check each collection Pin's public detail page for more accurate creator, engagement, link, and media fields. Slower and uses more requests.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"resolveNumericIds\": {\n      \"title\": \"Recover numeric creator Pin IDs\",\n      \"type\": \"boolean\",\n      \"description\": \"When a creator feed contains only opaque IDs, read the creator's public RSS feed to recover openable numeric Pin IDs.\",\n      \"default\": true,\n      \"prefill\": false\n    },\n    \"proxyConfiguration\": {\n      \"title\": \"Optional proxy configuration\",\n      \"type\": \"object\",\n      \"description\": \"Leave empty for direct-first collection with the actor's automatic fallback. A supplied proxy is used only after a direct empty or blocked response.\",\n      \"editor\": \"proxy\"\n    }\n  },\n  \"required\": []\n}",
    "readme": "# Pinterest Pins, Profiles, Boards and Ideas Collector\n\nPinterest exposes a lot of structured public data beyond what a page shows at first glance: media variants, creator and board context, engagement counts, product metadata and provenance. This actor collects that data from Pins, profiles, boards, board sections, comments, idea topics and search results in one dataset, without a Pinterest login or user-supplied credentials.\n\n## What this actor does\n\n- **Fourteen collection modes:** Auto-detect, Pin detail, comments, Pin search, video search, people search, board search, profile detail, a creator's Pins, a creator's boards, board detail, board Pins (including board sections), board sections, and idea-topic Pins.\n- **Direct-first transport:** public profile, board, Pin and comment resources are called directly. Search tries the same direct path first, then falls back through the free automatic proxy pool when Pinterest returns an empty success envelope.\n- **Cursor pagination:** follows Pinterest's bookmarks for searches, creator feeds, board feeds and comments, with repeated-cursor and duplicate guards.\n- **Opaque-ID honesty:** some feeds return encrypted `e1_...` Pin IDs. Those rows are kept as list records with `idIsEncrypted: true`, `detailAvailable: false` and no invented Pin URL.\n- **Source-backed filters:** saves, creator followers, verification, destination link, image-only, promoted Pins and shoppable Pins. A filter drops a row only when Pinterest supplies the value it needs.\n- **Truthful counting:** every emitted record, including comments and board sections, counts toward `maxItems`. Missing values are omitted; explicit zeroes and `false` values are preserved.\n- **Provenance:** every row says where it came from (`sourceType`, `sourceValue`, `position`), plus the search query, seed and numeric-ID recovery source when those apply.\n\n## Output per record\n\nEvery row carries `record_type`/`recordType` (`pin`, `profile`, `board`, `boardSection` or `comment`), `source_url`/`sourceUrl`, `scraped_at`/`scrapedAt`, `sourceType`, `sourceValue` and `position`. Search rows also carry `query`; every row carries `seed`. Rows recovered from a creator feed carry `numericIdSource`.\n\n### Pin fields\n\nPin rows can include `id`/`pinId`, `idIsEncrypted`, `detailAvailable`, `commentsAvailable`, `url`/`pinUrl` (numeric Pins only), `title`, `description`, `altText`, `created_at`/`createdAt`, `dominant_color`, `link`/`linkUrl`, `linkDomain`, `domain`, `contentCategory`, `canonicalUrl`, `canonicalPinId`, `canonicalPinUrl`, `images`, `imageUrl`, `imageVariants`, `imageWidth`, `imageHeight`, `video_url`/`videoUrl`, `videoVariants`, `videoDurationMs`, `videoDurationSec`, `videoThumbnailUrl`, `is_video`/`isVideo`, `mediaType`, `pinFormat`, `storyPinId`, `storyPages`, `mediaMethod`, `seoTitle`, `seoDescription`, `seoUrl`, `mobileLinkUrl`, `trackedLinkUrl`, `utmLinkUrl`, `creator`, `creatorId`, `creatorUsername`, `creatorName`, `creatorUrl`, `creatorFollowerCount`, `originalCreator`, `originalCreatorUrl`, `board`, `boardId`, `boardName`, `boardUrl`, `boardOwnerUsername`, `boardCoverImageUrl`, `boardPinCount`, `boardFollowerCount`, `boardSectionCount`, `boardCollaboratorCount`, `boardPrivacy`, `boardCreatedAt`, `saves`/`save_count`, `commentCount`/`comment_count`, `repinCount`, `shareCount`, `reactionCounts`/`reaction_counts`, `reactionCount`, `likeCount`/`like_count`, `isPromoted`, `commentsDisabled`, `commentsEligible`, `isEligibleForImageDownload`, `isEligibleForProduct`, `isOutOfStock`, `isStaleProduct`, `isUnsafeForComments`, `isDownstreamPromotion`, `shouldMute`, `richMetadata`, `product`, `productPrice`/`priceValue`, `productCurrency`/`priceCurrency`, `productMerchant`, `productAvailability`, `isShoppable`, `shoppingFlags`, `hashtags`, `sourceType`, `ideaId`, `ideaSlug` and `sourceIdeaUrl`.\n\n`imageVariants` and `videoVariants` keep Pinterest's own size names. Each entry can carry `url`, `width`, `height`, `duration` and `thumbnailUrl`. The primary `imageUrl` uses the stable `736x` variant when Pinterest supplies it. Story Pin pages can carry `pageId`, `layout` and blocks with `type`, `text`, `images` and `videos`.\n\n### Profile, board and section fields\n\nProfile rows include `type`, `id`/`profileId`, `username`, `full_name`/`fullName`, `bio`, `location`, `createdAt`, `follower_count`/`followerCount`, `following_count`/`followingCount`, `pin_count`/`pinCount`, `board_count`/`boardCount`, `monthlyViews`, `avatarUrls`, `avatarUrl`, `image_url`, `website_url`/`websiteUrl`, `domainUrl`, `profile_url`/`profileUrl`, `isPrivate`, `isPartner`, `isVerifiedMerchant`, `isDomainVerified`, `isTastemaker`, `isAdsOnlyProfile`, `isAdsOnly` and `isVerified`.\n\nBoard rows include `type`, `id`/`boardId`, `name`/`boardName`, `description`, `url`/`boardUrl`, `pin_count`/`pinCount`, `follower_count`/`followerCount`, `sectionCount`, `collaboratorCount`, `privacy`, `coverImageUrl`, `owner_username`/`ownerUsername`, `isCollaborative` and `followedByMe`.\n\nBoard-section rows use `record_type: boardSection` and include `id`/`sectionId`, `title`/`sectionTitle`, `slug`/`sectionSlug`, `pin_count`/`sectionPinCount`, `url`/`sectionUrl`, plus the parent board's `boardId`, `boardName` and `boardUrl`.\n\n### Comment fields\n\nComment rows include `id`, `text`, `created_at`, `type`, `node_id`, `like_count`, `reaction_counts`, `reaction_by_me`, `helpful_count`, `marked_helpful_by_me`, `reply_count`, `is_edited`, `is_highlighted_by_pin_owner`, `is_translatable`, `tags`, `tagged_users`, `media`, `author_name`, `author_username`, `author_id`, `author_first_name`, `author_image`, `author_image_medium`, `author_node_id`, `author_is_private_profile`, `pin_id` and `pin_url`.\n\nMissing fields are omitted. A published `0` or `false` stays in the row; an absent field means Pinterest did not publish it to the anonymous response.\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | choice | `auto` | One of fourteen modes: `auto`, `pinDetail`, `comments`, `searchPins`, `searchVideos`, `searchUsers`, `searchBoards`, `userProfile`, `userPins`, `userBoards`, `boardDetail`, `boardPins`, `boardSections`, `ideas`. |\n| `keywords` | array of text | — | Search phrases for the three search modes. |\n| `pinUrls` | array | — | Pin links, numeric IDs, or opaque feed IDs. |\n| `usernames` | array | — | Usernames, `@usernames`, or profile links. |\n| `boardUrls` | array | — | Board links, `username/board` paths, or three-part board-section links. |\n| `ideaUrls` | array | — | Idea-topic links such as `/ideas/beauty/935541271955/`. |\n| `startUrls` | array | — | Mixed Pinterest links for `auto`. |\n| `maxItems` | integer | `50` | Maximum emitted records, including comments and sections; `0` means no user cap. |\n| `maxPages` | integer | `0` | Maximum feed pages; `0` follows Pinterest's cursors to the end. |\n| `minSaves` | integer | `0` | Keep Pins meeting this published save count; `0` disables the filter. |\n| `minCreatorFollowers` | integer | `0` | Keep Pins whose creator meets this published follower count; `0` disables it. |\n| `verifiedOnly` | boolean | `false` | Keep only explicitly verified profiles or creators. |\n| `requireOutboundLink` | boolean | `false` | Keep only Pins with a Pinterest-published destination link. |\n| `imageOnly` | boolean | `false` | Exclude Pins with Pinterest video data. |\n| `excludeAds` | boolean | `false` | Exclude Pins explicitly marked promoted or sponsored. |\n| `commerceOnly` | boolean | `false` | Keep only Pins with product, price or shopping evidence. |\n| `includeComments` | boolean | `false` | Add public comment rows for collected numeric Pins. |\n| `maxComments` | integer | `10` | Maximum public comment rows per Pin. |\n| `enrichDetails` | boolean | `false` | Fetch each collection Pin's detail response for more accurate fields. |\n| `resolveNumericIds` | boolean | `true` | Recover openable numeric IDs from a creator's public RSS feed when the feed is all-opaque. |\n| `proxyConfiguration` | object | — | Optional proxy override. Leave empty for direct-first collection with automatic fallback. |\n\nOlder saved tasks keep working: `searchTerms`, `search`, `pinterestUrls`, `profiles`, `boards`, `endPage`, `proxy` and `enrichPinDetails` are still read by the actor, but they are not shown as separate form fields. `cookies` and `cookiesJson` are ignored with a one-time log because every mode is anonymous.\n\n### Example: search Pins\n\n```json\n{\n  \"mode\": \"searchPins\",\n  \"keywords\": [\"small kitchen ideas\", \"neutral bedroom\"],\n  \"maxItems\": 200\n}\n```\n\n### Example: profile and creator Pins\n\n```json\n{\n  \"mode\": \"userPins\",\n  \"usernames\": [\"nasa\", \"crazylaurablog\"],\n  \"maxItems\": 25\n}\n```\n\n### Example: board sections and section Pins\n\n```json\n{\n  \"mode\": \"boardSections\",\n  \"boardUrls\": [\"https://www.pinterest.com/krity_s/home-decor/\"]\n}\n```\n\nUse `boardPins` with `https://www.pinterest.com/krity_s/home-decor/ideas/` to collect the Pins inside that section.\n\n### Example: mixed links and idea topics\n\n```json\n{\n  \"mode\": \"auto\",\n  \"startUrls\": [\n    \"https://www.pinterest.com/pin/142567144448888376/\",\n    \"https://www.pinterest.com/nasa/\",\n    \"https://www.pinterest.com/nasa/ceres/\",\n    \"https://www.pinterest.com/ideas/beauty/935541271955/\"\n  ],\n  \"includeComments\": true,\n  \"maxComments\": 20\n}\n```\n\n## Use cases\n\n- Keyword and video research with rich Pin cards, media variants and destination links.\n- Creator and board directories with published follower, Pin and section counts.\n- Full board or board-section exports for content audits and mood-board analysis.\n- Public comment and engagement collection for moderation or market research.\n- Idea-topic discovery for trend and category research.\n- Recurring jobs that need stable provenance and no login.\n\n## Limitations and hard limits\n\n- **Opaque Pin IDs:** search and board feeds can return encrypted IDs that do not open. Those rows keep every list field but no `url`; detail and comment collection requires a numeric ID.\n- **Search engagement:** Pinterest usually omits save and comment counts from search cards, so those fields are absent there. Detail mode fills them for numeric Pins.\n- **Board depth and detail:** a board's public feed may end before `maxItems` because Pinterest caps what it exposes. The feed can also return lightweight list rows (ID, image and media only) for some boards, so title, creator and engagement fields may be absent there. In-feed story modules such as \"Related Interests\" are not Pins and are never emitted as Pin rows.\n- **Idea topics:** the idea page exposes a list-only feed capped at roughly 17 Pins and has no pagination.\n- **Related Pins:** the related-Pin feed returns zero rows from anonymous datacenter traffic, so it is not a shipped mode.\n- **Comment replies:** replies are not advertised as a mode; only the public top-level comment feed is collected.\n\n## FAQ\n\n### Do I need Pinterest cookies or an API key?\n\nNo. Every mode works anonymously. Cookies supplied by an older saved task are ignored, and no private data is accessed.\n\n### Why is a field missing from one row?\n\nPinterest does not publish every field for every Pin, account, board or media type. Missing values are omitted instead of guessed; a published `0` or `false` is kept.\n\n### Why does a search return records without save or comment counts?\n\nSearch cards generally omit engagement counts. Use `pinDetail` or `enrichDetails` for numeric Pins when those fields matter.\n\n### What happens when a Pin has an encrypted ID?\n\nThe row is emitted as a list record with its title, description, media, creator and board where Pinterest supplies them. It has `idIsEncrypted: true`, `detailAvailable: false`, `commentsAvailable: false` and no Pin URL.\n\n### Can I collect a board section directly?\n\nYes. Paste a three-part section link into `boardUrls` with `boardPins`, or let `auto` route it. Use `boardSections` when you want the section list itself.\n\n### Are comments included in the item limit?\n\nYes. Comment and board-section rows count toward `maxItems` exactly like Pin, profile and board rows.\n\n### Why did a run return no records?\n\nThe actor fails with a clear status message instead of reporting a silent success. The `RUN_SUMMARY` in the key-value store lists raw rows, accepted rows, rejected rows and the rejection reason, such as an unsupported URL, an opaque detail request, a private page or a filter that removed every row.\n\n### Does the actor use a proxy?\n\nPublic traffic is tried directly first. When a request is blocked or returns an empty success envelope, the actor automatically falls back to a free proxy pool. You do not need to configure a proxy, though an optional override is available.\n\n### Is this affiliated with Pinterest?\n\nNo. This is an independent tool that reads public Pinterest pages and is not affiliated with or endorsed by Pinterest.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "pinterest-pins-profiles-and-boards-collector",
      "title": "Pinterest Pins, Profiles, Boards and Ideas Collector",
      "description": "Collect public Pinterest Pins, profiles, boards, board sections, comments, idea feeds and search results by keyword or URL. Get media variants, creator and board context, shopping fields and provenance without login.",
      "version": "1.1",
      "readme": "# Pinterest Pins, Profiles, Boards and Ideas Collector\n\nPinterest exposes a lot of structured public data beyond what a page shows at first glance: media variants, creator and board context, engagement counts, product metadata and provenance. This actor collects that data from Pins, profiles, boards, board sections, comments, idea topics and search results in one dataset, without a Pinterest login or user-supplied credentials.\n\n## What this actor does\n\n- **Fourteen collection modes:** Auto-detect, Pin detail, comments, Pin search, video search, people search, board search, profile detail, a creator's Pins, a creator's boards, board detail, board Pins (including board sections), board sections, and idea-topic Pins.\n- **Direct-first transport:** public profile, board, Pin and comment resources are called directly. Search tries the same direct path first, then falls back through the free automatic proxy pool when Pinterest returns an empty success envelope.\n- **Cursor pagination:** follows Pinterest's bookmarks for searches, creator feeds, board feeds and comments, with repeated-cursor and duplicate guards.\n- **Opaque-ID honesty:** some feeds return encrypted `e1_...` Pin IDs. Those rows are kept as list records with `idIsEncrypted: true`, `detailAvailable: false` and no invented Pin URL.\n- **Source-backed filters:** saves, creator followers, verification, destination link, image-only, promoted Pins and shoppable Pins. A filter drops a row only when Pinterest supplies the value it needs.\n- **Truthful counting:** every emitted record, including comments and board sections, counts toward `maxItems`. Missing values are omitted; explicit zeroes and `false` values are preserved.\n- **Provenance:** every row says where it came from (`sourceType`, `sourceValue`, `position`), plus the search query, seed and numeric-ID recovery source when those apply.\n\n## Output per record\n\nEvery row carries `record_type`/`recordType` (`pin`, `profile`, `board`, `boardSection` or `comment`), `source_url`/`sourceUrl`, `scraped_at`/`scrapedAt`, `sourceType`, `sourceValue` and `position`. Search rows also carry `query`; every row carries `seed`. Rows recovered from a creator feed carry `numericIdSource`.\n\n### Pin fields\n\nPin rows can include `id`/`pinId`, `idIsEncrypted`, `detailAvailable`, `commentsAvailable`, `url`/`pinUrl` (numeric Pins only), `title`, `description`, `altText`, `created_at`/`createdAt`, `dominant_color`, `link`/`linkUrl`, `linkDomain`, `domain`, `contentCategory`, `canonicalUrl`, `canonicalPinId`, `canonicalPinUrl`, `images`, `imageUrl`, `imageVariants`, `imageWidth`, `imageHeight`, `video_url`/`videoUrl`, `videoVariants`, `videoDurationMs`, `videoDurationSec`, `videoThumbnailUrl`, `is_video`/`isVideo`, `mediaType`, `pinFormat`, `storyPinId`, `storyPages`, `mediaMethod`, `seoTitle`, `seoDescription`, `seoUrl`, `mobileLinkUrl`, `trackedLinkUrl`, `utmLinkUrl`, `creator`, `creatorId`, `creatorUsername`, `creatorName`, `creatorUrl`, `creatorFollowerCount`, `originalCreator`, `originalCreatorUrl`, `board`, `boardId`, `boardName`, `boardUrl`, `boardOwnerUsername`, `boardCoverImageUrl`, `boardPinCount`, `boardFollowerCount`, `boardSectionCount`, `boardCollaboratorCount`, `boardPrivacy`, `boardCreatedAt`, `saves`/`save_count`, `commentCount`/`comment_count`, `repinCount`, `shareCount`, `reactionCounts`/`reaction_counts`, `reactionCount`, `likeCount`/`like_count`, `isPromoted`, `commentsDisabled`, `commentsEligible`, `isEligibleForImageDownload`, `isEligibleForProduct`, `isOutOfStock`, `isStaleProduct`, `isUnsafeForComments`, `isDownstreamPromotion`, `shouldMute`, `richMetadata`, `product`, `productPrice`/`priceValue`, `productCurrency`/`priceCurrency`, `productMerchant`, `productAvailability`, `isShoppable`, `shoppingFlags`, `hashtags`, `sourceType`, `ideaId`, `ideaSlug` and `sourceIdeaUrl`.\n\n`imageVariants` and `videoVariants` keep Pinterest's own size names. Each entry can carry `url`, `width`, `height`, `duration` and `thumbnailUrl`. The primary `imageUrl` uses the stable `736x` variant when Pinterest supplies it. Story Pin pages can carry `pageId`, `layout` and blocks with `type`, `text`, `images` and `videos`.\n\n### Profile, board and section fields\n\nProfile rows include `type`, `id`/`profileId`, `username`, `full_name`/`fullName`, `bio`, `location`, `createdAt`, `follower_count`/`followerCount`, `following_count`/`followingCount`, `pin_count`/`pinCount`, `board_count`/`boardCount`, `monthlyViews`, `avatarUrls`, `avatarUrl`, `image_url`, `website_url`/`websiteUrl`, `domainUrl`, `profile_url`/`profileUrl`, `isPrivate`, `isPartner`, `isVerifiedMerchant`, `isDomainVerified`, `isTastemaker`, `isAdsOnlyProfile`, `isAdsOnly` and `isVerified`.\n\nBoard rows include `type`, `id`/`boardId`, `name`/`boardName`, `description`, `url`/`boardUrl`, `pin_count`/`pinCount`, `follower_count`/`followerCount`, `sectionCount`, `collaboratorCount`, `privacy`, `coverImageUrl`, `owner_username`/`ownerUsername`, `isCollaborative` and `followedByMe`.\n\nBoard-section rows use `record_type: boardSection` and include `id`/`sectionId`, `title`/`sectionTitle`, `slug`/`sectionSlug`, `pin_count`/`sectionPinCount`, `url`/`sectionUrl`, plus the parent board's `boardId`, `boardName` and `boardUrl`.\n\n### Comment fields\n\nComment rows include `id`, `text`, `created_at`, `type`, `node_id`, `like_count`, `reaction_counts`, `reaction_by_me`, `helpful_count`, `marked_helpful_by_me`, `reply_count`, `is_edited`, `is_highlighted_by_pin_owner`, `is_translatable`, `tags`, `tagged_users`, `media`, `author_name`, `author_username`, `author_id`, `author_first_name`, `author_image`, `author_image_medium`, `author_node_id`, `author_is_private_profile`, `pin_id` and `pin_url`.\n\nMissing fields are omitted. A published `0` or `false` stays in the row; an absent field means Pinterest did not publish it to the anonymous response.\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | choice | `auto` | One of fourteen modes: `auto`, `pinDetail`, `comments`, `searchPins`, `searchVideos`, `searchUsers`, `searchBoards`, `userProfile`, `userPins`, `userBoards`, `boardDetail`, `boardPins`, `boardSections`, `ideas`. |\n| `keywords` | array of text | — | Search phrases for the three search modes. |\n| `pinUrls` | array | — | Pin links, numeric IDs, or opaque feed IDs. |\n| `usernames` | array | — | Usernames, `@usernames`, or profile links. |\n| `boardUrls` | array | — | Board links, `username/board` paths, or three-part board-section links. |\n| `ideaUrls` | array | — | Idea-topic links such as `/ideas/beauty/935541271955/`. |\n| `startUrls` | array | — | Mixed Pinterest links for `auto`. |\n| `maxItems` | integer | `50` | Maximum emitted records, including comments and sections; `0` means no user cap. |\n| `maxPages` | integer | `0` | Maximum feed pages; `0` follows Pinterest's cursors to the end. |\n| `minSaves` | integer | `0` | Keep Pins meeting this published save count; `0` disables the filter. |\n| `minCreatorFollowers` | integer | `0` | Keep Pins whose creator meets this published follower count; `0` disables it. |\n| `verifiedOnly` | boolean | `false` | Keep only explicitly verified profiles or creators. |\n| `requireOutboundLink` | boolean | `false` | Keep only Pins with a Pinterest-published destination link. |\n| `imageOnly` | boolean | `false` | Exclude Pins with Pinterest video data. |\n| `excludeAds` | boolean | `false` | Exclude Pins explicitly marked promoted or sponsored. |\n| `commerceOnly` | boolean | `false` | Keep only Pins with product, price or shopping evidence. |\n| `includeComments` | boolean | `false` | Add public comment rows for collected numeric Pins. |\n| `maxComments` | integer | `10` | Maximum public comment rows per Pin. |\n| `enrichDetails` | boolean | `false` | Fetch each collection Pin's detail response for more accurate fields. |\n| `resolveNumericIds` | boolean | `true` | Recover openable numeric IDs from a creator's public RSS feed when the feed is all-opaque. |\n| `proxyConfiguration` | object | — | Optional proxy override. Leave empty for direct-first collection with automatic fallback. |\n\nOlder saved tasks keep working: `searchTerms`, `search`, `pinterestUrls`, `profiles`, `boards`, `endPage`, `proxy` and `enrichPinDetails` are still read by the actor, but they are not shown as separate form fields. `cookies` and `cookiesJson` are ignored with a one-time log because every mode is anonymous.\n\n### Example: search Pins\n\n```json\n{\n  \"mode\": \"searchPins\",\n  \"keywords\": [\"small kitchen ideas\", \"neutral bedroom\"],\n  \"maxItems\": 200\n}\n```\n\n### Example: profile and creator Pins\n\n```json\n{\n  \"mode\": \"userPins\",\n  \"usernames\": [\"nasa\", \"crazylaurablog\"],\n  \"maxItems\": 25\n}\n```\n\n### Example: board sections and section Pins\n\n```json\n{\n  \"mode\": \"boardSections\",\n  \"boardUrls\": [\"https://www.pinterest.com/krity_s/home-decor/\"]\n}\n```\n\nUse `boardPins` with `https://www.pinterest.com/krity_s/home-decor/ideas/` to collect the Pins inside that section.\n\n### Example: mixed links and idea topics\n\n```json\n{\n  \"mode\": \"auto\",\n  \"startUrls\": [\n    \"https://www.pinterest.com/pin/142567144448888376/\",\n    \"https://www.pinterest.com/nasa/\",\n    \"https://www.pinterest.com/nasa/ceres/\",\n    \"https://www.pinterest.com/ideas/beauty/935541271955/\"\n  ],\n  \"includeComments\": true,\n  \"maxComments\": 20\n}\n```\n\n## Use cases\n\n- Keyword and video research with rich Pin cards, media variants and destination links.\n- Creator and board directories with published follower, Pin and section counts.\n- Full board or board-section exports for content audits and mood-board analysis.\n- Public comment and engagement collection for moderation or market research.\n- Idea-topic discovery for trend and category research.\n- Recurring jobs that need stable provenance and no login.\n\n## Limitations and hard limits\n\n- **Opaque Pin IDs:** search and board feeds can return encrypted IDs that do not open. Those rows keep every list field but no `url`; detail and comment collection requires a numeric ID.\n- **Search engagement:** Pinterest usually omits save and comment counts from search cards, so those fields are absent there. Detail mode fills them for numeric Pins.\n- **Board depth and detail:** a board's public feed may end before `maxItems` because Pinterest caps what it exposes. The feed can also return lightweight list rows (ID, image and media only) for some boards, so title, creator and engagement fields may be absent there. In-feed story modules such as \"Related Interests\" are not Pins and are never emitted as Pin rows.\n- **Idea topics:** the idea page exposes a list-only feed capped at roughly 17 Pins and has no pagination.\n- **Related Pins:** the related-Pin feed returns zero rows from anonymous datacenter traffic, so it is not a shipped mode.\n- **Comment replies:** replies are not advertised as a mode; only the public top-level comment feed is collected.\n\n## FAQ\n\n### Do I need Pinterest cookies or an API key?\n\nNo. Every mode works anonymously. Cookies supplied by an older saved task are ignored, and no private data is accessed.\n\n### Why is a field missing from one row?\n\nPinterest does not publish every field for every Pin, account, board or media type. Missing values are omitted instead of guessed; a published `0` or `false` is kept.\n\n### Why does a search return records without save or comment counts?\n\nSearch cards generally omit engagement counts. Use `pinDetail` or `enrichDetails` for numeric Pins when those fields matter.\n\n### What happens when a Pin has an encrypted ID?\n\nThe row is emitted as a list record with its title, description, media, creator and board where Pinterest supplies them. It has `idIsEncrypted: true`, `detailAvailable: false`, `commentsAvailable: false` and no Pin URL.\n\n### Can I collect a board section directly?\n\nYes. Paste a three-part section link into `boardUrls` with `boardPins`, or let `auto` route it. Use `boardSections` when you want the section list itself.\n\n### Are comments included in the item limit?\n\nYes. Comment and board-section rows count toward `maxItems` exactly like Pin, profile and board rows.\n\n### Why did a run return no records?\n\nThe actor fails with a clear status message instead of reporting a silent success. The `RUN_SUMMARY` in the key-value store lists raw rows, accepted rows, rejected rows and the rejection reason, such as an unsupported URL, an opaque detail request, a private page or a filter that removed every row.\n\n### Does the actor use a proxy?\n\nPublic traffic is tried directly first. When a request is blocked or returns an empty success envelope, the actor automatically falls back to a free proxy pool. You do not need to configure a proxy, though an optional override is available.\n\n### Is this affiliated with Pinterest?\n\nNo. This is an independent tool that reads public Pinterest pages and is not affiliated with or endorsed by Pinterest.\n",
      "dockerfile": "../Dockerfile",
      "input": {
        "title": "Pinterest Data Extractor Input",
        "description": "Collect public Pinterest Pins, profiles, boards, board sections, comments, idea feeds and search results. Every field is optional; choose a mode or let Auto-detect route your links.",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "mode": {
            "title": "What to collect",
            "type": "string",
            "description": "Choose a collection type. Auto-detect accepts mixed public Pinterest Pin, profile, board, board-section, search and idea links.",
            "editor": "select",
            "enum": [
              "auto",
              "pinDetail",
              "comments",
              "searchPins",
              "searchVideos",
              "searchUsers",
              "searchBoards",
              "userProfile",
              "userPins",
              "userBoards",
              "boardDetail",
              "boardPins",
              "boardSections",
              "ideas"
            ],
            "enumTitles": [
              "Auto-detect links",
              "Pin details",
              "Comments for Pins",
              "Search Pins",
              "Search video Pins",
              "Search people",
              "Search boards",
              "Profile details",
              "Pins created by a person",
              "Boards owned by a person",
              "Board details",
              "Pins inside a board or section",
              "Sections inside a board",
              "Idea topic Pins (list only)"
            ],
            "default": "auto",
            "prefill": "pinDetail"
          },
          "keywords": {
            "title": "Search words",
            "type": "array",
            "description": "One or more words or phrases for the search modes.",
            "editor": "stringList",
            "items": {
              "type": "string"
            },
            "default": [],
            "prefill": []
          },
          "pinUrls": {
            "title": "Pin URLs or IDs",
            "type": "array",
            "description": "Public Pin links, numeric Pin IDs, or opaque feed IDs. Opaque IDs are kept as list rows without a detail page.",
            "editor": "stringList",
            "items": {
              "type": "string"
            },
            "default": [],
            "prefill": [
              "142567144448888376"
            ]
          },
          "usernames": {
            "title": "Pinterest usernames",
            "type": "array",
            "description": "Usernames, @usernames, or public profile links.",
            "editor": "stringList",
            "items": {
              "type": "string"
            },
            "default": [],
            "prefill": []
          },
          "boardUrls": {
            "title": "Board or section URLs",
            "type": "array",
            "description": "Public board links or username/board paths. A three-part board-section link is routed to that section's Pins.",
            "editor": "stringList",
            "items": {
              "type": "string"
            },
            "default": [],
            "prefill": []
          },
          "ideaUrls": {
            "title": "Idea topic URLs",
            "type": "array",
            "description": "Public idea-topic links such as /ideas/beauty/935541271955/. Pinterest exposes a list-only feed capped at about 17 Pins.",
            "editor": "stringList",
            "items": {
              "type": "string"
            },
            "default": [],
            "prefill": []
          },
          "startUrls": {
            "title": "Mixed Pinterest URLs",
            "type": "array",
            "description": "Pin, profile, board, board-section, search and idea links for Auto-detect.",
            "editor": "stringList",
            "items": {
              "type": "string"
            },
            "default": [],
            "prefill": []
          },
          "maxItems": {
            "title": "Maximum records",
            "type": "integer",
            "description": "Maximum number of emitted records, including comment and section rows. Set to 0 for no user cap.",
            "default": 50,
            "prefill": 1,
            "minimum": 0,
            "maximum": 20000
          },
          "maxPages": {
            "title": "Maximum pages",
            "type": "integer",
            "description": "Maximum feed pages per search, profile, or board. 0 follows Pinterest's cursors until the source ends.",
            "default": 0,
            "prefill": 0,
            "minimum": 0,
            "maximum": 2000
          },
          "minSaves": {
            "title": "Minimum saves",
            "type": "integer",
            "description": "0 means no minimum. For a positive value, keep only Pins where Pinterest supplies a numeric save count at or above it.",
            "default": 0,
            "prefill": 0,
            "minimum": 0,
            "maximum": 10000000
          },
          "minCreatorFollowers": {
            "title": "Minimum creator followers",
            "type": "integer",
            "description": "0 means no minimum. Keep Pins only when Pinterest supplies a creator follower count at or above this value.",
            "default": 0,
            "prefill": 0,
            "minimum": 0,
            "maximum": 1000000000
          },
          "verifiedOnly": {
            "title": "Verified accounts only",
            "type": "boolean",
            "description": "Keep only rows that Pinterest explicitly marks as verified.",
            "default": false,
            "prefill": false
          },
          "requireOutboundLink": {
            "title": "Require destination link",
            "type": "boolean",
            "description": "Keep only Pins with a public destination link supplied by Pinterest.",
            "default": false,
            "prefill": false
          },
          "imageOnly": {
            "title": "Images only",
            "type": "boolean",
            "description": "Exclude Pins that Pinterest identifies as video.",
            "default": false,
            "prefill": false
          },
          "excludeAds": {
            "title": "Exclude promoted Pins",
            "type": "boolean",
            "description": "Exclude Pins that Pinterest marks as promoted or sponsored.",
            "default": false,
            "prefill": false
          },
          "commerceOnly": {
            "title": "Shoppable Pins only",
            "type": "boolean",
            "description": "Keep only Pins with source-backed product, price, or shopping metadata.",
            "default": false,
            "prefill": false
          },
          "includeComments": {
            "title": "Include Pin comments",
            "type": "boolean",
            "description": "Add one real public comment row per collected numeric Pin. Comment rows count toward Maximum records.",
            "default": false,
            "prefill": false
          },
          "maxComments": {
            "title": "Maximum comments per Pin",
            "type": "integer",
            "description": "Maximum public comment rows to add per Pin when comments are enabled.",
            "minimum": 1,
            "maximum": 20000,
            "default": 10,
            "prefill": 10
          },
          "enrichDetails": {
            "title": "Enrich Pin details",
            "type": "boolean",
            "description": "Check each collection Pin's public detail page for more accurate creator, engagement, link, and media fields. Slower and uses more requests.",
            "default": false,
            "prefill": false
          },
          "resolveNumericIds": {
            "title": "Recover numeric creator Pin IDs",
            "type": "boolean",
            "description": "When a creator feed contains only opaque IDs, read the creator's public RSS feed to recover openable numeric Pin IDs.",
            "default": true,
            "prefill": false
          },
          "proxyConfiguration": {
            "title": "Optional proxy configuration",
            "type": "object",
            "description": "Leave empty for direct-first collection with the actor's automatic fallback. A supplied proxy is used only after a direct empty or blocked response.",
            "editor": "proxy"
          }
        },
        "required": []
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "Pinterest Pins, Profiles, Boards and Ideas Collector Output",
        "description": "Pinterest Pin, profile, board, boardSection and comment rows with media, creator, board, commerce and provenance fields. Opaque Pins omit unopenable URLs.",
        "properties": {
          "results": {
            "type": "string",
            "title": "Pinterest records",
            "description": "Dataset with Pinterest Pins, profiles, boards, board sections, comments and search results",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "views": {
            "overview": {
              "title": "Overview",
              "transformation": {
                "fields": [
                  "record_type",
                  "recordType",
                  "sourceType",
                  "sourceValue",
                  "id",
                  "pinId",
                  "title",
                  "url",
                  "pinUrl",
                  "creatorUsername",
                  "creatorFollowerCount",
                  "boardName",
                  "boardUrl",
                  "commentCount",
                  "saves",
                  "mediaType",
                  "linkUrl",
                  "imageUrl",
                  "source_url",
                  "scraped_at"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "id": {
                    "label": "Pin ID",
                    "format": "text"
                  },
                  "title": {
                    "label": "Title",
                    "format": "text"
                  },
                  "url": {
                    "label": "URL",
                    "format": "link"
                  },
                  "pinner_username": {
                    "label": "Pinner",
                    "format": "text"
                  },
                  "board_name": {
                    "label": "Board",
                    "format": "text"
                  },
                  "save_count": {
                    "label": "Saves",
                    "format": "number"
                  },
                  "comment_count": {
                    "label": "Comments",
                    "format": "number"
                  },
                  "like_count": {
                    "label": "Likes",
                    "format": "number"
                  },
                  "reaction_count": {
                    "label": "Reactions",
                    "format": "number"
                  },
                  "is_video": {
                    "label": "Video",
                    "format": "boolean"
                  },
                  "record_type": {
                    "label": "Record",
                    "format": "text"
                  },
                  "pinId": {
                    "label": "Pin ID",
                    "format": "text"
                  },
                  "pinUrl": {
                    "label": "Pin URL",
                    "format": "link"
                  },
                  "creatorUsername": {
                    "label": "Creator",
                    "format": "text"
                  },
                  "boardName": {
                    "label": "Board",
                    "format": "text"
                  },
                  "commentCount": {
                    "label": "Comments",
                    "format": "number"
                  },
                  "saves": {
                    "label": "Saves",
                    "format": "number"
                  },
                  "mediaType": {
                    "label": "Media",
                    "format": "text"
                  },
                  "linkUrl": {
                    "label": "Destination",
                    "format": "link"
                  },
                  "sourceType": {
                    "label": "Source",
                    "format": "text"
                  }
                }
              }
            },
            "detailed": {
              "title": "Detailed",
              "transformation": {
                "fields": [
                  "record_type",
                  "id",
                  "title",
                  "description",
                  "url",
                  "link",
                  "created_at",
                  "pinner_username",
                  "pinner_name",
                  "pinner_followers",
                  "board_name",
                  "board_url",
                  "save_count",
                  "comment_count",
                  "like_count",
                  "reaction_count",
                  "reaction_counts",
                  "pinId",
                  "pinUrl",
                  "imageVariants",
                  "videoVariants",
                  "creator",
                  "originalCreator",
                  "board",
                  "saves",
                  "commentCount",
                  "likeCount",
                  "reactionCount",
                  "linkUrl",
                  "richMetadata",
                  "is_video",
                  "video_url",
                  "dominant_color",
                  "images",
                  "source_url",
                  "scraped_at"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "id": {
                    "label": "Pin ID",
                    "format": "text"
                  },
                  "title": {
                    "label": "Title",
                    "format": "text"
                  },
                  "description": {
                    "label": "Description",
                    "format": "text"
                  },
                  "url": {
                    "label": "Pin URL",
                    "format": "link"
                  },
                  "link": {
                    "label": "Source Link",
                    "format": "link"
                  },
                  "created_at": {
                    "label": "Created",
                    "format": "text"
                  },
                  "pinner_username": {
                    "label": "Pinner",
                    "format": "text"
                  },
                  "pinner_name": {
                    "label": "Pinner Name",
                    "format": "text"
                  },
                  "pinner_followers": {
                    "label": "Pinner Followers",
                    "format": "number"
                  },
                  "board_name": {
                    "label": "Board",
                    "format": "text"
                  },
                  "board_url": {
                    "label": "Board URL",
                    "format": "link"
                  },
                  "save_count": {
                    "label": "Saves",
                    "format": "number"
                  },
                  "comment_count": {
                    "label": "Comments",
                    "format": "number"
                  },
                  "like_count": {
                    "label": "Likes",
                    "format": "number"
                  },
                  "reaction_count": {
                    "label": "Reactions",
                    "format": "number"
                  },
                  "reaction_counts": {
                    "label": "Reaction breakdown",
                    "format": "object"
                  },
                  "is_video": {
                    "label": "Video",
                    "format": "boolean"
                  },
                  "video_url": {
                    "label": "Video URL",
                    "format": "link"
                  },
                  "dominant_color": {
                    "label": "Color",
                    "format": "text"
                  },
                  "images": {
                    "label": "Images",
                    "format": "text"
                  }
                }
              }
            }
          }
        }
      },
      "defaultMemoryMbytes": 1024,
      "minMemoryMbytes": 1024
    },
    "buildNumber": "1.1.1",
    "imageDigest": "ea4641e0f9ebe19c94867ad568e0ac355ac53a9a90750a5818558b562b7bcef3",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "1.1"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.04192
    }
  }
}