Pinterest Scraper | All-In-One avatar

Pinterest Scraper | All-In-One

Pricing

from $1.99 / 1,000 results

Go to Apify Store
Pinterest Scraper | All-In-One

Pinterest Scraper | All-In-One

Scrape Pinterest profiles, pins and boards into clean JSON. Get titles, descriptions, images/video, creator + board info, links, domains, timestamps and engagement signals. Great for trend research, content planning, creator discovery and competitive tracking

Pricing

from $1.99 / 1,000 results

Rating

5.0

(3)

Developer

Fatih Tahta

Fatih Tahta

Maintained by Community

Actor stats

26

Bookmarked

599

Total users

97

Monthly active users

11 hours

Issues response

11 days ago

Last modified

Share

Slug: fatihtahta/pinterest-scraper

Overview

Pinterest Scraper | All-In-One collects structured Pinterest data from search results, boards, profiles, individual pins, and video pins, including titles, descriptions, creator details, board references, media assets, engagement metrics, and optional analysis fields. Pinterest is a visual discovery platform where public pins, boards, creators, and topic trends can provide useful signals for content planning, market research, brand monitoring, and trend analysis. The actor turns repeatable Pinterest collection workflows into structured JSON output that can be used in reporting, enrichment, analytics, and data engineering pipelines. It is designed for operational consistency across recurring runs, making it practical to validate a target scope once and then collect data on a scheduled or automated basis. Results reflect the data available at run time and are suitable for dependable recurring acquisition workflows without requiring manual review of every page.

Why Use This Actor

  • Market research and analytics teams: collect public Pinterest signals for structured extraction, trend discovery, competitive context, and operational reporting.
  • Product and content teams: analyze pins, boards, creators, descriptions, visual topics, and engagement indicators to inform planning and editorial decisions.
  • Developers and data engineering teams: feed normalized JSON records into downstream systems, warehouses, search indexes, and enrichment pipelines.
  • Lead generation and enrichment teams: discover public profiles, creator pages, boards, and topic-specific sources that can support account research or prospect enrichment.
  • Monitoring and competitive tracking teams: schedule repeatable collection for market intelligence, category movement, visual trend tracking, and dashboard updates.

Common Use Cases

  • Market intelligence: monitor visual themes, category movement, engagement signals, creator activity, and public content trends.
  • Lead generation: build targeted public profile and creator lists from keyword-driven discovery or known Pinterest URLs.
  • Competitive monitoring: track public pins, boards, video pins, profiles, and content changes across selected topics or brands.
  • Catalog and directory building: populate internal databases with structured public records from pins, boards, profiles, and search results.
  • Data enrichment: add current public titles, descriptions, media URLs, creator attributes, and board context to CRM, BI, or analytics datasets.
  • Recurring reporting: schedule periodic runs for dashboards, alerts, topic tracking, and longitudinal analysis.

Quick Start

  1. Choose whether to collect from direct Pinterest URLs with startUrls or from keyword searches with queries and type.
  2. Set a small limit, such as 25 or 50, for the first validation run.
  3. Optionally enable sentinent_analysis or content_analysis when you need additional classification fields for pins and video pins.
  4. Run the actor in Apify Console.
  5. Inspect the first dataset records to confirm the entity types, fields, and record shape match your workflow.
  6. Increase the limit, add more URLs or keywords, and schedule the actor once the output is verified.

Input Parameters

Provide either direct Pinterest URLs or keyword searches, then choose the result type, output limit, optional analysis features, and connection configuration.

ParameterTypeDescriptionDefault
startUrlsarray of stringsPinterest URLs to collect directly. Supports search result pages, category pages, boards, profiles, individual pins, and video pins in the same run.โ€“
typestringSearch result type used with queries. Allowed values: all-pins, videos, boards, profiles.all-pins
queriesarray of stringsKeywords, topics, styles, brands, products, or themes to search on Pinterest. Use this for discovery-based collection.โ€“
limitintegerMaximum number of records to save for each keyword search. Minimum: 1.50000
sentinent_analysisbooleanAdds sentiment fields to pin and video pin records based on available title and image alt text.false
content_analysisbooleanAdds content category fields to pin and video pin records based on available title, alt text, descriptions, hashtags, and destination domain.false
proxyConfigurationobjectOptional connection configuration for region-specific access or controlled network behavior. The default Apify configuration is suitable for most runs.{"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]}

Choosing Inputs

Use startUrls when you already know the exact Pinterest pages to collect, such as a specific pin, board, profile, search page, or category page. Use queries when you want discovery-based collection from one or more search terms, and pair it with type to choose whether the run should return all pins, videos, boards, or profiles.

Broader keywords and type = "all-pins" are useful for exploration, while narrower keywords and specific result types produce more targeted datasets. Start with a small limit to validate the output shape, then increase it after confirming the records match your expected scope. Enable sentinent_analysis or content_analysis only when those enrichment fields are useful for your downstream workflow.

Example Inputs

Search-driven pin discovery

{
"queries": ["home decor", "small apartment ideas"],
"type": "all-pins",
"limit": 50,
"content_analysis": true,
"sentinent_analysis": false
}

Direct URL collection

{
"startUrls": [
"https://www.pinterest.com/search/pins/?q=modern%20kitchen",
"https://www.pinterest.com/pin/563018699561284/"
],
"limit": 25,
"content_analysis": true,
"sentinent_analysis": true
}

Targeted creator and board discovery

{
"queries": ["wedding photography", "bridal bouquet"],
"type": "boards",
"limit": 100,
"content_analysis": false,
"sentinent_analysis": false
}

Output

Output destination

The actor writes results to an Apify dataset as JSON records. The dataset is designed for direct consumption by analytics tools, ETL pipelines, and downstream APIs with minimal post-processing.

When multiple entity types or record shapes exist, this README documents each shape separately based on the provided Example Output.

Record envelope and stable identifiers

Each record includes an envelope with fields such as type, schema, entity_type, id, url, source_url, seed_type, and seed_value, followed by entity-specific nested objects such as pin, profile, creator, board_ref, media, and extra.

The recommended idempotency key for pin and profile records is id. When syncing across systems, use id as the primary deduplication key and retain url or source_url as supporting traceability fields.

For deduplication and upserts, compare incoming records by id and update mutable attributes such as engagement counts, media URLs, descriptions, analysis fields, and creator metadata as needed. Stable identifiers make records easier to merge, deduplicate, and sync across repeated runs.

Examples

Example: pin (type = "pin")

{
"type": "pin",
"schema": {
"version": 2,
"entity_type": "pin"
},
"entity_type": "pin",
"id": "563018699561284",
"url": "https://www.pinterest.com/pin/563018699561284/",
"title": "Bright Living Room with Windows and Window Sill",
"source_url": "https://www.pinterest.com/pin/563018699561284/",
"seed_type": "url",
"seed_value": "https://www.pinterest.com/pin/563018699561284/",
"pin": {
"title": "Bright Living Room with Windows and Window Sill",
"description": "Chic living room ideas featuring abundant natural light, cozy seating, and a charming window sill. Perfect for bright, airy interiors and stylish indoor-outdoor vibes",
"description_html": "Chic living room ideas featuring abundant natural light, cozy seating, and a charming window sill. Perfect for bright, airy interiors and stylish indoor-outdoor vibes",
"closeup_unified_description": "Chic living room ideas featuring abundant natural light, cozy seating, and a charming window sill. Perfect for bright, airy interiors and stylish indoor-outdoor vibes",
"closeup_user_note": "Chic living room ideas featuring abundant natural light, cozy seating, and a charming window sill. Perfect for bright, airy interiors and stylish indoor-outdoor vibes",
"alt_text": "a living room filled with furniture and lots of windows",
"created_at": "Tue, 17 Mar 2026 04:24:48 +0000",
"domain": "Uploaded by user",
"is_promoted": false,
"is_video": false,
"is_repin": true,
"method": "uploaded",
"repin_count": 3901,
"comment_count": 0,
"share_count": 109,
"favorite_user_count": 0,
"reaction_counts": {
"1": 966
},
"dominant_color": "#8e4a2c",
"visual_objects": [
{
"x": 0.03,
"y": 0.024166666666666666,
"w": 0.94,
"h": 0.9516666666666667,
"detection": true,
"score": 1
},
{
"x": 0.07336185872554779,
"y": 0.6666902303695679,
"w": 0.926638126373291,
"h": 0.33330976963043213,
"label": "Rugs",
"title": "Rugs",
"label_id": 938462894375,
"detection": true,
"score": 0.9505329132080078,
"index": -1,
"is_stela": true,
"label_x": 0.16602567136287688,
"label_y": 0.7000212073326111
},
{
"x": 0.03857477009296417,
"y": 0.6253904700279236,
"w": 0.42543137073516846,
"h": 0.3713507056236267,
"label": "Accent chairs & armchairs",
"title": "Accent chairs & armchairs",
"label_id": 917495990139,
"detection": true,
"score": 0.9342540502548218,
"index": -1,
"is_stela": true,
"label_x": 0.03857477009296417,
"label_y": 0.6253904700279236
},
{
"x": 0.1502201110124588,
"y": 0.5202755331993103,
"w": 0.5284156799316406,
"h": 0.2353408932685852,
"label": "Sofas",
"title": "Sofas",
"label_id": 934545567571,
"detection": true,
"score": 0.9876213669776917,
"index": -1,
"is_stela": true,
"label_x": 0.1502201110124588,
"label_y": 0.5202755331993103
},
{
"x": 0.43485027551651,
"y": 0.638690710067749,
"w": 0.3888392448425293,
"h": 0.18959492444992065,
"label": "Coffee tables",
"title": "Coffee tables",
"label_id": 920914587880,
"detection": true,
"score": 0.9863329529762268,
"index": -1,
"is_stela": true,
"label_x": 0.43485027551651,
"label_y": 0.638690710067749
},
{
"x": 0.6914898157119751,
"y": 0.31859543919563293,
"w": 0.1640176773071289,
"h": 0.32200393080711365,
"label": "Standing shelves",
"title": "Standing shelves",
"label_id": 936448060232,
"detection": true,
"score": 0.6078447699546814,
"index": -1,
"is_stela": true,
"label_x": 0.7406951189041138,
"label_y": 0.2219942599534989
},
{
"x": 0,
"y": 0.5547921061515808,
"w": 0.18380309641361237,
"h": 0.22686445713043213,
"label": "End tables",
"title": "End tables",
"label_id": 910105966303,
"detection": true,
"score": 0.4054327607154846,
"index": -1,
"is_stela": true,
"label_x": 0,
"label_y": 0.5547921061515808
},
{
"x": 0.736142635345459,
"y": 0.6001952290534973,
"w": 0.263857364654541,
"h": 0.140508234500885,
"label": "Bean bag chairs",
"title": "Bean bag chairs",
"label_id": 908288435702,
"detection": true,
"score": 0.49553555250167847,
"index": -1,
"is_stela": true,
"label_x": 0.736142635345459,
"label_y": 0.6001952290534973
},
{
"x": 0.7614133358001709,
"y": 0.2966318726539612,
"w": 0.12159842252731323,
"h": 0.29798197746276855,
"label": "Potted houseplants",
"title": "Potted houseplants",
"label_id": 920011342399,
"detection": true,
"score": 0.669331967830658,
"index": -1,
"is_stela": true,
"label_x": 0.7614133358001709,
"label_y": 0.2966318726539612
}
],
"aggregated_pin_data": {
"id": "3229782580259003904",
"aggregated_stats": {
"saves": 12726,
"done": 0
},
"comment_count": 10,
"is_stela": false,
"is_shop_the_look": false,
"did_it_data": {
"details_count": 0,
"recommend_scores": [
{
"score": 1,
"count": 0
},
{
"score": 0.5,
"count": 0
},
{
"score": 0,
"count": 0
}
],
"responses_count": 0,
"videos_count": 0,
"rating": -1,
"user_count": 0,
"type": "aggregateddiditdata",
"images_count": 0,
"recommended_count": 0
},
"has_xy_tags": false
}
},
"content_category_label": "Interior Decorating",
"content_category_path": [
"Home & Garden",
"Interior Decorating"
],
"content_category_confidence": 0.92,
"content_category_match_type": "exact_alias",
"creator": {
"id": "563156111853889",
"username": "molliemichele14",
"full_name": "Mollie",
"follower_count": 9,
"image_small_url": "https://i.pinimg.com/30x30_RS/e4/04/60/e4046075f7094c37f6a6a91d2d786010.jpg",
"image_medium_url": "https://i.pinimg.com/75x75_RS/e4/04/60/e4046075f7094c37f6a6a91d2d786010.jpg",
"url": "https://www.pinterest.com/molliemichele14/",
"extra": {
"is_ads_only_profile": false,
"explicitly_followed_by_me": false,
"followed_by_me": false,
"blocked_by_me": false,
"is_primary_website_verified": false,
"is_direct_to_site_allowed": false,
"is_default_image": false,
"first_name": "m",
"type": "user",
"domain_verified": false,
"is_verified_merchant": false,
"indexed": true
}
},
"board_ref": {
"id": "563087392841392",
"name": "apartment",
"url": "https://www.pinterest.com/molliemichele14/apartment/",
"is_collaborative": false,
"image_cover_url": "https://i.pinimg.com/200x150/34/8a/bd/348abd33789989285d1bb347be90d51f.jpg",
"image_thumbnail_url": "https://i.pinimg.com/upload/563087392841392_board_thumbnail_2026-03-27-04-01-37_61743_60.jpg",
"extra": {
"type": "board",
"owner": {
"is_ads_only_profile": false,
"explicitly_followed_by_me": false,
"followed_by_me": false,
"blocked_by_me": false,
"is_primary_website_verified": false,
"is_direct_to_site_allowed": false,
"id": "563156111853889",
"image_small_url": "https://i.pinimg.com/30x30_RS/e4/04/60/e4046075f7094c37f6a6a91d2d786010.jpg",
"is_default_image": false,
"first_name": "m",
"full_name": "Mollie",
"type": "user",
"username": "molliemichele14",
"domain_verified": false,
"follower_count": 9,
"is_verified_merchant": false,
"indexed": true,
"image_medium_url": "https://i.pinimg.com/75x75_RS/e4/04/60/e4046075f7094c37f6a6a91d2d786010.jpg"
},
"layout": "default",
"collaborated_by_me": false,
"followed_by_me": false,
"privacy": "public",
"map_id": "pinterest.ijz1714i",
"pin_thumbnail_urls": [
"https://i.pinimg.com/150x150/c8/0f/d8/c80fd82f07078c2b072702c0cd49014b.jpg",
"https://i.pinimg.com/150x150/a7/3e/8b/a73e8ba9c2a4f6bae1f55126c4b29f6e.jpg",
"https://i.pinimg.com/150x150/b2/ad/27/b2ad27728e08adeb85f093ce5b2157de.jpg",
"https://i.pinimg.com/150x150/c8/ca/e9/c8cae933cb5c1c22823721f0bfd5fd82.jpg",
"https://i.pinimg.com/150x150/1d/24/09/1d2409dc331cf66a7ac54f5cdb313333.jpg"
]
}
},
"media": {
"images": {
"thumb": {
"width": 236,
"height": 292,
"url": "https://i.pinimg.com/236x/d9/45/ff/d945ff300731def593f4d101a3438c04.jpg"
},
"small": {
"width": 236,
"height": 292,
"url": "https://i.pinimg.com/236x/d9/45/ff/d945ff300731def593f4d101a3438c04.jpg"
},
"medium": {
"width": 474,
"height": 588,
"url": "https://i.pinimg.com/474x/d9/45/ff/d945ff300731def593f4d101a3438c04.jpg"
},
"large": {
"width": 736,
"height": 913,
"url": "https://i.pinimg.com/736x/d9/45/ff/d945ff300731def593f4d101a3438c04.jpg"
},
"original": {
"width": 3712,
"height": 4608,
"url": "https://i.pinimg.com/originals/d9/45/ff/d945ff300731def593f4d101a3438c04.png"
},
"images_by_size": {
"60x60": {
"width": 60,
"height": 60,
"url": "https://i.pinimg.com/60x60/d9/45/ff/d945ff300731def593f4d101a3438c04.jpg"
},
"136x136": {
"width": 136,
"height": 136,
"url": "https://i.pinimg.com/136x136/d9/45/ff/d945ff300731def593f4d101a3438c04.jpg"
},
"170x": {
"width": 236,
"height": 292,
"url": "https://i.pinimg.com/236x/d9/45/ff/d945ff300731def593f4d101a3438c04.jpg"
},
"236x": {
"width": 236,
"height": 292,
"url": "https://i.pinimg.com/236x/d9/45/ff/d945ff300731def593f4d101a3438c04.jpg"
},
"474x": {
"width": 474,
"height": 588,
"url": "https://i.pinimg.com/474x/d9/45/ff/d945ff300731def593f4d101a3438c04.jpg"
},
"564x": {
"width": 564,
"height": 700,
"url": "https://i.pinimg.com/564x/d9/45/ff/d945ff300731def593f4d101a3438c04.jpg"
},
"736x": {
"width": 736,
"height": 913,
"url": "https://i.pinimg.com/736x/d9/45/ff/d945ff300731def593f4d101a3438c04.jpg"
},
"600x315": {
"width": 600,
"height": 315,
"url": "https://i.pinimg.com/600x315/d9/45/ff/d945ff300731def593f4d101a3438c04.jpg"
},
"1200x": {
"width": 1200,
"height": 1489,
"url": "https://i.pinimg.com/1200x/d9/45/ff/d945ff300731def593f4d101a3438c04.jpg"
},
"orig": {
"width": 3712,
"height": 4608,
"url": "https://i.pinimg.com/originals/d9/45/ff/d945ff300731def593f4d101a3438c04.png"
}
}
}
},
"extra": {
"ships_to_user_country": false,
"price_value": 0,
"can_delete_did_it_and_comments": false,
"is_year_in_preview": false,
"is_eligible_for_aggregated_comments": true,
"is_promotable": false,
"has_required_attribution_provider": false,
"is_unsafe": false,
"is_eligible_for_flashlight_shopping": true,
"is_whitelisted_for_tried_it": true,
"is_stale_product": false,
"l2_dominant_interest": {
"id": 916836567854,
"label": "Room Decor"
},
"reaction_by_me": 0,
"is_eligible_for_brand_catalog": false,
"image_medium_url": "https://i.pinimg.com/200x/d9/45/ff/d945ff300731def593f4d101a3438c04.jpg",
"price_currency": "USD",
"is_playable": false,
"comments_disabled": false,
"link_utm_applicable_and_replaced": 0,
"shopping_rec_disabled": false,
"is_eligible_for_pdp": false,
"did_it_disabled": false,
"is_viewer_restricted": false,
"should_open_in_stream": false,
"favorited_by_me": false,
"is_hidden": false,
"type": "pin",
"is_native": true,
"has_been_boost_promoted": false,
"image_signature": "d945ff300731def593f4d101a3438c04",
"is_eligible_for_related_products": false,
"closeup_unified_attribution": {
"is_ads_only_profile": false,
"explicitly_followed_by_me": false,
"followed_by_me": false,
"blocked_by_me": false,
"is_primary_website_verified": false,
"is_direct_to_site_allowed": false,
"id": "903112668934807664",
"image_small_url": "https://i.pinimg.com/30x30_RS/14/e1/0c/14e10cdfa5c9500f4f118f58fb582351.jpg",
"is_default_image": false,
"first_name": "Elva Morar",
"full_name": "Elva Morar",
"type": "user",
"username": "elva_morar85",
"domain_verified": false,
"follower_count": 1515,
"is_verified_merchant": false,
"indexed": true,
"image_medium_url": "https://i.pinimg.com/75x75_RS/14/e1/0c/14e10cdfa5c9500f4f118f58fb582351.jpg"
},
"is_quick_promotable_by_pinner": false,
"is_instagram_api": false,
"is_eligible_for_pre_loved_goods_label": false,
"top_interest": 14,
"is_go_linkless": false,
"privacy": "public",
"is_unsafe_for_comments": false,
"is_active_ad": false,
"should_mute": false,
"is_oos_product": false,
"done_by_me": false,
"is_quick_promotable": false
}
}

Example: profile (type = "profile")

{
"type": "profile",
"schema": {
"version": 2,
"entity_type": "profile"
},
"entity_type": "profile",
"id": "VXNlcjoxNTEwODE4OTk5MDc4Nzc2ODU=",
"url": "https://www.pinterest.com/cheesecakecom/",
"title": "Cheesecake.com",
"source_url": "https://www.pinterest.com/search/users/?q=cheesecake",
"seed_type": "query",
"seed_value": "cheesecake",
"profile": {
"username": "cheesecakecom",
"full_name": "Cheesecake.com",
"follower_count": 1116,
"is_verified_merchant": false,
"recent_pin_images": [
{
"url": "https://i.pinimg.com/222x/a9/be/6c/a9be6cd45c2efbe6974f392d5ce0b487.jpg",
"width": 222,
"height": 154,
"dominant_color": "#997243"
},
{
"url": "https://i.pinimg.com/222x/72/fa/2c/72fa2cf94d90f3b55ae6cd0410bfd2aa.jpg",
"width": 222,
"height": 222,
"dominant_color": "#D1AFC7"
},
{
"url": "https://i.pinimg.com/222x/26/67/a8/2667a82ee06195f7e61cb94858b12ad1.jpg",
"width": 222,
"height": 339,
"dominant_color": "#886F66"
},
{
"url": "https://i.pinimg.com/222x/d8/42/39/d84239e3b0691dfcbb1d788a58430871.jpg",
"width": 222,
"height": 705,
"dominant_color": "#CDC8C7"
},
{
"url": "https://i.pinimg.com/222x/84/25/98/842598757b77974100698c2410dd62ef.jpg",
"width": 222,
"height": 621,
"dominant_color": "#ECD1DE"
},
{
"url": "https://i.pinimg.com/222x/f5/32/96/f53296eed2c05a2d40b6036c5dca74e4.jpg",
"width": 222,
"height": 770,
"dominant_color": "#944A3B"
},
{
"url": "https://i.pinimg.com/222x/9d/75/e4/9d75e415dfccdde7b12fbf12fd3d6f69.jpg",
"width": 222,
"height": 969,
"dominant_color": "#564535"
},
{
"url": "https://i.pinimg.com/222x/da/f4/96/daf496a43df1328cc47363a7412ea5b0.jpg",
"width": 222,
"height": 333,
"dominant_color": "#B97E44"
}
]
},
"media": {
"avatar": {
"medium": "https://i.pinimg.com/75x75_RS/10/c7/db/10c7db9e57398894f5fe2d501c97fdbf.jpg"
}
},
"extra": {
"entityId": "151081899907877685",
"explicitlyFollowedByMe": false
}
}

Field Reference

Pin Record

type (string, required): Record type. Example: pin.

schema.version (integer, required): Output schema version for the record.

schema.entity_type (string, required): Entity type represented by the schema.

entity_type (string, required): Entity type for the record.

id (string, required): Stable Pinterest pin identifier. Recommended idempotency key.

url (string, required): Public Pinterest URL for the pin.

title (string, optional): Top-level pin title.

source_url (string, optional): Source URL associated with the collected record.

seed_type (string, optional): Type of input that produced the record, such as url.

seed_value (string, optional): Input value that produced the record.

pin.title (string, optional): Pin title.

pin.description (string, optional): Plain-text pin description.

pin.description_html (string, optional): Description content when HTML-formatted text is available.

pin.closeup_unified_description (string, optional): Additional description text shown for the pin.

pin.closeup_user_note (string, optional): User-provided note text associated with the pin.

pin.alt_text (string, optional): Image alt text or visual description.

pin.created_at (string, optional): Pin creation timestamp as provided by Pinterest.

pin.domain (string, optional): Displayed source domain or upload source label.

pin.is_promoted (boolean, optional): Indicates whether the pin is marked as promoted.

pin.is_video (boolean, optional): Indicates whether the pin is a video pin.

pin.is_repin (boolean, optional): Indicates whether the pin is a repin.

pin.method (string, optional): Source method label for the pin.

pin.repin_count (integer, optional): Number of repins when available.

pin.comment_count (integer, optional): Number of comments when available.

pin.share_count (integer, optional): Number of shares when available.

pin.favorite_user_count (integer, optional): Number of users who favorited the pin when available.

pin.reaction_counts (object, optional): Reaction counts keyed by reaction identifier.

pin.dominant_color (string, optional): Dominant image color in hex format.

pin.visual_objects (array of objects, optional): Detected visual regions or labeled visual objects.

pin.visual_objects.x / pin.visual_objects.y (number, optional): Top-left normalized coordinate for the detected region.

pin.visual_objects.w / pin.visual_objects.h (number, optional): Normalized width and height for the detected region.

pin.visual_objects.detection (boolean, optional): Indicates whether the item represents a detected visual region.

pin.visual_objects.score (number, optional): Confidence score for the visual object.

pin.visual_objects.label (string, optional): Visual object label.

pin.visual_objects.title (string, optional): Display title for the visual object.

pin.visual_objects.label_id (integer, optional): Identifier for the visual object label.

pin.visual_objects.index (integer, optional): Object index when provided.

pin.visual_objects.is_stela (boolean, optional): Pinterest-provided visual object flag.

pin.visual_objects.label_x / pin.visual_objects.label_y (number, optional): Normalized label position coordinates.

pin.aggregated_pin_data.id (string, optional): Aggregated pin data identifier.

pin.aggregated_pin_data.aggregated_stats.saves (integer, optional): Aggregated save count.

pin.aggregated_pin_data.aggregated_stats.done (integer, optional): Aggregated done count.

pin.aggregated_pin_data.comment_count (integer, optional): Aggregated comment count.

pin.aggregated_pin_data.is_stela (boolean, optional): Pinterest-provided aggregated data flag.

pin.aggregated_pin_data.is_shop_the_look (boolean, optional): Indicates whether shop-the-look data is present.

pin.aggregated_pin_data.did_it_data.details_count (integer, optional): Count of did-it details.

pin.aggregated_pin_data.did_it_data.recommend_scores (array of objects, optional): Recommendation score buckets.

pin.aggregated_pin_data.did_it_data.recommend_scores.score (number, optional): Recommendation score bucket.

pin.aggregated_pin_data.did_it_data.recommend_scores.count (integer, optional): Count for the score bucket.

pin.aggregated_pin_data.did_it_data.responses_count (integer, optional): Count of did-it responses.

pin.aggregated_pin_data.did_it_data.videos_count (integer, optional): Count of did-it videos.

pin.aggregated_pin_data.did_it_data.rating (number, optional): Rating value when available.

pin.aggregated_pin_data.did_it_data.user_count (integer, optional): User count for did-it data.

pin.aggregated_pin_data.did_it_data.type (string, optional): Did-it data type label.

pin.aggregated_pin_data.did_it_data.images_count (integer, optional): Count of did-it images.

pin.aggregated_pin_data.did_it_data.recommended_count (integer, optional): Count of recommendations.

pin.aggregated_pin_data.has_xy_tags (boolean, optional): Indicates whether coordinate tags are present.

content_category_label (string, optional): Content category label when content analysis is enabled and classification is available.

content_category_path (array of strings, optional): Hierarchical content category path.

content_category_confidence (number, optional): Confidence score for content category classification.

content_category_match_type (string, optional): Match method label for content category classification.

creator.id (string, optional): Creator identifier.

creator.username (string, optional): Creator username.

creator.full_name (string, optional): Creator display name.

creator.follower_count (integer, optional): Creator follower count when available.

creator.image_small_url (string, optional): Small creator profile image URL.

creator.image_medium_url (string, optional): Medium creator profile image URL.

creator.url (string, optional): Public creator profile URL.

creator.extra.is_ads_only_profile (boolean, optional): Creator profile flag.

creator.extra.explicitly_followed_by_me (boolean, optional): Viewer relationship flag when available.

creator.extra.followed_by_me (boolean, optional): Viewer relationship flag when available.

creator.extra.blocked_by_me (boolean, optional): Viewer relationship flag when available.

creator.extra.is_primary_website_verified (boolean, optional): Indicates whether the primary website is verified.

creator.extra.is_direct_to_site_allowed (boolean, optional): Direct-to-site availability flag.

creator.extra.is_default_image (boolean, optional): Indicates whether the creator uses a default image.

creator.extra.first_name (string, optional): Creator first-name field when available.

creator.extra.type (string, optional): Nested creator type label.

creator.extra.domain_verified (boolean, optional): Domain verification flag.

creator.extra.is_verified_merchant (boolean, optional): Verified merchant flag.

creator.extra.indexed (boolean, optional): Indicates whether the creator is indexed.

board_ref.id (string, optional): Board identifier associated with the pin.

board_ref.name (string, optional): Board name.

board_ref.url (string, optional): Public board URL.

board_ref.is_collaborative (boolean, optional): Indicates whether the board is collaborative.

board_ref.image_cover_url (string, optional): Board cover image URL.

board_ref.image_thumbnail_url (string, optional): Board thumbnail image URL.

board_ref.extra.type (string, optional): Nested board type label.

board_ref.extra.owner.is_ads_only_profile (boolean, optional): Board owner profile flag.

board_ref.extra.owner.explicitly_followed_by_me (boolean, optional): Viewer relationship flag when available.

board_ref.extra.owner.followed_by_me (boolean, optional): Viewer relationship flag when available.

board_ref.extra.owner.blocked_by_me (boolean, optional): Viewer relationship flag when available.

board_ref.extra.owner.is_primary_website_verified (boolean, optional): Owner website verification flag.

board_ref.extra.owner.is_direct_to_site_allowed (boolean, optional): Direct-to-site availability flag.

board_ref.extra.owner.id (string, optional): Board owner identifier.

board_ref.extra.owner.image_small_url (string, optional): Small owner profile image URL.

board_ref.extra.owner.is_default_image (boolean, optional): Indicates whether the owner uses a default image.

board_ref.extra.owner.first_name (string, optional): Owner first-name field when available.

board_ref.extra.owner.full_name (string, optional): Owner display name.

board_ref.extra.owner.type (string, optional): Nested owner type label.

board_ref.extra.owner.username (string, optional): Board owner username.

board_ref.extra.owner.domain_verified (boolean, optional): Owner domain verification flag.

board_ref.extra.owner.follower_count (integer, optional): Owner follower count.

board_ref.extra.owner.is_verified_merchant (boolean, optional): Verified merchant flag for the owner.

board_ref.extra.owner.indexed (boolean, optional): Indicates whether the owner is indexed.

board_ref.extra.owner.image_medium_url (string, optional): Medium owner profile image URL.

board_ref.extra.layout (string, optional): Board layout label.

board_ref.extra.collaborated_by_me (boolean, optional): Viewer relationship flag when available.

board_ref.extra.followed_by_me (boolean, optional): Viewer relationship flag when available.

board_ref.extra.privacy (string, optional): Board privacy label.

board_ref.extra.map_id (string, optional): Board map identifier.

board_ref.extra.pin_thumbnail_urls (array of strings, optional): Thumbnail URLs for pins on the board.

media.images.thumb.width / media.images.thumb.height (integer, optional): Thumbnail image dimensions in pixels.

media.images.thumb.url (string, optional): Thumbnail image URL.

media.images.small.width / media.images.small.height (integer, optional): Small image dimensions in pixels.

media.images.small.url (string, optional): Small image URL.

media.images.medium.width / media.images.medium.height (integer, optional): Medium image dimensions in pixels.

media.images.medium.url (string, optional): Medium image URL.

media.images.large.width / media.images.large.height (integer, optional): Large image dimensions in pixels.

media.images.large.url (string, optional): Large image URL.

media.images.original.width / media.images.original.height (integer, optional): Original image dimensions in pixels.

media.images.original.url (string, optional): Original image URL.

media.images.images_by_size (object, optional): Image variants keyed by size label.

media.images.images_by_size.60x60.width / media.images.images_by_size.60x60.height (integer, optional): 60x60 image dimensions in pixels.

media.images.images_by_size.60x60.url (string, optional): 60x60 image URL.

media.images.images_by_size.136x136.width / media.images.images_by_size.136x136.height (integer, optional): 136x136 image dimensions in pixels.

media.images.images_by_size.136x136.url (string, optional): 136x136 image URL.

media.images.images_by_size.170x.width / media.images.images_by_size.170x.height (integer, optional): 170x image dimensions in pixels.

media.images.images_by_size.170x.url (string, optional): 170x image URL.

media.images.images_by_size.236x.width / media.images.images_by_size.236x.height (integer, optional): 236x image dimensions in pixels.

media.images.images_by_size.236x.url (string, optional): 236x image URL.

media.images.images_by_size.474x.width / media.images.images_by_size.474x.height (integer, optional): 474x image dimensions in pixels.

media.images.images_by_size.474x.url (string, optional): 474x image URL.

media.images.images_by_size.564x.width / media.images.images_by_size.564x.height (integer, optional): 564x image dimensions in pixels.

media.images.images_by_size.564x.url (string, optional): 564x image URL.

media.images.images_by_size.736x.width / media.images.images_by_size.736x.height (integer, optional): 736x image dimensions in pixels.

media.images.images_by_size.736x.url (string, optional): 736x image URL.

media.images.images_by_size.600x315.width / media.images.images_by_size.600x315.height (integer, optional): 600x315 image dimensions in pixels.

media.images.images_by_size.600x315.url (string, optional): 600x315 image URL.

media.images.images_by_size.1200x.width / media.images.images_by_size.1200x.height (integer, optional): 1200x image dimensions in pixels.

media.images.images_by_size.1200x.url (string, optional): 1200x image URL.

media.images.images_by_size.orig.width / media.images.images_by_size.orig.height (integer, optional): Original-size image dimensions in pixels.

media.images.images_by_size.orig.url (string, optional): Original-size image URL.

extra.ships_to_user_country (boolean, optional): Indicates whether shipping is available to the viewer country when provided.

extra.price_value / extra.price_currency (number/string, optional): Price value and currency when product-related data is available.

extra.can_delete_did_it_and_comments (boolean, optional): Viewer capability flag when available.

extra.is_year_in_preview (boolean, optional): Preview display flag.

extra.is_eligible_for_aggregated_comments (boolean, optional): Aggregated comments eligibility flag.

extra.is_promotable (boolean, optional): Promotion eligibility flag.

extra.has_required_attribution_provider (boolean, optional): Attribution provider flag.

extra.is_unsafe (boolean, optional): Safety flag when provided.

extra.is_eligible_for_flashlight_shopping (boolean, optional): Shopping feature eligibility flag.

extra.is_whitelisted_for_tried_it (boolean, optional): Tried-it feature availability flag.

extra.is_stale_product (boolean, optional): Product freshness flag.

extra.l2_dominant_interest.id (integer, optional): Dominant interest identifier.

extra.l2_dominant_interest.label (string, optional): Dominant interest label.

extra.reaction_by_me (integer, optional): Viewer reaction value when available.

extra.is_eligible_for_brand_catalog (boolean, optional): Brand catalog eligibility flag.

extra.image_medium_url (string, optional): Additional medium image URL.

extra.is_playable (boolean, optional): Indicates whether the media is playable.

extra.comments_disabled (boolean, optional): Indicates whether comments are disabled.

extra.link_utm_applicable_and_replaced (integer, optional): Link tracking replacement indicator.

extra.shopping_rec_disabled (boolean, optional): Shopping recommendation disabled flag.

extra.is_eligible_for_pdp (boolean, optional): Product detail page eligibility flag.

extra.did_it_disabled (boolean, optional): Did-it feature disabled flag.

extra.is_viewer_restricted (boolean, optional): Viewer restriction flag.

extra.should_open_in_stream (boolean, optional): Display behavior flag.

extra.favorited_by_me (boolean, optional): Viewer relationship flag when available.

extra.is_hidden (boolean, optional): Hidden-state flag when available.

extra.type (string, optional): Nested record type label.

extra.is_native (boolean, optional): Native content flag.

extra.has_been_boost_promoted (boolean, optional): Boost promotion history flag.

extra.image_signature (string, optional): Image signature value.

extra.is_eligible_for_related_products (boolean, optional): Related products eligibility flag.

extra.closeup_unified_attribution.is_ads_only_profile (boolean, optional): Attribution profile flag.

extra.closeup_unified_attribution.explicitly_followed_by_me (boolean, optional): Viewer relationship flag when available.

extra.closeup_unified_attribution.followed_by_me (boolean, optional): Viewer relationship flag when available.

extra.closeup_unified_attribution.blocked_by_me (boolean, optional): Viewer relationship flag when available.

extra.closeup_unified_attribution.is_primary_website_verified (boolean, optional): Attribution website verification flag.

extra.closeup_unified_attribution.is_direct_to_site_allowed (boolean, optional): Direct-to-site availability flag.

extra.closeup_unified_attribution.id (string, optional): Attribution profile identifier.

extra.closeup_unified_attribution.image_small_url (string, optional): Small attribution profile image URL.

extra.closeup_unified_attribution.is_default_image (boolean, optional): Indicates whether the attribution profile uses a default image.

extra.closeup_unified_attribution.first_name (string, optional): Attribution first-name field when available.

extra.closeup_unified_attribution.full_name (string, optional): Attribution display name.

extra.closeup_unified_attribution.type (string, optional): Attribution type label.

extra.closeup_unified_attribution.username (string, optional): Attribution username.

extra.closeup_unified_attribution.domain_verified (boolean, optional): Attribution domain verification flag.

extra.closeup_unified_attribution.follower_count (integer, optional): Attribution follower count.

extra.closeup_unified_attribution.is_verified_merchant (boolean, optional): Attribution verified merchant flag.

extra.closeup_unified_attribution.indexed (boolean, optional): Indicates whether the attribution profile is indexed.

extra.closeup_unified_attribution.image_medium_url (string, optional): Medium attribution profile image URL.

extra.is_quick_promotable_by_pinner (boolean, optional): Quick promotion availability flag for the pinner.

extra.is_instagram_api (boolean, optional): Instagram-related source flag when available.

extra.is_eligible_for_pre_loved_goods_label (boolean, optional): Pre-loved goods label eligibility flag.

extra.top_interest (integer, optional): Top interest identifier.

extra.is_go_linkless (boolean, optional): Link behavior flag.

extra.privacy (string, optional): Privacy label.

extra.is_unsafe_for_comments (boolean, optional): Comment safety flag.

extra.is_active_ad (boolean, optional): Active ad flag.

extra.should_mute (boolean, optional): Mute behavior flag.

extra.is_oos_product (boolean, optional): Out-of-stock product flag.

extra.done_by_me (boolean, optional): Viewer done-state flag when available.

extra.is_quick_promotable (boolean, optional): Quick promotion eligibility flag.

Profile Record

type (string, required): Record type. Example: profile.

schema.version (integer, required): Output schema version for the record.

schema.entity_type (string, required): Entity type represented by the schema.

entity_type (string, required): Entity type for the record.

id (string, required): Stable Pinterest profile identifier. Recommended idempotency key.

url (string, required): Public Pinterest profile URL.

title (string, optional): Profile display title.

source_url (string, optional): Source URL associated with the collected record.

seed_type (string, optional): Type of input that produced the record, such as query.

seed_value (string, optional): Input value that produced the record.

profile.username (string, optional): Pinterest username.

profile.full_name (string, optional): Profile display name.

profile.follower_count (integer, optional): Public follower count when available.

profile.is_verified_merchant (boolean, optional): Verified merchant status when available.

profile.recent_pin_images (array of objects, optional): Recent public pin image previews associated with the profile.

profile.recent_pin_images.url (string, optional): Recent pin image URL.

profile.recent_pin_images.width / profile.recent_pin_images.height (integer, optional): Recent pin image dimensions in pixels.

profile.recent_pin_images.dominant_color (string, optional): Dominant image color in hex format.

media.avatar.medium (string, optional): Medium profile avatar image URL.

extra.entityId (string, optional): Additional profile entity identifier.

extra.explicitlyFollowedByMe (boolean, optional): Viewer relationship flag when available.

Data Quality, Guarantees, And Handling

  • Structured records: results are normalized into predictable JSON objects for downstream use.
  • Best-effort extraction: fields may vary by region, session, availability, and product experiments on Pinterest.
  • Optional fields: null-check optional fields in downstream code, especially nested profile, board, media, engagement, and enrichment attributes.
  • Deduplication: use id as the strongest stable key for pin and profile records; use url or source_url as secondary traceability fields when needed.
  • Freshness: results reflect the publicly available data at run time.
  • Repeated runs: use the recommended idempotency key when syncing data into warehouses, CRMs, or search indexes.

Tips For Best Results

  • Start with a small limit to validate the output shape before scaling up.
  • Use startUrls for known pins, boards, profiles, category pages, or search pages that require precise source control.
  • Use queries with a specific type when you need cleaner segmentation between pins, videos, boards, and profiles.
  • Leave analysis options disabled when you only need raw collection fields and faster review.
  • Enable content_analysis for topic classification workflows and sentinent_analysis when sentiment fields are useful for downstream scoring.
  • Schedule recurring runs for monitoring workflows instead of relying on manual one-off collection.
  • Use id for deduplication when storing Pinterest records over time.

How to Run on Apify

  1. Open the Actor in Apify Console.
  2. Configure the available input fields for the target scope.
  3. Set the maximum number of outputs to collect with limit.
  4. Click Start and wait for the run to finish.
  5. Download results in JSON, CSV, Excel, or other supported formats.

Scheduling & Automation

Scheduling

Automated Data Collection

Schedule runs to keep Pinterest datasets fresh for dashboards, monitoring, enrichment, and reporting. Use smaller, focused inputs for frequent monitoring and broader inputs for periodic discovery.

  • Navigate to Schedules in Apify Console
  • Create a new schedule, such as daily, weekly, or custom cron
  • Configure input parameters
  • Enable notifications for run completion
  • Add webhooks for automated processing

Integration Options

  • BI dashboards: monitor topic movement, engagement signals, creator activity, and visual category trends over time.
  • Data warehouses: store normalized pin, board, profile, and media records for historical analysis.
  • Webhooks: trigger validation, notification, or ingestion workflows after each completed run.
  • Data enrichment pipelines: append public Pinterest attributes to internal content, brand, creator, or trend datasets.
  • Google Sheets or Airtable: review samples, track curated lists, and support lightweight research operations.
  • API access: ingest JSON records into applications, internal services, or search indexes.

Export Formats And Downstream Use

Apify datasets can be exported or consumed by downstream systems depending on the needs of your workflow.

  • JSON: for APIs, applications, and data pipelines
  • CSV or Excel: for spreadsheet workflows and manual review
  • API access: for automated ingestion into internal systems
  • BI and warehouses: for reporting, dashboards, and historical analysis

Performance

Estimated run times:

  • Small runs (< 1,000 outputs): ~3-5 minutes
  • Medium runs (1,000-5,000 outputs): ~5-15 minutes
  • Large runs (5,000+ outputs): ~15-30 minutes

Execution time varies based on filters, result volume, and how much information is returned per record. Highly targeted runs can finish faster, while broad discovery or detail-rich records may take longer.

Limitations

  • Availability depends on what Pinterest publicly exposes at run time.
  • Some optional fields may be missing on sparse pins, boards, profiles, video pins, or search results.
  • Very broad searches may take longer or require higher limit values to collect enough coverage.
  • Target-side changes can affect field availability, naming, or completeness.
  • Regional, account, or availability differences may change visible results.
  • Engagement metrics and analysis fields should be treated as run-time observations, not permanent values.

Troubleshooting

No results returned: check keywords, direct URLs, selected result type, and whether the target has matching public records.

Fewer results than expected: broaden keywords, raise limit, choose a broader type, or verify that the target contains enough matching public records.

Some fields are empty: optional fields depend on what each record publicly provides.

Run takes longer than expected: reduce scope, lower limit for validation, or split broad collection into smaller segments.

Output changed: compare the current output with the field reference and report a small sample if support is needed.

FAQ

What data does this actor collect?

It collects public Pinterest data from search results, boards, profiles, individual pins, and video pins, including titles, descriptions, creator details, board references, media URLs, engagement metrics, and optional analysis fields.

Can I filter by location, category, date, price, or other criteria?

The supported input controls are direct URLs, keyword queries, search result type, result limit, optional sentiment analysis, optional content analysis, and connection configuration. Location, date, price, and sort filters are not separate input fields in the provided schema.

Why did I receive fewer results than my limit?

The limit is a maximum, not a guarantee. A run may return fewer records if the target scope contains fewer matching public results or if selected inputs are narrow.

Can I schedule recurring runs?

Yes. Use Apify schedules to run the actor daily, weekly, or with a custom cron expression for monitoring and reporting workflows.

How do I avoid duplicates across runs?

Use the id field as the primary idempotency key for pin and profile records. Store url or source_url as supporting fields for traceability.

Can I export the data to CSV, Excel, or JSON?

Yes. Apify datasets support exports in JSON, CSV, Excel, and other formats available through Apify.

Does this actor collect private data?

No. The actor is intended for publicly available Pinterest information visible at run time.

When should I enable content or sentiment analysis?

Enable content_analysis when you need category labels and confidence fields for pins or video pins. Enable sentinent_analysis when sentiment scoring is useful for downstream ranking, reporting, or review.

What should I include when reporting an issue?

Include the input used with sensitive values redacted, the run ID, expected versus actual behavior, and a small output sample if available.

Compliance & Ethics

Responsible Data Collection

This actor collects publicly available Pinterest content, creator, board, pin, video pin, media, and engagement information from https://www.pinterest.com for legitimate business purposes, including:

  • Content and trend research for market analysis
  • Brand, category, and competitive monitoring
  • Creator discovery, enrichment, and operational reporting

Users are responsible for ensuring that their use of collected data complies with applicable laws, regulations, platform terms, and internal policies. This section is informational and not legal advice.

Best Practices

  • Use collected data in accordance with applicable laws, regulations, and the target site's terms
  • Respect individual privacy and personal information
  • Use data responsibly and avoid disruptive or excessive collection
  • Do not use this actor for spamming, harassment, or other harmful purposes
  • Follow relevant data protection requirements where applicable, including GDPR and CCPA

Support

For help, use the actor page or Issues section. Include the input used with sensitive values redacted, the run ID, expected versus actual behavior, and a small output sample when it helps illustrate the issue.