# Pinterest Trends Scraper & API - Keyword Research, Trending (`akhil_rajesh/pinterest-trends-scraper`) Actor

Pinterest Trends scraper and API, no login: Pinterest keyword research with weekly interest, forecast and audience, the fastest-growing, top monthly, top yearly and seasonal searches by interest, age and gender, shopping trends and moments in 31 regions. Trend monitor with Slack alerts. MCP server.

- **URL**: https://apify.com/akhil_rajesh/pinterest-trends-scraper.md
- **Developed by:** [Akhil rajesh](https://apify.com/akhil_rajesh) (community)
- **Categories:** Social media, Marketing, E-commerce
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.40 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Pinterest Trends Scraper & API - Keyword Research, Trending

Scrape **Pinterest Trends** without a login or an API key: keyword research, the four search lists of Pinterest's Trends tool with its own filters, and the five lists its home page shows, for **31 regions**.

- **Keyword research**: up to two years of weekly search interest for any keyword, with its peak, growth and direction (`rising`, `falling`, `steady`, `new`, `past peak`), weekly, monthly and yearly change, **Pinterest's 13-week forecast** (United States), **who searches for it** by age and gender, and its related searches. Compare up to 20 keywords on one scale.
- **Search lists**: the **fastest-growing, top monthly, top yearly and seasonal searches**, up to 100 each, with their search volume, weekly, monthly and yearly change, a weekly curve and an image.
- **Pinterest's own filters**: interests (Home Decor, Beauty, Food and Drinks...), **age groups, genders**, seasonal moments (Christmas, Halloween, each region's own), **the lists as they stood on a past date** (up to a year back), and the run's own sort and minimum growth.
- **The home page's lists**: trends in the spotlight with example pins, **shopping trends** with clicks to shops week by week and Pinterest's forecast, editors' picks, and **seasonal moments** with Pinterest's phase (approaching, rising, peak, past peak) and dates.

It is also a **Pinterest trend monitor**. Schedule it with **Only changes** and each run returns only what is new since the last one: **new searches on Pinterest's lists, moments taking off and keywords changing direction**, posted to **Slack, Discord, Telegram or Microsoft Teams** if you like.

**$1.00 per 1,000 list rows and $2.50 per 1,000 keywords on Apify's free plan, with platform usage included.**

### Example: Pinterest keyword research

```json
{"keywords": ["fall nails", "matcha"], "pinterestRegions": ["US", "CA"], "keywordHistoryDays": "180"}
```

4 keyword rows, about $0.01 on Apify's free plan, in about 15 seconds (2026-11-06, Pinterest's data to 2 November):

| Keyword | Region | Direction | Latest (0-100) | Peak | Last 3 weeks vs the 3 before | Forecast for 9 Nov | Searchers |
|---|---|---|---|---|---|---|---|
| fall nails | United States | past peak | 57 | 85 on 28 Sep | -20.5% | 72 (52-100) | 91% female, 75% aged 18-34 |
| fall nails | Canada | past peak | 28 | 100 on 28 Sep | -50.6% | | 93% female, 78% aged 18-34 |
| matcha | United States | steady | 64 | 100 on 24 Aug | -11.7% | | 86% female, 86% aged 18-34 |
| matcha | Canada | falling | 55 | 100 on 21 Sep | -22.8% | | 87% female, 85% aged 18-34 |

Pinterest relates "fall nail inspo 2026", "autumn nails 2026" and "thanksgiving nails" to fall nails, and "matcha drink" and "matcha latte" to matcha. Its forecast covers the United States only, and only some keywords: on 6 November 2026 "fall nails" and "christmas nails" came with 13 forecast weeks, "matcha", "wallpaper", "dinner ideas" and "valentines day nails" with none.

### Example: what grew in Home Decor for 25 to 34-year-olds

```json
{"pinterestRegions": ["US"], "pinterestLists": ["topMonthly"], "interests": ["Home decor"], "ageGroups": ["25-34"],
 "genders": ["female", "male"], "endDate": "2026-08-14", "sortBy": "yearlyChange", "resultsPerList": 10}
```

Pinterest's top monthly Home Decor searches for 25 to 34-year-olds in the United States in the week to 14 August 2026, sorted by yearly change (the first 5 of the run's 10):

| Search | Year over year | Month over month | Pinterest's rank |
|---|---|---|---|
| kitchen decor ideas | +600% | +80% | 29 |
| dark feminine bedroom | +500% | +20% | 20 |
| bedroom decor ideas | +400% | +30% | 6 |
| living room decor ideas | +400% | +50% | 7 |
| bathroom aesthetic | +400% | +20% | 23 |

Leave the filters out and the same list for everyone that week starts with nails, hairstyles and wallpaper.

### Example: what is growing on Pinterest in the United States

```json
{"pinterestRegions": ["US"]}
```

The home page's five lists: 53 rows, about $0.05 on Apify's free plan, in about 40 seconds. The fastest-growing searches from a run on 2026-11-05:

| # | Search | Week over week | Year over year | Last 4 weeks (0-100) |
|---|---|---|---|---|
| 1 | november blessings | +9,000% | +40% | 0, 0, 1, 100 |
| 2 | beaded tinsel | -6% | Breakout | 0, 0, 100, 94 |
| 3 | happy november | Breakout | +40% | 0, 0, 1, 100 |
| 4 | pumkin carvings ideas | +20% | +1,000% | 14, 37, 82, 100 |
| 5 | november nails ideas 2026 | +400% | Breakout | 0, 2, 22, 100 |

The same run's moments: Thanksgiving, Christmas and Hanukkah `rising` (Thanksgiving's searches took off on 2026-10-26 and peak around 2026-11-23, three days before the holiday), New Year's Eve and Valentine's Day `approaching`, Halloween `past peak`.

### Why this scraper

- **Keyword research and the lists in one Actor.** Most Pinterest Trends scrapers read the search lists or look up keywords. This one does both, plus the home page's spotlight, shopping trends, editors' picks and moments.
- **Who searches, not only how much.** Each keyword comes with Pinterest's split of its searchers by age and gender, and every search list can be read for an age group, a gender or an interest.
- **A direction you can act on.** Each keyword says whether it is `rising`, `falling`, `steady`, `new` or `past peak`, built so that a season seen from its start doesn't read as rising once it has turned (see [Reading the numbers](#reading-the-numbers)).
- **Pinterest's own figures.** Its percentages, its breakout marks where a change is too big to show, its seasonality score, its forecast with low and high bounds, and its own phase for each moment.
- **It tracks, not just lists.** With Only changes it keeps a history per list and keyword, and returns only the searches that weren't there before, each moment once when Pinterest moves it to rising or peak, and each keyword whose direction changed.
- **No login, no API key, no browser.** It reads the data calls of Pinterest Trends' own pages, at a pace the site answers without refusing.
- **Switch without rewriting your input.** An input written for another Pinterest Trends Actor runs as it is: `countries`, `trendTypes`, `keywordsToInclude`, `interestIds`, `ageGroups`, `rankingMethod`, `keywords` and the rest are read as that Actor means them (see [Switching from another Pinterest Trends Actor](#switching-from-another-pinterest-trends-actor)).
- **A Pinterest Trends API and MCP server for AI agents.** The same data answers live: an MCP server that Claude, Cursor or any MCP client calls directly, and an HTTP endpoint.
- **Honest numbers.** Something that didn't load is named in the row (`notLoaded`) and in the run's status, never filled with zeros. A keyword Pinterest has no searches for is a free row that says so.

| | Typical Pinterest Trends scrapers | This Actor |
|---|---|---|
| Fastest-growing, top monthly, top yearly and seasonal searches, up to 100 each | Yes | Yes, with a weekly curve and an image |
| Interest, age and gender filters | Some | Yes |
| Seasonal searches for a moment | Rare | Yes, with each region's own moments |
| The lists as of a past date | Some | Yes, up to a year back |
| Keyword research (weekly interest up to two years) | Some | Yes, with direction, peak and growth |
| Pinterest's forecast | Rare | 13 weeks (United States) |
| Searchers by age and gender | Rare | Yes |
| Keywords compared on one scale | Rare | Up to 20 |
| Trends in the spotlight, shopping trends, editors' picks, moments | Rare | Yes |
| Regions | Up to 26 | 31, five beyond Pinterest's own menu |
| New searches and direction changes since the last run | Rare | Built in (Only changes) |
| Alerts to Slack, Discord, Telegram, Teams | Rare | Yes |
| MCP server and live API for AI agents | Rare | Yes |

### Use cases

- **Pinterest SEO and keyword research**: which wording people search for, whether it is still growing, when it peaks, and who searches for it, before you title a pin or a product.
- **Content calendars**: what people start searching for weeks before an event, with the week searches take off and peak, and the seasonal searches for each moment.
- **E-commerce and merchandising**: which product categories are getting more clicks to shops, Pinterest's forecast for the next weeks, and the top searches in your interest for your customers' age group.
- **Social media and creators**: new search terms worth a pin, a post or a video, with an image of each.
- **Trend monitoring**: a weekly schedule that posts each new fastest-growing search in your region, and each of your keywords that turns, to Slack.
- **Market research across countries**: the same lists and keywords for the US, Brazil, Germany, Japan, India or the Middle East, side by side.

### How to use it in 3 steps

1. Type **Keywords** to research, and/or pick **Lists**, **Regions** (`US`, `GB+IE`, `Germany`...) and any filters.
2. Run it.
3. To follow trends over time, switch on **Only changes since the last run**, add an alert if you want one, and schedule it.

### What you get

#### Keyword rows

One row per keyword and region (`type: "keyword"`). A real row, shortened:

```json
{
    "type": "keyword",
    "region": "US",
    "regionName": "United States",
    "keyword": "fall nails",
    "hasData": true,
    "weeklyChangePercent": -10,
    "monthlyChangePercent": -10,
    "averageInterest": 28.2,
    "latestInterest": 57,
    "peakInterest": 85,
    "peakDate": "2026-09-28",
    "recentChangePercent": -20.5,
    "trendDirection": "past peak",
    "periodDays": 180,
    "dataEndDate": "2026-11-02",
    "weeklyInterest": [{"date": "2026-10-19", "value": 69}, {"date": "2026-10-26", "value": 64},
                       {"date": "2026-11-02", "value": 57}],
    "forecast": [{"date": "2026-11-09", "value": 72, "low": 52, "high": 100},
                 {"date": "2026-11-16", "value": 63, "low": 43, "high": 93}],
    "audienceAgePercent": {"18-24": 38, "25-34": 37, "35-44": 16, "45-49": 4, "50-54": 4, "55-64": 4, "65+": 4},
    "audienceGenderPercent": {"female": 91, "male": 4, "unspecified": 8},
    "relatedTerms": ["fall nail inspo 2026", "autumn nails 2026", "thanksgiving nails", "nails", "nails autumn 2026"],
    "pinterestLink": "https://trends.pinterest.com/search/?terms=fall%20nails&country=US"
}
```

`weeklyInterest` holds every week of the history you picked (90, 180, 365 or 730 days) on Pinterest's 0-100 scale, the keyword's own unless you compare. `forecast` continues it with Pinterest's prediction and its range. With **Compare the keywords** on, the keywords share Pinterest's own joint scale and each row names the others in `comparedWith`: over two years, for 18 to 24-year-olds in the United States, "fall nails" averaged 18.3 and matcha 1.2 (each alone has its own 0-100 curve). Read for some ages or genders only, a row says so in `audienceFilter`.

#### Search list rows

One row per search (`type: "pinterest"`, `list` one of `searchTrends`, `topMonthly`, `topYearly`, `seasonal`). A real row from the Home Decor example, shortened:

```json
{
    "type": "pinterest",
    "list": "topMonthly",
    "region": "US",
    "rank": 29,
    "term": "kitchen decor ideas",
    "searchVolumeIndex": 22,
    "weeklyChangePercent": 5,
    "monthlyChangePercent": 80,
    "yearlyChangePercent": 600,
    "isBreakout": false,
    "seasonalityScore": 0.333,
    "popularIn": ["Home Decor"],
    "listDate": "2026-08-14",
    "weeklyInterest": [{"date": "2026-07-31", "value": 93}, {"date": "2026-08-07", "value": 95},
                       {"date": "2026-08-14", "value": 100}],
    "imageUrl": "https://i.pinimg.com/236x/cd/71/53/cd71530239fc521fba6167dac980f78e.jpg",
    "pinterestLink": "https://trends.pinterest.com/search/?terms=kitchen%20decor%20ideas&country=US",
    "pinterestSearchLink": "https://www.pinterest.com/search/pins/?q=kitchen%20decor%20ideas"
}
```

`rank` is the search's place in Pinterest's list, kept when you sort the rows another way. `searchVolumeIndex` is its searches against the list's most searched term (100). `isBreakout` with `breakoutPeriods` marks a change Pinterest shows as a breakout instead of a number. `weeklyInterest` has 13 weeks (a year for top yearly and seasonal searches). `pinterestLink` opens the search on Pinterest Trends (shown to signed-in visitors), and `pinterestSearchLink` its pins on Pinterest.

#### Home page rows

A shopping trend, shortened:

```json
{
    "type": "pinterest",
    "list": "shopping",
    "region": "US",
    "rank": 5,
    "term": "Seasonal & holiday decorations",
    "parentCategories": ["Home accessories"],
    "outboundClicksChangePercent": 64,
    "savesChangePercent": 30,
    "relatedSearches": ["tree ornaments", "halloween decor", "pumpkin", "hanging ornaments", "xmas decor"],
    "weeklyOutboundClicks": [{"date": "2026-10-19", "value": 38}, {"date": "2026-10-26", "value": 41},
                             {"date": "2026-11-02", "value": 48}],
    "forecast": [{"date": "2026-11-09", "value": 78, "low": 63, "high": 94},
                 {"date": "2026-11-16", "value": 83, "low": 67, "high": 100}]
}
```

`weeklyOutboundClicks` is clicks to shops by week, and `forecast` Pinterest's prediction for the next four weeks with its range, on the same scale. Pinterest gives a forecast for some categories only: 5 of the 10 on 2026-11-05. A seasonal moment:

```json
{
    "type": "pinterest",
    "list": "moments",
    "region": "US",
    "term": "Thanksgiving",
    "status": "rising",
    "takeoffDate": "2026-10-26",
    "peakDate": "2026-11-23",
    "peakLengthDays": 49,
    "eventDate": "2026-11-26",
    "lastYearTakeoffDate": "2025-11-03",
    "lastYearPeakDate": "2025-11-24"
}
```

A moment's `status` is Pinterest's own phase: `approaching`, `rising`, `peak` or `past peak`. Its searches can peak on another day than the event. `eventDate` is the event's next date, so once the day has passed it is next year's (Halloween showed `past peak` with an `eventDate` of 2027-10-31).

Trends in the spotlight add a `description`, `relatedSearches`, `popularIn` (Pinterest's interests), a weekly curve and `pins` (example pins with their image and link). Editors' picks add a description, dates, interests, pins and `keywordTrends`: each keyword with its weekly, monthly and yearly change and 53 weeks of interest. A region Pinterest doesn't list gets a free `notFound` row that says why.

The dataset has views for **Overview**, **Search lists**, **Keyword research**, **Keywords: audience and forecast**, **Spotlight and editors' picks**, **Shopping trends**, **Moments**, **Changes** and **Not found** (a view picks columns: every view lists every row, so filter on `type`, `list` or `change` if you need to).

### How to use it

#### Keyword research

**Keywords** takes words or phrases, one per line: each gets a row per region (the United States when you name none). **Keyword history** is 90, 180, 365 (the default) or 730 days. **Forecast** adds Pinterest's 13 weeks where it gives them (the United States, some keywords only). **Audience** adds the split by age and gender, and **Related searches** Pinterest's five related terms. **Compare the keywords** puts up to 20 on one scale, as Pinterest Trends' own comparison does. **Age groups** and **Genders** also apply to keyword research: the weekly interest is then that audience's.

A keyword Pinterest has no searches for is a free row with `hasData: false`. For a few keywords Pinterest gives a change but leaves out the weekly curve, even in its own seasonal list ("first day of school prayer", August 2026): the row then has the change without `weeklyInterest`.

#### Search lists and Pinterest's filters

**Lists** picks among the four search lists (fastest-growing, top monthly, top yearly, seasonal) and the home page's five. Empty: the home page's five, or none when you only research keywords. **Results per list** keeps the first N of each list in each region: 20 by default for a search list, up to 100 (Pinterest's most).

- **Interests**: Pinterest's 24 (Home Decor, Beauty, Food and Drinks, Fashion, Wedding...), by name. Several: searches popular in any of them.
- **Age groups** (18-24, 25-34, 35-44, 45-49, 50-54, 55-64, 65+, or 18-20 and 21-24) and **Genders** (female, male, unspecified).
- **Moments**: the seasonal searches for these moments. Each region has its own: the United States has 13 (Christmas, Thanksgiving, Valentine's Day...), Germany adds Oktoberfest, Karneval and Ramadan, Great Britain and Ireland Prom and Lunar New Year. A moment a region doesn't have is named in the run's status and left out (Pinterest would refuse the whole list), and regions without moments (Korea, Turkey and seven more) and those beyond the home page's menu read seasonal searches only without Moments.
- **Lists as of**: the lists as they stood in the week to a past day, up to a year back. Pinterest's weeks end on a Friday, and each row's `listDate` says which week was read.
- **Sort search lists by** search volume or weekly, monthly or yearly change, the largest first; **Minimum weekly, monthly or yearly change** keeps the searches that grew at least that much. Both read Pinterest's 100 and keep the top of them.
- **Trends containing** and **Leave out trends containing** keep or drop entries by your words in their name or related searches (whole words and their plurals, any case, accents aside: 'nail' finds 'nails', 'ai' doesn't find 'paint'), on every list.

#### Regions

**Regions** takes Pinterest's regions by code or name: `US`, `CA`, `GB+IE`, `DE`, `FR`, `BR`, `MX`, `AU+NZ`, `KR` and the rest of its menu (26), plus five it answers outside its menu: India, Indonesia, Saudi Arabia, the Middle East and North Africa (`AE+SA+KW+QA+OM+BH+EG+IQ+DZ`) and a group of Israel, Nigeria, Pakistan, South Africa, Turkey, Morocco and India (`IL+NG+PK+ZA+TR+MA+IN`). A country Pinterest groups with others reads its group (`Australia` reads Australia and New Zealand, `Kuwait` the Middle East and North Africa). With no region, the United States is read.

Pinterest shows the spotlight, shopping trends and editors' picks for the United States, Canada, and Great Britain and Ireland only, and the five regions beyond its menu get the search lists and keyword research only; the run says which lists aren't read where. Pinterest often answers a list with HTTP 500 at first, and the Actor asks again after a pause, so from Apify a list took 8 to 16 seconds on average (5 November 2026). Give a run with many regions a timeout of 30 minutes or more.

**Pinterest Trends links** takes links from trends.pinterest.com, a keyword page's included: each adds its region, keywords, list and filters (the input's own settings win). The Actor reads the link and never opens it.

#### Max results

**Max results** (1,000 by default) is shared between the regions, lists and keywords in rounds, so one list doesn't use up the others' share. What doesn't fit is named in the run's status message.

### Reading the numbers

- **Changes**: `weeklyChangePercent`, `monthlyChangePercent` and `yearlyChangePercent` are Pinterest's own. Where a change is too big to show, Pinterest shows a breakout instead: the row has `isBreakout: true`, `breakoutPeriods` and no figure for that period.
- **Interest**: `weeklyInterest` is on a 0-100 scale where 100 is the term's busiest week in the period (one scale for all, with Compare the keywords). With a forecast, Pinterest puts 100 at the forecast's highest upper bound instead, so the measured weeks can peak lower: "fall nails" over 180 days in the United States peaks at 85 with its forecast and at 100 without. `averageInterest`, `latestInterest`, `peakInterest` and `peakDate` are read from it. `growthPercent` compares the last quarter of the period with the first, and `recentChangePercent` the last eighth with the eighth before.
- **Direction**: `rising` or `falling` when both the last quarter and the last eighth are more than 15% above or below the first quarter, `steady` otherwise, `new` when the first quarter had no interest at all. `past peak` is a keyword that rose (or is new) over the period and whose last eighth is more than 15% below the eighth before. A season seen from its start is the reason: "fall nails" over the 180 days to 2 November 2026 rose from 0 in May to 85 at the end of September and fell to 57, and without that rule it would read `rising`.
- **Audience**: `audienceAgePercent` and `audienceGenderPercent` are Pinterest's shares of the keyword's searchers. Pinterest shows any group under 4% as 4% (every older age group of "fall nails" and "matcha" was exactly 4), so the shares can add up to a little more than 100.
- **Forecast**: each point has Pinterest's predicted `value` and its `low` and `high` bounds, on the curve's scale.

### Tracking changes on a schedule (Pinterest trend monitor)

1. Switch on **Only changes since the last run**. Optionally pick the **Changes to report**.
2. Run it once: the first run returns everything as `firstRun` and saves it as the baseline.
3. Schedule it (Apify Console, Schedules). Each later run returns only what changed.

| change | meaning |
|---|---|
| `newOnPinterest` | a search or entry new on its list since the last run |
| `momentRising` | a seasonal moment Pinterest moved to rising or peak, with `previousStatus` |
| `directionChanged` | a keyword whose direction changed (`rising` to `past peak`), with `previousTrendDirection` |
| `firstRun` | the first run's baseline |

- An entry is new the first time it appears on its list in that region. A moment is reported once, when Pinterest moves it to rising or peak. A keyword is returned on every run with `change` set when its direction changed.
- Histories are kept per region, list, keyword and filter (two monitors with different filters don't mix), in the key-value store `pinterest-trends-history`, or one you name in **History name**.
- Only what a run returns moves the history: if Max results, Results per list or your spending limit stops a run, the changes it didn't return come with the next run. The status message says how many wait.
- Pinterest updates its lists and keyword data once a week, so a weekly or daily schedule is enough.

### Alerts in Slack, Discord, Telegram or Microsoft Teams

Paste an incoming-webhook URL in **Alert webhook URL** (Slack, Discord, Microsoft Teams, or any HTTPS endpoint that takes JSON, such as Zapier, Make or n8n), or a **Telegram bot token** and **Telegram chat id**. Each switches on Only changes, and **Alert on** picks which changes are posted. The first run posts one short "Pinterest Trends alerts are set up" message; each later run posts its changes, up to 50 per run. A run that stops early still posts the changes it stored, a restarted run doesn't post a message twice, and a failed post doesn't fail a run whose data loaded: its status says why.

### Run summary for pipelines

Each run saves a `RUN_SUMMARY` record in its key-value store: per list, keyword group and region, its rows; plus the changes, what didn't load and why, and the filters used.

### Switching from another Pinterest Trends Actor

Paste the input you already use: other Pinterest Trends Actors' field names are read as those Actors mean them, and the run's notes list what was read that way.

| Their field | Read here as |
|---|---|
| `countries`, `country`, `region`, `markets`, `trendsRegion` | Regions |
| `trendTypes`, `trendType`, `trendView` (`growing`, `top_monthly`, `topYearly`, `seasonal`...) | Lists |
| `keywords`, `terms`, `seedKeywords`, `trendKeywords`, or a keyword `mode` | Keywords (keyword research) |
| `keywordsToInclude`, `includeKeywords` / `keywordsToExclude`, `excludeKeywords` | Trends containing / Leave out |
| `interestIds`, `interestId`, `interests`, `interestCategories` | Interests |
| `ageGroups`, `ageBuckets`, `genders`, `gender` | Age groups, Genders |
| `events`, `seasonalEvents`, `moment` | Moments |
| `endDate`, `trendsEndDate` | Lists as of |
| `rankingMethod`, `rankingBasis`, `sortBy` | Sort search lists by |
| `minWeekOverWeekGrowth`, `minimumWeeklyGrowth`... | Minimum weekly (monthly, yearly) change |
| `maxResultsPerCountry`, `maxTrendsPerList`, `numTerms`, `maxTermsPerQuery` | Results per list |
| `historyRange`, `timeSeriesDays`, `historyPeriod`, `days` | Keyword history |
| `forecast`, `predictedDays`, `includeDemographics`, `includeRelated`, `compareKeywords` | Forecast, Audience, Related searches, Compare |
| `onlyNew`, `watchName` | Only changes, History name |
| `startUrls` | Pinterest Trends links |

Their own defaults are read as no choice. A `lookbackWindow` is named as ignored: Pinterest answers the same list whatever it is. Keyword suggestions and Pinterest's own pages (`searchQueries`, `pinUrls`, `boardUrls`, `profiles`) can't be read: www.pinterest.com closes every page to robots. Asked for on their own they stop the run before anything is read or charged, with a message that says why; beside a list or keywords, they are named and the rest is read.

### Pinterest Trends API: use it from code or from an AI assistant

Start a run and get the rows in one call (replace `<YOUR_TOKEN>`; a call that waits gives up after 5 minutes):

```bash
curl -X POST "https://api.apify.com/v2/acts/akhil_rajesh~pinterest-trends-scraper/run-sync-get-dataset-items" \
  -H "Authorization: Bearer <YOUR_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"keywords": ["fall nails", "matcha"], "pinterestRegions": ["US"]}'
```

Or from Python with `apify-client`:

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_TOKEN>")
run = client.actor("akhil_rajesh/pinterest-trends-scraper").call(run_input={
    "pinterestRegions": ["US"], "pinterestLists": ["searchTrends", "topMonthly"], "interests": ["Beauty"],
    "resultsPerList": 50,
})
for row in client.dataset(run.default_dataset_id).iterate_items():
    print(row["list"], row["rank"], row["term"], row.get("yearlyChangePercent"))
```

#### For AI agents: MCP server and live API

The Actor also runs as a **live endpoint** (Apify Standby): an **MCP server** that agents call directly, and an HTTP endpoint. Once a Standby run is up, a request is answered in seconds; the first request starts one. Authenticate with your Apify API token in the `Authorization: Bearer <token>` header.

**MCP server** (Streamable HTTP): `https://akhil-rajesh--pinterest-trends-scraper.apify.actor/mcp`

```json
{"mcpServers": {"pinterest-trends": {"type": "http", "url": "https://akhil-rajesh--pinterest-trends-scraper.apify.actor/mcp",
  "headers": {"Authorization": "Bearer <YOUR_APIFY_TOKEN>"}}}}
```

In Claude Code:

```bash
claude mcp add --transport http pinterest-trends https://akhil-rajesh--pinterest-trends-scraper.apify.actor/mcp --header "Authorization: Bearer <YOUR_APIFY_TOKEN>"
```

A client that can't send headers can use `https://akhil-rajesh--pinterest-trends-scraper.apify.actor/mcp?token=<YOUR_APIFY_TOKEN>`; keep that URL private, as it carries your token.

| Tool | What it returns |
|---|---|
| `research_pinterest_keywords` | Keyword research: weekly interest, direction, forecast, audience and related searches per keyword and region |
| `get_pinterest_trends` | A region's lists: the four search lists with Pinterest's filters, and the home page's five |
| `run_actor` | The Actor's whole input in one call |

**HTTP endpoints**: `GET https://akhil-rajesh--pinterest-trends-scraper.apify.actor/keywords?keywords=fall nails|matcha&regions=US` and `GET .../pinterest?regions=US&lists=topMonthly&interests=beauty&ages=25-34` (separate several values with `|`). The Actor's **Endpoints** tab in Apify Console lists them, and lets you try them.

| Endpoint | Parameters |
|---|---|
| `GET /keywords` | `keywords`, `regions`, `days`, `forecast`, `compare`, `audience`, `related`, `ages`, `genders`, `max` |
| `GET /pinterest` | `regions`, `lists`, `words`, `skip`, `perList`, `interests`, `ages`, `genders`, `endDate`, `moments`, `sort`, `minWeekly`, `minMonthly`, `minYearly`, `max` |
| `POST /run` | The Actor's whole input as JSON |

A tool call reads up to 5 regions, 10 keyword lookups (keywords times regions) and 200 rows within 50 seconds; an HTTP request 20 regions, 40 lookups and 2,000 rows. A request stops at its time and size limits and names what it left in `notRead`. Tracking and alerts belong to scheduled runs: a request is answered on its own. On the live endpoint, platform usage is added to the price of the rows while the run serves you, and a request keeps reading until its limit even if the caller stops waiting.

### How much does it cost?

You pay **$1.00 per 1,000 list rows and $2.50 per 1,000 keywords on Apify's free plan**, less on paid plans, plus a start fee of $0.00005 per run. A list row is one entry of a list, with everything it holds (curve, image, pins, forecast); a keyword is a keyword row with data, with its whole history, forecast, audience and related searches (a keyword read in two regions is two). **Platform usage is included** in runs of the Actor: there is no compute charge on top (the live endpoint is the exception: see above). Keywords Pinterest has no searches for, and regions that weren't found, are free.

| Apify plan | Per 1,000 list rows | Per 1,000 keywords |
|---|---|---|
| Free | $1.00 | $2.50 |
| Starter | $0.70 | $0.90 |
| Scale | $0.55 | $0.45 |
| Business and above | $0.40 | $0.30 |

| Run | Rows | Cost (Free plan) |
|---|---|---|
| 2 keywords in the US and Canada | 4 keywords | $0.01 |
| 100 keywords in the US | 100 keywords | $0.25 |
| The US fastest-growing searches | 20 | $0.02 |
| The four US search lists, 100 each | 400 | $0.40 |
| The US home page's five lists | about 53 | about $0.05 |
| The US, all five lists, tracked weekly | a few changes a week | under $0.10 a month |

Apify's free plan ($5 of monthly credit) covers about 5,000 list rows or 2,000 keywords. To cap spending, lower Max results or set a **maximum cost per run** in the run options: the run stops at the limit and says so.

### What it can't do

- **Search counts**: Pinterest gives changes in percent, interest on a 0-100 scale and volume against a list's top search, not numbers of searches.
- **Keyword suggestions, pins, boards and profiles**: Pinterest's own site (www.pinterest.com) closes every page to robots in its robots.txt, so the Actor reads Pinterest Trends only. Each keyword brings Pinterest Trends' five related searches, the spotlight and editors' picks bring example pins, and each row links to Pinterest's search for its term.
- **A forecast outside the United States**, or for keywords Pinterest doesn't forecast.
- **Shopping trends by saves, or for categories you name**: the shopping list is the home page's (the 10 categories whose clicks to shops grew most), with each one's change in saves.
- **Lists more than a year back**: Pinterest keeps a year of its lists.

For Google's side of the same question, [Google Trends Scraper & API](https://apify.com/akhil_rajesh/google-trends-scraper) reads Trending Now in 125 countries and any keyword's interest over time, by region and its rising searches.

### FAQ

**Do I need a Pinterest account or an API key?** No.

**How often does Pinterest update its data?** Once a week: the lists and each keyword's curve go by week, and each row says the week it was read for (`listDate`, `dataEndDate`). Moments move with the calendar.

**Why does a region only get some lists?** Pinterest shows the spotlight, shopping trends and editors' picks for the US, Canada, and the UK and Ireland only, and its five regions outside the menu have no home page lists. The run names the lists it didn't read where.

**Why do a keyword's audience shares add up to more than 100?** Pinterest shows every group under 4% as 4%.

**Can I use it with Google Sheets, Zapier, Make or n8n?** Yes, through Apify's integrations: start a run from a Zap or scenario and read its dataset, or send each run's rows to a Google Sheet.

**Is it legal to scrape Pinterest Trends?** This Actor reads public, aggregated data from Pinterest Trends, and no personal data. Check your own use against the laws that apply to you and Pinterest's terms.

**Is this an official Pinterest product?** No. This Actor isn't affiliated with or endorsed by Pinterest. Pinterest is a trademark of Pinterest, Inc.

### Other Actors by this developer

- [Google Trends Scraper & API](https://apify.com/akhil_rajesh/google-trends-scraper): Trending Now for 125 countries with search volumes and news, any keyword's interest over time, by region and rising searches, plus new trends with Slack, Discord or Telegram alerts
- [YouTube Channel Scraper & Tracker](https://apify.com/akhil_rajesh/youtube-channel-scraper): exact total views and video counts, subscribers and each channel's videos, Shorts and streams, plus new videos, title changes and growth with Slack, Discord or Teams alerts
- [Contact Details Scraper](https://apify.com/akhil_rajesh/contact-details-scraper): emails, phone numbers, social profiles and contact pages from any list of websites, with who runs each business
- [Telegram Channel Scraper & Monitor](https://apify.com/akhil_rajesh/telegram-channel-scraper): posts, views, reactions, comments and exact subscriber counts of public Telegram channels without a login, plus new, edited and deleted posts with Slack, Discord or Teams alerts
- [Google Ads Transparency Scraper & Monitor](https://apify.com/akhil_rajesh/google-ads-transparency-scraper): every ad a brand runs on Google Search, YouTube, Shopping and Maps, with ad copy and targeting, political ad spend and ads Google removed, plus Slack, Discord or Teams alerts for new and stopped ads
- [Craigslist Scraper & Tracker](https://apify.com/akhil_rajesh/craigslist-scraper): Craigslist listings by keyword, city, state or link with prices, cars and rentals, plus new listings, price drops and Slack, Discord or Teams alerts
- [Kijiji Scraper & Tracker](https://apify.com/akhil_rajesh/kijiji-scraper): Kijiji listings by keyword, city and category with prices and price drops, cars and rentals, plus Slack, Discord or Teams alerts for new listings
- [Zillow Price Tracker & Scraper](https://apify.com/akhil_rajesh/zillow-price-tracker): Zillow homes for sale, sold and for rent, with price-drop tracking, Slack alerts and an MCP server
- [App Store Reviews Scraper & API](https://apify.com/akhil_rajesh/app-store-reviews-scraper): App Store reviews from 175 countries with developer replies, filters, ratings and keyword rankings, plus Slack, Discord or Teams alerts for new reviews
- [Google Play Reviews Scraper & API](https://apify.com/akhil_rajesh/google-play-reviews-scraper): Google Play reviews with app versions, developer replies and filters, plus installs, rankings and Slack, Discord or Teams alerts for new reviews
- [Yahoo Finance Scraper](https://apify.com/akhil_rajesh/yahoo-finance-scraper): quotes, history, financials, options and news, with an MCP server
- [AliExpress Price Tracker & Scraper](https://apify.com/akhil_rajesh/aliexpress-price-tracker): AliExpress search results with store prices, units sold and price history
- [Amazon.ca Product & Trending Tracker](https://apify.com/akhil_rajesh/amazon-ca-product-trending-tracker): Amazon Best Sellers, prices, search positions and reviews on 23 marketplaces, with change tracking
- [Sports API - Live Scores, Stats & Odds (Soccer, NBA, NHL, NFL)](https://apify.com/akhil_rajesh/sports-scraper): scores, statistics and odds for seven sports
- [Tennis API - Live Scores, Stats & Odds (ATP, WTA, ITF)](https://apify.com/akhil_rajesh/tennis-scraper): live scores, results, match statistics, point-by-point and bookmaker odds for ATP, WTA, Challenger and ITF
- [Google Hotels Scraper - Hotel Price Tracker & Comparison](https://apify.com/akhil_rajesh/google-hotels-scraper): hotel prices from Google Hotels, with price tracking
- [Price Tracker Canada - Best Buy, Walmart, Canada Computers](https://apify.com/akhil_rajesh/bot-wall-price-scraper): live price comparison across major Canadian retailers
- [AutoTrader Canada Scraper - Used Cars & Prices](https://apify.com/akhil_rajesh/autotrader-canada-scraper): Canadian vehicle listings with price, mileage, trim and dealer
- [Indeed Jobs Scraper - Canada, US, UK, Australia & More](https://apify.com/akhil_rajesh/indeed-jobs-scraper): job listings from Indeed in eight countries
- [SEEK, JobStreet & JobsDB Jobs Scraper](https://apify.com/akhil_rajesh/seek-jobstreet-jobsdb-scraper): jobs from SEEK, JobStreet and JobsDB in Australia, New Zealand and six Asian markets, with pay as numbers, applicant counts and change tracking
- [Wellfound (AngelList) Jobs Scraper - Salary & Equity](https://apify.com/akhil_rajesh/wellfound-jobs-scraper): startup jobs from Wellfound (formerly AngelList Talent) with salary and equity ranges and an exact Y Combinator flag
- [Job Bank Scraper - Canada Jobs, Salary & NOC Codes](https://apify.com/akhil_rajesh/canadian-jobs-scraper): Canadian job postings with salary, employer, location and NOC code

# Actor input Schema

## `pinterestRegions` (type: `array`):

Pinterest Trends' regions, as trends.pinterest.com lists them: 26 in its menu, and India, Indonesia and Saudi Arabia for the search lists and keyword research. A country Pinterest groups with others (Australia, Ireland, Sweden) reads its group. Empty: the United States.

## `pinterestLists` (type: `array`):

Which of Pinterest Trends' lists to read. Empty: the home page's five (growing searches, trends in the spotlight, shopping trends, editors' picks, moments), or none when you look up keywords. The search lists (growing, top monthly, top yearly, seasonal) are those of Pinterest's Trends tool, up to 100 searches each, with search volume, weekly, monthly and yearly change, weekly interest and an image, and take the filters below. Trends in the spotlight and editors' picks come with their related searches, the interests they're popular in and example pins; shopping trends with clicks to shops by week (and Pinterest's forecast for the United States); moments with their phase and dates. Pinterest shows the spotlight, shopping trends and editors' picks for the United States, Canada, and Great Britain and Ireland only.

## `resultsPerList` (type: `integer`):

Entries per list in each region, from the top. Empty: 20 per search list (up to 100: Pinterest's most), and every entry of the others (about 5 spotlight trends, 10 shopping trends, 6 editors' picks and 13 moments for the United States). With Only changes: changes per list, the rest come with the next run.

## `trendsContaining` (type: `array`):

Only entries whose name or related searches hold one of these words or phrases (whole words, any case): 'wedding', 'fall nails'. The search lists ask Pinterest for them too (its 'Include keywords'), so up to 100 matching searches come back per list.

## `trendsNotContaining` (type: `array`):

Leave out entries whose name or related searches hold one of these words or phrases.

## `interests` (type: `array`):

Only searches popular in these interests. Empty: every interest.

## `ageGroups` (type: `array`):

Only searches by people of these ages. Empty: everyone.

## `genders` (type: `array`):

Only searches by these genders. Empty: everyone.

## `endDate` (type: `string`):

The search lists as they stood in the week to this day, up to a year back (Pinterest keeps a year). Empty: the latest lists.

## `moments` (type: `array`):

Seasonal searches for these moments. Each region has its own: the list is the United States' 13; Germany adds Oktoberfest, Karneval and Ramadan, Great Britain and Ireland Prom and Lunar New Year (type the name). A moment a region doesn't have is named and left out. Empty: Pinterest's own pick, the moments coming up.

## `sortBy` (type: `string`):

The order of the search lists' entries: Pinterest's (the default), search volume, or weekly, monthly or yearly change, the largest first (breakouts, which Pinterest shows without a figure, before them). Sorting reads Pinterest's 100 and keeps the top of them.

## `minWeeklyChangePercent` (type: `number`):

Only searches up at least this much week on week (a breakout passes).

## `minMonthlyChangePercent` (type: `number`):

Only searches up at least this much month on month.

## `minYearlyChangePercent` (type: `number`):

Only searches up at least this much year on year.

## `keywords` (type: `array`):

Keywords to research: weekly search interest (0-100) with its average, peak, growth and direction (rising, steady, falling, new, past peak), weekly, monthly and yearly change, Pinterest's 13-week forecast (United States), searchers by age and gender, and related searches. A keyword Pinterest has no searches for is a free row.

## `keywordHistoryDays` (type: `string`):

How far back each keyword's weekly interest goes.

## `includeForecast` (type: `boolean`):

Pinterest's 13-week forecast of each keyword's interest, with its range (the United States only; Pinterest has none for some keywords).

## `compareKeywords` (type: `boolean`):

Put up to 20 keywords on one 0-100 scale, as Pinterest's comparison does, instead of each on its own.

## `includeAudience` (type: `boolean`):

Each keyword's searchers by age group and gender (shares in %).

## `includeRelatedTerms` (type: `boolean`):

Pinterest's related searches for each keyword (one more request a keyword).

## `trendsUrls` (type: `array`):

Paste links from trends.pinterest.com: each adds its region, its keywords and its filters. Links are read, never opened.

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

Most charged rows a run returns, shared between the regions, lists and keywords. With Only changes: most changes; the rest come with the next run.

## `onlyChanges` (type: `boolean`):

Monitor: each run returns only what's new since the last run with the same settings: new entries on Pinterest's lists and moments taking off (moving to rising or peak). Keyword rows always come back, with a change in direction marked. The first run saves what's listed as the baseline and returns it as firstRun. Schedule it (every day, every week).

## `changeTypes` (type: `array`):

With Only changes. Empty: all three.

## `alertWebhookUrl` (type: `string`):

Post each run's changes to Slack, Discord or Microsoft Teams (their incoming-webhook URL), or to any HTTPS endpoint that takes JSON (Zapier, Make, n8n). Switches on Only changes. The first run posts a short 'alerts are set up' message.

## `telegramBotToken` (type: `string`):

Post each run's changes to a Telegram chat through your own bot: its token from @BotFather (123456789:AAH...). Add the bot to the chat (to a channel as an admin that can post). Switches on Only changes.

## `telegramChatId` (type: `string`):

Where the bot posts: a public channel or group (@mychannel), or a chat id (-1001234567890 for a private group or channel; your own id for a direct message, from @userinfobot).

## `alertChangeTypes` (type: `array`):

Which changes to post (up to 50 a run, the most important first; all are in the dataset). Empty: all three.

## `historyName` (type: `string`):

Keep a separate history for this monitor (a-z, 0-9 and hyphens). Leave empty to share the default one: histories are kept per search and settings anyway.

## `proxy` (type: `object`):

Not needed: Pinterest Trends answers Apify's servers directly. You can use your own proxies or Apify's datacenter proxies; residential proxies aren't available in this Actor.

## Actor input object example

```json
{
  "pinterestRegions": [
    "US"
  ],
  "pinterestLists": [
    "searchTrends",
    "topMonthly",
    "moments"
  ],
  "sortBy": "pinterest",
  "keywords": [
    "matcha",
    "fall nails"
  ],
  "keywordHistoryDays": "365",
  "includeForecast": true,
  "compareKeywords": false,
  "includeAudience": true,
  "includeRelatedTerms": true,
  "maxResults": 1000
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `searches` (type: `string`):

No description

## `keywords` (type: `string`):

No description

## `audience` (type: `string`):

No description

## `spotlight` (type: `string`):

No description

## `shopping` (type: `string`):

No description

## `moments` (type: `string`):

No description

## `changes` (type: `string`):

No description

## `notFound` (type: `string`):

No description

## `allData` (type: `string`):

No description

## `runSummary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "pinterestRegions": [
        "US"
    ],
    "pinterestLists": [
        "searchTrends",
        "topMonthly",
        "moments"
    ],
    "keywords": [
        "matcha",
        "fall nails"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("akhil_rajesh/pinterest-trends-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "pinterestRegions": ["US"],
    "pinterestLists": [
        "searchTrends",
        "topMonthly",
        "moments",
    ],
    "keywords": [
        "matcha",
        "fall nails",
    ],
}

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

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

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

```

## CLI example

```bash
echo '{
  "pinterestRegions": [
    "US"
  ],
  "pinterestLists": [
    "searchTrends",
    "topMonthly",
    "moments"
  ],
  "keywords": [
    "matcha",
    "fall nails"
  ]
}' |
apify call akhil_rajesh/pinterest-trends-scraper --silent --output-dataset

```

## MCP server setup

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

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

## OpenAPI specification

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