# Pinterest Trends Scraper — Rising Search Terms (`apt_marble/pinterest-trends-scraper`) Actor

Top trending Pinterest search terms for 34 markets, each with week-on-week, month-on-month and year-on-year change plus a seasonality score. Choose growing, seasonal, monthly or yearly lists, filter by growth, sort by volume, and expand any term into related searches. No Pinterest account needed.

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

## Pricing

$3.00 / 1,000 trend scrapeds

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/platform/actors/running/actors-in-store#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

## Pinterest Trends Scraper — Rising Search Terms by Country

See what people are about to search for on Pinterest. This actor returns the top trending Pinterest search terms for a market, each one carrying how much it grew against last week, last month and last year, plus a seasonality score that tells you whether it is a genuine breakout or a term that reliably comes back every year. Pick a market, pick a trend list, and get a clean table you can sort, filter and hand straight to a content or paid-media plan. No Pinterest account, no login, nothing to set up.

### What you can do with it

- **Plan content before the peak.** Catch a term while it is still climbing rather than after everyone has pinned it.
- **Separate a fad from a season.** The seasonality score tells you whether a term spikes every year at this point, so you know whether to build an evergreen page or a one-off post.
- **Compare markets.** Run the US and the UK side by side and see where the same idea is early in one and saturated in the other. The leading terms genuinely differ.
- **Feed an ad or SEO keyword list.** Turn on related search terms and every leading trend expands into the long-tail phrases Pinterest itself suggests to shoppers.
- **Track a market week after week.** Schedule it and keep a running history of what rose and what faded, all stamped with the date the numbers describe.
- **Brief clients with real numbers.** Weekly, monthly and yearly change with a position for each, not a screenshot.

### What you get

One row per term. A real record from a live run:

```json
{
  "term": "autumn outfits",
  "country": "GB+IE",
  "dataDate": "2026-07-27",
  "trendType": "growing",
  "source": "trend",
  "seedTerm": null,
  "position": 98,
  "normalizedCount": 100,
  "seasonalityScore": 0.9929107,
  "weeklyChangePercent": 70,
  "weeklyRank": 33,
  "monthlyChangePercent": 300,
  "monthlyRank": 98,
  "yearlyChangePercent": -1,
  "yearlyRank": 82,
  "isCapped": false,
  "searchUrl": "https://www.pinterest.com/search/pins/?q=autumn%20outfits",
  "scrapedAt": "2026-08-04T14:04:27.318Z"
}
```

And, when related search terms are switched on, extra rows in the same shape:

```json
{
  "term": "autumn outfits aesthetic",
  "country": "GB+IE",
  "dataDate": "2026-07-27",
  "trendType": "growing",
  "source": "suggestion",
  "seedTerm": "autumn outfits",
  "position": 1,
  "normalizedCount": null,
  "seasonalityScore": null,
  "weeklyChangePercent": null,
  "weeklyRank": null,
  "monthlyChangePercent": null,
  "monthlyRank": null,
  "yearlyChangePercent": null,
  "yearlyRank": null,
  "isCapped": false,
  "searchUrl": "https://www.pinterest.com/search/pins/?q=autumn%20outfits%20aesthetic",
  "scrapedAt": "2026-08-04T14:04:27.318Z"
}
```

### Input reference

| Field | Type | Default | What it does |
| --- | --- | --- | --- |
| `countries` | list of text | `["US"]` | Which markets to read. Pinterest publishes some countries on their own and others only inside a grouped market — see the list below. Anything unusable is reported and skipped, and if it belongs to a group you are told which one. |
| `trendType` | select | `growing` | Which of Pinterest's four trend lists to read: **Growing** (accelerating right now), **Seasonal** (peaks at this time every year), **Top monthly**, **Top yearly**. Each one returns a genuinely different set of terms. |
| `maxTermsPerCountry` | integer | `100` | How many terms to keep per market, after filtering and sorting. 100 is the most Pinterest publishes for a market on a given day. |
| `sortBy` | select | `weekly` | Which figure decides the order of what you keep: week-on-week growth, month-on-month, year-on-year, or search volume. |
| `minWeekOverWeekGrowth` | integer | empty | Keep only terms that grew at least this much versus the previous week. Leave empty to keep everything; use a negative number to let declining terms through. |
| `expandWithSuggestions` | boolean | `false` | Also collect Pinterest's own related search terms for the leading trends, as extra rows marked `suggestion`. |
| `suggestionSeedCount` | integer | `10` | How many leading trends per market to expand. Only used when the switch above is on. |

**Markets you can ask for:** `US`, `CA`, `GB`, `GB+IE`, `FR`, `DE`, `DE+AT+CH`, `IT`, `ES`, `IT+ES+PT+GR+MT`, `NL+BE+LU`, `SE+DK+FI+NO`, `PL+RO+HU+SK`, `PL+RO+HU+SK+CZ`, `CY+CZ+GR+HU+MT+PL+RO+SK`, `TR`, `BR`, `MX`, `AR`, `CO`, `MX+AR+CO+CL`, `CR+DO+EC+GT+PE`, `AU+NZ`, `IN`, `ID`, `MY`, `PH`, `TH`, `KR`, `SA`, `EG`, `AE+SA+KW+QA+OM+BH+EG+IQ+DZ`, `IL+NG+PK+ZA+TR+MA+IN`, `JP`.

### Output fields

| Field | Type | Meaning |
| --- | --- | --- |
| `term` | text | The Pinterest search term. |
| `country` | text | The market this row belongs to, exactly as you asked for it. |
| `dataDate` | text | **The date the numbers describe** — not the day you ran the actor. Every row carries it. |
| `trendType` | text | Which trend list this came from: `growing`, `seasonal`, `topMonthly` or `topYearly`. |
| `source` | text | `trend` for a published trending term, `suggestion` for a related term expanded from one. |
| `seedTerm` | text | For a suggestion row, the trending term it was expanded from. Empty on trend rows. |
| `position` | integer | Where the term sat in Pinterest's own list for that market and day. |
| `normalizedCount` | integer | Relative search volume on a 0–100 scale within the market. 100 is the busiest term in that list. |
| `seasonalityScore` | number | 0–1. The closer to 1, the more reliably the term peaks at this point in the year. |
| `weeklyChangePercent` | integer | Percent change versus the previous week. |
| `weeklyRank` | integer | Position by weekly growth, 1 being the biggest gain. |
| `monthlyChangePercent` | integer | Percent change versus the previous month. |
| `monthlyRank` | integer | Position by monthly growth, 1 being the biggest gain. |
| `yearlyChangePercent` | integer | Percent change versus the same point last year. |
| `yearlyRank` | integer | Position by yearly growth, 1 being the biggest gain. |
| `isCapped` | boolean | `true` when one of the three percent figures has hit Pinterest's own ceiling of `10001`, which means "more than +10000%" rather than an exact reading. Treat those as "exploded", not as a precise number. |
| `searchUrl` | text | Opens the term on Pinterest so you can eyeball what is actually ranking. |
| `scrapedAt` | text | When the row was collected. |

Suggestion rows carry no volume, growth or seasonality — Pinterest does not publish those for related terms. Those columns are left **empty rather than zero**, so a blank never gets misread as "flat".

Each term appears **once per market**. Related terms overlap heavily with each other and with the trends they were expanded from, so a term that turns up both ways is reported once — as the trend row that carries the real figures, never as a second, blank-figured copy you would have to clean up and pay for.

### Pricing

You pay per row in your dataset. One trending term is one row; one related term, when you switch them on, is also one row. Nothing else is billed — the shared lookups the run does before it produces anything are free to you.

| What you pay for | Price per 1,000 rows |
| --- | --- |
| Trend scraped | **$3.00** |

**Worked example.** You want the top 50 growing terms for the US and the UK, every Monday. That is 50 + 50 = 100 rows, so **$0.30** per run and about **$1.20** a month.

Turn on related search terms with the default of 10 seeds per market and each market adds roughly 100 more rows, so the same run becomes about 300 rows, or **$0.90**. Cap the spend with `maxTermsPerCountry`, `minWeekOverWeekGrowth` and `suggestionSeedCount` — the run stops producing rows the moment your limit is met.

### Limits & what this actor cannot do

- **Pinterest's trend figures run about a week behind today.** On 4 August the newest published day was 27 July. This is Pinterest's own publishing schedule, not a delay in the actor, and it is why every row carries `dataDate`. Nothing here is a live, up-to-the-minute reading.
- **100 terms per market per day is everything Pinterest publishes.** Asking for more will not produce more. If you need breadth, add markets or trend types rather than raising the limit.
- **Percent changes are capped at `10001`.** Any figure at that value means "more than +10000%" and is flagged with `isCapped`. Do not chart it as an exact number.
- **Some countries only exist inside a group.** Ireland, Austria, Chile, New Zealand and many others are published only as part of a grouped market such as `GB+IE`, `DE+AT+CH` or `AU+NZ`. Ask for one on its own and the run tells you which group carries it and continues with the rest.
- **A market Pinterest is not currently serving is reported, not faked.** Japan is accepted as an input but Pinterest returns no trends for it today; the run says so and carries on rather than inventing an empty result or failing.
- **Trend lists are market-specific by design.** The same day returns different leading terms for the US and the UK, so pick your market deliberately.
- **Related terms are ideas, not measurements.** They come from Pinterest's own suggestions and carry no volume or growth figures at all.
- **No pins, boards, images or creators.** This actor returns search terms and their trend figures. Other actors in this range cover pins, boards, profiles and creators.
- **Speed depends on how many markets you ask for and on Pinterest's own response times.** No fixed throughput is promised.
- Pinterest's terms govern automated access. You are responsible for using the data lawfully and in line with the source site's terms.

### FAQ

**Do I need a Pinterest account?**
No. Nothing to connect, nothing to sign in to. Set the markets and run it.

**Does it need my login or password?**
No, and it never asks for one.

**Can I schedule it?**
Yes. Weekly is the natural rhythm, since Pinterest publishes a new trend day roughly once a week. Every row is stamped with `dataDate`, so a scheduled run builds a clean history with no duplicated days.

**Is the data complete?**
It is complete for what Pinterest publishes, and that has real edges. You get up to 100 terms per market per day — the full list Pinterest makes public — but not an unlimited archive, not a live real-time feed, and not historical days of your choosing. The most recent published day is what you get, and it is roughly a week behind today.

**Why is a percent change exactly 10001?**
That is Pinterest's ceiling for "more than +10000%". The actor passes it through untouched and sets `isCapped` to `true` so you never mistake it for an exact measurement.

**Why did my country get skipped?**
Either Pinterest publishes it only inside a grouped market — the run tells you which group to use instead — or Pinterest is not currently serving trends for it at all. Either way the rest of your markets still run.

**What is the difference between the four trend types?**
**Growing** is what is accelerating fastest right now, and is where breakouts show up. **Seasonal** is what reliably peaks at this point in the calendar. **Top monthly** and **Top yearly** are the biggest terms over a longer window, which is where the evergreen staples sit. They return genuinely different lists, so it is worth running more than one.

# Actor input Schema

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

Which markets to pull trending search terms for. Pinterest publishes trends for some countries on their own and for others only as part of a grouped market, so use these exact values: US, CA, GB, GB+IE, FR, DE, DE+AT+CH, IT, ES, IT+ES+PT+GR+MT, NL+BE+LU, SE+DK+FI+NO, PL+RO+HU+SK, PL+RO+HU+SK+CZ, CY+CZ+GR+HU+MT+PL+RO+SK, TR, BR, MX, AR, CO, MX+AR+CO+CL, CR+DO+EC+GT+PE, AU+NZ, IN, ID, MY, PH, TH, KR, SA, EG, AE+SA+KW+QA+OM+BH+EG+IQ+DZ, IL+NG+PK+ZA+TR+MA+IN, JP. Anything else is reported and skipped rather than failing the run, with a note pointing at the grouped market it belongs to.

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

Which of Pinterest's own trend lists to read. Growing shows terms accelerating fastest right now. Seasonal shows terms that reliably peak at this point in the year. Top monthly and Top yearly show the biggest terms over a longer window.

## `maxTermsPerCountry` (type: `integer`):

How many trending terms to keep for each country, after filtering and sorting. Pinterest publishes at most 100 terms per country per day.

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

Which growth window decides the order of the terms you keep. Search volume orders by relative popularity instead of growth.

## `minWeekOverWeekGrowth` (type: `integer`):

Keep only terms that grew at least this much versus the previous week. Leave empty to keep everything. Use a negative value to allow declining terms through.

## `expandWithSuggestions` (type: `boolean`):

Also collect Pinterest's own related search terms for the leading trends, as extra rows marked "suggestion". Great for long-tail keyword ideas, but Pinterest publishes no growth or volume figures for them, so those columns stay empty.

## `suggestionSeedCount` (type: `integer`):

How many of the leading trends per country to expand into related search terms. Only used when "Add related search terms" is on.

## Actor input object example

```json
{
  "countries": [
    "US",
    "GB"
  ],
  "trendType": "growing",
  "maxTermsPerCountry": 100,
  "sortBy": "weekly",
  "expandWithSuggestions": false,
  "suggestionSeedCount": 10
}
```

# Actor output Schema

## `dataset` (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",
        "GB"
    ],
    "trendType": "growing",
    "maxTermsPerCountry": 100,
    "sortBy": "weekly",
    "expandWithSuggestions": false,
    "suggestionSeedCount": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("apt_marble/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",
        "GB",
    ],
    "trendType": "growing",
    "maxTermsPerCountry": 100,
    "sortBy": "weekly",
    "expandWithSuggestions": False,
    "suggestionSeedCount": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("apt_marble/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",
    "GB"
  ],
  "trendType": "growing",
  "maxTermsPerCountry": 100,
  "sortBy": "weekly",
  "expandWithSuggestions": false,
  "suggestionSeedCount": 10
}' |
apify call apt_marble/pinterest-trends-scraper --silent --output-dataset

```

## MCP server setup

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