Pinterest Pins Scraper — Pin Details & Media avatar

Pinterest Pins Scraper — Pin Details & Media

Pricing

from $5.00 / 1,000 detailed pinterest pins

Go to Apify Store
Pinterest Pins Scraper — Pin Details & Media

Pinterest Pins Scraper — Pin Details & Media

Extract clean, detailed records from exact public Pinterest Pin URLs. Return image and video media, captions, saves, boards, destination links, and creator data in a flat, API-ready schema.

Pricing

from $5.00 / 1,000 detailed pinterest pins

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

2 days ago

Last modified

Share

What does Pinterest Pins Scraper do?

Pinterest Pins Scraper turns exact public Pinterest Pin links into clean, detailed, one-row-per-Pin records. Use it when a workflow already has Pin URLs and needs dependable media URLs, captions, engagement, board, destination-link, and creator fields without a huge nested response. Paste one or many public URLs from Pinterest, run the Actor, then download the dataset or call it from the Apify API.

This Actor is deliberately focused on Pin details, not keyword search, board crawling, or profile scraping. That makes it a good enrichment step after a search, outreach, content-research, or ecommerce workflow has identified the specific Pins that matter. It supports JSON, CSV, Excel, HTML, webhooks, schedules, integrations, and API access through the Apify platform.

The primary path uses a managed public-data provider. If that path cannot return a usable public record, the Actor makes a controlled serial browser attempt against the public Pin page. No Pinterest login, cookies, or personal account credentials are requested.

Why use a Pinterest Pin details scraper?

Pinterest is useful for content inspiration, affiliate and ecommerce research, visual trend analysis, and keeping a known-Pin database fresh. Copying Pin details by hand becomes slow as soon as a list grows past a few URLs. This Actor gives data and growth teams a stable contract they can feed into a spreadsheet, warehouse, CRM, LLM workflow, or a downstream image-analysis step.

Common uses include:

  • Enriching a curated Pin list with descriptions, media, and destination domains.
  • Auditing which boards and creators publish content in a niche.
  • Building visual-content datasets for competitive or trend research.
  • Checking whether known Pins link to a product page, article, recipe, or other destination.
  • Adding a deterministic Pinterest step to Make, Zapier, n8n, or a custom API workflow.

How to scrape Pinterest Pin details

  1. Open the Input tab and paste one public Pinterest Pin URL per line.
  2. Leave Maximum Pins to Process at the suggested small batch for a smoke test, or raise it up to 100.
  3. Start the run and wait for the terminal OUTPUT record to report COMPLETE, PARTIAL, VALID_EMPTY, or INVALID_INPUT.
  4. Open the Dataset to inspect the validated Pin records.
  5. Download JSON, CSV, Excel, or HTML, or consume the dataset URL from an automation.

Use links such as https://www.pinterest.com/pin/1125266656923168531/. The Actor also accepts pin.it short links. Pinterest profile pages, boards, searches, and private or login-only content are intentionally out of scope because they are not individual Pins.

Input

FieldRequiredDescription
pinUrlsYesA list of exact public Pinterest Pin URLs or pin.it short links.
maxPinsNoA 1–100 safety limit applied after URL deduplication. Defaults to 10.

Example input:

{
"pinUrls": ["https://www.pinterest.com/pin/1125266656923168531/"],
"maxPins": 10
}

Output: clean Pinterest Pin records

Each successful dataset item follows a flat, stable schema. Fields that Pinterest does not expose are returned as null, while hashtags is always an array. The Actor validates every record before writing it, so a billed dataset row always has a Pin ID and at least one usable image or video URL.

{
"pinId": "1125266656923168531",
"pinUrl": "https://www.pinterest.com/pin/1125266656923168531/",
"title": "Summer pasta recipe",
"description": "A quick weeknight pasta.",
"imageUrl": "https://i.pinimg.com/originals/example.jpg",
"videoUrl": null,
"isVideo": false,
"saveCount": 1234,
"link": "https://example.com/pasta",
"sourceDomain": "example.com",
"boardName": "Dinner ideas",
"pinnerUsername": "example",
"hashtags": ["#pasta", "#dinner"],
"scrapedAt": "2026-07-15T08:00:00.000Z",
"pinSource": "scrapecreators"
}

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. The OUTPUT key contains terminal status and warnings; RUN_SUMMARY gives operational counts that are handy for automation retries and monitoring.

Field groupMain fields
IdentitypinId, pinUrl, sourceUrl
Contenttitle, description, hashtags, createdAt
MediaimageUrl, imageWidth, imageHeight, videoUrl, isVideo
EngagementsaveCount, commentCount, shareCount
ContextboardName, boardUrl, link, sourceDomain
CreatorpinnerUsername, pinnerName, pinnerFollowers, pinnerProfileUrl
ProvenancescrapedAt, pinSource

API examples

Run the Actor from JavaScript with your Apify API token:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('khadinakbar/pinterest-pins-scraper').call({
pinUrls: ['https://www.pinterest.com/pin/1125266656923168531/'],
maxPins: 10,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

The same workflow in Python:

from apify_client import ApifyClient
import os
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("khadinakbar/pinterest-pins-scraper").call(run_input={
"pinUrls": ["https://www.pinterest.com/pin/1125266656923168531/"],
"maxPins": 10,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["pinUrl"], item["imageUrl"])

How much does it cost to scrape Pinterest Pins?

The Actor uses Pay per event + usage. It charges $0.005 for each detailed Pin record that passes validation and is written to the dataset, plus a $0.00005 run-start charge. Underlying Apify platform usage is passed through as well, so browser fallback, memory, and runtime can add a small usage amount.

The actor does not charge for invalid URLs, empty source responses, duplicate Pins, failed provider calls, or records that fail validation. A 50-Pin run therefore has event charges of about $0.25005, before any platform usage. Use maxPins to keep a batch within your intended budget; the SDK respects Apify's maximum run charge guard before persisting another billable record.

Tips for reliable runs

Start with one known public Pin to verify your downstream field mapping. Use canonical pinterest.com/pin/... URLs when possible; short links are supported but may require one extra resolution step. Keep the actor focused on exact URLs—use a dedicated Pinterest search or board actor first if you need discovery at scale. Treat a VALID_EMPTY outcome as a truthful no-data result rather than a successful extraction, and inspect OUTPUT.warnings before automatically retrying PARTIAL runs.

FAQ, responsible use, and support

You are responsible for ensuring your use complies with applicable law, Pinterest's terms, rate limits, intellectual-property rights, and privacy obligations. Only process public URLs you are authorized to use. Do not use the output to collect or infer sensitive personal data, bypass access controls, or redistribute media in a way that infringes the rights of creators or publishers.

Why is a field null?

Pinterest does not show every field on every public Pin. Rather than guessing, the Actor keeps the stable key and returns null when the source has no reliable public value.

Why did my run return PARTIAL?

PARTIAL means at least one validated record was stored, but another URL was invalid, empty, unavailable, duplicate, or stopped by the run charge cap. Check OUTPUT and RUN_SUMMARY for the concrete counts and retry only the unresolved input URLs.

For help, feature requests, or a custom Pinterest workflow, use the Actor's Issues tab on Apify. Include a public example URL and the desired output fields, but never include passwords, session cookies, or API tokens.