I run a visa agency in Bali. The other half of my week goes into Apify Actors, and one of them does a narrow job: feed it Pinterest usernames, get one row per profile — followers, following, pins, boards, monthly views, bio, website, badges, account age, last activity.

People buy that data for one reason. On Pinterest, followers are close to meaningless: the home feed is an interest graph, so a pin from an account with 50,000 followers can out-reach a pin from one with five million. The metric everybody asks for instead is monthly views — Pinterest's own "how many people saw your stuff this month" number, printed right under the profile name.

So before writing another word about influencer vetting, I measured that number on 30 accounts anybody would recognise. More than half of them report the same value, to the digit.

The run

30 usernames, profile rows only, no boards, no pins, 9 November 2026, no login, no proxy, build 0.1.24 of Pinterest Profile Scraper on a plain Apify account.

Rows 30 of 30, zero errors
Run time 21.0 s (0.7 s per profile)
Charged profile x30 = $0.048
followers filled 30 of 30
monthlyViews a usable number 10 of 30
monthlyViews exactly 10,000,001 17 of 30
monthlyViews negative 2 of 30
websiteVerified true 25 of 30
email present 7 of 30

The ceiling: 10,000,001

Seventeen accounts — etsy, nordstrom, target, lowes, homedepot, anthropologie, sephora, nike, canva, IKEAUSA, adidas, crateandbarrel, starbucks, nytimes, LEGO, airbnb, redbull — returned monthlyViews: 10000001. Not "about ten million" each. The identical integer, seventeen times.

That is Pinterest's display ceiling leaking through the API: the profile header shows 10M+ and the field behind it is pinned one above ten million. The Actor flags it (monthlyViewsIsCapped: true) precisely so you do not average it, rank on it, or chart it over time. Anything above the cap is invisible, and the gap it hides is enormous — Etsy and Red Bull sit in the same bucket.

The ten accounts that came back under the ceiling, with reach per follower:

account followers monthly views views / follower
bhg 4,049,841 9,116,251 2.25
allrecipes 1,406,868 8,498,948 6.04
hgtv 5,593,859 7,974,071 1.43
potterybarn 1,122,430 7,023,156 6.26
marthastewart 1,867,756 6,930,542 3.71
westelm 928,978 6,649,355 7.16
foodnetwork 3,177,228 4,219,087 1.33
natgeo 1,306,936 3,692,615 2.83
wholefoods 497,167 3,295,904 6.63
GoPro 49,756 21,286 0.43

Spread of 17x in reach per follower inside one list of big brands. And the disagreement between the two rankings is not subtle: redbull is 27th of 30 by followers (67,053) and is capped at 10M+, while hgtv is 2nd with 5,593,859 followers and reports 7,974,071 views. An 83x smaller audience, more reach. If your shortlist is sorted by followers, it is sorted by the wrong column.

-1 does not mean zero

Two accounts returned monthlyViews: -1, and that value has a precise meaning that took a second run to pin down. Every single row with -1 also had isBusiness: false.

Monthly views is a business-account field. Personal profiles do not get one computed, and Pinterest signals that with -1 rather than null. Treat it as "unknown", never as "no reach" — and never let it into a mean, because two -1s drag an average through the floor in a way no real number can.

One account sits between the two cases: thepioneerwoman, 886,313 followers, isBusiness: true, and monthlyViews: 1. A real business number, and it is one. The profile last pinned on 12 August 2022.

The username trap, and the field that catches it

The obvious workflow — take a brand list, lowercase it, paste it in — fails quietly, because somebody got there first. A second run on five guessed handles:

asked for what came back followers monthlyViews isBusiness
notion a villa rental site in Tavira, Portugal 2 -1 false
notionhq notionHQ, 0 pins 5 -1 false
nikeinc 2 pins, last one 29 February 2012 93 -1 false
benandjerrys a franchise store in Davidson 263 -1 false
benandjerry 916 pins, no website 14 -1 false

Five for five live, real, chargeable profiles that are not the brand. Nothing in the row says "wrong account" — you have to notice it. The reliable filter is the triple isBusiness: false + monthlyViews: -1 + websiteVerified: false, and the load-bearing field is the last one: websiteVerified is true only when the account owner proved to Pinterest that they control the domain on the profile. It was true for 25 of my 30 brands and false for all five impostors.

The five brands where it came back false are worth knowing about, because websiteVerified: false is not automatically a red flag: LEGO lists a lego.build/LEGOPinterest redirect rather than lego.com, and potterybarn simply never finished the verification. Use it as a strong hint, not a verdict — and check isVerified (Pinterest's identity badge, 27 of 30 here) beside it.

pins is not a pin count

This is the field I would most like to delete. Etsy's row says pins: 955057317. So I ran the same profile again with boards switched on and added up what its boards actually hold:

  • etsy — reported pins: 955,057,317. Its 42 public boards hold 17,202 pins between them. Off by a factor of 55,520.
  • nike — reported pins: 0. Its 9 public boards hold 1,174 pins.

For a big retailer the field counts something domain-wide — every pin anyone ever saved from etsy.com, as far as I can tell — and for Nike it counts nothing at all. It also moves like a live counter: the two runs were 72 seconds apart, and between them Etsy's pins fell by 990 while its followers rose by 1.

If you need "how much content does this account actually publish", switch boards on and sum pins across the board rows. 53 rows for two profiles took 3.8 s and $0.0848. The profile-level boards count is close but not exact — Etsy reports 43 and the grid returns 42, Nike reports 10 and returns 9, because secret and archived boards are counted and not served.

Reach survives silence for a long time

lastPinAt is the cheapest activity check in the row, and it does not correlate with reach the way you would expect. Of the 30: 13 pinned today, and 5 have been silent for more than six months — natgeo (23 December 2025), nytimes (27 February 2025), GoPro (24 November 2021), thepioneerwoman (12 August 2022), benandjerrys (7 March 2017).

The New York Times has not pinned in 20 months and is still capped at 10M+ monthly views, because Pinterest keeps redistributing old pins. GoPro, dormant since 2021, is the only account on the list whose monthly views (21,286) are below its follower count. So: monthlyViews tells you whether Pinterest still pushes the archive, lastPinAt tells you whether anyone is home. An influencer brief needs both columns, not either one.

The contact block is thinner than the brochures suggest: email on 7 of 30, instagramUrl on 11 of 30, all from business profiles that filled them in. Three of the seven are role mailboxes (social@, socialmedia@, social-hq@); four are a named employee's work address, which is personal data under GDPR even though Pinterest publishes it. Have a reason before you load those into a sequencer.

Calling it

{ "profiles": ["natgeo", "https://www.pinterest.com/marthastewart/", "@etsy"], "maxPinsPerProfile": 0, "includeBoards": false } 

Usernames are case-insensitive and deduplicated before anything is billed, so NatGeo and natgeo in one list are one charge. URLs on any Pinterest domain work, blank lines are skipped, and inputs that cannot be a profile (gopro inc, a /pin/ link) and usernames that do not exist come back as free type: "error" rows at the end of the dataset — my seven-input test charged for 4 and delivered 3 free explanations.

A real row from today, trimmed:

{ "type": "profile", "username": "redbull", "followers": 67053, "following": 50, "pins": 1952, "boards": 31, "monthlyViews": 10000001, "monthlyViewsIsCapped": true, "website": "http://redbull.com/", "websiteVerified": true, "isVerified": true, "isBusiness": true, "isPrivate": false, "createdAt": "2011-11-28T13:06:57.000Z", "lastPinAt": "2026-10-29T06:31:04.000Z", "interestsFollowing": 27, "hasShop": false, "scrapedAt": "2026-11-09T21:08:51.602Z" } 

From Python, reproducing the headline count:

import requests rows = requests.post( "https://api.apify.com/v2/acts/lergassy~pinterest-profile-scraper/run-sync-get-dataset-items", params={"token": "apify_api_..."}, json={"profiles": ["etsy", "hgtv", "redbull", "nytimes", "notion"]}, timeout=300, ).json() p = [r for r in rows if r.get("type") == "profile"] # skip free notice/error rows for r in p: mv = r["monthlyViews"] state = "10M+ (capped)" if r["monthlyViewsIsCapped"] else ("not a business account" if mv < 0 else mv) print(f'{r["username"]:<12} {r["followers"]:>9} {state}') 

When it is the wrong tool. It reads profiles you already know the names of — it cannot find them. Discovery is a different job (Pinterest Search Scraper returns people for a keyword, and you paste the usernames here). Private profiles give you the profile row and nothing else; secret boards never appear. There is no historical series behind any of these numbers, so if you want a trend in followers or monthlyViews, save the input as a task, schedule it weekly and diff your own snapshots. And if your deliverable is a reach ranking of large brands, this data cannot produce one: 17 of my 30 accounts are the same number, and that is Pinterest's decision, not mine.

Pricing is $0.0016 per profile, board or pin row, no run fee, with unknown usernames and bad inputs free. The 30-profile run cost $0.048 and took 21 seconds, which is the least interesting fact here. The interesting one is that followers is the column every shortlist gets sorted by, and on this list it put a 5.6-million-follower account above one with 67,053 that Pinterest shows to more people.