Vexaloom Labs

Pinterest Trending Topics & Shopping Category Scraper

Collect Pinterest's public featured and editorial trend topics, its shopping category taxonomy, and shopping-category click metrics with history and forecast, by region.

Input schema

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

FieldTypeRequiredDescription
modestringrequiredChoose a Pinterest Trends dataset.
regionstringoptionalPinterest Trends market. Combined codes such as `GB+IE` cover Pinterest's published regional groups.
trendTypestringoptionalTrending list to collect (mode=trendingSearches).
Show all input fields
FieldTypeRequiredDescription
modestringrequiredChoose a Pinterest Trends dataset.
regionstringoptionalPinterest Trends market. Combined codes such as `GB+IE` cover Pinterest's published regional groups.
trendTypestringoptionalTrending list to collect (mode=trendingSearches).
lookbackWindowstringoptionalComparison window used by Pinterest for trending searches (mode=trendingSearches).
endDatestringoptionalHistorical end date in `YYYY-MM-DD` format. Leave empty for Pinterest's latest available date (mode=trendingSearches, keywordResearch, shoppingCategories, shoppingMetrics).
intereststringoptionalPinterest interest filter for trending searches (mode=trendingSearches).
momentstringoptionalPinterest seasonal moment filter for trending searches (mode=trendingSearches).
keywordsToIncludearrayoptionalOnly keep trending searches containing at least one of these words (mode=trendingSearches).
keywordsToExcludearrayoptionalDrop trending searches containing any of these words (mode=trendingSearches).
ageGroupstringoptionalPinterest audience age filter for trending searches and keyword research.
genderstringoptionalPinterest audience gender filter for trending searches and keyword research.
keywordsarrayoptionalTerms to research (mode=keywordResearch). Leave empty to use Pinterest's current top trending searches.
daysintegeroptionalHistory length in days for keyword research and shopping metrics.
predictedDaysintegeroptionalPinterest forecast horizon. Forecasts are published for the US only (mode=keywordResearch, shoppingMetrics).
includeRelatedbooleanoptionalAdd Pinterest's related terms and their weekly history for each keyword (mode=keywordResearch).
includeAudiencebooleanoptionalAdd age and gender distributions for each keyword (mode=keywordResearch).
includeImagesbooleanoptionalAdd a representative Pinterest image for each keyword (mode=keywordResearch).
includeSuggestionsbooleanoptionalAdd Pinterest search suggestions for each keyword (mode=keywordResearch).
shoppingEventstringoptionalPinterest shopping signal used for category metrics and ranked shopping trends.
includeTopCategoriesbooleanoptionalAdd Pinterest's fastest-growing shopping categories with related searches (mode=shoppingCategories).
categoryNamesarrayoptionalExact Pinterest shopping category names for metrics, such as `Sofas` or `Wedding dress` (mode=shoppingMetrics). Leave empty to use Pinterest's featured level-2 categories.
maxItemsintegeroptionalMaximum records to return. Trending lists are partitioned by interest to go beyond Pinterest's 100-term list ceiling.

Download the published input schema

View complete JSON
{
  "description": "Collect public Pinterest trending searches, keyword history and supporting trend content by market.",
  "properties": {
    "ageGroup": {
      "default": "all",
      "description": "Pinterest audience age filter for trending searches and keyword research.",
      "editor": "select",
      "enum": [
        "all",
        "18-20",
        "18-24",
        "21-24",
        "25-34",
        "35-44",
        "45-49",
        "50-54",
        "55-64",
        "65+"
      ],
      "enumTitles": [
        "All ages",
        "18-20",
        "18-24",
        "21-24",
        "25-34",
        "35-44",
        "45-49",
        "50-54",
        "55-64",
        "65+"
      ],
      "prefill": "all",
      "title": "Audience age",
      "type": "string"
    },
    "categoryNames": {
      "default": [],
      "description": "Exact Pinterest shopping category names for metrics, such as `Sofas` or `Wedding dress` (mode=shoppingMetrics). Leave empty to use Pinterest's featured level-2 categories.",
      "editor": "stringList",
      "prefill": [],
      "title": "Shopping category names",
      "type": "array"
    },
    "days": {
      "default": 90,
      "description": "History length in days for keyword research and shopping metrics.",
      "maximum": 730,
      "minimum": 30,
      "prefill": 90,
      "title": "History window",
      "type": "integer"
    },
    "endDate": {
      "description": "Historical end date in `YYYY-MM-DD` format. Leave empty for Pinterest's latest available date (mode=trendingSearches, keywordResearch, shoppingCategories, shoppingMetrics).",
      "editor": "textfield",
      "title": "End date",
      "type": "string"
    },
    "gender": {
      "default": "all",
      "description": "Pinterest audience gender filter for trending searches and keyword research.",
      "editor": "select",
      "enum": [
        "all",
        "female",
        "male",
        "unspecified"
      ],
      "enumTitles": [
        "All genders",
        "Female",
        "Male",
        "Unspecified"
      ],
      "prefill": "all",
      "title": "Audience gender",
      "type": "string"
    },
    "includeAudience": {
      "default": false,
      "description": "Add age and gender distributions for each keyword (mode=keywordResearch).",
      "prefill": false,
      "title": "Include audience demographics",
      "type": "boolean"
    },
    "includeImages": {
      "default": false,
      "description": "Add a representative Pinterest image for each keyword (mode=keywordResearch).",
      "prefill": false,
      "title": "Include images",
      "type": "boolean"
    },
    "includeRelated": {
      "default": false,
      "description": "Add Pinterest's related terms and their weekly history for each keyword (mode=keywordResearch).",
      "prefill": false,
      "title": "Include related terms",
      "type": "boolean"
    },
    "includeSuggestions": {
      "default": false,
      "description": "Add Pinterest search suggestions for each keyword (mode=keywordResearch).",
      "prefill": false,
      "title": "Include search suggestions",
      "type": "boolean"
    },
    "includeTopCategories": {
      "default": false,
      "description": "Add Pinterest's fastest-growing shopping categories with related searches (mode=shoppingCategories).",
      "prefill": false,
      "title": "Include ranked shopping categories",
      "type": "boolean"
    },
    "interest": {
      "default": "all",
      "description": "Pinterest interest filter for trending searches (mode=trendingSearches).",
      "editor": "select",
      "enum": [
        "all",
        "Food and drinks",
        "Beauty",
        "Home decor",
        "Fashion",
        "Men's fashion",
        "Children's fashion",
        "Travel",
        "Art",
        "Quotes",
        "Entertainment",
        "DIY and crafts",
        "Health",
        "Wedding",
        "Event planning",
        "Gardening",
        "Animals",
        "Parenting",
        "Education",
        "Vehicles",
        "Design",
        "Sport",
        "Electronics",
        "Finance",
        "Architecture"
      ],
      "enumTitles": [
        "All interests",
        "Food and drinks",
        "Beauty",
        "Home decor",
        "Fashion",
        "Men's fashion",
        "Children's fashion",
        "Travel",
        "Art",
        "Quotes",
        "Entertainment",
        "DIY and crafts",
        "Health",
        "Wedding",
        "Event planning",
        "Gardening",
        "Animals",
        "Parenting",
        "Education",
        "Vehicles",
        "Design",
        "Sport",
        "Electronics",
        "Finance",
        "Architecture"
      ],
      "prefill": "all",
      "title": "Interest category",
      "type": "string"
    },
    "keywords": {
      "default": [],
      "description": "Terms to research (mode=keywordResearch). Leave empty to use Pinterest's current top trending searches.",
      "editor": "stringList",
      "prefill": [],
      "title": "Keywords",
      "type": "array"
    },
    "keywordsToExclude": {
      "default": [],
      "description": "Drop trending searches containing any of these words (mode=trendingSearches).",
      "editor": "stringList",
      "prefill": [],
      "title": "Exclude keywords",
      "type": "array"
    },
    "keywordsToInclude": {
      "default": [],
      "description": "Only keep trending searches containing at least one of these words (mode=trendingSearches).",
      "editor": "stringList",
      "prefill": [],
      "title": "Include keywords",
      "type": "array"
    },
    "lookbackWindow": {
      "default": "30D",
      "description": "Comparison window used by Pinterest for trending searches (mode=trendingSearches).",
      "editor": "select",
      "enum": [
        "7D",
        "30D",
        "90D",
        "180D",
        "365D"
      ],
      "enumTitles": [
        "7 days",
        "30 days",
        "90 days",
        "180 days",
        "365 days"
      ],
      "prefill": "30D",
      "title": "Lookback window",
      "type": "string"
    },
    "maxItems": {
      "default": 100,
      "description": "Maximum records to return. Trending lists are partitioned by interest to go beyond Pinterest's 100-term list ceiling.",
      "maximum": 10000,
      "minimum": 1,
      "prefill": 3,
      "title": "Maximum records",
      "type": "integer"
    },
    "mode": {
      "default": "trendingSearches",
      "description": "Choose a Pinterest Trends dataset.",
      "editor": "select",
      "enum": [
        "trendingSearches",
        "keywordResearch",
        "featuredTopics",
        "editorialStories",
        "shoppingCategories",
        "shoppingMetrics",
        "moments",
        "featured",
        "editorial"
      ],
      "enumTitles": [
        "Trending searches",
        "Keyword research",
        "Featured topics",
        "Editorial stories",
        "Shopping categories",
        "Shopping category metrics",
        "Seasonal moments",
        "Featured topics (legacy, mapped)",
        "Editorial stories (legacy, mapped)"
      ],
      "prefill": "trendingSearches",
      "title": "What to collect",
      "type": "string"
    },
    "moment": {
      "default": "all",
      "description": "Pinterest seasonal moment filter for trending searches (mode=trendingSearches).",
      "editor": "select",
      "enum": [
        "all",
        "thanksgiving",
        "valentines day",
        "independence day",
        "memorial day",
        "fathers day",
        "hanukkah",
        "new years eve",
        "easter",
        "st patricks day",
        "summer",
        "christmas",
        "mothers day",
        "halloween"
      ],
      "enumTitles": [
        "All moments",
        "Thanksgiving",
        "Valentine's Day",
        "Independence Day",
        "Memorial Day",
        "Father's Day",
        "Hanukkah",
        "New Year's Eve",
        "Easter",
        "St Patrick's Day",
        "Summer",
        "Christmas",
        "Mother's Day",
        "Halloween"
      ],
      "prefill": "all",
      "title": "Seasonal moment",
      "type": "string"
    },
    "predictedDays": {
      "default": 0,
      "description": "Pinterest forecast horizon. Forecasts are published for the US only (mode=keywordResearch, shoppingMetrics).",
      "maximum": 28,
      "minimum": 0,
      "prefill": 0,
      "title": "Forecast days",
      "type": "integer"
    },
    "region": {
      "default": "US",
      "description": "Pinterest Trends market. Combined codes such as `GB+IE` cover Pinterest's published regional groups.",
      "editor": "select",
      "enum": [
        "US",
        "GB+IE",
        "CA",
        "IT+ES+PT+GR+MT",
        "IT",
        "ES",
        "DE+AT+CH",
        "DE",
        "FR",
        "SE+DK+FI+NO",
        "NL+BE+LU",
        "PL+RO+HU+SK+CZ",
        "MX+AR+CO+CL",
        "CO",
        "AR",
        "MX",
        "BR",
        "AU+NZ",
        "MY",
        "PH",
        "TH",
        "EG",
        "TR",
        "KR",
        "CR+DO+EC+GT+PE",
        "CY+CZ+GR+HU+MT+PL+RO+SK"
      ],
      "enumTitles": [
        "United States",
        "Great Britain + Ireland",
        "Canada",
        "Italy, Spain, Portugal, Greece + Malta",
        "Italy",
        "Spain",
        "Germany, Austria + Switzerland",
        "Germany",
        "France",
        "Sweden, Denmark, Finland + Norway",
        "Netherlands, Belgium + Luxembourg",
        "Poland, Romania, Hungary, Slovakia + Czechia",
        "Mexico, Argentina, Colombia + Chile",
        "Colombia",
        "Argentina",
        "Mexico",
        "Brazil",
        "Australia + New Zealand",
        "Malaysia",
        "Philippines",
        "Thailand",
        "Egypt",
        "Türkiye",
        "South Korea",
        "Costa Rica, Dominican Republic, Ecuador, Guatemala + Peru",
        "Cyprus, Czechia, Greece, Hungary, Malta, Poland, Romania + Slovakia"
      ],
      "prefill": "US",
      "title": "Region",
      "type": "string"
    },
    "shoppingEvent": {
      "default": "OUTBOUND_CLICK",
      "description": "Pinterest shopping signal used for category metrics and ranked shopping trends.",
      "editor": "select",
      "enum": [
        "OUTBOUND_CLICK",
        "SAVE"
      ],
      "enumTitles": [
        "Outbound clicks",
        "Saves"
      ],
      "prefill": "OUTBOUND_CLICK",
      "title": "Shopping signal",
      "type": "string"
    },
    "trendType": {
      "default": "topMonthly",
      "description": "Trending list to collect (mode=trendingSearches).",
      "editor": "select",
      "enum": [
        "topMonthly",
        "topYearly",
        "growing",
        "seasonal"
      ],
      "enumTitles": [
        "Top monthly searches",
        "Top yearly searches",
        "Fast-growing searches",
        "Seasonal searches"
      ],
      "prefill": "topMonthly",
      "title": "Trend list",
      "type": "string"
    }
  },
  "required": [
    "mode"
  ],
  "schemaVersion": 1,
  "title": "Pinterest Trends 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
trendsstringoptionalDataset containing Pinterest Trends records.

Download the published output schema

View complete JSON
{
  "actorOutputSchemaVersion": 1,
  "description": "Public Pinterest trending searches, keyword history and forecasts, related terms, audience demographics, images, suggestions, seasonal moments, featured topics, editorial stories and shopping trends.",
  "properties": {
    "trends": {
      "description": "Dataset containing Pinterest Trends records.",
      "template": "{{links.apiDefaultDatasetUrl}}/items",
      "title": "Pinterest trends",
      "type": "string"
    }
  },
  "title": "Pinterest Search Demand & Keyword Insights 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": {
    "overview": {
      "display": {
        "component": "table",
        "properties": {}
      },
      "title": "Pinterest trends",
      "transformation": {
        "fields": [
          "recordType",
          "term",
          "title",
          "name",
          "region",
          "trendType",
          "rank",
          "weekOverWeekChange",
          "sourceUrl"
        ]
      }
    }
  }
}

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 Search Demand & Keyword Insights

Pinterest publishes a public Trends site with ranked search terms, interest-over-time charts, related queries, audience distributions, seasonal moments, editorial stories and shopping signals. This actor reads those first-party public endpoints and returns the published values without estimating search volume or inventing forecasts.

What it does

  • Seven modes: trending searches, keyword research, featured topics, editorial stories, shopping categories, shopping metrics and seasonal moments.
  • 26 markets: the regional codes Pinterest exposes, including combined groups such as GB+IE, DE+AT+CH and SE+DK+FI+NO.
  • Four trend lists: top monthly, top yearly, growing and seasonal searches.
  • Filters: interest category, lookback window, historical end date, audience age, gender, keyword include/exclude and seasonal moment.
  • Keyword research: weekly interest history from 30 to 730 days, US forecasts, related terms, audience demographics, representative images and search suggestions.
  • Partitioned volume: trending lists are split by interest and trend type, so a run can collect thousands of unique terms per market instead of stopping at Pinterest's 100-term list ceiling.
  • Additive output: every record carries recordType, the market and a source URL. Existing featured, editorial and shopping fields keep their original names.

Services

Mode What you get Markets
trendingSearches Ranked search terms with relative search index, normalized index, week/month/year change, seasonality score and breakout flag. 26
keywordResearch One row per keyword with weekly history, latest/peak/average counts, changes, forecast flag and optional related terms, audience, image and suggestions. 26 (forecasts US only)
featuredTopics Pinterest's featured topic cards with descriptions, related searches and example pins. US, GB+IE, CA
editorialStories Editorial trend stories with body copy, regions, keywords by region and example pins. US, GB+IE, CA
shoppingCategories Pinterest's full shopping category taxonomy; optionally ranked shoppingTrend rows with related searches and click/save/engagement summaries. US, GB+IE, CA
shoppingMetrics Time series and growth rates for named shopping categories. US, GB+IE, CA
moments Seasonal moments with peak date, takeoff date and peak length. Available Pinterest markets

How it works

The actor calls Pinterest's public Trends JSON endpoints directly. It resolves the latest available date from Pinterest's own latest_available_date endpoint, so historical windows are aligned with the week Pinterest actually publishes instead of an estimated date. Trending queries are partitioned by trend type and interest and deduplicated by term and market. Keyword requests are batched in groups of 100 terms, demographics in groups of 100 and images in groups of 30.

No account, cookies, API key or proxy configuration is required. The actor uses only the anonymous public session that Pinterest issues for image lookup. If Pinterest temporarily rate-limits a request, the actor retries with backoff and can switch to an alternate HTTP route automatically. Individual failed partitions are skipped and reported in the run status instead of failing the whole run.

Input

Field Type Default Applies to Notes
mode select trendingSearches all Seven modes listed above.
region select US all 26 Pinterest markets.
trendType select topMonthly trendingSearches topMonthly, topYearly, growing or seasonal.
lookbackWindow select 30D trendingSearches 7D, 30D, 90D, 180D or 365D.
endDate text – trendingSearches, keywordResearch, shoppingCategories, shoppingMetrics YYYY-MM-DD; leave empty for Pinterest's latest week.
interest select all trendingSearches 24 Pinterest interest categories plus all.
moment select all trendingSearches 13 seasonal moment slugs plus all.
keywordsToInclude list empty trendingSearches Keep terms containing at least one word.
keywordsToExclude list empty trendingSearches Drop terms containing any word.
ageGroup select all trendingSearches, keywordResearch Nine Pinterest age buckets.
gender select all trendingSearches, keywordResearch Female, male, unspecified or all.
keywords list empty keywordResearch Empty uses Pinterest's current top terms.
days integer 90 keywordResearch, shoppingMetrics 30–730 days; values are clamped to that range.
predictedDays integer 0 keywordResearch, shoppingMetrics 0, 14 or 28 days; other values fall back to 0. US forecasts only.
includeRelated boolean false keywordResearch One extra request per keyword.
includeAudience boolean false keywordResearch Age and gender distributions.
includeImages boolean false keywordResearch One representative image per keyword.
includeSuggestions boolean false keywordResearch Pinterest search suggestions per keyword.
shoppingEvent select OUTBOUND_CLICK shoppingCategories, shoppingMetrics Outbound clicks or saves.
includeTopCategories boolean false shoppingCategories Adds ranked shoppingTrend rows.
categoryNames list empty shoppingMetrics Exact Pinterest category names; empty uses featured level-2 categories.
maxItems integer 100 all 1 to 10,000 records.

Legacy task inputs are still accepted in code: mode=featured maps to featuredTopics, mode=editorial maps to editorialStories, and event maps to shoppingEvent. Removed keys cookies, cookiesJson and proxyConfiguration are ignored with a status warning.

Output

Every record includes recordType and sourceUrl. Missing values are omitted at every depth; published zeroes and false values are preserved.

trend

term, region, trendType, rank, searchCount, normalizedCount, weekOverWeekChange, monthOverMonthChange, yearOverYearChange, seasonalityScore, isBreakout, interestIds, endDate, trendsUrl, pinterestSearchUrl, sourceUrl.

Changes are percentages derived from Pinterest's published ratios. Pinterest caps changes at 100.01; those rows carry isBreakout: true.

keyword

term, region, periodStart, periodEnd, days, aggregation, timeSeries[], latestCount, peakCount, peakDate, averageCount, weekOverWeekChange, monthOverMonthChange, yearOverYearChange, hasPrediction, optional relatedTerms[], audience{}, imageUrl, suggestions[], trendsUrl, sourceUrl.

latestCount, peakCount, peakDate, averageCount and periodStart/periodEnd are computed from the observed history only; Pinterest's forecast points remain in timeSeries with their predicted bounds. Each timeSeries point can contain date, count, normalizedCount, predictedLowerBound and predictedUpperBound. Related terms contain term, counts[] and hasPrediction. Audience contains genderDistribution and ageDistribution. Suggestions contain query and url.

shoppingTrend

categoryId, name, region, rank, parentCategoryIds[], relatedSearches[], outboundClicks{}, saves{}, engagement{}, endDate, sourceUrl. Each summary contains total, percentGrowth, percentRelativeVolume and lookback.

moment

name, region, peakDate, takeoffDate, peakLengthDays, sourceUrl.

Legacy records

  • trendFeatured: trendId, name, description, region, isPublished, growthPercentMonth, interestIds, relatedSearches, examplePins[], timeSeries[], sourceUrl.
  • trendEditorial: trendId, title, body, trendType, region, regions, interestIds, keywordsByRegion, startDate, endDate, isPublished, isReadyForTranslation, examplePins[], sourceUrl.
  • shoppingCategory: categoryId, name, level, parentCategoryId, childCategoryIds[], sourceUrl.
  • shoppingMetric: categoryId, name, region, event, dailyValues[], growthRates, endDate, sourceUrl.

Usage cost

Apify usage is charged for compute time, dataset storage and any automatically selected proxy traffic. A typical trending run uses a small number of JSON requests per market; keyword research costs one request per 100 keywords plus one request per enabled enrichment and keyword. Large partitioned sweeps over many markets cost proportionally more. Set maxItems and leave optional enrichments off when you only need a quick sample.

FAQ

What does the 0–100 index mean?

Pinterest publishes a relative index, not absolute search volume. searchCount and normalizedCount are Pinterest's own 0–100 scale for the selected market and period. The actor does not convert them into estimated monthly searches.

Why do forecasts only appear for the US?

Pinterest currently publishes forecast bounds only for the US market. For other markets the actor returns real history and sets or omits hasPrediction according to the source; it never invents a forecast.

Why does one trend list stop at 100 terms?

A single Pinterest list returns at most 100 terms. The actor partitions top monthly, top yearly, growing and seasonal lists by interest category, then removes duplicates, so multiple partitions can return several thousand unique terms for one market.

Can I request a historical week?

Yes. Set endDate to a YYYY-MM-DD value. Pinterest returns its nearest available week, and the actor reports the date Pinterest returned in each record. Leave endDate empty to use the latest published week.

Why did my shopping category return no rows?

Category names must match Pinterest's taxonomy exactly, ignoring case. If none match, the actor reports a warning instead of silently substituting unrelated categories. Call shoppingCategories first to see valid names.

Does this actor need a Pinterest account?

No. It reads public Pinterest Trends data without a login, cookies, API key or proxy setup. The anonymous session is used only to request public term images.

Notes

  • Pinterest's combined market codes are preserved exactly as published, for example GB+IE and DE+AT+CH.
  • Editorial stories and shopping taxonomy are published for US, GB+IE and CA only. Other markets return a status warning for those modes.
  • Related terms are unavailable for the combined DE+AT+CH market; keyword research still returns history and other enrichments there.
  • The actor reports partial failures in the run status message and keeps any records that were successfully collected.
  • No cookies, login or proxy configuration are required.
  • Output is written to a single dataset; use the recordType field to separate record families.

Limitations

  • Pinterest does not publish absolute search volume, private account analytics or ad performance data through these public endpoints.
  • Forecast coverage is partial even inside the US: some terms have no prediction bounds. The actor reports the source's hasPrediction value and omits empty bounds.
  • A single Pinterest list is capped at 100 terms. Higher totals depend on partitioning across interests and trend types; highly overlapping partitions can yield fewer unique terms than the sum of their caps.
  • Shopping taxonomy and ranked shopping categories are limited to US, GB+IE and CA.
  • Related terms are omitted for keywords without Pinterest trend history, because the source returns unrelated popular terms for unknown seeds.
  • Search suggestions are not market-scoped by Pinterest; they reflect Pinterest's global search autocomplete.
  • Undocumented Pinterest endpoints can change without notice. The actor treats unexpected shapes as empty results and reports them rather than fabricating values.

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 LAKEQaRBcKlEf3ayl. Documentation is regenerated from the default published build; private drafts are not included.