Pinterest Ads Scraper avatar

Pinterest Ads Scraper

Pricing

from $0.10 / 1,000 ads

Go to Apify Store
Pinterest Ads Scraper

Pinterest Ads Scraper

Search Pinterest's public Ads Transparency Repository by market, category, age, gender, advertiser, and campaign dates. Save structured ad records with available creative, targeting, reach, transparency, and destination data.

Pricing

from $0.10 / 1,000 ads

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

📌 Pinterest Ads for public ad research

For marketers, agencies, and researchers, Pinterest Ads Scraper searches Pinterest's public Ads Transparency Repository with one set of filters across supported markets. It saves structured ad records with available advertiser, creative, campaign, targeting, reach, transparency, and destination data, so you can review public Pinterest ads in a dataset.

🧾 Public Pinterest ad records

Each saved row represents one source ad from the public repository. It can include the ad ID and URL, market, advertiser and campaign dates, creative text and media links, audience targeting, public reach ranges, transparency flags, and destination URLs. Pinterest gaps remain unavailable rather than filled in.

▶️ Search the Ads Transparency Repository

How to run

  1. Set Markets to one or more supported markets.
  2. Add optional category, age, gender, advertiser, or campaign date filters.
  3. Use the same filter set across the selected markets for one combined search.
  4. Set Maximum ads if you want to stop after a chosen number of saved records. Leave it empty to return all available results until the source is exhausted.
  5. Start the run and open datasetItems to review or export the saved records.

Only one search batch is supported in a run. Use separate runs for different filter combinations.

⚙️ Input

The Actor applies one common filter set to the markets you select. markets is required. All other fields are optional.

Input fields

FieldTypeWhat it does
marketsarray of stringsChooses one or more supported markets. Several markets use the same filters and return one combined search. Available markets are EU member states, Brazil, and Turkey.
categorystringFilters by an ad category value exactly as shown in Pinterest's public repository.
agestringFilters by an audience age range exactly as shown in Pinterest's public repository, such as 25-34.
genderstringFilters by an audience gender value exactly as shown in Pinterest's public repository, such as female.
advertiserstringFilters by the public advertiser name exactly as shown in Pinterest's public repository.
campaignStartDatedate stringIncludes campaigns starting on or after this date. Use YYYY-MM-DD.
campaignEndDatedate stringIncludes campaigns ending on or before this date. Use YYYY-MM-DD.
maxItemsintegerOptionally stops after this many saved ad records. Leave it empty to return all available results until the source is exhausted. The schema sets no upper bound.

Public input example

This is the public input from the successful current-beta default-input run.

{
"markets": [
"FR"
],
"maxItems": 100
}

🧾 Output

The run output contains a link to the default dataset. Each saved dataset row describes one public Pinterest ad. Optional values are left out when Pinterest does not publish them.

Run output

FieldTypeWhat it does
datasetItemsURL stringOpens the saved ad records in the run's default dataset.

Saved ad row

FieldTypeWhat it does
adIdstringGives the stable ID of the ad in the public Pinterest Ads Transparency Repository.
adUrlURL string, optionalLinks to the ad in the public repository.
marketstring, optionalGives the market code reported for the ad.
advertiserobject, optionalHolds public advertiser information when available.
advertiser.namestringGives the public advertiser name.
campaignobject, optionalHolds public campaign dates when available.
campaign.startDatedate stringGives the campaign start date in YYYY-MM-DD form.
campaign.endDatedate stringGives the campaign end date in YYYY-MM-DD form.
creativeobject, optionalHolds the ad text and media published by Pinterest.
creative.titlestringGives the title published with the ad.
creative.descriptionstringGives the ad description or caption.
creative.imageUrlsarray of URL stringsLists image asset links published with the ad.
creative.videoUrlsarray of URL stringsLists video asset links published with the ad.
targetingobject, optionalHolds the audience targeting published for the ad.
targeting.ageRangesarray of stringsLists the audience age ranges targeted by the ad.
targeting.gendersarray of stringsLists the audience genders targeted by the ad.
targeting.countriesarray of stringsLists the countries included in the ad's targeting.
targeting.regionsarray of stringsLists the regions included in the ad's targeting.
targeting.interestsarray of stringsLists the interests included in the ad's targeting.
targeting.audienceSegmentsarray of stringsLists audience-list segments included in the ad's targeting.
reachobject, optionalHolds public estimated reach ranges for the ad.
reach.euWideobjectHolds the EU-wide estimated reach range.
reach.euWide.lowerBoundintegerGives the lower end of the EU-wide reach range.
reach.euWide.upperBoundintegerGives the upper end of the EU-wide reach range.
reach.byCountryarray of objectsLists estimated reach ranges for individual countries.
reach.byCountry[].countryCodestringGives the country code for one reach estimate.
reach.byCountry[].lowerBoundintegerGives the lower end of one country's reach range.
reach.byCountry[].upperBoundintegerGives the upper end of one country's reach range.
transparencyobject, optionalHolds public transparency information reported for the ad.
transparency.isCommercialbooleanSays whether Pinterest marks the ad as commercial.
transparency.reviewStatusstringGives the public review status reported for the ad.
transparency.disclosurestringGives public review or disclosure information reported for the ad.
transparency.inventoryFlagsarray of stringsLists public inventory flags reported for the ad.
commerceobject, optionalHolds public product and destination link information for the ad.
commerce.destinationUrlsarray of URL stringsLists destinations used by the ad.

Example saved ad row

This genuine row comes from the current beta run and is shown in full.

{
"adId": "196610339985409684",
"adUrl": "https://ads.pinterest.com/ads-repository/?pin_id=196610339985409684",
"market": "FR",
"advertiser": {
"name": "Perles & Co"
},
"campaign": {
"startDate": "2026-06-23",
"endDate": "2026-08-10"
},
"creative": {
"title": "Des créoles en 5min 😁",
"description": "Créoles en 5 min 💛\n\nDes boucles bluffantes avec un minimum de matériel.\n\nCarla te montre tout — tu choisis ta couleur, le reste prend 5 minutes 😄",
"imageUrls": [
"https://i.pinimg.com/474x/1e/99/ff/1e99fffa55c2f003515e625392fe85ba.jpg"
],
"videoUrls": [
"https://v1.pinimg.com/videos/mc/720p/af/42/f3/af42f3b2d439fd916c22604e1d525a70.mp4"
]
},
"targeting": {
"ageRanges": [
"18+"
],
"genders": [
"UNSPECIFIED",
"FEMALE",
"MALE"
],
"countries": [
"France"
],
"interests": [
"DIY_AND_CRAFTS"
],
"audienceSegments": [
"USER_LIST",
"VISITOR",
"ENGAGEMENT"
]
},
"reach": {
"euWide": {
"lowerBound": 0,
"upperBound": 10000
},
"byCountry": [
{
"countryCode": "FR",
"lowerBound": 0,
"upperBound": 10000
}
]
},
"transparency": {
"isCommercial": true
}
}

💳 Pricing

The Actor uses pay-per-event pricing. Each saved ad from Pinterest's public Ads Transparency Repository is billed as one event. The event price depends on your Apify plan tier. Set maxItems when you want an upper bound on saved ads.

🔌 Integrations

Open datasetItems from the run output to inspect the default dataset. You can also export the saved rows or read them through the Apify API.

❓ FAQ

Can I search more than one market in one run?

Yes. Add several markets and the Actor applies the same filters to each one, then returns one combined search.

Can I search the United States or other markets?

No. The public repository coverage in this Actor includes EU member states, Brazil, and Turkey. The United States and other markets are outside its scope.

Can I filter by an arbitrary keyword or interest?

No. The input supports market, category, age, gender, advertiser, and campaign date filters. Interest and keyword details are returned only when Pinterest publishes them in an ad record.

What happens when Pinterest does not publish a field?

That value stays unavailable or the optional field is left out. The Actor does not fill gaps with guessed data.

What happens when the same ad appears more than once?

The first eligible occurrence of the source ad is saved. Later appearances of that same source ad are ignored.

What does leaving Maximum ads empty do?

The Actor returns all available results until the source is exhausted. There is no fixed schema maximum for this field.

Does this Actor manage Pinterest campaigns?

No. It searches the public Ads Transparency Repository. It does not create, edit, launch, or manage Pinterest campaigns.

📝 Changelog

v0.0 (02-09-2026)

  • Initial release.

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré