📌 Pinterest Trend & Reach Report avatar

📌 Pinterest Trend & Reach Report

Pricing

$24.99/month + usage

Go to Apify Store
📌 Pinterest Trend & Reach Report

📌 Pinterest Trend & Reach Report

Scrape Pinterest search results with the Pinterest Search Scraper. Extract pins, images, descriptions, URLs, and engagement stats by keyword or topic. Perfect for trend tracking, market research, and content inspiration. Fast, reliable, and scalable for bulk searches.

Pricing

$24.99/month + usage

Rating

0.0

(0)

Developer

Scrapier

Scrapier

Maintained by Community

Actor stats

1

Bookmarked

16

Total users

1

Monthly active users

9 days ago

Last modified

Share

Pinterest Search Scraper — Pins Plus a Trend & Reach Report

Search Pinterest for any keyword and get two things from one run: every matching pin as a structured JSON row, and a run-level Trend & Reach Report — color palette, creator/board reach, posting cadence, engagement, and image-format distribution — computed only from the pins that run just scraped. Every analytics value traces back to a real scraped field: a count, an average, a median, a ratio, or a hue bucket, never a modeled score. Point it at a keyword and get pins today, plus the shape of the trend behind them.

What is Pinterest Search Scraper — Pins Plus a Trend & Reach Report?

Pinterest Search Scraper — Pins Plus a Trend & Reach Report queries Pinterest's public pin-search results for a single keyword and returns two outputs: one dataset row per matching pin (identical schema to a plain Pinterest search scraper), and — unless you turn it off — a run-level analytics object written to the key-value store. No Pinterest account, login, or session cookie is required; the input schema has no auth field at all, only a search query and a proxy configuration. What sets this apart from a plain search scrape is the second output: a Trend & Reach Report that turns the same pins you already paid for into color, reach, and cadence intelligence, without a second run or a second bill.

Key capabilities:

  • Per-pin search scrape — title, description, dominant color, creator, board, reaction counts, and destination link for every matching pin, streamed live to the dataset as they're found.
  • Content-type filter — restrict the search (and the report) to video pins only, or include all pin types, via filter.
  • Adjustable sample size — scrape anywhere from 1 to 10,000 pins per run via limit, which also sets the report's statistical sample size.
  • Trend & Reach Report — a single key-value store record aggregating engagement, color palette, creator/board/domain reach, posting cadence, and image-format shape across the whole sample.
  • Configurable ranking depth — control how many entries appear in each of the report's rankings (top pinners, top boards, top domains, top hex colors, top pins) via topN.
  • Raw mode — set rawData to skip the report entirely and get pin-only output, identical to a plain search scraper.

What data can you get with Pinterest Search Scraper — Pins Plus a Trend & Reach Report?

The actor writes to two separate storages in the same run: the default dataset (pins) and the key-value store (the report).

Result TypeExtracted FieldsPrimary Use Case
Pins (dataset row)query, node_id, type, title, description, domain, link, dominant_color, created_at, board, reaction_counts, native_creator, pinner, image_url, image_width, image_height, scrapedAtRaw pin content for feeds, boards, moodboards, or LLM context
Trend & Reach Report (key-value store, TREND_REPORT)query, filter, generatedAt, pinCount, analytics.engagement, analytics.colorPalette, analytics.reach, analytics.cadence, analytics.imageFormats, scrapedAtKeyword-level trend, color, and creator-reach research without building your own aggregation pipeline

Trend & Reach Report

This is the report available at every run (unless rawData=true), written to the key-value store under the TREND_REPORT key. It has five sections, each derived only from the fields already present on the scraped pins:

  • engagementtotalReactions, avgReactionsPerPin, medianReactionsPerPin, maxReactions, a raw reactionsByTypeId breakdown (Pinterest's internal reaction-type IDs are kept unlabeled — Pinterest does not expose their human names, so the actor does not guess them), and topPinsByReactions (the topN highest-reaction pins).
  • colorPalette — each pin's real dominant_color hex value is classified into a hue family (red, orange, yellow, green, cyan, blue, purple, pink, plus black/white/gray neutrals for low-saturation or extreme-brightness colors), then rolled up into paletteFamilies (share of pins and average reactions per family), topDominantHex (the most common raw hex values), and sample-wide avgSaturation / avgBrightness.
  • reachuniquePinners, uniqueBoards, topPinnersByFollowers (ranked by each pinner's own follower_count), topBoardsByPinCount (ranked by each board's pin_count), and topDomains (most common domain values among the linked pins).
  • cadenceoldest / newest pin dates, medianAgeDays, pinsLast30Days, pinsLast90Days, and a pinsByMonth histogram, all parsed from each pin's created_at field.
  • imageFormatsportrait / landscape / square counts (from each pin's width-to-height ratio) plus sample-wide avgWidth, avgHeight, and avgAspectRatio.
{
"query": "minimalist living room",
"filter": "videos",
"generatedAt": "2026-07-26T09:12:41.000Z",
"pinCount": 200,
"analytics": {
"colorPalette": {
"pinsAnalyzed": 187,
"paletteFamilies": [
{ "family": "white", "count": 61, "sharePct": 32.6, "avgReactions": 14.2 },
{ "family": "gray", "count": 40, "sharePct": 21.4, "avgReactions": 9.8 }
],
"topDominantHex": [{ "hex": "#f4f1ec", "count": 22 }],
"avgSaturation": 0.184,
"avgBrightness": 0.771
}
},
"scrapedAt": "2026-07-26T09:10:02.000Z"
}

Pins — creator and board metadata

Every pin row carries two nested objects straight from Pinterest's own response: pinner (the account that posted the pin — username, full_name, follower_count, among whatever else Pinterest returns on that object) and board (the board the pin was saved to — name, url, pin_count). These are the fields the reach section of the Trend & Reach Report ranks on, but they're also available raw on every dataset row for anyone who wants to build their own creator or board leaderboard instead of using the built-in one.

Why not build this yourself?

Pinterest's developer platform is scoped to managing a business account's own pins, boards, and ad campaigns — it is not a public endpoint for querying and returning someone else's search results by keyword, which is what this actor does. Building that query surface in-house means reverse-engineering Pinterest's internal search resource endpoints yourself, keeping up with a UI that the actor's own selectors already have to fall back gracefully around ("Pinterest UI selectors change often" is a real condition the scraper handles), maintaining a residential proxy pool (Pinterest blocks datacenter IPs outright), and re-implementing retry and block-detection logic (login-wall redirects, HTTP 4xx responses) from scratch. This actor already does all of that, and you pay per pin returned rather than per engineering hour spent keeping a scraper alive.

Pinterest Trends data is a platform-side statistic: a normalized search-volume index for a keyword, independent of any specific set of search results. A Trend & Reach Report, as built by this actor, is the opposite — it is computed entirely from the actual pins a specific search returned, so every number in it (a color share, a follower count, a posting-cadence histogram) traces to a pin you can also see in the dataset.

This distinction matters because they answer different questions. Pinterest's own Trends product (surfaced by other Pinterest Trends scrapers, which return fields like term, normalizedCount, weeklyChange, and seasonalityScore — as observed on the Apify Store on 2026-07-26) tells you whether a keyword is rising or falling in aggregate search interest. It does not tell you what the top results for that keyword actually look like, who is posting them, or what colors dominate them. A Trend & Reach Report answers exactly that: for the query you ran, which colors are winning, which creators and boards have the reach, and how fresh the results are.

This actor returns both kinds of signal in one place — per-pin rows (type, dominant_color, pinner, board, reaction_counts, …) in the dataset, and the derived analytics object in TREND_REPORT — rather than requiring a separate Trends lookup and a separate search scrape.

How to scrape Pinterest with Pinterest Search Scraper — Pins Plus a Trend & Reach Report?

  1. Open Pinterest Search Scraper — Pins Plus a Trend & Reach Report on its Apify Store listing and click Try for free (or Run, if you already have it saved).
  2. Enter your search term in query — this is the only required field.
  3. Set your real query controls: filter (all or videos) to restrict the content type, limit to set how many pins to scrape (and the report's sample size), and topN to size the report's rankings.
  4. Start the run. Leave proxyConfiguration on its Residential default — Pinterest blocks datacenter IPs, so an unconfigured or datacenter proxy will typically return zero pins.
  5. Download the pin rows as JSON or CSV from the dataset, and read the aggregated report from the key-value store record TREND_REPORT.
{
"query": "minimalist living room",
"filter": "videos",
"limit": 200,
"topN": 10
}

How to run multiple queries in one job

The input schema takes a single query string per run — there is no array or batch-upload field for multiple keywords in one job. To cover several keywords, start one run per keyword, either from the Console or via the Apify API/apify_client, looping over your keyword list and calling the actor once per keyword. Each run produces its own dataset and its own TREND_REPORT record, so reports never mix across keywords.

⬇️ Input

The input schema exposes one required field and five optional ones — a search query, a content-type filter, two size controls, a raw-output toggle, and proxy configuration.

ParameterRequiredTypeDescriptionExample Value
queryYesstringWhat to search for on Pinterest. Default is "wallpaper"."minimalist living room"
filterNostring (enum: all, videos)Show all pins or only video pins; also restricts what the report aggregates over. Default is "videos"."all"
limitNointeger (1–10,000)How many pins to scrape. Also the report's sample size — a larger limit gives more stable color/reach/cadence statistics. Default is 10.200
topNNointeger (1–100)How many entries to list in each report ranking (top pinners, boards, domains, hex colors, pins by reactions). Default is 10.5
rawDataNobooleanWhen true, streams per-pin rows only and skips the Trend & Reach Report — base-scraper behavior. Default is false.true
proxyConfigurationNoobjectProxy settings. Apify Residential proxy is strongly recommended — Pinterest blocks datacenter IPs. Default is { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }.see below

Example JSON input:

{
"query": "minimalist living room",
"filter": "all",
"limit": 500,
"topN": 15,
"rawData": false,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

⚠️ Common pitfall: filter defaults to "videos", not "all" — if you want every pin type (the more common expectation for a general Pinterest search), set filter to "all" explicitly. The actor also normalizes filter internally: any value other than the literal string "videos" is treated as "all", so only that one exact value narrows the search. Separately, if you call the actor via the API and omit limit from the payload entirely (rather than sending the Console's pre-filled default), the actor's own internal fallback is 100, not the 10 shown as the schema default — always send an explicit limit if you want a specific pin count.

⬆️ Output

Output is typed, normalized JSON with a consistent schema across runs — the pin schema and the analytics object shape never change based on what Pinterest returns. Export the dataset as JSON, CSV, Excel, or any other format the Apify platform supports; read the report directly from the key-value store record.

Scraped results

Default dataset — one row per pin, byte-identical to a plain Pinterest search scraper's per-pin schema plus scrapedAt:

[
{
"query": "minimalist living room",
"node_id": "998234723847",
"type": "pin",
"title": "Minimalist Living Room With Warm Oak Accents",
"description": "",
"domain": "example-decor-blog.com",
"link": "https://example-decor-blog.com/minimalist-living-room-ideas",
"dominant_color": "#e8e2d6",
"created_at": "Tue, 03 Mar 2026 14:22:10 +0000",
"board": { "id": "6011223344", "name": "Living Room Ideas", "url": "/user123/living-room-ideas/", "pin_count": 214 },
"reaction_counts": { "1": 12, "3": 4 },
"native_creator": {},
"pinner": { "id": "50019283746", "username": "modern.interiors", "full_name": "Modern Interiors Studio", "follower_count": 84210 },
"image_url": "https://i.pinimg.com/originals/aa/bb/cc/aabbcc112233.jpg",
"image_width": 736,
"image_height": 1104,
"scrapedAt": "2026-07-26T09:10:02.000Z"
},
{
"query": "minimalist living room",
"node_id": "998234723999",
"type": "pin",
"title": "Scandinavian Minimalist Lounge Setup",
"description": "Neutral palette, low-profile furniture, natural light",
"domain": "",
"link": "",
"dominant_color": "#d9d2c4",
"created_at": "Sat, 21 Feb 2026 08:03:55 +0000",
"board": { "id": "6011223399", "name": "Scandi Home", "url": "/user456/scandi-home/", "pin_count": 88 },
"reaction_counts": { "1": 31 },
"native_creator": {},
"pinner": { "id": "50019284000", "username": "nordic.living.co", "full_name": "Nordic Living Co.", "follower_count": 15320 },
"image_url": "https://i.pinimg.com/originals/dd/ee/ff/ddeeff445566.jpg",
"image_width": 1000,
"image_height": 1500,
"scrapedAt": "2026-07-26T09:10:03.000Z"
},
{
"query": "minimalist living room",
"node_id": "998234724102",
"type": "pin",
"title": "Minimal Grey Sofa Corner",
"description": "",
"domain": "example-furniture-shop.com",
"link": "https://example-furniture-shop.com/products/minimal-grey-sofa",
"dominant_color": "#b7b3ab",
"created_at": "Mon, 06 Jul 2026 19:47:02 +0000",
"board": { "id": "6011224410", "name": "Furniture Finds", "url": "/user789/furniture-finds/", "pin_count": 41 },
"reaction_counts": {},
"native_creator": {},
"pinner": { "id": "50019290111", "username": "graystudio", "full_name": "Gray Studio", "follower_count": 6042 },
"image_url": "https://i.pinimg.com/originals/11/22/33/112233445566.jpg",
"image_width": 900,
"image_height": 1200,
"scrapedAt": "2026-07-26T09:10:05.000Z"
}
]

The default dataset view surfaces only 10 columns for a compact table — node_id, type, title, dominant_color, image_width, image_height, domain, link, created_at, scrapedAt. The underlying row is larger: query, description, board, reaction_counts, native_creator, pinner, and image_url are all present on every row and available via the API or a JSON/CSV export — they're simply not columns in the default table view.

Key-value store record TREND_REPORT — the full analytics object described above, present unless rawData=true.

How can I use the data extracted with Pinterest Search Scraper — Pins Plus a Trend & Reach Report?

  • 🎨 Design and content teams: Read colorPalette.paletteFamilies to see which hue family dominates a niche right now, and pull topDominantHex to build an actual color swatch for a moodboard or campaign brief — no manual color-picking across dozens of pins.
  • 🤖 AI engineers and LLM developers: Feed the pin array or the TREND_REPORT object directly to an LLM as grounded context — the agent issues a query, receives structured JSON (real hex colors, real creator handles, real dates), and generates an answer or brief without hallucinating trend data.
  • 📊 Market researchers: Use reach.topPinnersByFollowers and reach.topDomains to see which accounts and destination sites have real reach in a niche, and cadence.pinsByMonth to see whether interest in a query is accelerating or cooling.
  • 🛍️ Product and merchandising teams: Cross-reference colorPalette and imageFormats against your own catalog to spot a gap — a color family or image orientation that's trending in search results but underrepresented in your current lineup.

Monitoring here means re-running the same query on a schedule and diffing the TREND_REPORT between runs rather than reading a single snapshot in isolation. What changes between runs is the input to every decision: a shift in colorPalette.paletteFamilies shares means the visual trend itself is moving; a jump in reach.topPinnersByFollowers follower counts or a new name entering reach.topBoardsByPinCount means a new creator or board is gaining ground in that search; a change in cadence.pinsLast30Days versus the previous run's figure tells you whether fresh content is accelerating or slowing for that keyword.

The fields worth diffing run-over-run are analytics.colorPalette.paletteFamilies[].sharePct, analytics.reach.topPinnersByFollowers, analytics.reach.topBoardsByPinCount, analytics.cadence.pinsLast30Days, and analytics.engagement.avgReactionsPerPin. A practical loop: schedule a run per keyword you track, store each run's TREND_REPORT (by generatedAt), and alert when a color family's sharePct moves sharply or a new name appears in the top pinners or boards list.

This actor has no built-in scheduling of its own — point an Apify Schedule at it for the repeated-run half of that loop, and read each run's key-value store record afterward, either from the Console or via the API.

Integrate Pinterest Search Scraper — Pins Plus a Trend & Reach Report and automate your workflow

Pinterest Search Scraper — Pins Plus a Trend & Reach Report works with any language or tool that can send an HTTP request, using the standard Apify API and its official client SDKs.

REST API with Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_API_TOKEN>")
run = client.actor("scrapier/pinterest-trend-reach-report").call(
run_input={"query": "minimalist living room", "filter": "all", "limit": 200}
)
# Per-pin rows from the default dataset
for pin in client.dataset(run["defaultDatasetId"]).iterate_items():
print(pin["title"], pin["dominant_color"])
# The Trend & Reach Report from the key-value store
report = client.key_value_store(run["defaultKeyValueStoreId"]).get_record("TREND_REPORT")
print(report["value"]["analytics"]["colorPalette"]["paletteFamilies"])

Scheduled monitoring and delivery

The actor has no built-in webhook or delivery feature of its own. Use an Apify Schedule to trigger repeated runs against a keyword, and either poll the run's dataset and TREND_REPORT key-value record via the API afterward, or attach an Apify webhook to the run's completion event to push a notification into your own pipeline.

Yes — scraping Pinterest's public search results is scraping publicly accessible data, and this actor returns only what any visitor to pinterest.com sees without logging in. The pin, board, and image data returned is public content protected primarily by Pinterest's Terms of Service and database/content rights rather than personal-data law, since the primary entity here is a pin, not a person. That said, each pin's pinner object includes a public username, display name, and follower count for the account that posted it — self-published, publicly visible profile data, but data that can identify a natural person, so GDPR/CCPA considerations can apply if you store or profile individuals from it rather than just the pin content. Scraping for one-off research and scraping to build an ongoing dataset for AI training or resale carry different risk profiles. Consult your legal team for commercial use cases involving bulk data storage.

❓ Frequently asked questions

Can I get only video pins?

Yes — set filter to "videos" (the default) to restrict both the search and the report to video pins, or "all" to include every pin type Pinterest returns for the query.

Does the actor accept a Pinterest search URL instead of a keyword?

No — only a plain text query is accepted. Internally the actor builds the Pinterest search URL itself (https://www.pinterest.com/search/pins/?q=<query>&rs=typed, with content_type=videos appended when filter is "videos"), so you never construct the URL yourself.

How does the actor handle Pinterest's anti-bot measures?

It runs a real Chromium browser via Playwright with a stealth init script that hides the most-fingerprinted automation tells (navigator.webdriver, navigator.plugins, navigator.languages, window.chrome), rotates between four desktop Chrome user agents, and strongly recommends Apify Residential proxy — Pinterest blocks datacenter IPs outright. If a session gets a blocked-looking response (HTTP 4xx, or a redirect to Pinterest's login wall), the actor discards that session and retries with a fresh browser and proxy connection, up to 3 attempts total, with exponential backoff between them.

Does the actor extract the Trend & Reach Report?

Yes — it's written to the key-value store under the key TREND_REPORT, with engagement, colorPalette, reach, cadence, and imageFormats sections inside its analytics object. It is absent whenever rawData is set to true.

How many pins does the actor return per query?

Up to the limit you set (1–10,000, default 10). It stops early once it has pushed that many unique pins, or after up to 200 scroll attempts, or after 15 consecutive scroll/pagination fetches that produce no new pins — whichever comes first.

How do I monitor a keyword's Pinterest trend over time?

Schedule a run against the same query on a recurring basis (via Apify Schedules), store each run's TREND_REPORT by its generatedAt timestamp, and diff the fields you care about — colorPalette.paletteFamilies shares, reach.topPinnersByFollowers, reach.topBoardsByPinCount, and cadence.pinsLast30Days — against the previous run to see what changed.

Does this work with Claude, ChatGPT, and other AI agent frameworks?

It's callable as a standard Apify Actor through the Apify API and the apify_client / apify-client SDKs, so any agent framework that can make an HTTP request or use an Apify client can trigger a run and read back both the pin dataset and the TREND_REPORT object as grounded context for an answer.

How does this compare to other Pinterest scrapers?

Pinterest Trend Spy (ddevx/pinterest-trend-spy) returns micro-niche keyword bubbles, autocomplete suggestions, an intent-scoring model, AI image prompts, and email extraction from pin content, on flat monthly pricing — as observed on the Apify Store on 2026-07-26. Pinterest Trends Scraper (automation-lab/pinterest-trends-scraper) returns Pinterest's own official Trends metrics (term, normalizedCount, weeklyChange, seasonalityScore) by country and does not scrape individual pins, boards, or profiles at all — also as observed on 2026-07-26. This actor is the only one of the three that returns full per-pin search results and derives its trend signal (color, reach, cadence) directly from those same results rather than from a separate intent model or Pinterest's own Trends index.

Can I use this without managing proxies or Pinterest credentials?

Yes for credentials — no Pinterest account, login, or session cookie is required or accepted anywhere in the input schema. Proxies are not fully managed for you: the actor uses whatever you configure in proxyConfiguration, and Apify Residential proxy is strongly recommended, since Pinterest blocks datacenter IPs and an unconfigured or datacenter-only proxy will typically return zero pins and an empty report.

💬 Your feedback

Found a bug, or need a field this actor doesn't currently return? Let Scrapier know through the actor's Issues tab on its Apify Store listing, or via the Console's built-in support contact — reports like this directly shape what gets added next.