Pinterest Ads Scraper | Ad Library, Reach & Targeting avatar

Pinterest Ads Scraper | Ad Library, Reach & Targeting

Pricing

from $0.81 / 1,000 ads

Go to Apify Store
Pinterest Ads Scraper | Ad Library, Reach & Targeting

Pinterest Ads Scraper | Ad Library, Reach & Targeting

Pinterest Ads Scraper for the Pinterest Ads Repository, the EU ad library: 20 ads in 3 seconds, 30 fields each. Search by advertiser, country, link or pin id and get ad title, text, image, video, advertiser, EU reach by country, age, gender and audience targeting, start and end dates. No account.

Pricing

from $0.81 / 1,000 ads

Rating

0.0

(0)

Developer

SilentFlow

SilentFlow

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

5 days ago

Last modified

Share

Pinterest Ads Scraper | Ad Library, Reach & Targeting (2026)

1 search. 20 Pinterest ads. 30 fields per ad.

From SilentFlow. Creators of Pinterest Scraper and Leboncoin Scraper Ppe, with 410,000+ combined lifetime runs.

Every Pinterest ad a brand ran in Europe, Brazil or Turkey, in one table: the creative, the advertiser, the reach in the EU and by country, and the audience it was bought for. Type an advertiser, paste a repository or pin link, drop in pin ids, or leave the form empty to read the newest ads of a country. You get rows you can sort, filter and join. 20 IKEA Deutschland ads in 3 seconds on the prefilled run, no Pinterest account.

Why choose this actor?

Clicking through the Pinterest Ads Repository one ad at a time, then copying titles and reach ranges into a spreadsheet? Running one advertiser and one country per run, after filling in a mandatory date? Getting rows that carry no advertiser name, or reach you cannot sort because it is written as text?

  • 26 data fields filled on every row, against the 14 the most used Pinterest ads scraper shows. On the prefilled run (20 IKEA Deutschland ads, 14 Oct 2026), 26 of the 38 data fields of a row carry a value on all 20 rows: title, ad text, format, advertiser, EU reach as text and as two numbers you can sort on, reach by country, targeted countries with their ISO codes, ages, genders, audience types, keyword and location targeting flags, first and last day shown, days running, the image at two sizes, the repository page and the pin. On a 300-ad run of Germany, the advertiser name was there on 298 rows.
  • Three ways in, all in the same run: advertiser names, links and pin ids. The most used Pinterest ads scraper takes a country with filters and one advertiser name per run, and cannot read a link or a pin id. Here you can list several advertisers, paste the repository page or the Pinterest pin of an ad, replay a repository search link with its own filters, and refresh a watchlist of pin ids. On a test run, two links and one pin id returned 15 ads in 2 seconds.
  • Nothing to fill in before you press Start. The most used Pinterest ads scraper makes the country and the start date mandatory. Here no field is required: the country defaults to Germany, the period to the last 30 days, and the form comes prefilled with IKEA Deutschland, so the first run returns rows right away. Clear the advertiser and the same run reads every ad shown in the country.

Try Pinterest Ads Scraper

Paste this input into the Input tab (JSON view) and press Start. It is the prefilled input of the form: 20 ads that IKEA Deutschland showed in Germany over the last 30 days.

{
"searchQueries": ["IKEA Deutschland"],
"country": "de",
"maxItems": 20
}

The Apify Free plan is enough to run it and to test the actor on your own competitors: no credit card, no Pinterest account, no setup. Each ad becomes one row of the dataset, which you can export as JSON, CSV or Excel, or read from the API.

How it works

SilentFlow ยท Pinterest suite
ย ย Pinterest Scraper
Pins, Boards and Profiles
ย ย Pinterest Scraper
Pinterest Scraper
Pinterest Ads Scraper
You are here

Copy to your AI assistant

Paste this block into Claude, ChatGPT or Cursor to give it the full context of this actor:

You have access to the Pinterest Ads Scraper on Apify: silentflow/pinterest-ads-scraper
It reads Pinterest's public Ads Repository (ads.pinterest.com/ads-repository), the ad library
Pinterest publishes for the 27 EU countries, Brazil and Turkey, last 12 months. One dataset row per ad.
Input (no field is required; with no advertiser, link or id it reads every ad of the country):
- searchQueries (array of strings): advertiser names exactly as Pinterest shows them, case-insensitive,
e.g. ["IKEA Deutschland", "Amazon.de", "Sephora France"]. "Amazon" alone finds nothing.
- startUrls (array of {url} or strings): repository ad pages (https://ads.pinterest.com/ads-repository/<pin id>/),
pin pages (https://www.pinterest.com/pin/<pin id>/), or repository search links with
country, start_date, end_date, advertiser_name, vertical, gender, age_bucket in the query string.
- adIds (array of strings): pin ids of ads, digits, e.g. "4602678896534640256".
- country (string, default "de"): one country, several separated by commas, or "all" (29 countries).
Codes (de), three-letter codes (deu) or English names (Germany).
- startDate (string): YYYY-MM-DD or a span such as "90 days". Default: 30 days before endDate.
- endDate (string): YYYY-MM-DD or a span such as "1 day". Default: today.
- category (string, default "all"): all, animals, architecture, art, beauty, childrens_fashion, design,
diy_and_crafts, education, electronics, entertainment, event_planning, finance, food_and_drinks,
gardening, health, home_decor, mens_fashion, other, parenting, quotes, sport, travel, vehicles,
wedding, womens_fashion.
- gender (string, default "all"): all, female, male, unspecified.
- age (string, default "all"): all, 18-24, 25-34, 35-44, 45-49, 50-54, 55-64, 65+.
- maxItems (integer, default 100): stop after this many ads in total, shared between searches.
Output per ad (42 fields, null when Pinterest has no value):
- id (string, pin id), url (string, permanent repository page), pinUrl (string), title (string)
- description (string), creativeType ("image", "video" or "carousel"), isCommercial (boolean)
- advertiserName (string), isVerifiedMerchant (boolean)
- euReach (string range such as "70000 - 80000"), euReachMin, euReachMax (integers),
reachByCountry (object, country name to range)
- countries (array of English names), countryCodes (array of ISO codes), ageBuckets (array),
genders (array), interests (array), audienceTypes (array), regions, metros, postalCodes, devices (arrays),
usesKeywords, usesNegativeKeywords, hasExcludedLocations, isLocalInventory, usesPinterestAi (booleans)
- reviewStatus (string), moderationReasons (array), violationSource (string)
- startDate, endDate (RFC 3339), durationDays (integer, both days counted)
- imageUrl (474 px), imageUrlLarge (736 px), videoUrl, carouselImageUrls (array)
- searchCountry (string), foundBy ("browse", "keyword", "url" or "id"), searchQuery (string), scrapedAt (RFC 3339)
Use apify-client for Python or JavaScript to call it and read the dataset items.

How to scrape Pinterest ads from the Ads Repository

Get the recent ads of one advertiser

The simplest run: one advertiser, its home country, the last 30 days.

{
"searchQueries": ["IKEA Deutschland"],
"country": "de",
"maxItems": 50
}

See which brands push beauty ads in France

Leave the advertiser empty and pick a category: the run reads every ad shown in the country for that category, with the advertiser of each one. On a test run this returned 30 ads in 2 seconds, from Sephora France, Castorama France, Temu.France and AliExpress among others.

{
"country": "fr",
"category": "beauty",
"maxItems": 30
}

Compare two advertisers over a quarter

List several advertisers and a period: the cap is shared between them, so each one gets its fair part. On a test run, Amazon.de and OTTO from July to September returned 30 ads each, 60 ads in 4 seconds.

{
"searchQueries": ["Amazon.de", "OTTO"],
"country": "de",
"startDate": "2026-07-01",
"endDate": "2026-09-30",
"maxItems": 60
}

Input parameters

ParameterTypeDefaultWhat it does
searchQueriesarray of stringsprefilled ["IKEA Deutschland"]Advertisers whose ads you want, written as Pinterest shows them. One search per advertiser and country.
startUrlsarray of linksnoneRepository ad pages, pin pages, or repository search links with their own filters.
adIdsarray of stringsnonePin ids of ads, from the repository or from the id field of an earlier run.
countrystringdeOne country, several separated by commas, or all for the 29 countries.
startDatedate or span30 days before the endKeep the ads shown on or after this day.
endDatedate or spantodayKeep the ads shown on or before this day.
categorystringallKeep the ads of one Pinterest category, such as beauty or home decor.
genderstringallKeep the ads bought for one gender. Most ads target every gender and stay in.
agestringallKeep the ads bought for one age bracket. Most ads target every adult and stay in.
maxItemsinteger100Stop after this many ads in total, shared between advertisers and countries.

With nothing in searchQueries, startUrls or adIds, the run reads the newest ads of the chosen countries with the chosen filters. Pin ids and links to one ad ignore the filters: they always give the ad they point to.

Accepted formats

  • Advertisers: the full name as Pinterest shows it in the repository or in the advertiserName column of an earlier run, such as IKEA Deutschland, Amazon.de, TEMU DE, Sephora France or OTTO. Upper or lower case both work, a part of the name does not: Amazon finds nothing where Amazon.de fills a first page of 100 ads in Germany. Big brands often advertise under one name per country.
  • Repository ad pages: open one ad in the Pinterest Ads Repository and copy the address, such as https://ads.pinterest.com/ads-repository/4602678896534640256/.
  • Pin pages: the Pinterest page of the promoted pin, on any Pinterest domain: https://www.pinterest.com/pin/1134907174850095283/, https://fr.pinterest.com/pin/..., https://www.pinterest.de/pin/.... Short pin.it links cannot be read: open them first and paste the full address.
  • Repository search links: https://ads.pinterest.com/ads-repository/?country=FR&advertiser_name=Sephora%20France, with any of country, start_date, end_date, advertiser_name, vertical, gender and age_bucket. What the link says wins over the form.
  • Pin ids: the digits of the pin, such as 4602678896534640256.
  • Countries: the two-letter code (de), the three-letter code (deu) or the English name (Germany), alone or several at once (de, fr, it), or all. The repository covers Austria, Belgium, Brazil, Bulgaria, Croatia, Cyprus, Czechia, Denmark, Estonia, Finland, France, Germany, Greece, Hungary, Ireland, Italy, Latvia, Lithuania, Luxembourg, Malta, the Netherlands, Poland, Portugal, Romania, Slovakia, Slovenia, Spain, Sweden and Turkey.
  • Dates: YYYY-MM-DD such as 2026-09-01, or a span back from today such as 90 days, 2 weeks or 6 months. The repository goes back 12 months; an older start day is moved to the first day it keeps, and the log says so.

What data can you extract from the Pinterest Ads Repository?

Each row is one ad, with 38 data fields and 4 fields that say how the row was found. Fields Pinterest leaves empty are null, never an empty string.

GroupFields
Identity (4)id, url, pinUrl, title
Content (3)description, creativeType, isCommercial
Advertiser (2)advertiserName, isVerifiedMerchant
Reach (4)euReach, euReachMin, euReachMax, reachByCountry
Targeting (15)countries, countryCodes, ageBuckets, genders, interests, audienceTypes, regions, metros, postalCodes, devices, usesKeywords, usesNegativeKeywords, hasExcludedLocations, isLocalInventory, usesPinterestAi
Moderation (3)reviewStatus, moderationReasons, violationSource
Time (3)startDate, endDate, durationDays
Media (4)imageUrl, imageUrlLarge, videoUrl, carouselImageUrls
How it was found (4)searchCountry, foundBy, searchQuery, scrapedAt

A few facts that help you use the data:

  • id is the pin id of the ad and never changes; url (the repository page) and pinUrl (the pin on Pinterest) are permanent addresses built from it. Join two runs on id to follow an ad over time.
  • euReach is the range of people the ad reached in the EU, exactly as Pinterest publishes it. euReachMin and euReachMax are the same range as two numbers, so you can sort a competitor's ads from the widest reach down. reachByCountry gives the range for each country the ad was shown in.
  • startDate and endDate are the first and last day the ad was shown, in RFC 3339. durationDays counts the days in between, both included: an ad a brand keeps running for months is often one that works.
  • imageUrl and imageUrlLarge are images hosted by Pinterest, at 474 and 736 pixels wide. videoUrl is the video file of video ads (6 of 300 ads in a test run of Germany). Disapproved ads keep their reach, dates and review status but come without creative.
  • Most ads target every adult (ageBuckets 18+) and every gender: the narrower values tell you an advertiser chose a specific audience. usesKeywords tells you whether the ad was bought on search keywords, audienceTypes whether it was aimed at past visitors or customer lists.

Output example

One row of the prefilled run, exactly as the dataset stores it:

{
"id": "4601975265568851840",
"url": "https://ads.pinterest.com/ads-repository/4601975265568851840/",
"pinUrl": "https://www.pinterest.com/pin/4601975265568851840/",
"title": "IKEA โ€“ ELDFLUGA | Dein neues Lieblingsstรผck wartet auf dich.",
"description": "ELDFLUGA Baldachin. blau/grรผn. Hรถhe: 80 cm",
"creativeType": "image",
"isCommercial": true,
"advertiserName": "IKEA Deutschland",
"isVerifiedMerchant": null,
"euReach": "70000 - 80000",
"euReachMin": 70000,
"euReachMax": 80000,
"reachByCountry": { "Germany": "70000 - 80000" },
"countries": ["Germany"],
"countryCodes": ["DE"],
"ageBuckets": ["18+"],
"genders": ["UNSPECIFIED", "FEMALE", "MALE"],
"interests": null,
"audienceTypes": ["VISITOR"],
"regions": null,
"metros": null,
"postalCodes": null,
"devices": null,
"usesKeywords": false,
"usesNegativeKeywords": false,
"hasExcludedLocations": false,
"isLocalInventory": false,
"usesPinterestAi": null,
"reviewStatus": null,
"moderationReasons": null,
"violationSource": null,
"startDate": "2026-08-02T00:00:00Z",
"endDate": "2026-10-07T00:00:00Z",
"durationDays": 67,
"imageUrl": "https://i.pinimg.com/474x/fa/24/92/fa24925746cedf3c485c0136331324a2.jpg",
"imageUrlLarge": "https://i.pinimg.com/736x/fa/24/92/fa24925746cedf3c485c0136331324a2.jpg",
"videoUrl": null,
"carouselImageUrls": null,
"searchCountry": "DE",
"foundBy": "keyword",
"searchQuery": "IKEA Deutschland",
"scrapedAt": "2026-10-14T03:02:25Z"
}

Advanced usage

Refresh a watchlist of competitor ads every week

Keep the pin ids of the ads you follow and run them on a schedule: each id gives one row with its current reach and last day shown, so you see which ads keep running and which stopped.

{
"adIds": ["4601975265568851840", "4602678896534640256", "1134907174850095283"],
"maxItems": 100
}

Paste a repository search link and the run keeps its country, dates, advertiser and filters, whatever the form says. Mix it with pin pages and repository ad pages in the same list.

{
"startUrls": [
{ "url": "https://ads.pinterest.com/ads-repository/?country=FR&advertiser_name=Sephora%20France" },
{ "url": "https://www.pinterest.com/pin/1134907174850095283/" }
],
"maxItems": 50
}

Map who advertises on Pinterest across Europe

Use all to read the newest ads of the 29 countries, Germany, France, Italy and Spain first. The cap is shared between the countries, so a small maxItems gives a sample of each market and the advertiserName column tells you who spends where.

{
"country": "all",
"maxItems": 290
}

Find the ads a brand keeps running

Read six months of one advertiser, then sort the dataset by durationDays or euReachMax: the ads at the top are the ones the brand kept paying for, the best starting point for a swipe file.

{
"searchQueries": ["Sephora France"],
"country": "fr",
"startDate": "6 months",
"maxItems": 500
}

Watch one audience in one category

Combine a category, a gender and an age bracket to see what advertisers show a given audience in a country, for example home decor ads bought for women in Germany. Schedule it weekly and send the dataset to a sheet or a dashboard through the Apify integrations.

{
"country": "de",
"category": "home_decor",
"gender": "female",
"age": "25-34",
"maxItems": 200
}

FAQ

What is the Pinterest Ads Repository? It is Pinterest's public ad library, the transparency archive the EU Digital Services Act requires. It lists the ads shown in the 27 EU countries, plus Brazil and Turkey, over the last 12 months, with their creative, advertiser, reach and targeting. This actor turns it into a dataset.

What does this actor extract? One row per ad with 38 data fields: title, text, format, image and video links, advertiser, reach in the EU and by country as text and numbers, targeted countries, ages, genders, interests and audiences, keyword and location targeting flags, moderation status, first and last day shown and days running.

Do I need a Pinterest account or an API key? No. The repository is public. The actor needs no login, no Pinterest business account and no key.

Which countries are covered? The 29 countries Pinterest publishes ads for: the 27 EU countries, Brazil and Turkey. The United States and other markets are not in the repository, so no tool can return them from it.

Why does an advertiser give no ads? Pinterest matches the advertiser name exactly, without case: amazon.de works, Amazon does not. Leave the advertiser empty, run the country once, and read the exact names in the advertiserName column. Check also the country: a brand often advertises under one name per market (Temu.France in France, TEMU DE in Germany).

Can I search several advertisers, countries, links and ids in one run? Yes. List them all: ids and links to one ad come first, then searches. The cap is shared between the searches, so each advertiser and country gets its part, and an ad found twice is delivered once.

How fresh is the data and how far back does it go? Every run reads the repository live, nothing is cached. The repository keeps the ads of the last 12 months. Pinterest updates the last day shown in batches: on 14 Oct 2026, the ads still running showed 7 Oct as their last day.

How long does a run take? The prefilled run of 20 ads takes about 3 seconds; a run of 300 ads of Germany took 31 seconds.

Does it give ad spend or impressions? Pinterest does not publish spend. It publishes reach, the range of people an ad reached in the EU and in each country, which the actor gives as text and as minimum and maximum numbers.

Are the links permanent? The repository page (url) and the pin page (pinUrl) are permanent as long as Pinterest keeps the ad. Image and video links point to files Pinterest hosts; download the ones you want to archive.

Do the filters combine? Yes. Country, period, category, gender and age all apply together: country: de, category: home_decor, gender: female and age: 25-34 gives the German home decor ads that a woman aged 25 to 34 could see, including the ads aimed at every adult.

Why do some rows have no advertiser or no image? A few ads were disapproved by Pinterest: they keep their reach, dates and review status (reviewStatus, moderationReasons) but Pinterest removes their creative and advertiser. In a 300-ad run of Germany, 298 rows had their advertiser.

More SilentFlow scrapers

๐Ÿ›’ E-commerce

๐Ÿ’ผ Jobs

๐Ÿ  Real estate

๐Ÿ“ฃ Social media

๐Ÿข Business data

โœˆ๏ธ Travel

๐ŸŽฏ Lead generation

๐Ÿ”Ž SEO

๐Ÿ“ˆ Marketing

๐Ÿงฐ More tools

Support

Need something this scraper doesn't do yet? We ship features fast.

  • Feature requests go straight to our backlog
  • Enterprise needs? We do custom integrations and high-volume plans
  • Pricing questions? Check the Monetization tab on the actor page

Response time: usually under 24 hours.

This actor extracts publicly available data from the Pinterest Ads Repository, the ad library Pinterest publishes under the EU Digital Services Act. It does not bypass any login, paywall or CAPTCHA. Users are responsible for complying with Pinterest's terms of service and applicable data protection laws (GDPR, CCPA, and PIPL where relevant). Ads are published by businesses, but an advertiser name can be the name of a person running a small shop: when the output contains personal data, users must handle it accordingly. The data returned is informational; verify accuracy for regulated use cases.

Pinterest Ads Scraper by SilentFlow: the Pinterest Ads Repository as a dataset, for the advertisers, countries and ads you choose.