Vexaloom Labs

Pinterest Pins, Profiles and Boards Collector with Filters

Collect public Pinterest Pins, profiles, boards, search results and comments by keyword or URL, with filters for saves, creator followers, verification, ads and shoppable Pins.

Input schema

Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.

FieldTypeRequiredDescription
modestringoptionalChoose a collection type. Auto-detect accepts mixed public Pinterest links.
keywordsarrayoptionalOne or more words or phrases for search modes.
searchTermsarrayoptionalCompatibility alias for Search words.
Show all input fields
FieldTypeRequiredDescription
modestringoptionalChoose a collection type. Auto-detect accepts mixed public Pinterest links.
keywordsarrayoptionalOne or more words or phrases for search modes.
searchTermsarrayoptionalCompatibility alias for Search words.
pinUrlsarrayoptionalPublic Pin links or numeric Pin IDs. This is also accepted as `pinterestUrls` for compatibility.
pinterestUrlsarrayoptionalCompatibility alias for Pin URLs or IDs.
usernamesarrayoptionalUsernames, @usernames, or public profile links.
profilesarrayoptionalCompatibility alias for Pinterest usernames.
boardUrlsarrayoptionalPublic board links or username/board-name paths.
boardsarrayoptionalCompatibility alias for Board URLs.
searchstringoptionalKeyword to search on Pinterest. Results will be pins matching this query.
startUrlsarrayoptionalList of Pinterest URLs to scrape. Supports pin URLs, user profile URLs, board URLs, and search URLs.
maxItemsintegeroptionalMaximum number of items to scrape. Set to 0 for unlimited.
maxPagesintegeroptionalMaximum pagination pages per search, profile, or board. 0 means continue until Pinterest has no next page.
minSavesintegeroptional0 means no minimum. For a positive value, keep only Pins where Pinterest supplies a numeric save count at or above it.
minCreatorFollowersintegeroptionalKeep Pins only when Pinterest supplies a creator follower count at or above this value.
verifiedOnlybooleanoptionalKeep only rows explicitly marked verified by Pinterest.
requireOutboundLinkbooleanoptionalKeep only Pins with a public destination link supplied by Pinterest.
imageOnlybooleanoptionalExclude Pins that Pinterest identifies as video.
excludeAdsbooleanoptionalExclude Pins Pinterest marks as promoted or sponsored.
commerceOnlybooleanoptionalKeep only Pins with source-backed product or shopping metadata.
includeCommentsbooleanoptionalWhen enabled, add one real comment/activity row for each collected Pin. Pinterest's public cookieless comment path is used automatically.
maxCommentsintegeroptionalMaximum public comment/activity rows to add per Pin when comments are enabled.
cookiesarrayoptionalOptional Cookie Editor JSON export. The actor works without cookies; never share this secret publicly.
cookiesJsonstringoptionalCompatibility alias for pasting a Cookie Editor JSON export.
endPageintegeroptionalMaximum number of pages to paginate through. Set to 0 for unlimited.
enrichDetailsbooleanoptionalWhen enabled, collection Pins are checked on their public detail pages for creator names, follower counts, links, engagement, and media fields. Slower but more complete.
proxyobjectoptionalProxy settings for the scraper. Uses Apify Proxy by default.
proxyConfigurationobjectoptionalCompatibility alias for proxy. Direct public Pin/profile pages also work without a proxy.

Download the published input schema

View complete JSON
{
  "description": "Collect public Pinterest Pins, profiles, boards, board Pins, search results, and comments using one simple input form. All fields are source-backed and optional.",
  "properties": {
    "boardUrls": {
      "default": [],
      "description": "Public board links or username/board-name paths.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "prefill": [],
      "title": "Board URLs",
      "type": "array"
    },
    "boards": {
      "default": [],
      "description": "Compatibility alias for Board URLs.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "prefill": [],
      "title": "Board URLs (compatibility alias)",
      "type": "array"
    },
    "commerceOnly": {
      "default": false,
      "description": "Keep only Pins with source-backed product or shopping metadata.",
      "prefill": false,
      "title": "Shoppable Pins only",
      "type": "boolean"
    },
    "cookies": {
      "description": "Optional Cookie Editor JSON export. The actor works without cookies; never share this secret publicly.",
      "editor": "json",
      "isSecret": true,
      "title": "Optional Pinterest cookies",
      "type": "array"
    },
    "cookiesJson": {
      "description": "Compatibility alias for pasting a Cookie Editor JSON export.",
      "editor": "textarea",
      "isSecret": true,
      "title": "Optional cookies JSON (alias)",
      "type": "string"
    },
    "endPage": {
      "default": 0,
      "description": "Maximum number of pages to paginate through. Set to 0 for unlimited.",
      "maximum": 2000,
      "minimum": 0,
      "title": "End Page",
      "type": "integer"
    },
    "enrichDetails": {
      "default": false,
      "description": "When enabled, collection Pins are checked on their public detail pages for creator names, follower counts, links, engagement, and media fields. Slower but more complete.",
      "prefill": false,
      "title": "Enrich Pin details",
      "type": "boolean"
    },
    "excludeAds": {
      "default": false,
      "description": "Exclude Pins Pinterest marks as promoted or sponsored.",
      "prefill": false,
      "title": "Exclude promoted Pins",
      "type": "boolean"
    },
    "imageOnly": {
      "default": false,
      "description": "Exclude Pins that Pinterest identifies as video.",
      "prefill": false,
      "title": "Images only",
      "type": "boolean"
    },
    "includeComments": {
      "default": false,
      "description": "When enabled, add one real comment/activity row for each collected Pin. Pinterest's public cookieless comment path is used automatically.",
      "prefill": false,
      "title": "Include Pin comments",
      "type": "boolean"
    },
    "keywords": {
      "default": [],
      "description": "One or more words or phrases for search modes.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "prefill": [],
      "title": "Search words",
      "type": "array"
    },
    "maxComments": {
      "default": 10,
      "description": "Maximum public comment/activity rows to add per Pin when comments are enabled.",
      "maximum": 20000,
      "minimum": 1,
      "prefill": 10,
      "title": "Maximum comments per Pin",
      "type": "integer"
    },
    "maxItems": {
      "default": 50,
      "description": "Maximum number of items to scrape. Set to 0 for unlimited.",
      "maximum": 20000,
      "minimum": 0,
      "title": "Max Items",
      "type": "integer"
    },
    "maxPages": {
      "default": 0,
      "description": "Maximum pagination pages per search, profile, or board. 0 means continue until Pinterest has no next page.",
      "maximum": 2000,
      "minimum": 0,
      "prefill": 0,
      "title": "Max pages",
      "type": "integer"
    },
    "minCreatorFollowers": {
      "description": "Keep Pins only when Pinterest supplies a creator follower count at or above this value.",
      "maximum": 1000000000,
      "minimum": 0,
      "title": "Minimum creator followers",
      "type": "integer"
    },
    "minSaves": {
      "description": "0 means no minimum. For a positive value, keep only Pins where Pinterest supplies a numeric save count at or above it.",
      "maximum": 10000000,
      "minimum": 0,
      "title": "Minimum saves",
      "type": "integer"
    },
    "mode": {
      "default": "auto",
      "description": "Choose a collection type. Auto-detect accepts mixed public Pinterest links.",
      "editor": "select",
      "enum": [
        "auto",
        "pinDetail",
        "comments",
        "searchPins",
        "searchVideos",
        "userProfile",
        "userPins",
        "userBoards",
        "boardDetail",
        "boardPins",
        "search"
      ],
      "enumTitles": [
        "Auto-detect links",
        "Pin details",
        "Comments for Pins",
        "Search Pins",
        "Search video Pins",
        "Profile details",
        "Pins created by a person",
        "Boards owned by a person",
        "Board details",
        "Pins inside a board",
        "Search Pins (legacy)"
      ],
      "prefill": "auto",
      "title": "What to collect",
      "type": "string"
    },
    "pinUrls": {
      "default": [],
      "description": "Public Pin links or numeric Pin IDs. This is also accepted as `pinterestUrls` for compatibility.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "prefill": [],
      "title": "Pin URLs or IDs",
      "type": "array"
    },
    "pinterestUrls": {
      "default": [],
      "description": "Compatibility alias for Pin URLs or IDs.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "prefill": [],
      "title": "Pin URLs or IDs (compatibility alias)",
      "type": "array"
    },
    "profiles": {
      "default": [],
      "description": "Compatibility alias for Pinterest usernames.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "prefill": [],
      "title": "Profile names or links (compatibility alias)",
      "type": "array"
    },
    "proxy": {
      "description": "Proxy settings for the scraper. Uses Apify Proxy by default.",
      "editor": "proxy",
      "prefill": {
        "useApifyProxy": true
      },
      "title": "Proxy Configuration",
      "type": "object"
    },
    "proxyConfiguration": {
      "description": "Compatibility alias for proxy. Direct public Pin/profile pages also work without a proxy.",
      "editor": "proxy",
      "title": "Proxy configuration (alias)",
      "type": "object"
    },
    "requireOutboundLink": {
      "default": false,
      "description": "Keep only Pins with a public destination link supplied by Pinterest.",
      "prefill": false,
      "title": "Require destination link",
      "type": "boolean"
    },
    "search": {
      "description": "Keyword to search on Pinterest. Results will be pins matching this query.",
      "editor": "textfield",
      "prefill": "cats",
      "title": "Search Query",
      "type": "string"
    },
    "searchTerms": {
      "default": [],
      "description": "Compatibility alias for Search words.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "prefill": [],
      "title": "Search words (compatibility alias)",
      "type": "array"
    },
    "startUrls": {
      "description": "List of Pinterest URLs to scrape. Supports pin URLs, user profile URLs, board URLs, and search URLs.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "prefill": [],
      "title": "Pinterest URLs",
      "type": "array"
    },
    "usernames": {
      "default": [],
      "description": "Usernames, @usernames, or public profile links.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "prefill": [],
      "title": "Pinterest usernames",
      "type": "array"
    },
    "verifiedOnly": {
      "default": false,
      "description": "Keep only rows explicitly marked verified by Pinterest.",
      "prefill": false,
      "title": "Verified accounts only",
      "type": "boolean"
    }
  },
  "required": [],
  "schemaVersion": 1,
  "title": "Pinterest Data Extractor Input",
  "type": "object"
}

Output schema

Published result links and storage locations. This schema is not an exhaustive contract for every field in a dataset record.

FieldTypeRequiredDescription
resultsstringoptionalDataset with scraped Pinterest data

Download the published output schema

View complete JSON
{
  "actorOutputSchemaVersion": 1,
  "description": "Pinterest Pin, profile, board and comment records with engagement counts, creator and board metadata.",
  "properties": {
    "results": {
      "description": "Dataset with scraped Pinterest data",
      "template": "{{links.apiDefaultDatasetUrl}}/items",
      "title": "Pinterest records",
      "type": "string"
    }
  },
  "title": "Pinterest Pins, Profiles and Boards Collector with Filters Output"
}

Dataset schema

Published dataset views and any declared field definitions. A view can select only a subset of the returned record fields.

Download the published dataset schema

View complete JSON
{
  "actorSpecification": 1,
  "views": {
    "detailed": {
      "display": {
        "component": "table",
        "properties": {
          "board_name": {
            "format": "text",
            "label": "Board"
          },
          "board_url": {
            "format": "link",
            "label": "Board URL"
          },
          "comment_count": {
            "format": "number",
            "label": "Comments"
          },
          "created_at": {
            "format": "text",
            "label": "Created"
          },
          "description": {
            "format": "text",
            "label": "Description"
          },
          "dominant_color": {
            "format": "text",
            "label": "Color"
          },
          "id": {
            "format": "text",
            "label": "Pin ID"
          },
          "images": {
            "format": "text",
            "label": "Images"
          },
          "is_video": {
            "format": "boolean",
            "label": "Video"
          },
          "like_count": {
            "format": "number",
            "label": "Likes"
          },
          "link": {
            "format": "link",
            "label": "Source Link"
          },
          "pinner_followers": {
            "format": "number",
            "label": "Pinner Followers"
          },
          "pinner_name": {
            "format": "text",
            "label": "Pinner Name"
          },
          "pinner_username": {
            "format": "text",
            "label": "Pinner"
          },
          "reaction_count": {
            "format": "number",
            "label": "Reactions"
          },
          "reaction_counts": {
            "format": "object",
            "label": "Reaction breakdown"
          },
          "save_count": {
            "format": "number",
            "label": "Saves"
          },
          "title": {
            "format": "text",
            "label": "Title"
          },
          "url": {
            "format": "link",
            "label": "Pin URL"
          },
          "video_url": {
            "format": "link",
            "label": "Video URL"
          }
        }
      },
      "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"
        ]
      }
    },
    "overview": {
      "display": {
        "component": "table",
        "properties": {
          "board_name": {
            "format": "text",
            "label": "Board"
          },
          "comment_count": {
            "format": "number",
            "label": "Comments"
          },
          "id": {
            "format": "text",
            "label": "Pin ID"
          },
          "is_video": {
            "format": "boolean",
            "label": "Video"
          },
          "like_count": {
            "format": "number",
            "label": "Likes"
          },
          "pinner_username": {
            "format": "text",
            "label": "Pinner"
          },
          "reaction_count": {
            "format": "number",
            "label": "Reactions"
          },
          "save_count": {
            "format": "number",
            "label": "Saves"
          },
          "title": {
            "format": "text",
            "label": "Title"
          },
          "url": {
            "format": "link",
            "label": "URL"
          }
        }
      },
      "title": "Overview",
      "transformation": {
        "fields": [
          "record_type",
          "id",
          "title",
          "url",
          "pinner_username",
          "board_name",
          "save_count",
          "comment_count",
          "like_count",
          "reaction_count",
          "pinId",
          "pinUrl",
          "imageUrl",
          "creatorUsername",
          "creatorFollowerCount",
          "saves",
          "commentCount",
          "likeCount",
          "reactionCount",
          "mediaType",
          "linkUrl",
          "is_video",
          "source_url",
          "scraped_at"
        ]
      }
    }
  }
}

Key-value schema

Published key-value store definitions, when provided by this build.

This definition is not present in the default published build. See the published README for available documentation.

Published README

Read the full published documentation

Pinterest Pins, Profiles and Boards Collector with Filters

Pinterest's public pages carry far more structured data than what's visible on screen — save counts, creator stats, board metadata, shopping flags and more. This actor collects that data for Pins, profiles, boards, search results and public comments in one dataset, working from either a focused mode or a mixed list of public URLs, without requiring a Pinterest login.

What this actor does

  • Multiple modes: searches Pins/videos, resolves Pins, profiles, boards, board Pins, creator Pins, creator boards, comments, and mixed URLs.
  • Convenient inputs: accepts keywords, Pin IDs, Pin URLs, usernames, profile URLs, board URLs, and aliases.
  • Source-backed filtering: filters by saves, creator followers, verification, links, media, ads, and shopping data.
  • Large exports: follows Pinterest cursors, removes duplicate Pins, and pushes rows progressively.
  • Truthful output: preserves published zeroes and false values while omitting unavailable data.

Output per record

Every row includes record_type, source_url, and scraped_at. record_type is pin, profile, board, or comment.

Pin fields

Pin rows can contain id, url, title, description, created_at, images, dominant_color, link, pinner_id, pinner_username, pinner_name, pinner_followers, board_id, board_name, board_url, save_count, comment_count, like_count, reaction_count, reaction_counts, is_video, video_url, pinId, pinUrl, imageVariants, imageUrl, videoVariants, mediaType, pinFormat, storyPinId, storyPages, altText, seoTitle, seoDescription, seoUrl, mobileLinkUrl, trackedLinkUrl, utmLinkUrl, domain, contentCategory, mediaMethod, creator, creatorId, creatorUsername, creatorName, creatorFollowerCount, originalCreator, board, boardId, boardName, boardUrl, boardCoverImageUrl, boardPinCount, boardFollowerCount, boardSectionCount, boardCollaboratorCount, boardPrivacy, boardCreatedAt, boardIsCollaborative, boardFollowedByMe, saves, commentCount, repinCount, shareCount, reactionCounts, reactionCount, likeCount, linkUrl, linkDomain, isPromoted, commentsDisabled, commentsEligible, isEligibleForImageDownload, isEligibleForProduct, isOutOfStock, isStaleProduct, isUnsafeForComments, isDownstreamPromotion, shouldMute, richMetadata, product, isShoppable, shoppingFlags, canonicalUrl, canonicalPinId, and canonicalPinUrl.

imageVariants and videoVariants preserve Pinterest's available resolution names and may include url, width, height, duration, and thumbnailUrl. Story Pin pages may contain pageId, layout, and blocks with type, text, images, and videos.

Profile fields

Profile rows can contain type, id, username, full_name, bio, follower_count, following_count, pin_count, board_count, image_url, website_url, is_verified, profileId, profileUrl, fullName, location, createdAt, followerCount, followingCount, pinCount, boardCount, monthlyViews, avatarUrls, avatarUrl, websiteUrl, domainUrl, isPrivate, isPartner, isVerifiedMerchant, isDomainVerified, isTastemaker, and isVerified.

Board fields

Board rows can contain type, id, name, description, url, pin_count, follower_count, privacy, owner_username, owner_name, boardId, recordType, createdAt, pinCount, followerCount, sectionCount, collaboratorCount, coverImageUrl, isCollaborative, followedByMe, and ownerUsername.

Comment fields

Comment rows can contain 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, plus pin_id, pin_url, record_type, source_url, and scraped_at.

Missing fields are omitted. A published 0 or false remains real data; an omitted field means Pinterest did not provide it to the public response.

Input

Field Type Default Description
mode choice auto auto, pinDetail, comments, searchPins, searchVideos, userProfile, userPins, userBoards, boardDetail, boardPins, or search.
keywords array of text — Search phrases for Pins or videos.
searchTerms array of text — Friendly alias for keywords.
search string — One convenient search phrase.
pinUrls / pinterestUrls array — Pin URLs or numeric Pin IDs.
usernames / profiles array — Usernames, @usernames, or public profile URLs.
boardUrls / boards array — Public board URLs or username/board-name paths.
startUrls array — Mixed public Pinterest URLs for auto.
maxItems integer 50 Maximum emitted records; 0 means no user cap.
maxPages integer 0 Maximum feed pages; 0 follows cursors until Pinterest ends the feed.
endPage integer 0 Alias for maxPages.
minSaves integer — Keep Pins meeting this published save count.
minCreatorFollowers integer — Keep Pins whose creator meets this published follower count.
verifiedOnly boolean false Keep only explicitly verified profiles or creators.
requireOutboundLink boolean false Keep only Pins with a Pinterest-published destination link.
imageOnly boolean false Exclude Pins with Pinterest video data.
excludeAds boolean false Exclude Pins explicitly marked promoted.
commerceOnly boolean false Keep only Pins with Pinterest shopping/product data.
includeComments boolean false Add public comment/activity records for each collected Pin.
maxComments integer 10 Maximum public comments/activity rows per Pin.
enrichDetails boolean false Request additional detail data for feed Pins.
cookies / cookiesJson array/string — Optional Cookie-Editor export; not required for public data.
proxy / proxyConfiguration object — Optional Apify proxy settings.

Example: search Pins

{
  "mode": "searchPins",
  "keywords": ["small kitchen ideas", "neutral bedroom"],
  "maxItems": 200
}

Example: collect a profile

{
  "mode": "userProfile",
  "usernames": ["nasa", "crazylaurablog"]
}

Example: large board feed

{
  "mode": "boardPins",
  "boardUrls": ["https://www.pinterest.com/nasa/hubble-images/"],
  "maxItems": 10000,
  "maxPages": 0,
  "excludeAds": true
}

Example: mixed URLs with comments

{
  "mode": "auto",
  "startUrls": [
    "https://www.pinterest.com/pin/142567144448888376/",
    "https://www.pinterest.com/nasa/",
    "https://www.pinterest.com/nasa/hubble-images/"
  ],
  "includeComments": true,
  "maxComments": 50
}

Use cases

  • Content and competitor research by keyword, creator, board, or Pin.
  • Finding image and video references with destination links and media variants.
  • Building creator and board directories from public identity and count fields.
  • Collecting public comment and engagement activity for moderation or research.
  • Exporting large board or profile feeds for spreadsheet or database analysis.

FAQ

Do I need Pinterest cookies?

No. Public records are collected without login cookies. Optional cookies are accepted for a permitted Cookie-Editor export.

Can I request more than 10,000 rows?

Yes. maxItems supports large exports, pagination is incremental, and the actor does not hold all rows until the end. The result can still be smaller when Pinterest's public source is exhausted.

Why is a field missing from one Pin?

Pinterest does not publish every field for every Pin, account, board, or media type. Missing values are omitted rather than inferred.

Why did a private or deleted page return no row?

The actor only emits identity and values received from Pinterest's public page or resource response. It does not fabricate a row for an inaccessible object.

Are save and like counts estimates?

No. Counts are copied from Pinterest's published response. A zero count is preserved when Pinterest explicitly returns zero.

Yes. Use auto with startUrls, or select a specific mode for one kind of output.

Can I download image or video files here?

This actor returns Pinterest media URLs and metadata. Use Pinterest Media Downloader when you need files in a key-value store.

Does commerceOnly classify text as a product?

No. It keeps records with Pinterest-provided product or shopping data only.

Is this affiliated with Pinterest?

No. This is an independent tool that reads Pinterest's public pages and is not affiliated with or endorsed by Pinterest.

Python quickstart

Use a schema-derived input and the Python standard library to start a run. An Apify account and token are required for execution.

Open the step-by-step Python guide →

Source build dGqaTPhOkWadL9UYJ. Documentation is regenerated from the default published build; private drafts are not included.