Pinterest Profile Scraper By Niche Keyword avatar

Pinterest Profile Scraper By Niche Keyword

Pricing

from $5.99 / 1,000 results

Go to Apify Store
Pinterest Profile Scraper By Niche Keyword

Pinterest Profile Scraper By Niche Keyword

Scrape Pinterest profiles by niche keywords to discover relevant creators, businesses, and influencers. Extract usernames, profile URLs, bios, follower counts, boards, pins, and engagement data for influencer research, competitor analysis, audience discovery, and targeted marketing.

Pricing

from $5.99 / 1,000 results

Rating

0.0

(0)

Developer

Scrapier

Scrapier

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

0

Monthly active users

12 days ago

Last modified

Share

Pinterest Profile Scraper — Find Accounts by Niche Keyword

Pinterest Profile Scraper By Niche Keyword turns a phrase like sourdough baking or van conversion into a list of real Pinterest accounts, then scrapes the full public profile of every account it keeps — follower count, bio, website, verification flags, avatar and cover images, and account age. Every result is structured JSON, ready to pass into an LLM prompt, load into a spreadsheet, or feed a monitoring pipeline. Unlike a plain profile scraper, which needs you to already know the usernames, this Actor searches Pinterest's own people results for you, screens out low-follower and avatar-less accounts before spending a request on them, and tags every row with the keyword and search rank it came from. It runs on Apify with no Pinterest login, no cookie, and no session token.

🔍 What is Pinterest Profile Scraper By Niche Keyword?

It is a Pinterest people-search and profile-export tool: you give it niche phrases and/or account URLs, and it returns one row of profile data per account, tagged with how and where each one was found. No Pinterest account or login is required — every request goes through Pinterest's own guest (logged-out) endpoints.

What makes it different from a URL-only Pinterest profile scraper is the discovery step: it can turn a keyword into an account list on its own, and it screens that list on follower count and avatar status before it fetches a single profile, so accounts you don't want never cost you a request.

  • 🔎 Keyword-to-account discovery — searches Pinterest's people/users results for each phrase you supply
  • 👤 Full public profile export — the same 45-column profile record for every account, supplied or discovered
  • 🧹 Pre-fetch screening — a follower floor and a placeholder-avatar screen run on the search result, before any profile request
  • 🧭 Provenance on every rowdiscovery_source, matched_keyword and search_rank show exactly how each account was found
  • 🔁 Cross-keyword deduplication — an account found under two phrases is scraped and charged once
  • 📋 Mixed runs — a hand-typed account list and keyword discovery in the same run, same dataset

📊 What data can you get with Pinterest Profile Scraper By Niche Keyword?

Every run returns one row per Pinterest account, built from three groups of fields: the account's own profile data, the discovery metadata that explains how the row got there, and — for anything that failed — a typed error row.

Result TypeExtracted FieldsPrimary Use Case
Profile recordusername, full_name, about, follower_count, following_count, pin_count, board_count, website_url, domain_verified, is_verified_merchant, is_partner, image_xlarge_url, profile_cover_url, createdAtIso, id, plus 30 more (full list below)Prospecting, outreach lists, audience research
Discovery provenancediscovery_source, matched_keyword, search_rank, search_results_seen, profiles_dropped_by_filter, has_default_avatarAuditing why an account surfaced, measuring keyword yield
Accounting rowerrorReason, errorMessage, input, usernameRun diagnostics — telling "blocked" apart from "no accounts found"

🔎 Keyword discovery with pre-fetch screening

This is the capability a plain URL-based Pinterest profile scraper does not have: it has no search path at all, and a phrase typed into its account list is simply an invalid entry. Here, each phrase in searchKeywords is sent to Pinterest's own people-search endpoint, paginated on Pinterest's bookmark cursor, and every returned account is checked against minFollowerCount and excludeDefaultAvatarProfiles on the search result — before a profile is ever fetched. Only accounts that survive the screen get scraped and charged. Every kept account carries its own discovery record:

{
"username": "cozycabinliving",
"discovery_source": "search",
"matched_keyword": ["scandinavian interiors"],
"search_rank": 14,
"has_default_avatar": false,
"search_results_seen": 70,
"profiles_dropped_by_filter": 23
}

search_rank is Pinterest's own 1-based position in that keyword's people results — a fact about the search, not a computed relevance score. search_results_seen and profiles_dropped_by_filter let a thin result set be read correctly as keyword exhaustion rather than an actor error.

👤 The full profile record

Every account, whether supplied or discovered, gets the same profile fetch: Pinterest's guest UserResource endpoint, which returns 45 columns per row, always present — a field Pinterest didn't send comes back as null, never 0 or an empty string. That includes follower/following/pin/board counts, bio, website and linked Instagram, verification and merchant flags, avatar and cover image URLs, and account creation date as an ISO timestamp:

{ "username": "cozycabinliving", "follower_count": 8420, "pin_count": 1390, "is_verified_merchant": false }

🆚 Why not build this yourself?

Pinterest's official developer API (developers.pinterest.com) is built for managing your own ads, pins and boards under OAuth — it does not publish a keyword-based search of other users' public profiles, and it does not offer bulk profile export for accounts you don't own (checked 2026-08-04). Building this yourself means reverse-engineering the same undocumented, guest-only resource endpoints this Actor already handles: UserResource for the profile record and SearchResource for people search, each gated by a specific x-pinterest-pws-handler header rather than by any documented auth flow, with two further HTML/ld+json fallbacks when the resource endpoint doesn't cooperate. That's proxy management, header discipline, retry logic and bookmark-cursor pagination to maintain against a surface that can change without notice — which is the ongoing cost this Actor absorbs instead of you.

🧭 How to scrape Pinterest with Pinterest Profile Scraper By Niche Keyword?

  1. Open Pinterest Profile Scraper By Niche Keyword on the Apify Store and click Try for free (or Run, if you already have it saved).
  2. Enter your niche phrases in Niche Keywords To Find Accounts With (searchKeywords) — or list known accounts in Accounts You Already Know (startUrls). Either field alone is enough to start a run; most runs use both.
  3. Set the real query controls: Accounts To Keep Per Keyword (maxProfilesPerKeyword), Minimum Followers To Keep An Account (minFollowerCount), Skip Accounts With No Avatar Set (excludeDefaultAvatarProfiles), and Total Profile Budget For The Whole Run (maxProfiles).
  4. Click Start and let the run finish — supplied accounts are scraped first, discovered accounts follow.
  5. Download the dataset as JSON, CSV, Excel or the other formats Apify supports, or pull it through the API.
{
"searchKeywords": ["sourdough baking", "wedding photographer"],
"maxProfilesPerKeyword": 30,
"minFollowerCount": 500
}

Running multiple keywords in one job

searchKeywords and startUrls are both arrays — list as many phrases and accounts as you want and they all run in the same job, in one dataset. There is no separate "batch" input: one array entry is one query. Profile fetches (not the keyword searches, which run one at a time) execute with a fixed internal concurrency of 5 — this is not a configurable input, just how the Actor is built.

⬇️ Input

Two independent ways in, usable together: name accounts you already know, and/or describe a niche by keyword. Leave either one empty and the Actor still runs on the other.

ParameterRequiredTypeConstraintsDescription
startUrlsNoarray of stringsprefill: ["marthastewart"]Accounts to scrape no matter what the search returns. Accepts a bare username, a profile URL, a regional domain (au.pinterest.com), a board URL, or a tab URL — the last two resolve to the parent profile. Always scraped first; never screened by the follower or avatar filters. A search phrase typed here produces an uncharged invalid_input row instead of searching.
maxProfilesNointegermin 0, max 1000, prefill 40Hard ceiling on charged profile rows for the whole run, across the account list and every keyword combined. Supplied accounts are counted first. 0 (the value used if this is left unset) means no overall ceiling.
searchKeywordsNoarray of stringsprefill: ["scandinavian interiors"]Niche phrases to search Pinterest's people results with. Each is searched separately; an account found under two phrases is scraped once, with both recorded in matched_keyword. Leave empty and the Actor behaves exactly like a plain URL-only profile scraper.
maxProfilesPerKeywordNointegermin 1, max 500, default/prefill 30Accounts kept per keyword, counted after the screens below — so a follower floor cannot quietly turn a cap of 30 into 4 rows.
minFollowerCountNointegermin 0, default/prefill 500Drops discovered accounts below this follower count. Checked once on the search result, then again on the authoritative profile record. 0 keeps everything. Never applied to accounts in startUrls.
excludeDefaultAvatarProfilesNobooleandefault/prefill falseDrops discovered accounts still showing Pinterest's placeholder avatar. This flag only exists on the search result, not the profile record, so it's discovery-stage only.
proxyConfigurationNoobjectprefill: { "useApifyProxy": false }Proxy used for every request in the run — keyword searches and profile fetches alike. No hidden fallback to a direct connection.

Common pitfall: typing a search phrase into startUrls is not a search — it produces an uncharged row with errorReason: "invalid_input" and nothing is fetched. Phrases belong in searchKeywords; usernames and URLs belong in startUrls.

Example input

{
"startUrls": ["marthastewart", "https://www.pinterest.com/nike/_created/"],
"searchKeywords": ["sourdough baking", "wedding photographer"],
"maxProfilesPerKeyword": 30,
"minFollowerCount": 500,
"excludeDefaultAvatarProfiles": false,
"maxProfiles": 40,
"proxyConfiguration": { "useApifyProxy": false }
}

⬆️ Output

Every run produces one typed, normalized JSON row per account, with the same 51-column shape whether the row is a scraped profile or an uncharged accounting row. Export it as JSON, CSV, Excel, XML or HTML directly from the Apify Console or API — every format Apify's dataset export supports.

Scraped results

45 profile columns, identical to the plain Pinterest Profile Scraper, plus 6 columns this Actor adds:

username · profileUrl · full_name · first_name · about · follower_count · following_count · pin_count · board_count · interest_following_count · website_url · domain_url · domain_verified · is_primary_website_verified · impressum_url · instagram_data · verified_identity · is_verified_merchant · is_inspirational_merchant · is_partner · partner · is_private_profile · is_ads_only_profile · is_gco_account · indexed · seo_noindex_reason · seo_title · seo_description · seo_canonical_domain · image_medium_url · image_xlarge_url · profile_cover_url · profile_cover · eligible_profile_tabs · created_at · createdAtIso · last_pin_save_time · lastPinSaveTimeIso · id · node_id · input · dataSource · errorReason · errorMessage · scrapedAt

Plus the variant columns: discovery_source, matched_keyword, search_rank, search_results_seen, profiles_dropped_by_filter, has_default_avatar.

[
{
"username": "marthastewart",
"profileUrl": "https://www.pinterest.com/marthastewart/",
"full_name": "Martha Stewart",
"follower_count": 3210000,
"following_count": 512,
"pin_count": 84000,
"board_count": 410,
"website_url": "https://www.marthastewart.com",
"domain_verified": true,
"is_verified_merchant": false,
"is_partner": true,
"image_xlarge_url": "https://i.pinimg.com/originals/aa/bb/cc/marthastewart.jpg",
"createdAtIso": "2011-07-04T18:22:03Z",
"id": "123456789",
"dataSource": "user_resource_api",
"errorReason": null,
"scrapedAt": "2026-08-04T09:00:00Z",
"discovery_source": "startUrls",
"matched_keyword": null,
"search_rank": null,
"search_results_seen": null,
"profiles_dropped_by_filter": null,
"has_default_avatar": null
},
{
"username": "cozycabinliving",
"profileUrl": "https://www.pinterest.com/cozycabinliving/",
"full_name": "Cozy Cabin Living",
"follower_count": 8420,
"following_count": 340,
"pin_count": 1390,
"board_count": 22,
"website_url": null,
"domain_verified": false,
"is_verified_merchant": false,
"is_partner": false,
"image_xlarge_url": "https://i.pinimg.com/originals/dd/ee/ff/cozycabinliving.jpg",
"createdAtIso": "2019-02-11T04:10:55Z",
"id": "987654321",
"dataSource": "user_resource_api",
"errorReason": null,
"scrapedAt": "2026-08-04T09:00:41Z",
"discovery_source": "search",
"matched_keyword": ["scandinavian interiors"],
"search_rank": 14,
"search_results_seen": 70,
"profiles_dropped_by_filter": 23,
"has_default_avatar": false
},
{
"username": "sourdoughbysam",
"profileUrl": "https://www.pinterest.com/sourdoughbysam/",
"full_name": "Sam's Sourdough",
"follower_count": 1120,
"following_count": 88,
"pin_count": 210,
"board_count": 6,
"website_url": "https://sourdoughbysam.com",
"domain_verified": false,
"is_verified_merchant": false,
"is_partner": false,
"image_xlarge_url": "https://i.pinimg.com/originals/11/22/33/sourdoughbysam.jpg",
"createdAtIso": "2022-09-30T15:44:12Z",
"id": "192837465",
"dataSource": "profile_html_props",
"errorReason": null,
"scrapedAt": "2026-08-04T09:01:05Z",
"discovery_source": "search",
"matched_keyword": ["sourdough baking"],
"search_rank": 3,
"search_results_seen": 49,
"profiles_dropped_by_filter": 11,
"has_default_avatar": false
}
]

An uncharged accounting row looks the same shape, with every data column null:

{
"username": null,
"input": "best pinterest accounts",
"dataSource": null,
"errorReason": "invalid_input",
"errorMessage": "not a Pinterest username: 'best pinterest accounts'",
"scrapedAt": "2026-08-04T09:00:00Z"
}

Only successful profile rows carry the row_result charged event. Filter them out of billing analysis with dataSource != null (or, equivalently, errorReason == null).

👥 How can I use the data extracted with Pinterest Profile Scraper By Niche Keyword?

  • 🎯 Marketers and influencer-partnership teams: turn a niche phrase into a shortlist of creators worth pitching, using follower_count and is_verified_merchant to separate hobbyists from established accounts before outreach.
  • 🧑‍💼 Agencies and business development teams: build prospect lists for a vertical (e.g. "van conversion", "wedding photographer") with website_url and about for first-contact research, without hand-collecting usernames.
  • 📊 Market researchers: run the same keyword set on a schedule and track how many accounts, and which ones, Pinterest surfaces for a niche over time, using search_results_seen and search_rank.
  • 🤖 AI engineers and LLM developers: an agent issues a niche keyword, receives structured JSON profiles back, and grounds a research or outreach-drafting response in real account data instead of a model guess.

📈 How do you monitor niche accounts on Pinterest over time?

Monitoring here means re-running the same keyword set on a schedule and diffing what comes back — not a built-in alerting feature, but a pattern this Actor's output supports directly. Because search_rank and search_results_seen are recorded per run, you can tell whether a niche's account count grew, whether a given account moved up or down in Pinterest's own ranking for that phrase, and whether follower_count on tracked accounts changed between runs.

The practical loop: schedule a run across your keyword list (via an Apify Schedule), keep the previous run's dataset, and on each new run diff on username — new usernames are new entrants to the niche, missing usernames may have gone private or been removed from Pinterest's results, and changed follower_count or pin_count values show growth or decline on accounts you're already tracking. profiles_dropped_by_filter also tells you whether a shrinking result set is real keyword exhaustion or just your own follower floor tightening its bite.

Delivery is whatever the Apify platform gives any Actor run: a Schedule to trigger it automatically, and a webhook on run events if you want to push the new dataset to your own system instead of polling for it.

🔌 Integrate Pinterest Profile Scraper By Niche Keyword and automate your workflow

Pinterest Profile Scraper By Niche Keyword works with any language or tool that can send an HTTP request — it runs on Apify, so it's reachable through the Apify API and every official Apify client.

REST API with Python

import requests
ACTOR_ID = "your-username~pinterest-profile-scraper-by-niche-keyword"
TOKEN = "YOUR_APIFY_TOKEN"
run_input = {
"searchKeywords": ["sourdough baking", "wedding photographer"],
"maxProfilesPerKeyword": 30,
"minFollowerCount": 500,
}
url = f"https://api.apify.com/v2/acts/{ACTOR_ID}/run-sync-get-dataset-items?token={TOKEN}"
response = requests.post(url, json=run_input)
profiles = response.json()
for profile in profiles:
print(profile["username"], profile["follower_count"], profile["discovery_source"])

Scheduled monitoring and delivery

Set up an Apify Schedule on this Actor to re-run the same keyword and account list automatically (daily, weekly, or any cron interval you choose), and attach a webhook to the run's SUCCEEDED event to push each new dataset to your own endpoint instead of polling the Apify API for it.

Yes — scraping public Pinterest profile pages is legal when you collect only what Pinterest already serves to a logged-out visitor, which is exactly what this Actor does; it never logs in, uses a cookie, or accesses anything behind a login wall. In the U.S., courts have held that scraping data a platform makes available to the public does not, by itself, violate anti-hacking law — notably hiQ Labs, Inc. v. LinkedIn Corp., 938 F.3d 985 (9th Cir. 2019).

Because the output here is tied to identifiable individuals and businesses — usernames, bios, follower counts, linked websites — it is personal data for the purposes of GDPR, CCPA and equivalent laws, and those obligations follow whoever runs the scraper and stores the results, not Pinterest and not this Actor. Scraping for one-off research and scraping for bulk storage or AI training carry different risk profiles. Consult your legal team for commercial use cases involving bulk data storage.

❓ Frequently asked questions

Can I restrict the niche keyword search to a specific country, language, or Pinterest domain?

No. The people-search endpoint this Actor calls (SearchResource on www.pinterest.com) isn't parameterized by locale, so keyword results aren't filtered to a region. Regional Pinterest domains (e.g. au.pinterest.com) are only recognized when you supply an account directly in startUrls — the Actor resolves them to the parent profile.

Can I sort the results by follower count or relevance?

Not at the search stage. Accounts come back in Pinterest's own people-search order, and search_rank on each row records that order — it isn't a computed relevance score, and the Actor doesn't re-rank it. Sort or filter the exported dataset on follower_count yourself once you have it.

How does Pinterest Profile Scraper By Niche Keyword handle Pinterest's anti-bot measures?

It retries each profile and search request up to 3 times with exponential backoff on 403, 408, 425, 429, 500, 502, 503 and 504 responses, and on a redirect to a login or captcha page. If the profile resource endpoint still won't cooperate, it falls back to parsing the same profile data out of the public HTML page, then to a partial ld+json record as a last resort. None of this requires a login — the countermeasure is retry and fallback, not authentication.

Does Pinterest Profile Scraper By Niche Keyword tell me why each account was found?

Yes — every discovered row carries discovery_source ("search" vs "startUrls"), matched_keyword (every keyword phrase that surfaced it), and search_rank (its position in that keyword's results). search_results_seen and profiles_dropped_by_filter add how many accounts the keyword produced in total and how many the screens removed. All five are null on accounts you supplied yourself, since they were never discovered.

How many accounts does Pinterest Profile Scraper By Niche Keyword return per keyword?

Up to maxProfilesPerKeyword (1–500, default 30) kept accounts — the cap counts accounts that survive the follower and avatar screens, not accounts seen. How deep that goes is query-dependent: in measured runs, wedding photographer and home office were still returning new accounts after 299 unique results across 6 pages, while scandinavian interiors exhausted at 70 and sourdough baking at 49. Pagination for a single keyword also stops after a hard internal limit of 40 pages, regardless of the cap, so a runaway bookmark cursor can't spin forever.

How do I use Pinterest Profile Scraper By Niche Keyword to monitor a niche over time?

Schedule the same keyword set to run repeatedly (via an Apify Schedule), keep each run's dataset, and diff on username: new usernames are new entrants to the niche, and changes in follower_count, pin_count or search_rank on repeat accounts show growth, decline, or a ranking shift. search_results_seen tells you whether the niche itself is growing.

Does Pinterest Profile Scraper By Niche Keyword work with Claude, ChatGPT, and AI agent frameworks?

It doesn't ship an MCP server, but it's callable as a plain HTTP endpoint by any agent framework that can make a request — an agent sends a niche keyword or account list, gets back structured JSON profiles, and grounds its answer in that data instead of a guess.

Can I use Pinterest Profile Scraper By Niche Keyword without managing proxies or Pinterest credentials?

Yes. No Pinterest login, cookie or session token is ever required — every request goes through Pinterest's guest endpoints. A proxy is optional: Pinterest served both the search and profile endpoints to a bare Apify datacenter IP in testing. Turn Apify Proxy on in proxyConfiguration if a run starts producing blocked accounting rows.

💬 Your feedback

Found a bug or a Pinterest field this Actor should be capturing but isn't? Message the developer through the Actor Issues tab on the Apify Store listing, or the Contact developer button on the Actor's page — reports like these are how the field list and the screens stay accurate as Pinterest's own pages change.