Pinterest Profile Scraper avatar

Pinterest Profile Scraper

Pricing

$19.99/month + usage

Go to Apify Store
Pinterest Profile Scraper

Pinterest Profile Scraper

Pinterest Profile Scraper extracts public profile data from Pinterest. Collect boards, pins, descriptions, followers, following counts, and profile metadata. Ideal for market research, competitor analysis, trend tracking, and content strategy insights.

Pricing

$19.99/month + usage

Rating

0.0

(0)

Developer

Scraper Engine

Scraper Engine

Maintained by Community

Actor stats

0

Bookmarked

6

Total users

0

Monthly active users

7 days ago

Last modified

Share

Pinterest Profile Scraper — Followers, Bio, Pins and Boards

Pinterest Profile Scraper returns structured Pinterest profile data for any public account by username or URL — follower, following, pin and board counts, bio, avatar and cover images, linked website and Instagram handle, verification and merchant flags, SEO metadata, and the account creation date as an absolute ISO-8601 timestamp. No Pinterest login or API key is required. Output lands in your Apify dataset as typed JSON, ready to query, export or feed to an LLM. Paste a list of usernames and run it below.

🧭 What is Pinterest Profile Scraper?

Pinterest Profile Scraper is an Apify Actor that fetches Pinterest's own public profile payload for any account you name and returns it as clean, typed JSON — no HTML parsing, no headless browser required on your end. It does not require a Pinterest account, login or cookie: Pinterest serves this data to any logged-out visitor, and the Actor reads the same guest surface. It's built for growth marketers, influencer researchers, brand-safety and lead-gen teams, and developers wiring Pinterest profile data into an app, spreadsheet or AI pipeline.

🔍 What Pinterest profile data is publicly available to scrape?

Pinterest publishes a full profile header — identity, counts, verification flags, images and SEO metadata — to any logged-out visitor; it does not publish follower/following member lists, email addresses, or shop/catalog data to guests at all.

Data categoryPublicly available (no login)Restricted
Profile identity — username, display name, bio
Follower / following / pin / board countsMember lists (not counts) return HTTP 401 to a logged-out client
Verification & merchant flags
Avatar & cover images
SEO metadata (title, description, canonical domain)
Account creation date & last pin-save time
Linked website & Instagram handle
Shop, product & catalog dataStorefront routes return HTTP 401; the profile-tabs field never lists a Shop tab to guests
Email addressNot present in any Pinterest profile surface, logged in or out

Pinterest Profile Scraper only returns publicly visible data — what any visitor sees. Nothing behind a login wall.

📊 What data can I extract with Pinterest Profile Scraper?

The Actor returns 40 profile data columns plus 5 run-bookkeeping columns on every row, grouped below by what they describe.

FieldDescription
usernameThe account's Pinterest handle
profileUrlCanonical profile URL, built from username
full_nameDisplay name
first_namePinterest also returns the full display name here
aboutBio text
website_urlLinked external website, as entered by the account
domain_urlBare domain parsed from website_url
instagram_dataLinked Instagram {username, url}, or null if none is linked
seo_title / seo_descriptionMeta title/description Pinterest generates for the profile page
seo_canonical_domainThe account's regional Pinterest domain (e.g. www.pinterest.com, uk.pinterest.com)
eligible_profile_tabsWhich profile tabs Pinterest serves to a guest — observed values are Saved and Created only
id / node_idPinterest's numeric user ID and its GraphQL node ID

Counts, flags & verification

FieldDescription
follower_count / following_countFollower and following counts
pin_countPins the account created — not pins it saved from others
board_countNumber of boards
interest_following_countInterests the account follows
domain_verified / is_primary_website_verifiedWebsite ownership verification flags
is_verified_merchantPinterest merchant verification badge
is_inspirational_merchantPinterest's inspirational-merchant flag
is_partnerBusiness/partner account flag
partnerBusiness-partner object when is_partner is true
is_private_profilePrivate-account flag
is_ads_only_profileAds-only account flag
is_gco_accountPinterest's "GCO" account-type flag
indexedWhether Pinterest allows the profile to be search-indexed
seo_noindex_reasonReason for de-indexing, when indexed is false (e.g. owner_requested)
impressum_urlEU legal-disclosure link, when the account has published one
verified_identityIdentity-verification object; empty on unverified accounts

Media & timestamps

FieldDescription
image_medium_url / image_xlarge_urlAvatar image at two resolutions
profile_cover_urlHighest-resolution cover-image URL the Actor could extract from profile_cover.images; null on the small share of accounts with no cover image
profile_coverThe raw Pinterest cover object
created_at / createdAtIsoAccount creation date — Pinterest's raw RFC-1123 string, and the same value converted to an absolute ISO-8601 UTC timestamp
last_pin_save_time / lastPinSaveTimeIsoLast pin-save activity, raw and ISO — a real recency signal

Every row also carries 5 bookkeeping columns regardless of outcome: input (what you supplied), dataSource (which Pinterest surface answered — see How it works below), errorReason / errorMessage (null on a successful row), and scrapedAt.

🤖 Add-on: Need additional Pinterest data?

This Actor covers the profile header only. For the pins and boards themselves — images, video variants, alt text, save counts, outbound links — pair it with Pinterest Boards Scraper. For Pinterest's ad creative library, use Pinterest Ads Scraper. Both are linked in Related scrapers below.

⚖️ How does Pinterest Profile Scraper differ from the official Pinterest API?

Pinterest's own API v5 is built to manage the app's own connected business account, not to look up arbitrary public profiles by username. Its /v5/user_account endpoint reads the account tied to the OAuth token that called it, and its OAuth scopes (user_accounts:read, boards:read, pins:read, ads:read, …) are all scoped to that same connected account (per Pinterest's own API v5 scope documentation, developers.pinterest.com, checked 2026-08-04). There is no published v5 endpoint that returns a third party's public profile by username.

FeaturePinterest API v5Pinterest Profile Scraper
Access modelOAuth 2.0 app registration + user authorizationNo login, no OAuth, no API key
Whose profile it returnsThe token owner's own connected accountAny public profile, by username or URL
Approval processPinterest developer app review for production accessNone — start from the Store listing
Setup timeRegister app, get approved, implement OAuthPaste usernames, click Start
OutputJSON via REST, scoped fieldsJSON via Apify dataset, 40 profile fields + 5 bookkeeping
Rate handlingGoverned by Pinterest's per-app API quotasBounded per target by the Actor's own retry policy — no quota to request or manage

Use the official API if you're building a Pinterest business integration for your own connected account. Use Pinterest Profile Scraper when you need public data for accounts you don't own or control.

▶️ How to use Pinterest Profile Scraper

Run it from the Apify Console — no code required, and no Pinterest credentials to set up.

  1. Open Pinterest Profile Scraper on the Apify Store and click Try for free (or Run, if you've already added it).
  2. Provide startUrls — the only required input. Add a bare username, a full profile URL, or a board/tab URL under the profile; each entry resolves to one profile.
  3. Optionally set maxProfiles to cap how many targets are processed, and proxyConfiguration if you want every request routed through Apify Proxy.
  4. Click Start and watch results populate the dataset in real time.
  5. Export results as JSON, CSV, Excel, or push them to Google Sheets straight from the Apify dataset — or pull them via the API.

Scaling to bulk profile extraction

startUrls is an array: add as many usernames or URLs as you need in one run, up to the maxProfiles ceiling (maximum 1000). There's no separate "bulk mode" — one run with a long list is the bulk path. For lists larger than 1000, split them across multiple runs (e.g. with the Apify API or a schedule).

💼 What can you do with Pinterest profile data?

  • 🎯 Influencer marketers vetting creators use follower_count, pin_count and is_verified_merchant to shortlist accounts before outreach.
  • 🏢 Brand and competitor monitoring teams track board_count, pin_count and lastPinSaveTimeIso over repeated runs to see which competitor accounts are actively posting.
  • 📈 Growth and lead-gen teams use website_url, domain_url and instagram_data to build cross-platform contact lists from Pinterest bios.
  • 🔍 Brand-safety and compliance reviewers use is_partner, is_verified_merchant and seo_noindex_reason to flag accounts worth a closer look.
  • 🤖 AI engineers feed about, full_name and seo_description into a RAG pipeline or agent tool as grounded, structured context instead of scraping and parsing HTML themselves.

🚦 How does Pinterest Profile Scraper handle rate limits and blocking?

Each target gets up to 3 attempts against Pinterest's guest endpoint, with exponential backoff between attempts. A 404/"User not found" response stops immediately rather than burning retries on a bad handle. Attempts are retried only on a defined set of retryable signals — HTTP 403, 408, 425, 429, 500, 502, 503 or 504, or a redirect to a /login or CAPTCHA URL — never on a substring match inside the page body, which is unreliable on Pinterest's bundled JavaScript. If the primary endpoint is exhausted, the Actor falls back to parsing the profile HTML, then to the page's ld+json block, before giving up on that target.

Whatever proxy you select in proxyConfiguration is used for every request in the run — there is no built-in proxy ladder and no silent fallback to a direct connection if the proxy fails; a broken proxy configuration surfaces as a run error instead of quietly returning empty rows. ⚠️ If a run scrapes zero profile rows across every valid target supplied, the Actor fails the run loudly with a non-zero exit instead of finishing green with an empty dataset — check the uncharged accounting rows for the typed errorReason on each target.

⬇️ Input

ParameterRequiredTypeDescriptionExample value
startUrlsYesarray of stringsOne entry per profile: a bare username, a full profile URL, a regional-domain URL, or a board/tab URL beneath the profile root. Search phrases are not supported — anything that isn't a resolvable username produces an uncharged row with errorReason: invalid_input."marthastewart"
maxProfilesNointeger (min 0, max 1000)Hard cap on how many supplied targets are processed. Every charged row counts against it. 0 processes every target supplied.10
proxyConfigurationNoobject (proxy editor)Proxy used for every request in the run. Optional — Pinterest served this endpoint to a bare Apify datacenter IP in testing; turn on Apify Proxy if you see blocked accounting rows.{"useApifyProxy": false}

Example input

{
"startUrls": [
"marthastewart",
"https://www.pinterest.com/nike/",
"https://au.pinterest.com/etsy/",
"https://www.pinterest.com/marthastewart/holiday-recipes/",
"https://www.pinterest.com/nike/_created/"
],
"maxProfiles": 10,
"proxyConfiguration": { "useApifyProxy": false }
}

⬆️ Output

Every run produces one dataset row per target — either a full profile row or an uncharged accounting row — with the same 45-column schema either way, so the dataset always stays rectangular. Export as JSON, CSV, Excel, XML, or RSS, or push to Google Sheets, directly from the Apify dataset.

Example output

A successfully scraped profile:

{
"username": "marthastewart",
"profileUrl": "https://www.pinterest.com/marthastewart/",
"full_name": "Martha Stewart",
"first_name": "Martha Stewart",
"about": "Daily recipes, crafts, and inspiration from Martha Stewart.",
"follower_count": 1867921,
"following_count": 322,
"pin_count": 104880,
"board_count": 174,
"interest_following_count": 58,
"website_url": "http://marthastewart.com",
"domain_url": "marthastewart.com",
"domain_verified": true,
"is_primary_website_verified": true,
"impressum_url": null,
"instagram_data": { "username": "marthastewart", "url": "https://www.instagram.com/marthastewart" },
"verified_identity": {},
"is_verified_merchant": false,
"is_inspirational_merchant": false,
"is_partner": true,
"partner": { "id": "573812345", "type": "business" },
"is_private_profile": false,
"is_ads_only_profile": false,
"is_gco_account": false,
"indexed": true,
"seo_noindex_reason": null,
"seo_title": "Martha Stewart (marthastewart) - Profile | Pinterest",
"seo_description": "Martha Stewart | Daily recipes, crafts, and inspiration.",
"seo_canonical_domain": "www.pinterest.com",
"image_medium_url": "https://i.pinimg.com/75x75_RS/marthastewart.jpg",
"image_xlarge_url": "https://i.pinimg.com/280x280_RS/marthastewart.jpg",
"profile_cover_url": "https://i.pinimg.com/originals/marthastewart-cover.jpg",
"profile_cover": { "id": "cov_482166", "images": { "originals": { "url": "https://i.pinimg.com/originals/marthastewart-cover.jpg" } } },
"eligible_profile_tabs": ["Saved", "Created"],
"created_at": "Fri, 02 Nov 2012 14:19:50 +0000",
"createdAtIso": "2012-11-02T14:19:50Z",
"last_pin_save_time": "Mon, 20 Jul 2026 03:05:29 +0000",
"lastPinSaveTimeIso": "2026-07-20T03:05:29Z",
"id": "482166744999114406",
"node_id": "VXNlcjo0ODIxNjY3NDQ5OTkxMTQ0MDY=",
"input": "marthastewart",
"dataSource": "user_resource_api",
"errorReason": null,
"errorMessage": null,
"scrapedAt": "2026-08-04T09:00:00Z"
}

An uncharged accounting row for a target that produced no profile — same columns, data fields null, errorReason typed:

{
"username": null,
"profileUrl": null,
"full_name": null,
"follower_count": null,
"input": "home decor ideas",
"dataSource": null,
"errorReason": "invalid_input",
"errorMessage": "not a Pinterest username: 'home decor ideas'",
"scrapedAt": "2026-08-04T09:00:04Z"
}

⚙️ How does it work?

Pinterest Profile Scraper calls Pinterest's own guest UserResource endpoint — the same request the Pinterest.com front end makes to build a profile page — instead of rendering the page in a browser. That request goes through whatever proxy (or direct connection) you configured, with retries and backoff on blocking-shaped responses. If that endpoint is unavailable for a target, the Actor falls back to fetching the profile HTML and reading the same data object out of Pinterest's embedded page state, and as a last resort out of a ld+json block on the page. Every returned object's username is checked against what you asked for, so a mismatch is refused rather than emitted. Only data Pinterest already serves to a logged-out visitor is ever returned, and the output schema stays the same 45 columns regardless of which surface answered or how Pinterest's page markup changes.

🔌 Integrations

Pinterest Profile Scraper runs like any Apify Actor, so it works with the tools you already use to call Apify.

Calling Pinterest Profile Scraper programmatically

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("pinterest-profile-scraper").call(
run_input={"startUrls": ["marthastewart", "nike"], "maxProfiles": 10}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["username"], item["follower_count"])

Works in Go, Ruby, Node.js, cURL — any language that can make an HTTP request to the Apify API.

No-code tools (n8n, Make)

In n8n, use the HTTP Request node (or the Apify node) pointed at the Actor's run endpoint, with your Apify API token in the header — the run's dataset items come back as JSON you can pipe into any downstream node. In Make, use the same pattern with an HTTP module calling the Apify REST API, or the dedicated Apify app if you already use it.

Scraping publicly available Pinterest profile data is generally legal — Pinterest Profile Scraper only returns what Pinterest already serves to any logged-out visitor, nothing behind a login wall. Because profile data (names, bios, images) can identify a real person, storing or processing it may fall under GDPR (EU) or CCPA (California) if you retain personal data — you'll need a lawful basis for collection and storage, and you should honor deletion/access requests where applicable. Respect Pinterest's own Terms of Service alongside any data-protection law that applies to your use case. Consult legal counsel if your use case involves bulk storage of personal data.

❓ Frequently asked questions

What Pinterest profile fields does Pinterest Profile Scraper return?

The core fields are follower_count, following_count, pin_count, board_count and about (bio), alongside verification flags, images and SEO metadata — see the full field tables above.

Does Pinterest Profile Scraper require a Pinterest account or login?

No. It reads Pinterest's guest profile endpoint, the same one served to a logged-out visitor. No Pinterest account, cookie or API key is used or accepted.

How many Pinterest profiles can I extract in one run?

As many as you list in startUrls, up to the maxProfiles cap — which itself tops out at 1000 per run. Set maxProfiles to 0 to process every target you supply.

What happens if a profile is private or doesn't exist?

A nonexistent username returns Pinterest's own "User not found" response and produces an uncharged accounting row with errorReason: not_found. A private profile still returns a complete, real header object from Pinterest's guest endpoint — it's emitted as a normal charged row with is_private_profile set, not as an error. The private_profile value exists in the Actor's set of error reasons but was not triggered on any profile observed during testing, since Pinterest's guest endpoint answers for private accounts too.

Can I scrape multiple Pinterest profiles at once?

Yes — startUrls is an array. List every username or URL you need and they're processed in one run, each producing its own row.

Does Pinterest Profile Scraper work with Claude, ChatGPT, and other AI agent tools?

It's callable as an HTTP endpoint by any agent framework that can call the Apify API — point your agent's tool-calling layer at the Actor's run endpoint and parse the JSON dataset it returns.

What happens if I need Pinterest board, pin or ad data instead of profile data?

Pinterest Profile Scraper returns the profile header only. For pins and boards, use Pinterest Boards Scraper; for ad creative data, use Pinterest Ads Scraper — both listed under Related scrapers below.

Does Pinterest Profile Scraper return data in a format LLMs can use directly?

Yes. Every field is a typed JSON primitive or nested object with a consistent name across runs — no HTML, no selectors to write. Pass rows directly to an LLM prompt, index them into a vector store, or hand them to an agent tool.

What happens when Pinterest changes its layout or anti-bot system?

The Actor is maintained and targets Pinterest's underlying JSON payload rather than page markup, so the output schema is designed to stay stable across front-end changes. No specific turnaround time for fixes is published.

Can I use Pinterest Profile Scraper without managing proxies or browser infrastructure?

Yes. There's no browser to run — requests go out via curl_cffi, not a headless browser — and a proxy is optional; Pinterest answered this endpoint from a bare Apify datacenter IP during testing. Turn on proxyConfiguration only if you see blocked accounting rows.

Which Pinterest profile fields work best for AI training data and RAG indexing?

For RAG, index about and seo_description — the free-text fields with the most semantic content. For structured training features, follower_count, pin_count, board_count, is_verified_merchant and createdAtIso return as consistent typed primitives across every row.

ScraperWhat it extracts
Pinterest Boards ScraperEvery pin on a Pinterest board: image/video variants, alt text, save counts, outbound links, board and pinner metadata
Pinterest Ads ScraperPinterest's public Ads Library: advertiser names, ad creative images/video, targeting info
LinkedIn Profile Post ScraperLinkedIn profile pages and the posts published on them
Twitter (X.com) Tweets & Profiles ScraperPublic X (Twitter) profile stats alongside post-level engagement metrics

💬 Your feedback

Found a bug or missing a field? Let us know through the Issues tab on this Actor's Apify Store page — that feedback goes straight to the people who maintain it.