# Pinterest Trends (`data_ops_main/pinterest-trends`) Actor

- **URL**: https://apify.com/data\_ops\_main/pinterest-trends.md
- **Developed by:** [yourlocalhost](https://apify.com/data_ops_main) (community)
- **Categories:**
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### What does Pinterest Trends Scraper do?

**Pinterest Trends Scraper** is a **Pinterest keyword research tool** that extracts **trending search terms from [Pinterest Trends](https://trends.pinterest.com/)** and exports them as JSON, CSV or Excel. It is the only Pinterest trends scraper that lets you filter by **country, interest category *and* seasonal event** at the same time — so you can ask precise questions like *"What beauty keywords are trending for Halloween in the US?"* or *"What food trends are growing for Christmas in Germany?"*

Every trending keyword comes back with its **search volume index, week-over-week, month-over-month and year-over-year growth, a seasonality score**, and optionally the **age and gender breakdown of the audience searching for it**.

Pinterest gives you **no public Trends API** — the official trends endpoints require an approved Pinterest business account, and the trends.pinterest.com dashboard has no export button. This Actor is the **Pinterest Trends API alternative**: run it on demand or on a schedule, pull results straight into Google Sheets, Zapier, Make or your own code via the Apify API, with proxy rotation, retries and monitoring handled for you.

### Why use Pinterest Trends Scraper?

Pinterest is a **planning platform**. People search there **weeks or months before they buy** — Halloween costume searches start in August, Christmas decor in October. That makes Pinterest trend data one of the **earliest consumer demand signals you can get**, well ahead of Google Trends or Amazon best-seller rank.

- **Seasonal product planning** — see exactly what people want for an event *before* it peaks, and stock, design or manufacture accordingly.
- **Pinterest SEO and content calendars** — build keyword lists per interest category with real growth rates instead of guesswork.
- **Pinterest Ads targeting** — find rising keywords in your niche while the bids on them are still cheap.
- **E-commerce, Etsy and print-on-demand** — spot emerging product styles ("witchy nails", "coraline nails") while they are still climbing.
- **Dropshipping product research** — validate a product idea against real, rising search demand across 40+ markets.
- **International market research** — compare the same event across countries and see how demand differs market by market.
- **Trend monitoring** — schedule a weekly run and track how your keyword set moves over time.

### How to scrape Pinterest Trends data: step-by-step

1. Click **Try for free** to open the Actor in Apify Console. No credit card, no Pinterest login, no API key.
2. Pick your **Country** from the dropdown.
3. Optionally choose one or more **Interests** (Beauty, Food & Drinks, Home Decor …) and **Events** (Halloween, Black Friday, Ramadan …). Leave either empty to skip that filter.
4. Choose a **Trend type** — *Top monthly* for established leaders, *Growing* for what is climbing fastest, *Seasonal* for what is peaking right now.
5. Click **Start**. Most runs finish in **under a minute**.
6. Open the **Output** tab and download your results as **JSON, CSV, Excel or HTML** — or grab them from the [Apify API](https://docs.apify.com/api/v2).

Every other field has a sensible default, so steps 2 and 5 alone will get you real data.

### Input

Configure everything on the **Input** tab in Apify Console. The table below is the same schema in JSON form.

| Field | Type | Default | Description |
| --- | --- | --- | --- |
| `country` | string | `US` | Market to pull trends for. |
| `interests` | array | `[]` | Interest categories to filter by. Empty means all interests. |
| `events` | array | `[]` | Seasonal events to filter by. Empty means no event filter. |
| `trendType` | string | `TOP_MONTHLY` | `TOP_MONTHLY`, `TOP_YEARLY`, `GROWING` or `SEASONAL`. |
| `maxTermsPerQuery` | integer | `50` | Terms per query, up to 100 (Pinterest's own limit). |
| `endDate` | string | latest | Report date as `YYYY-MM-DD`. Defaults to the newest date Pinterest has data for. |
| `lookbackWindow` | string | API default | `7D`, `30D`, `90D`, `180D` or `365D`. |
| `keywordsToInclude` | array | `[]` | Only keep terms containing one of these words. |
| `keywordsToExclude` | array | `[]` | Drop terms containing any of these words. |
| `combineFilters` | boolean | `false` | Send all filters in one query instead of one query per interest × event pair. |
| `includeTimeSeries` | boolean | `false` | Also fetch each term's weekly search-volume history. |
| `includeDemographics` | boolean | `false` | Also fetch the age and gender split of each term's audience. |
| `includeRelatedTerms` | boolean | `false` | Also fetch keywords Pinterest considers adjacent to each term. |
| `timeSeriesDays` | string | `365` | History length: `30`, `90`, `180`, `365` or `730` days. |
| `maxConcurrency` | integer | `2` | Parallel requests. Keep low without a proxy. |
| `maxRequestRetries` | integer | `5` | Retries before a request is abandoned. |
| `proxyConfiguration` | object | disabled | Apify Proxy settings. |

A typical input — Halloween beauty and food keywords in the US:

```json
{
    "country": "US",
    "interests": ["BEAUTY", "FOOD_AND_DRINKS"],
    "events": ["halloween"],
    "trendType": "TOP_MONTHLY",
    "maxTermsPerQuery": 50,
    "includeDemographics": true
}
```

#### Supported countries

Pinterest publishes some smaller markets **only as a region** and rejects the individual country code. Pick the country you care about and this Actor maps it automatically — choose Australia and it queries `AU+NZ`, choose Switzerland and it queries `DE+AT+CH`. The output records both what you asked for (`countryInput`) and what was actually queried (`country`), so nothing is hidden from you.

**Served individually:** United States, Canada, United Kingdom, France, Germany, Italy, Spain, Brazil, Mexico, Argentina, Colombia, India.

**Served as a region:** UK & Ireland, DACH (Germany/Austria/Switzerland), Southern Europe, Nordics, Benelux, Central Europe, Latin America, Australia & New Zealand, Middle East & North Africa, and more — **40+ markets in total**.

Markets with no Pinterest Trends coverage at all are rejected up front with a clear message, instead of failing halfway through a run.

#### Supported interest categories

24 top-level Pinterest categories: **Animals, Architecture, Art, Beauty, Design, DIY & Crafts, Education, Electronics, Entertainment, Event Planning, Kids' Fashion, Men's Fashion, Women's Fashion, Finance, Food & Drinks, Gardening, Health, Home Decor, Parenting, Quotes, Sport, Travel, Vehicles, Wedding.**

#### Supported seasonal events

**54 seasonal events and shopping moments**, and Pinterest tracks a **different set for every country**: Halloween, Christmas, Black Friday, Thanksgiving, Easter, Valentine's Day, Mother's Day, Father's Day, Back to School, Ramadan, Diwali, Lunar New Year, Pride, Prom, Summer, Oktoberfest (Germany), Festa Junina (Brazil), Carnaval (Spain, Brazil), Superbowl (US), NAIDOC Week (Australia), Golden Week (Japan) and many more.

If you pick an event a market does not track, the Actor logs a warning and skips it rather than failing the whole run. Note that an event **outside its season legitimately returns nothing** — querying Christmas in July is a valid request with no trending terms behind it.

### Output

Each dataset row is one trending Pinterest search term. **You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.**

```json
{
    "term": "halloween nails",
    "rank": 1,
    "country": "US",
    "countryInput": "US",
    "interest": "BEAUTY",
    "event": "halloween",
    "trendType": "TOP_MONTHLY",
    "endDate": "2026-09-03",
    "normalizedCount": 100,
    "searchCount": 100,
    "weeklyChangePct": 40,
    "monthlyChangePct": 200,
    "yearlyChangePct": -20,
    "weeklyChangeRank": 5,
    "monthlyChangeRank": 5,
    "yearlyChangeRank": 1,
    "seasonalityScore": 0.996177,
    "pinterestUrl": "https://www.pinterest.com/search/pins/?q=halloween%20nails",
    "trendsUrl": "https://trends.pinterest.com/detail/?country=US&terms=halloween%20nails",
    "scrapedAt": "2026-09-08T21:48:50.346Z"
}
```

#### Data fields

| Field | Type | Description |
| --- | --- | --- |
| `term` | string | The trending Pinterest search term. |
| `rank` | integer | Position in the ranking for this query, starting at 1. |
| `country` | string | Market actually queried, which may be a region string. |
| `countryInput` | string | Country you requested. |
| `interest` | string | null | Interest filter that produced this row. |
| `event` | string | null | Seasonal event filter that produced this row. |
| `trendType` | string | Ranking used for this run. |
| `endDate` | string | Date the trend data is reported as of. |
| `normalizedCount` | number | Search-volume index, 0–100, relative to the top term in the result set. |
| `searchCount` | number | Pinterest's relative search count for the term. |
| `weeklyChangePct` | number | null | Week-over-week growth, as a percentage (`40` = +40%). |
| `monthlyChangePct` | number | null | Month-over-month growth, as a percentage. |
| `yearlyChangePct` | number | null | Year-over-year growth, as a percentage. |
| `weeklyChangeRank` | integer | null | The term's rank on weekly growth within the result set. |
| `monthlyChangeRank` | integer | null | Rank on monthly growth. |
| `yearlyChangeRank` | integer | null | Rank on yearly growth. |
| `seasonalityScore` | number | null | 0–1; higher means more strongly seasonal. |
| `pinterestUrl` | string | Pinterest search results for the term. |
| `trendsUrl` | string | The term's page on Pinterest Trends. |
| `scrapedAt` | string | ISO timestamp of the scrape. |

#### Bonus data: history, demographics and related keywords

Enable `includeTimeSeries`, `includeDemographics` or `includeRelatedTerms` and the extra data lands in the run's **key-value store**, one record per term:

- `timeseries-<term>-<country>` — weekly search-volume points over the chosen window, plus growth rates. Perfect for charting a keyword's trajectory.
- `demographics-<term>-<country>` — **age and gender distribution of the audience searching the term.** No other Pinterest trends scraper returns this.
- `related-<term>-<country>` — adjacent keywords with their own weekly curves, for keyword expansion.

All three are **optional paid add-ons at $0.003 per keyword each** and are switched off by default — see [pricing](#how-much-does-it-cost-to-scrape-pinterest-trends) below.

### How much does it cost to scrape Pinterest Trends?

This Actor uses **pay per event** pricing: you pay for the keywords you actually receive, not for time spent or pages loaded. There is no monthly fee and no minimum.

| What you pay for | Price |
| --- | --- |
| Starting a run | $0.005 |
| Each trending keyword returned | $0.002 |
| Audience demographics, per keyword | $0.003 |
| Search-volume history, per keyword | $0.003 |
| Related keywords, per keyword | $0.003 |

That works out to **$2 per 1,000 Pinterest keywords** — cheaper than comparable Pinterest keyword tools, because the Actor reads a JSON API instead of driving a browser.

#### What a typical run costs

| Run | Cost |
| --- | --- |
| Quick check — 10 keywords | **$0.025** |
| Standard research — 50 keywords | **$0.105** |
| 50 keywords + audience demographics | **$0.255** |
| 50 keywords + demographics + history + related keywords | **$0.555** |
| Full sweep — 24 interests × 100 keywords (2,400 keywords) | **$4.81** |

The three enrichment options are **off by default**, so a standard run only ever costs you the start fee plus the keywords themselves.

**The Apify free plan includes $5 of usage every month** — roughly **45 standard runs, or about 2,300 Pinterest keywords per month, at no cost**. That is enough to run weekly trend monitoring on several markets indefinitely without paying anything. The free plan also includes scheduling and proxy access.

You can cap spending per run with Apify's **maximum cost** setting. If a run hits that ceiling the Actor stops charging, logs a warning and finishes cleanly with the data collected so far — you are never billed past your limit, and never billed for data you did not receive.

### Tips for better Pinterest keyword research

- **Use `GROWING` to find opportunities.** `TOP_MONTHLY` returns much the same head terms every week. `GROWING` surfaces what is *accelerating* — usually the far more actionable list for content and ads.
- **Watch the seasonality score.** A term near `1.0` is sharply seasonal and will collapse out of season. A low score means steady, year-round demand — better for evergreen content.
- **Plan 4–8 weeks ahead of the peak.** Query an event *before* it arrives. That is when Pinterest search activity is climbing and competition for the keyword is still low.
- **Keep attribution by default.** Each interest × event pair runs as its own query so every row shows which filter produced it. Switch on `combineFilters` for a cheaper single blended ranking.
- **Cross-check demographics before you commit ad spend.** A keyword trending with 18–24s needs very different creative from one trending with 45+.
- **Enable Apify Proxy for large runs.** Pinterest rate-limits by IP and returns HTTP 429 under parallel load. The Actor retries with backoff, but a proxy plus `maxConcurrency` of 2–3 is far more reliable for big sweeps.
- **Schedule it weekly** and append to the same dataset to build your own historical Pinterest trend database.

### Pinterest Trends Scraper vs. other Pinterest scrapers

Most Pinterest scrapers on Apify extract **pins, boards and profiles** — images, descriptions and engagement from individual pieces of content. This Actor is different: it extracts **aggregate search demand data**, the numbers behind *what people are looking for*. If you want images and pin metadata, use a pin scraper. If you want to know **which keywords to target and when**, use this one. They complement each other well.

### FAQ

#### Is there an official Pinterest Trends API?

Not a public, self-serve one. Pinterest's official trends endpoints sit behind an approved business/ads account and an authorization header. This Actor reads the same public data the trends.pinterest.com website shows any logged-out visitor, and gives you a clean API and export on top of it.

#### Is scraping Pinterest Trends legal?

This Actor reads only **public, unauthenticated, aggregate** search statistics — the same numbers any visitor sees at trends.pinterest.com, with no login. It collects **no personal data**: the demographic fields are anonymous aggregate distributions Pinterest itself publishes, never information about individuals. Scraping publicly available data is generally legal, but you are responsible for how you use what you collect and for complying with Pinterest's Terms of Service and applicable law. If in doubt, seek legal advice.

#### Do I need a Pinterest account or API key?

No. No login, no cookies, no API key.

#### Is there a free version of this Pinterest Trends scraper?

Effectively yes. Apify's free plan gives you **$5 of usage every month**, which covers roughly **2,300 Pinterest keywords** with this Actor — enough for weekly trend monitoring across several markets without ever paying. You only pay once you exceed that.

#### How am I billed?

Per event: $0.005 to start a run, then $0.002 for each trending keyword returned. The three enrichment options cost $0.003 per keyword each and are off by default. You are billed only for data actually delivered — nothing for empty results, and nothing beyond the maximum cost you set on the run.

#### Why did my run return no results?

Almost always a seasonal event queried outside its window — Christmas in July has no trending terms behind it. The run log tells you exactly which query came back empty.

#### Why was my event skipped?

Pinterest tracks a different event list for each country — there is no Thanksgiving in Australia and no Oktoberfest in the US. The log names the events actually available for your chosen market.

#### Why is my country not in the list?

Pinterest Trends does not publish data for every market. Japan, for example, appears in Pinterest's own event catalogue but its trends API serves no data.

#### Can I get more than 100 keywords?

Not per query — 100 is Pinterest's own ceiling. To go wider, split the run across several interests or events; each is a separate query with its own 100-term budget. Twenty-four interests gives you up to 2,400 keywords in one run.

#### How fresh is the data?

Pinterest's trends dataset runs a few days behind real time. Leave `endDate` empty and the Actor automatically asks Pinterest for the newest date it can serve.

#### Can I integrate this with Google Sheets, Zapier or Make?

Yes. Every Apify Actor exposes its dataset through the [Apify API](https://docs.apify.com/api/v2) and works with Apify's [integrations](https://docs.apify.com/platform/integrations), including Google Sheets, Zapier, Make, Slack, Airbyte and webhooks.

### Support and feedback

Found a bug or need a field that is not here? Open a ticket on the **Issues** tab of the Actor page — issues there are seen and acted on. If you need a custom version, another data source, or a tailored integration, custom solutions can be arranged through Apify.

# Actor input Schema

## `country` (type: `string`):

Market to pull trends for. Pinterest reports some smaller markets only as a region — pick the country and the Actor maps it to the region Pinterest publishes (for example Australia becomes AU+NZ).

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

Restrict trends to Pinterest's top-level interest categories. Leave empty for all interests. Selecting several runs one query per interest so every result row shows which interest it came from.

## `events` (type: `array`):

Restrict trends to a seasonal event or shopping moment (Halloween, Black Friday, Ramadan …). Leave empty for no event filter. Events that the chosen country does not celebrate are skipped with a warning, and an event well outside its season usually returns nothing.

## `trendType` (type: `string`):

Which ranking to pull. 'Top monthly' is the established leaders, 'Growing' surfaces terms climbing fastest right now, and 'Seasonal' surfaces terms peaking for the time of year.

## `maxTermsPerQuery` (type: `integer`):

How many trending terms to return per query. The API caps this at 100.

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

Report trends as of this date (YYYY-MM-DD). Leave empty to use the most recent date Pinterest has data for — its dataset normally runs a few days behind.

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

How far back the ranking looks when scoring a term. Leave empty for the API default.

## `keywordsToInclude` (type: `array`):

Only return terms containing one of these words.

## `keywordsToExclude` (type: `array`):

Drop terms containing any of these words.

## `combineFilters` (type: `boolean`):

Off (default): run one query per interest × event pair so every row is attributable to a specific filter. On: send the whole selection in a single query, which is cheaper but returns one blended ranking.

## `includeTimeSeries` (type: `boolean`):

Fetch the weekly search-volume curve for every term and save it to the key-value store. Adds roughly one request per five terms.

## `includeDemographics` (type: `boolean`):

Fetch the age and gender split of the audience searching each term, saved to the key-value store.

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

Fetch keywords Pinterest considers adjacent to each term. Costs one extra request per term, so it is slow on large runs.

## `timeSeriesDays` (type: `string`):

How much history to pull for search-volume and demographics.

## `maxConcurrency` (type: `integer`):

Parallel requests. Pinterest returns HTTP 429 quickly, so keep this low unless you run through a proxy.

## `maxRequestRetries` (type: `integer`):

How many times to retry a failed or rate-limited request before giving up on it.

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

Pinterest rate-limits by IP. Enable Apify Proxy to rotate addresses on larger runs.

## Actor input object example

```json
{
  "country": "US",
  "interests": [],
  "events": [],
  "trendType": "TOP_MONTHLY",
  "maxTermsPerQuery": 50,
  "endDate": "2026-09-03",
  "keywordsToInclude": [],
  "keywordsToExclude": [],
  "combineFilters": false,
  "includeTimeSeries": false,
  "includeDemographics": false,
  "includeRelatedTerms": false,
  "timeSeriesDays": "365",
  "maxConcurrency": 2,
  "maxRequestRetries": 5,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `trends` (type: `string`):

No description

## `enrichment` (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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("data_ops_main/pinterest-trends").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("data_ops_main/pinterest-trends").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 '{}' |
apify call data_ops_main/pinterest-trends --silent --output-dataset

```

## MCP server setup

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

```

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/jS6rm6C1HaHGeTxcZ/builds/67esMSyHWS9yOWv6k/openapi.json
