# Snapchat Ads Library Scraper (`parsebird/snapchat-ads-scraper`) Actor

Scrape the Snapchat Ads Library (Snap Ads Gallery): ad creatives, video and image links, headlines, CTAs, landing pages, advertiser and brand, impressions by country, targeting and status. Filter by advertiser, country, date and status.

- **URL**: https://apify.com/parsebird/snapchat-ads-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.49 / 1,000 ad scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### Snapchat Ads Library Scraper

Snapchat Ads Library Scraper pulls ads from the [Snap Ads Library](https://adsgallery.snap.com/) (also called the Snap Ads Gallery) by advertiser name. Each ad comes back with its video or image link, headline, call to action, landing page, paying advertiser, brand, impressions by country, targeting and status.

<table><tr>
<td style="border-left:4px solid #FFFC00;padding:12px 16px;font-weight:600">
Search several advertisers at once and filter by any of the 28 countries Snap covers (EU and Turkey), a date range and active or paused status. You get 40+ fields per ad: creative media, app store links, catalog products and age, gender and language targeting.
</td>
</tr></table>

<br>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

```text
Use Apify Actor parsebird/snapchat-ads-scraper to scrape ads from the public Snapchat Ads Library (Snap Ads Gallery, EU + Turkey). Call it with ApifyClient: client.actor("parsebird/snapchat-ads-scraper").call(run_input={"searchTerms":["Amazon"],"countries":["de"],"status":"ALL","maxItems":100}). Inputs: searchTerms (array of advertiser names, partial match on the paying advertiser, required unless adIds is given); countries (array of lowercase 2-letter codes: at, be, bg, cy, cz, de, dk, ee, el (Greece), es, fi, fr, hr, hu, ie, it, lt, lu, lv, mt, nl, pl, pt, ro, se, si, sk, tr; empty = all); startDate and endDate (YYYY-MM-DD, optional); status ("ALL" default, "ACTIVE", "PAUSED"); maxItems (integer, ads per advertiser, default 100); adIds (array of ad IDs to refresh, optional). Output: one item per ad with id, adName, adStatus, reviewStatus, rejectionReasons, payingAdvertiserName, accountName, brandName, profileName, profileLogoUrl, adType, creativeType, headline, callToAction, destinationUrl, deepLinkUrl, snapMediaDownloadLink, snapMediaType, startDate, totalImpressions, impressionsByCountry, countries, languages, targetedAgeRange, targetedGender, targeting, snaps, appInstall, products, lens, searchTerm, scrapedAt. Pricing: pay per ad. API docs: https://docs.apify.com/api/client/python/. Get a token: https://console.apify.com/account/integrations.
```

### What is Snapchat Ads Library Scraper?

**Snapchat Ads Library Scraper** is a no-code tool and **Snapchat Ads Library API** for collecting the ads Snap publishes in its public ad transparency library. Enter an advertiser such as `Amazon`, `Zalando` or `Netflix` and the actor returns every matching ad as structured data: **creative download links, headlines, CTAs, landing pages, total impressions, impressions per country and audience targeting**.

The [Snap Ads Library](https://adsgallery.snap.com/) lists ads shown to Snapchatters in the European Union and Turkey. It shows one ad at a time in the browser. Snapchat Ads Library Scraper turns it into a dataset you can download as JSON, CSV or Excel, query through the API, or refresh on a schedule. You don't need a Snapchat account, login, cookies or proxy.

### What can Snapchat Ads Library Scraper do?

- 🔍 **Search many advertisers in one run.** Add as many names as you like; partial names work, so `Amazon` also returns ads paid for by "Amazon Services LLC" and "Amazon Snapchat EU WPP".
- 🌍 **Filter by country.** Pick any of the 28 markets in the library (27 EU countries and Turkey), or leave it empty to search them all.
- 📅 **Filter by date and status.** Limit results to a date range and to active or paused ads.
- 🎬 **Download creatives.** Get direct links to each ad's video or image, plus every Snap in multi-Snap story ads.
- 📱 **See app install, catalog and lens ads in full.** App ads include App Store and Google Play links. Dynamic product ads include the products shown, and lens ads include preview media.
- 📊 **Measure reach.** Total impressions, impressions per country, languages, age range, gender and device targeting.
- 🛑 **Track rejected ads.** Review status and Snap's rejection reasons for ads that were disapproved.
- 🔁 **Monitor specific ads.** Re-scrape known ad IDs to track impressions over time.
- ⚙️ **Use the Apify platform.** [Schedule runs](https://docs.apify.com/platform/schedules), call the actor from the [Apify API](https://docs.apify.com/api/v2), get [webhooks](https://docs.apify.com/platform/integrations/webhooks) when a run finishes, and connect to [Make, Zapier, Google Sheets, Slack and more](https://apify.com/integrations).

### What data can you extract from the Snapchat Ads Library?

| Field | Description |
|-------|-------------|
| `id` | Snap Ads Library ad ID |
| `adName` | Internal ad name set by the advertiser (often shows campaign, market and format) |
| `payingAdvertiserName` | Legal entity that paid for the ad |
| `brandName` / `profileName` | Brand and Snapchat public profile shown on the ad |
| `accountName` | Name of the ad account that ran the ad |
| `adType` / `creativeType` | Format, e.g. `REMOTE_WEBPAGE`, `STORY`, `APP_INSTALL`, `COLLECTION`, `DEEP_LINK`, `LENS_REMOTE_WEBPAGE` |
| `headline` / `callToAction` | Ad headline and button text (`SHOP NOW`, `INSTALL NOW`, `WATCH`...) |
| `destinationUrl` | Landing page, deep link or app store link |
| `snapMediaDownloadLink` / `snapMediaType` | Direct link to the ad's video or image |
| `startDate` | When the ad started running |
| `totalImpressions` | Total impressions reported by Snap |
| `impressionsByCountry` / `countries` | Impressions per country, largest first |
| `languages` | Languages the ad targets |
| `targetedAgeRange` / `targetedGender` / `targeting` | Age, gender, language and device targeting |
| `adStatus` / `reviewStatus` / `rejectionReasons` | Active or paused, approved or disapproved, and why |
| `snaps` | Every Snap in a multi-Snap story ad, each with its media, headline, CTA and link |
| `appInstall` | App name, App Store and Google Play links, icon |
| `products` | Products in dynamic product (catalog) ads: title, brand, link, image, availability |

### How to scrape the Snapchat Ads Library

1. Open [Snapchat Ads Library Scraper](https://apify.com/parsebird/snapchat-ads-scraper) and sign in to Apify (a free account works).
2. In **Advertiser names**, enter one or more advertisers, e.g. `Amazon`.
3. Optionally pick **Countries**, a **Start date** and **End date**, and an **Ad status**.
4. Set **Max ads per advertiser**. 20 is a good first test.
5. Click **Start** and wait a few seconds.
6. Open the **Output** tab to browse the ads, or export them as JSON, CSV, Excel, XML or HTML.

### How much does it cost to scrape the Snapchat Ads Library?

Snapchat Ads Library Scraper uses **pay-per-event** pricing: you pay for each ad saved to your dataset, and nothing else. Compute and proxy costs are included in the event price; there are no other usage charges for the run.

| Event | Free | Bronze | Silver | Gold |
|-------|------|--------|--------|------|
| `ad-scraped` (one ad) | $0.00399 | $0.00349 | $0.00299 | $0.00249 |
| Per 1,000 ads | **$3.99** | **$3.49** | **$2.99** | **$2.49** |

For example, pulling 500 ads from a competitor costs about $2.00 on the Free plan, and a 20-ad test run costs about $0.08. Apify's free plan includes monthly platform credits, so you can test without paying. Set a maximum cost per run in Apify Console and the actor stops when it's reached.

### Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `searchTerms` | array of strings | **Yes** (or `adIds`) | — | Advertiser names to search. Partial, case-insensitive match on the paying advertiser |
| `countries` | array of strings | No | all | Country codes: `at`, `be`, `bg`, `cy`, `cz`, `de`, `dk`, `ee`, `el` (Greece), `es`, `fi`, `fr`, `hr`, `hu`, `ie`, `it`, `lt`, `lu`, `lv`, `mt`, `nl`, `pl`, `pt`, `ro`, `se`, `si`, `sk`, `tr` |
| `startDate` | string | No | — | Only ads that ran on or after this date (`YYYY-MM-DD`) |
| `endDate` | string | No | — | Only ads that ran on or before this date (`YYYY-MM-DD`) |
| `status` | string | No | `ALL` | `ALL`, `ACTIVE` or `PAUSED` |
| `maxItems` | integer | No | 100 | Maximum ads to save per advertiser name |
| `adIds` | array of strings | No | — | Specific ad IDs to fetch (filters don't apply) |
| `proxyConfiguration` | object | No | off | Optional Apify Proxy; not needed for normal runs |

Example input:

```json
{
    "searchTerms": ["Amazon", "Zalando"],
    "countries": ["de", "fr"],
    "startDate": "2026-01-01",
    "endDate": "2026-09-30",
    "status": "ACTIVE",
    "maxItems": 200
}
```

### Output example

Each ad is one dataset item. Here is a real web ad from Amazon in Belgium and an app install ad from Spotify in Turkey. Long media URLs are shortened and some empty fields are left out.

```json
[
  {
    "id": "46b11f7f-9120-43e1-9865-2aa69cb0112b",
    "adName": "XCER26BE00A_Bread_x_Phase1_UGC_be_fr_vid_9x16_10s_mlt_x_x_x_x_Phase1",
    "adStatus": "ACTIVE",
    "reviewStatus": "APPROVED",
    "rejectionReasons": [],
    "payingAdvertiserName": "Amazon Services LLC",
    "accountName": "BE XCM Brand SNAP 2P # Default",
    "brandName": "Amazon BE",
    "profileName": "Amazon.be",
    "profileLogoUrl": "https://cf-st.sc-cdn.net/aps/bolt/aHR0cHM6Ly9jZi1zdC5zYy1jZG4ubmV0L2Qv...",
    "adType": "REMOTE_WEBPAGE",
    "creativeType": "WEB_VIEW",
    "adRenderType": "STATIC",
    "headline": "À vous de jouer",
    "callToAction": "SHOP NOW",
    "destinationUrl": "https://www.amazon.com.be/?language=fr_BE",
    "snapMediaDownloadLink": "https://cf-st.sc-cdn.net/d/3yvPsu4g6VeRHufsxoNHv.67?mo=...",
    "snapMediaType": "VIDEO",
    "snapMediaCropPosition": "MIDDLE",
    "startDate": "2026-08-30T23:00:00.000Z",
    "totalImpressions": 4239252,
    "impressionsByCountry": { "be": 4239252 },
    "countries": ["be"],
    "languages": ["fr"],
    "targetedAgeRange": "18-34",
    "targetedGender": null,
    "regulatedContent": false,
    "targeting": {
      "regulatedContent": false,
      "demographics": [{ "minAge": "18", "maxAge": "34", "ageGroups": [], "languages": [], "operation": "INCLUDE", "advancedDemographics": [] }],
      "devices": []
    },
    "snaps": [],
    "appInstall": null,
    "products": [],
    "searchTerm": "Amazon",
    "scrapedAt": "2026-10-19T05:33:15.792Z"
  },
  {
    "id": "7a57a557-47e2-4f63-a1e9-004d114ca470",
    "adStatus": "ACTIVE",
    "reviewStatus": "APPROVED",
    "payingAdvertiserName": "Spotify USA Inc.",
    "accountName": "ONESocial Free MAU Evergreen 2",
    "profileName": "Spotify",
    "adType": "APP_INSTALL",
    "creativeType": "APP_INSTALL",
    "headline": "Spotify'ı ücretsiz edin",
    "callToAction": "SIGN UP",
    "destinationUrl": "https://apps.apple.com/app/id324684580",
    "snapMediaDownloadLink": "https://cf-st.sc-cdn.net/d/Hej7d1SBwLzugCMbO2SJR.67?mo=...",
    "snapMediaType": "VIDEO",
    "startDate": "2026-01-01T05:00:00.000Z",
    "totalImpressions": 104938,
    "impressionsByCountry": { "tr": 104938 },
    "languages": ["tr"],
    "targetedAgeRange": "13-55",
    "appInstall": {
      "appName": "Spotify",
      "iosAppId": "324684580",
      "appStoreUrl": "https://apps.apple.com/app/id324684580",
      "androidPackage": "com.spotify.music",
      "googlePlayUrl": "https://play.google.com/store/apps/details?id=com.spotify.music",
      "iconUrl": "https://cf-st.sc-cdn.net/d/4Y5kFn7iSpwFGYMOSE7yw.438?mo=..."
    },
    "searchTerm": "Spotify"
  }
]
```

You can download the dataset in JSON, CSV, Excel, XML, RSS or HTML from the **Output** tab or the [dataset API](https://docs.apify.com/api/v2#/reference/datasets).

### Use the Snapchat Ads Library Scraper API

You can start runs and fetch results from your own code with the Apify API clients.

**Python** ([apify-client](https://docs.apify.com/api/client/python/)):

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("parsebird/snapchat-ads-scraper").call(run_input={
    "searchTerms": ["Zalando"],
    "countries": ["de", "fr"],
    "status": "ACTIVE",
    "maxItems": 200,
})
for ad in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(ad["brandName"], ad["headline"], ad["totalImpressions"], ad["destinationUrl"])
```

**JavaScript** ([apify-client](https://docs.apify.com/api/client/js/)):

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('parsebird/snapchat-ads-scraper').call({
    searchTerms: ['Zalando'],
    countries: ['de', 'fr'],
    status: 'ACTIVE',
    maxItems: 200,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((ad) => console.log(ad.brandName, ad.headline, ad.totalImpressions, ad.destinationUrl));
```

Both clients are also available as plain HTTP endpoints. See the **API** tab on the actor page for ready-made `curl` commands and the OpenAPI definition.

### Use cases

- **Competitor ad research:** see which creatives, headlines and offers competitors run on Snapchat in each European market, and how many impressions they get.
- **Creative inspiration:** collect the video and image ads in your category to brief designers and benchmark formats (story ads, collection ads, app install ads, lenses).
- **Ad monitoring:** schedule a daily or weekly run to track when competitors launch or pause campaigns, then send changes to Google Sheets or Slack.
- **Performance marketing:** compare targeting choices (age, gender, language, devices) and landing pages across advertisers.
- **Mobile app intelligence:** find which apps buy Snapchat installs, in which countries, with which CTAs.
- **Brand safety and compliance research:** study disapproved ads and Snap's rejection reasons, or check which ads are flagged as regulated content.
- **Academic and DSA research:** build datasets of online advertising in the EU for transparency studies.

### How it works

1. For each advertiser name, Snapchat Ads Library Scraper queries Snap's public Ads Library with your country, date and status filters.
2. It pages through the results until it reaches **Max ads per advertiser** or runs out of ads.
3. Each ad is turned into a flat record: media links, app and product details are pulled out of Snap's nested formats, and the impressions map keeps only countries with impressions.
4. An ad that matches two advertiser names is saved and charged only once.
5. Results are saved to the dataset as they arrive, so you can watch them come in during the run.

### FAQ

**Is there a Snapchat ads library?**
Yes. Snap runs a public [Ads Library](https://adsgallery.snap.com/) for ads delivered in the European Union and Turkey. Snapchat Ads Library Scraper reads that library and exports it as data. Snap also publishes a separate political ads library, which this actor does not cover.

**Can I scrape Snapchat ads shown in the US or the UK?**
No. Snap's Ads Library covers only the 27 EU countries and Turkey, so ads that run only in the US, the UK or other markets aren't in it.

**How do I find the right advertiser name?**
Search uses the **paying advertiser** name (the entity billed for the ad), and partial, case-insensitive matches work. Short names like `Amazon` or `Nike` usually work. The paying advertiser can differ from the brand: for example, many Prime Video ads are paid for by "Amazon Snapchat EU WPP", so search `Amazon` rather than `Prime Video`. Check the `payingAdvertiserName` field of your results to refine the search.

**How do the date filters work?**
Snap returns ads that ran at some point in your date range. An ad that started before your start date but was still running inside the range is included, so `startDate` in the output can be earlier than your filter.

**Why is `destinationUrl` empty for some ads?**
Snap doesn't publish a link for some formats, such as deep-link Snaps inside story ads and dynamic product ads that build their product list per viewer. When Snap shows no link, the field is `null`.

**Can I download the ad videos?**
Yes. `snapMediaDownloadLink` (and `mediaUrl` for each item in `snaps`) points to the creative file on Snap's CDN. Download the files soon after the run, because CDN links aren't guaranteed to work forever.

**How fast is it?**
Snap serves 10 ads per request. A run for one advertiser typically saves several hundred ads per minute, and several advertisers are scraped in parallel.

**Can I schedule it to monitor competitors?**
Yes. Create a [schedule](https://docs.apify.com/platform/schedules) in Apify Console to run the actor daily or weekly. You can send the results to Google Sheets, Slack, Make, Zapier or your own webhook with [integrations](https://apify.com/integrations).

**Do I need a proxy or a Snapchat account?**
No. The Snap Ads Library is public. Proxy is off by default; turn on Apify Proxy in the input only if your runs keep getting rate limited.

**I found a bug or need a field that's missing.**
Open an issue in the **Issues** tab of the actor page and we'll take a look.

### Is it legal to scrape the Snapchat Ads Library?

Snapchat Ads Library Scraper collects only data that Snap publishes for anyone to see in its public Ads Library, for ad transparency. It does not access private Snapchat accounts or personal user data. You are still responsible for how you use the results, including compliance with Snap's terms, copyright in the ad creatives and data protection rules such as the GDPR. If you're unsure, consult a lawyer. Read more in Apify's post [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

### Other ad library and Snapchat scrapers

| Actor | What it does |
|-------|--------------|
| [Meta / Facebook Ads Library Scraper](https://apify.com/parsebird/facebook-ads-library-scraper) | Ads from the Meta Ad Library for Facebook, Instagram and Messenger |
| [Google Ads Transparency Center Scraper](https://apify.com/parsebird/google-ads-transparency-scraper) | Search, YouTube and display ads from Google's Ads Transparency Center |
| [LinkedIn Ads Library Scraper](https://apify.com/parsebird/linkedin-ads-library-scraper) | LinkedIn Ad Library ads with impressions and targeting |
| [TikTok Ads Scraper](https://apify.com/parsebird/tiktok-ads-scraper) | TikTok Creative Center top ads by country, industry and objective |
| [TikTok Top Ads Scraper](https://apify.com/parsebird/tiktok-top-ads-scraper) | TikTok Creative Center top ads by market, language and Spark format |
| [Snapchat Profile Scraper](https://apify.com/parsebird/snapchat-profile-scraper) | Public Snapchat profiles: bio, subscribers, category, website |

# Changelog

This Actor's version history is a separate document: https://apify.com/parsebird/snapchat-ads-scraper/changelog.md

# Actor input Schema

## `searchTerms` (type: `array`):

Enter the advertisers whose ads you want, one per line (e.g. Amazon, Zalando, Netflix). Snap matches the name of the paying advertiser, and partial names work: 'Amazon' also returns 'Amazon Snapchat EU WPP'.

## `countries` (type: `array`):

Return only ads shown in these countries. Leave empty to search all countries. The Snap Ads Library covers the 27 EU countries and Turkey only.

## `startDate` (type: `string`):

Return ads that ran on or after this date (YYYY-MM-DD). Ads that started earlier but were still running in the date range are included.

## `endDate` (type: `string`):

Return ads that ran on or before this date (YYYY-MM-DD).

## `status` (type: `string`):

Choose whether you want active ads, paused ads, or both.

## `maxItems` (type: `integer`):

Set the maximum number of ads to save for each advertiser name. Keep it low for a quick first run.

## `adIds` (type: `array`):

Add Snap Ads Library ad IDs (e.g. 72b378ea-a99a-4cf0-9459-62763578988a) to refresh specific ads, for example to track their impressions over time. Country, date and status filters don't apply to ad IDs.

## `proxyConfiguration` (type: `object`):

Leave this off: the Snap Ads Library is a public API and works without a proxy. Turn on Apify Proxy only if your runs keep hitting rate limits.

## Actor input object example

```json
{
  "searchTerms": [
    "Amazon"
  ],
  "countries": [
    "de"
  ],
  "status": "ALL",
  "maxItems": 20,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchTerms": [
        "Amazon"
    ],
    "countries": [
        "de"
    ],
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/snapchat-ads-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchTerms": ["Amazon"],
    "countries": ["de"],
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/snapchat-ads-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchTerms": [
    "Amazon"
  ],
  "countries": [
    "de"
  ],
  "maxItems": 20
}' |
apify call parsebird/snapchat-ads-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parsebird/snapchat-ads-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/Ts9gKFu5Savjrf3Nw/builds/VUYJi8mWeFrhSjusc/openapi.json
