Pinterest Shopping & Product Scraper with Prices avatar

Pinterest Shopping & Product Scraper with Prices

Pricing

$5.00 / 1,000 product scrapeds

Go to Apify Store
Pinterest Shopping & Product Scraper with Prices

Pinterest Shopping & Product Scraper with Prices

Turn Pinterest shop-the-look pins into a product feed. One row per product with its real price, currency, sale price, discount, stock status, merchant, buy link and image — plus the pin it came from. Search by shopping keyword or paste specific pins. No Pinterest account needed.

Pricing

$5.00 / 1,000 product scrapeds

Rating

0.0

(0)

Developer

Hamza

Hamza

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

21 days ago

Last modified

Share

Pinterest's best shopping content hides the interesting part one level down: a single "shop the look" pin is really a basket of separate products, each with its own name, merchant, price and buy link. This actor opens those pins and gives you one row per product — price, currency, the "was" price and discount where there is one, whether the merchant marks it available, the outbound buy link, the image, and the pin it was found in. Point it at shopping keywords, at specific pins, or at both.

What you can do with it

  • Build a priced product feed for a niche — "arched cabinet", "linen sofa", "gold pendant light" — without touching a single merchant site.
  • Watch what a competitor's shop-the-look pins are actually selling, and at what price.
  • Pull discounted items only: every row carries the original price, the discount percentage and a plain onSale flag.
  • Collect merchant-and-link pairs for affiliate, comparison or curation work, each already tied to the image that sells it.
  • Compare price ranges across a category, a market or a moment in time by scheduling the same keywords weekly.
  • Enrich pins you already track: paste their addresses and get the products inside them.

What you get

One row per product. Abridged real example:

{
"type": "product",
"id": "47850814786426317-872220652852770625",
"title": "Ripple Rotating Wall Lamp | Yedwo Design",
"productName": "Ripple Rotating Wall Lamp | Yedwo Design",
"price": 199,
"currency": "USD",
"currencySymbol": "$",
"priceDisplay": "US$199.00",
"standardPrice": null,
"percentOff": null,
"onSale": false,
"inStock": true,
"merchant": "YEDWO",
"link": "https://yedwo.com/products/ripple-rotating-wall-lamp-yedwo-design",
"domain": "yedwo.com",
"imageUrl": "https://i.pinimg.com/736x/cb/fb/92/cbfb924161c8f141bc7d05c925cd1a80.jpg",
"productPinUrl": "https://www.pinterest.com/pin/872220652852770625/",
"productIndex": 0,
"isCollectionProduct": true,
"collectionSize": 1,
"parentPinId": "47850814786426317",
"parentPinUrl": "https://www.pinterest.com/pin/47850814786426317/",
"parentPinTitle": "Ripple Rotating Wall Lamp | Yedwo Design",
"parentPinCreatedAt": "2026-01-07T22:29:57.000Z",
"parentPinSaveCount": 8995,
"parentPinnerUsername": "ashaarty",
"parentCreatorUsername": "yedwo",
"parentIsPromoted": false,
"searchQuery": null,
"scrapedAt": "2026-08-04T12:00:00.000Z"
}

Input reference

FieldTypeDefaultWhat it does
querieslist of text["arched cabinet"]Shopping keywords, worded the way a shopper would type them. A Pinterest search address works too — the words are taken from it. Up to 50 per run.
pinslist of text[]Addresses of specific pins you want the products from, or plain pin numbers. Up to 1000 per run.
maxProductsnumber500How many product rows to collect before the run stops. Maximum 20000.
maxPinsPerQuerynumber60How deep to go through each keyword's public results before moving to the next keyword. Maximum 500.
onlyWithPricetrue/falsetrueKeep only products that publish a price. Turn it off to also get unpriced entries, which still carry name, merchant, link and image.
onlyInStocktrue/falsefalseKeep only products the merchant currently marks as available. Products whose availability is not published count as unknown and are excluded when this is on.
includePromotedtrue/falsefalsePinterest mixes promoted pins into results. Off keeps things organic; on keeps them and flags them with parentIsPromoted.
countryselectusThe market to browse from. Shopping results and currencies differ by market, and the choice is kept the same for the whole run. Pinterest does not always honour it, so every row also records the market it was actually served for.

Output fields

FieldTypeDescription
idtextStable row identifier: the pin it came from plus the product within it.
titletextThe product's own name as published. Empty when the entry has none — it is never given the pin's caption instead.
productNametextThe merchant-side product name, when published separately from the title.
descriptiontextThe product description, where the merchant publishes one.
pricenumberThe current price as a number.
currencytextThree-letter currency code, e.g. USD, GBP, CAD.
currencySymboltextThe symbol shown alongside the price, e.g. $.
priceDisplaytextThe price exactly as Pinterest formats it, e.g. US$2,698.00.
standardPricenumberThe pre-discount price, when the item is reduced.
standardPriceDisplaytextThe pre-discount price as formatted text.
percentOffnumberDiscount percentage, when one is published.
percentOffLabeltextThe discount as shown, e.g. 21% off.
onSaletrue/falseTrue when there is a real reduction — an equal "was" price does not count.
hasPriceDroptrue/falseWhether the merchant marks this as a recent price drop.
inStocktrue/falseAvailability as published. Empty when the merchant does not publish it.
availabilityCode, conditionCodenumberAvailability and condition exactly as published, unaltered.
merchanttextThe shop behind the product.
linktextThe outbound buy link.
domaintextThe destination host, handy for grouping by retailer.
imageUrl, imagestext / objectThe product image, plus every size published for it.
dominantColortextThe image's dominant colour, as a hex value.
productId, offerIdtextPinterest's own identifiers for the product and its offer.
productPinId, productPinUrltextThe pin for this individual product, where one exists.
productIndexnumberThe product's position inside its pin.
isCollectionProducttrue/falseTrue when the row came from a multi-product pin.
richTypetextHow Pinterest labels the entry — product for genuine products.
isActivetrue/falseWhether the entry is still live in the pin.
collectionSize, collectionTitlenumber / textHow many products the parent pin holds, and its heading if it has one.
parentPinId, parentPinUrltextThe pin the product was found in.
parentPinTitle, parentPinDescription, parentPinAltTexttextThe parent pin's caption, description, and an automatically generated image description where there is no caption.
parentPinImageUrltextThe parent pin's own image.
parentPinLink, parentPinDomaintextWhere the parent pin itself points.
parentPinCreatedAtdateWhen the parent pin was published.
parentPinSaveCount, parentPinRepinCountnumberHow many times the parent pin has been saved and repinned. These are two different measures and are reported separately.
parentPinnerUsernametextWho pinned it.
parentCreatorUsernametextThe account credited with the original, which is often not the same person.
parentIsPromotedtrue/falseWhether the parent pin is a paid placement.
source, searchQuery, inputTarget, parentPinPositiontext / numberWhere the row came from: a keyword or a pin you supplied, and the parent pin's rank in those results.
countrytextThe market the run asked to browse from. Empty when the run could not be held to it.
browsedFromCountrytextThe market Pinterest actually served the results for, which is not always the one that was asked for. Empty when Pinterest does not say.
hasFullDetailstrue/falseTrue when the product came from the fully opened pin. False when the pin could not be opened and the product was taken from what the results page already showed.
scrapedAtdateWhen the row was collected.

Pricing

You pay $5.00 per 1,000 products, which is half a cent per product row. Nothing else is billed: there is no charge for keywords you search, for pins that turn out to hold no products, or for entries filtered out by your own switches.

Worked example: a run over four keywords that returns 400 products costs 400 × $0.005 = $2.00. Set maxProducts to cap the bill exactly — a run capped at 500 products can never cost more than $2.50.

Limits & what this actor cannot do

  • This is a shop-the-look and collection product extractor, not a "price for any pin" tool. Ordinary merchant catalog pins — the single-product pins that link straight to a shop — do not publish a price on Pinterest at all, so they return no rows. Multi-product pins, and single-product pins that carry a real offer, are the ones that pay off. Expect a minority of any keyword's results to hold products; the actor tells you exactly how many did.
  • Not every entry inside a collection has a price. By default those are dropped; switch onlyWithPrice off to keep them.
  • Prices, discounts, availability and save counts are a snapshot at the moment of collection and keep changing afterwards.
  • Pinterest publishes a limited number of public results for any one search, so very large targets return what Pinterest makes available rather than an unlimited history.
  • Results and currencies are personalised to the market they are served for, and the market you pick is not always the market Pinterest serves. Every row records both the market that was asked for and the one Pinterest actually served, so you always know which one produced your prices.
  • A pin that cannot be opened is reported as such, never silently counted as a pin that holds no products. Where the results page had already shown some of that pin's products, those are kept and marked with hasFullDetails as false.
  • Promoted pins appear inside Pinterest's own results. They are excluded by default and flagged when you keep them.
  • Pins that have been deleted or made private are reported as unavailable rather than returned empty.
  • Availability and condition are passed through exactly as published, without being reinterpreted.
  • Shortened pin.it links cannot be used — open one in a browser and paste the full address it lands on.
  • Speed depends on the size of the job and on how fast Pinterest answers; no fixed speed is promised.
  • Pinterest's terms govern automated access. You are responsible for using the data lawfully and in line with the source site's terms, and for handling any personal data in line with applicable privacy law.

FAQ

Do I need a Pinterest account? No. Nothing here is behind a login, and no account is ever involved.

Does it need my login or password? No. Never provide them — they are not an input and would not be used.

Why did some of my keywords return nothing? Because those results contained no pins with product entries. Pinterest happily fills a result page with visually similar pins even for a term nobody shops with, and none of that filler carries a price. Wording the keyword the way a shopper would — a product noun, not a mood — makes a large difference. An empty keyword always means an empty keyword: if pins could not be opened instead, the run reports that separately rather than letting it look like nothing was there.

Is the data complete? It is complete for what Pinterest publishes publicly. Every price, discount, stock marker and merchant name comes from the product entry itself; nothing is estimated, and a field the merchant did not publish arrives empty rather than as a zero. What it cannot give you is a price for pins where no price exists anywhere on Pinterest — those simply produce no rows.

Can I schedule it? Yes. Save your keywords as a task and run it daily or weekly to track prices and discounts over time; scrapedAt on every row gives you the time series.

Why do I sometimes get two rows with the same product? Because the same product can appear inside two different pins. Each row records the pin it came from, so you can keep both or group by link to collapse them.