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

Export ranked Pinterest Trends data with filters and optional weekly history.

- **URL**: https://apify.com/akash9078/pinterest-trends-scraper.md
- **Developed by:** [Akash Kumar Naik](https://apify.com/akash9078) (community)
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$5.00 / 1,000 rows

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 Trending Pinterest Keywords

Pinterest Trends Scraper is an Apify Actor that extracts ranked Pinterest trending keywords, growth rates, seasonality scores, and optional weekly history. Export Pinterest Trends data to JSON, CSV, Excel, or through the Apify API. No Pinterest login, cookies, API key, or browser is required.

Use it for Pinterest keyword research, seasonal content planning, ecommerce product discovery, and market comparison across countries.

### Quick facts

| Item | Details |
| --- | --- |
| Data source | Public Pinterest Trends pages on `trends.pinterest.com` |
| Pinterest login | Not required |
| Output | JSON, CSV, Excel, and API access |
| History | Optional weekly series, 30 to 730 days |
| Pricing | $0.005 per saved trend row, about $5 per 1,000 rows |

### What does Pinterest Trends Scraper do?

The Actor queries Pinterest's public Trends data and writes one dataset row per keyword. You choose the countries, trend lists, interests, keyword filters, and date window. The Actor handles the requests, normalizes the response, and saves ranked rows.

- Scrape Pinterest trending searches before they peak.
- Compare growing, seasonal, monthly, and yearly trend lists.
- Find Pinterest keyword ideas for blogs, product pages, and ads.
- Filter by include or exclude keywords and compare countries.
- Add weekly history and export to CSV or Excel.

The Actor uses direct HTTP requests, not a headless browser.

### What data can you extract?

Each row contains the term, rank, query settings, and every growth and seasonality value Pinterest returns. The **All fields** view exposes all 23 fields.

| Field | Description |
| --- | --- |
| `term` | Trend keyword or phrase |
| `rank` | Pinterest result order, starting at 1 |
| `country` | Country or region code |
| `interest` | Interest slug, or `null` when unfiltered |
| `trendType` | `growing`, `seasonal`, `top_monthly`, or `top_yearly` |
| `endDate` | Pinterest report date, `YYYY-MM-DD` |
| `lookbackWindow` | Growth window: `7D`, `30D`, `90D`, `180D`, or `365D` |
| `keywordsToInclude` | Include filters, as an array |
| `keywordsToExclude` | Exclude filters, as an array |
| `normalizedCount` | Pinterest relative index in this result set |
| `searchCount` | Pinterest relative search index |
| `weeklyChangePct` | Week-over-week growth, as a percentage |
| `monthlyChangePct` | Month-over-month growth, as a percentage |
| `yearlyChangePct` | Year-over-year growth, as a percentage |
| `weeklyChangeRank` | Pinterest rank index for weekly change |
| `monthlyChangeRank` | Pinterest rank index for monthly change |
| `yearlyChangeRank` | Pinterest rank index for yearly change |
| `seasonalityScore` | Seasonality score between 0 and 1 |
| `interestIds` | Pinterest interest taxonomy IDs |
| `history` | Weekly `{date, count, normalizedCount}` points, or `null` |
| `pinterestUrl` | Pinterest search URL for the term |
| `trendsUrl` | Pinterest Trends detail URL |
| `scrapedAt` | ISO timestamp when the row was written |

`normalizedCount` and `searchCount` are relative indexes, not absolute search volumes. Pinterest normalizes them against the largest term in the returned set, so the same term can change when you change the row limit or filters. Compare terms inside one run, not against external volume estimates.

Growth values are converted from Pinterest's raw ratios by multiplying by 100. No cap is applied. Pinterest shows values at or above 10,000% as `10,000%+`, while the Actor keeps the underlying value, so a row can contain `10001` even when the dashboard shows `10,000%+`.

### Input options

Only `countries` and `trendTypes` are required. Defaults suit a quick first run.

| Input | What it controls |
| --- | --- |
| `countries` | Codes such as `US`, `CA`, or `GB+IE`. Default: `["US"]`. |
| `trendTypes` | Trend lists to fetch. Default: `["growing"]`. |
| `interests` | Interest slugs, or empty for all 22 categories. |
| `maxTermsPerQuery` | Rows per country, trend, and interest. Range: 1 to 100. Default: 25. |
| `lookbackWindow` | `7D`, `30D`, `90D`, `180D`, or `365D`. Default: `30D`. |
| `keywordsToInclude` | Only keep terms containing one of these keywords. |
| `keywordsToExclude` | Drop terms containing one of these keywords. |
| `includeHistory` | Add a weekly series to each row. Default: `false`. |
| `historyDays` | 30, 90, 180, 365, or 730 days. Default: 90. |
| `endDate` | Report date in `YYYY-MM-DD`. Defaults to Pinterest's latest date. |
| `maxConcurrency` | Parallel queries, 1 to 5. Default: 2. |
| `maxRequestRetries` | Retries for network errors, HTTP 408, 429, and 5xx. Default: 2. |
| `proxyConfiguration` | Optional Apify Proxy. Disabled by default. |

Supported interests include `animals`, `architecture`, `art`, `beauty`, `design`, `diy_and_crafts`, `education`, `electronics`, `entertainment`, `event_planning`, `fashion`, `finance`, `food_and_drink`, `health`, `home_decor`, `lawn_and_garden`, `parenting`, `quotes`, `sports`, `travel`, `vehicles`, and `weddings`.

### Example Pinterest Trends output

This row came from a US `growing` query on 27 October 2026. Pinterest's latest report date was 24 October 2026.

```json
{
  "term": "top gunner outfit halloween",
  "rank": 1,
  "country": "US",
  "interest": null,
  "trendType": "growing",
  "endDate": "2026-10-24",
  "lookbackWindow": "30D",
  "keywordsToInclude": [],
  "keywordsToExclude": [],
  "normalizedCount": 100,
  "searchCount": 100,
  "weeklyChangePct": 30,
  "monthlyChangePct": 10001,
  "yearlyChangePct": 10001,
  "weeklyChangeRank": 1,
  "monthlyChangeRank": 5,
  "yearlyChangeRank": 5,
  "seasonalityScore": 0.31697708,
  "interestIds": [],
  "history": null,
  "pinterestUrl": "https://www.pinterest.com/search/pins/?q=top%20gunner%20outfit%20halloween",
  "trendsUrl": "https://trends.pinterest.com/detail/?country=US&terms=top%20gunner%20outfit%20halloween",
  "scrapedAt": "2026-10-27T13:41:40.255Z"
}
```

With `includeHistory` enabled, the same term returned weekly points including `2026-10-17: 79` and `2026-10-24: 100`. If Pinterest has no series for a term, `history` stays `null` and the row is still returned.

### How much does Pinterest Trends Scraper cost?

The Actor is designed for pay-per-event pricing at **$0.005 per trend row saved**, about **$5 per 1,000 rows**. Only saved rows are charged. Terms removed by filters and failed requests are not. History is included in the row price, so it does not add a second per-row charge. The live Pricing tab is authoritative for the current price and plan discounts.

### How to use Pinterest Trends Scraper

1. Open the Actor in Apify Console.
2. Choose countries and trend types, such as `US` and `growing`.
3. Optionally select interests and add keyword filters.
4. Set the maximum rows per query. Start with 25 for a quick test.
5. Enable weekly history if you need a time series.
6. Run the Actor, open the dataset, and export to CSV, Excel, or JSON.

For a first run, use one country, one trend type, no keyword filters, and 25 rows.

### Pinterest keyword research use cases

- **Content calendars:** Find seasonal searches before the peak and plan pins, posts, and landing pages. Use `seasonalityScore` and yearly change to separate evergreen topics from short spikes.
- **Ecommerce research:** Spot product styles, gift themes, and seasonal demand. Filter with `keywordsToInclude`, then compare countries.
- **Pinterest ads:** Build keyword lists from real search trends. Weekly change shows momentum, while yearly change helps avoid mistaking a seasonal spike for durable demand.
- **SEO research:** Pinterest is a visual search engine. These terms add demand signals that may not appear in traditional keyword tools.

### Output, API, and automation

The Actor writes to the default Apify dataset, available in the Output tab and through the Apify API. Download JSON, CSV, Excel, or HTML, read items with the Apify JavaScript or Python client, or connect it to Google Sheets, Make, Zapier, n8n, or your own service. You can schedule runs, trigger webhooks, or use the Apify MCP server.

The **Overview** view shows core ranking and growth columns. The **All fields** view shows all 23 fields.

### Limitations

- Uses public Pinterest Trends data, not Pinterest's access-controlled official Trends API.
- Counts are relative indexes, not absolute search volumes.
- Pinterest can change its public endpoints or fields at any time.
- Some countries, interests, or trend types return fewer rows than requested.
- Weekly history depends on Pinterest having data for the term and range.
- Does not collect pins, boards, creators, profiles, demographics, or related searches.
- A run with zero matching rows is a valid empty result.

### FAQ

#### Is this the official Pinterest Trends API?

No. This Actor reads public data used by the Pinterest Trends website. It is not affiliated with, endorsed by, or supported by Pinterest.

#### Do I need a Pinterest account or cookies?

No. The Actor does not require a Pinterest login, cookies, browser session, or API key.

#### Can I export Pinterest Trends to CSV or Excel?

Yes. Datasets can be downloaded as CSV, Excel, JSON, or HTML, and the same data is available through the Apify API.

#### How many Pinterest trends can I get per run?

Up to 100 rows for each country, trend type, and interest combination. Pinterest may return fewer rows when a filter is narrow or data is unavailable.

#### Why is a growth value higher than 10,000%?

The Actor preserves Pinterest's raw ratio and converts it to a percentage. Pinterest caps the display at `10,000%+`, so the dataset can contain a larger value.

#### Can I get weekly Pinterest trend history?

Yes. Enable `includeHistory` and choose 30 to 730 days. Each row includes dated weekly points when Pinterest provides them.

#### Can I run this Actor on a schedule?

Yes. Use Apify schedules to run daily, weekly, or monthly.

#### Does this Actor scrape Pinterest pins or boards?

No. It focuses on Pinterest Trends keyword data and does not collect pins, boards, creators, profiles, or pin engagement.

### Data source and responsible use

The Actor reads publicly available trend data from Pinterest's Trends website. Pinterest is named only to identify the data source. This Actor is not affiliated with or endorsed by Pinterest.

You are responsible for using the data in line with Pinterest's terms, privacy laws, and your own policies. Do not use the output for spam, harassment, or unlawful profiling.

# Actor input Schema

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

Country or region codes supported by Pinterest Trends.

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

Trend lists to fetch: growing, seasonal, top_monthly, or top_yearly.

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

Interest slugs to filter by, or empty for all 22 categories.

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

Rows to request per country and trend type (1-100).

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

Growth window: 7D, 30D, 90D, 180D, or 365D.

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

Add a weekly series to each row. Slower and uses more requests.

## `historyDays` (type: `integer`):

History window: 30, 90, 180, 365, or 730 days.

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

Report date in YYYY-MM-DD. Defaults to Pinterest's latest date.

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

Parallel queries (1-5). Lower is gentler on Pinterest.

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

Retries for network, 408, 429, and 5xx errors (0-5).

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

Optional Apify Proxy. Disabled by default.

## Actor input object example

```json
{
  "countries": [
    "US"
  ],
  "trendTypes": [
    "growing"
  ],
  "interests": [],
  "maxTermsPerQuery": 25,
  "lookbackWindow": "30D",
  "includeHistory": false,
  "historyDays": 90,
  "maxConcurrency": 2,
  "maxRequestRetries": 2,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

One row per ranked Pinterest trend term. Opens the All fields view of the default dataset.

# 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("akash9078/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 = {}

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

```

## MCP server setup

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