# Pinterest Trends Scraper (`axlymxp/pinterest-trends-scraper`) Actor

Export Pinterest Trends data: growing, seasonal and top keywords by country, interest, age and gender, with weekly, monthly and yearly growth, plus up to 2 years of search-volume history for your own keywords. No login needed.

- **URL**: https://apify.com/axlymxp/pinterest-trends-scraper.md
- **Developed by:** [axly](https://apify.com/axlymxp) (community)
- **Categories:** Social media, SEO tools, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 dataset items

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

Export the data behind **Pinterest Trends** (trends.pinterest.com) as a table: the **growing, seasonal, top monthly
and top yearly search keywords** for a country, filtered by interest, age group, gender and keywords, with weekly,
monthly and yearly growth. Add **weekly search-volume history** (up to 2 years) to every keyword, or look up the
history and growth of your own keywords.

Built for content marketers, Pinterest managers, e-commerce and product teams, SEO tools and trend researchers. No
Pinterest account needed.

### What you get

| Field | Example | Notes |
|---|---|---|
| `term` | `fall nails` | the search keyword |
| `country` | `US` | country or region group |
| `trend_type` | `growing` | `growing`, `seasonal`, `top_monthly`, `top_yearly` or `keyword_lookup` |
| `rank` | `1` | position in Pinterest's list |
| `search_volume_index` | `100` | relative search volume, 0-100 |
| `weekly_change_pct`, `monthly_change_pct`, `yearly_change_pct` | `-7.0`, `200`, `20.0` | growth in %. Pinterest caps the display at +10,000% (shown as 10000) |
| `is_new_trend` | `true` | monthly growth at Pinterest's cap (new or breakout search) |
| `seasonality_score`, `is_seasonal` | `0.98`, `true` | Pinterest's seasonality score (≥ 0.825 = seasonal) |
| `interests` | `["beauty"]` | interest categories of the keyword (when Pinterest returns them) |
| `lookback_window`, `interest_filter`, `age_filter`, `gender_filter`, `include_keywords`, `exclude_keywords` | | the filters used for the row |
| `latest_value`, `peak_value`, `peak_date` | `93`, `100`, `2026-09-28` | from the history (with history on) |
| `history_weekly_change_pct`, `history_monthly_change_pct`, `history_yearly_change_pct` | | growth from the history series |
| `history` | `[{"date": "2026-07-13", "value": 2}, ...]` | weekly search-volume index |
| `data_end_date` | `2026-10-05` | the latest week Pinterest has data for |

### Use cases

- **Content planning**: find what people will search for next month and pin it before the peak.
- **Seasonal campaigns**: get Halloween, Christmas or wedding-season keywords with the week they peak.
- **E-commerce and product research**: spot rising products and styles by interest category and audience.
- **SEO and keyword tools**: feed Pinterest search volume and growth into your own dashboards.
- **Audience research**: compare what women 25-34 search in the UK with men 35-44 in the US.

### Input

| Parameter | Description |
|---|---|
| `countries` | US, CA, GB, DE, FR, IN, BR, MX, ES, IT, AR, CO, KR, or the region groups Pinterest offers (AU+NZ, GB+IE, DE+AT+CH, NL+BE+LU, Nordics, Southern Europe, Latin America). |
| `trendTypes` | `growing`, `seasonal`, `top_monthly`, `top_yearly`. |
| `maxTermsPerList` | Keywords per country and list, up to 100 (Pinterest's limit). |
| `lookbackWindow` | Period used to rank growth: 1 week, 1 month, 3 months, 6 months or 1 year. |
| `interests` / `splitByInterest` | Filter to Pinterest interest categories (beauty, home decor, fashion, food and drinks, wedding, travel, ...); optionally one list per interest. |
| `ageGroups`, `genders` | Audience filters. |
| `includeKeywords`, `excludeKeywords` | Keep or drop trends containing these words. |
| `includeHistory` | Add the weekly search-volume history and peak week to every trend keyword. |
| `keywords` | Look up your own keywords: one row per keyword and country with history and growth. |
| `historyRange` | 1 month to 2 years. |

#### Example input

```json
{
  "countries": ["US", "GB+IE"],
  "trendTypes": ["growing", "seasonal"],
  "maxTermsPerList": 50,
  "interests": ["home_decor"],
  "ageGroups": ["25-34"],
  "includeHistory": true,
  "historyRange": "1y",
  "keywords": ["christmas nails", "fall outfits"]
}
```

#### Example output row

```json
{
  "term": "fall nails",
  "country": "US",
  "trend_type": "top_monthly",
  "rank": 1,
  "search_volume_index": 100,
  "weekly_change_pct": -7.0,
  "monthly_change_pct": 200,
  "yearly_change_pct": 20.0,
  "is_new_trend": false,
  "seasonality_score": 0.98,
  "is_seasonal": true,
  "interests": ["beauty"],
  "age_filter": ["25-34"],
  "gender_filter": ["female"],
  "latest_value": 93,
  "peak_value": 100,
  "peak_date": "2026-09-28",
  "history": [{"date": "2026-07-13", "value": 2}, {"date": "2026-10-05", "value": 93}],
  "data_end_date": "2026-10-05"
}
```

### Scheduling and integrations

Pinterest updates Trends weekly. Schedule the actor every Monday and send the rows to Google Sheets, Looker Studio, a
database or a webhook through Apify integrations to keep a weekly trend log.

### Use with AI assistants (MCP)

Use the actor as a tool in Claude, ChatGPT and other MCP clients through the Apify MCP server
(`https://mcp.apify.com`). Example prompt: "What home decor searches are growing fastest on Pinterest in the UK this
month, and when do they usually peak?"

### FAQ

**Where does the data come from?** From Pinterest Trends, Pinterest's own public trends tool. The numbers are
Pinterest's relative search-volume index (0-100), not absolute search counts.

**How fresh is it?** Pinterest publishes weekly data with a lag of about a week. Every row includes `data_end_date`.

**Why does the monthly change sometimes say 10000?** Pinterest caps growth at +10,000%. New or breakout searches hit
the cap; `is_new_trend` marks them.

**Why do some of my keywords return nothing?** Pinterest only tracks keywords with enough search volume. Keywords
without data are skipped and not charged.

**Which countries are covered?** The countries and region groups Pinterest Trends offers (listed above). Other
countries are not available in Pinterest Trends.

**Do I need a Pinterest account?** No.

# Actor input Schema

## `countries` (type: `array`):

Markets to pull trends for. Pinterest Trends covers these countries and region groups only.

## `trendTypes` (type: `array`):

Which Pinterest Trends lists to pull. Growing = fastest-rising searches; Seasonal = recurring seasonal peaks; Top monthly / yearly = highest search volume.

## `maxTermsPerList` (type: `integer`):

Keywords returned for each country × list (Pinterest returns at most 100).

## `lookbackWindow` (type: `string`):

Period used to rank growth.

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

Only keywords in these Pinterest interest categories.

## `splitByInterest` (type: `boolean`):

Pull a separate list for each selected interest instead of one combined list.

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

Only searches by these age groups.

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

Only searches by these genders.

## `includeKeywords` (type: `array`):

Only trends containing one of these words, e.g. "nails" or "recipe".

## `excludeKeywords` (type: `array`):

Drop trends containing these words.

## `includeHistory` (type: `boolean`):

Attach the weekly search-volume series, peak week and growth rates to every trend keyword (extra charge per keyword).

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

Get the weekly Pinterest search-volume history and growth for these exact keywords, e.g. "christmas nails". One row per keyword and country. Keywords Pinterest has no data for are skipped and not charged.

## `historyRange` (type: `string`):

How far back the history goes.

## `proxyConfiguration` (type: `object`):

Optional. Pinterest Trends works without a proxy.

## Actor input object example

```json
{
  "countries": [
    "US"
  ],
  "trendTypes": [
    "growing"
  ],
  "maxTermsPerList": 50,
  "lookbackWindow": "1m",
  "splitByInterest": false,
  "includeHistory": false,
  "historyRange": "1y",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (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 = {
    "countries": [
        "US"
    ],
    "trendTypes": [
        "growing"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("axlymxp/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 = {
    "countries": ["US"],
    "trendTypes": ["growing"],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("axlymxp/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 '{
  "countries": [
    "US"
  ],
  "trendTypes": [
    "growing"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call axlymxp/pinterest-trends-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,axlymxp/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/QZTGwAkudhPkG1zdb/builds/YPirAvRBQ2ErA1qIK/openapi.json
