Snapchat Ads Library Scraper avatar

Snapchat Ads Library Scraper

Pricing

Pay per event

Go to Apify Store
Snapchat Ads Library Scraper

Snapchat Ads Library Scraper

Download and filter public Snapchat political ads archive records from Snap's transparency ZIP files.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Share

Extract public Snapchat political ads archive records from Snap's transparency ZIP files.

This Apify Actor downloads the official Snap political advertising archive, parses the yearly PoliticalAds.csv files, normalizes spend, impressions, dates, advertiser names, creative URLs, and targeting fields, then saves one dataset row per ad record.

Use it when you need repeatable monitoring of Snapchat political advertisers without manually downloading ZIP files from Snap's transparency page.

What does Snapchat Ads Library Scraper do?

Snapchat Ads Library Scraper automates the public Snap political ads archive workflow.

It can:

  • ๐Ÿ“ฆ Download selected yearly Snap political ads ZIP archives
  • ๐Ÿงพ Parse the PoliticalAds.csv archive files
  • ๐Ÿ’ฐ Extract spend, currency, and impression counts
  • ๐Ÿง‘โ€๐Ÿ’ผ Extract organization, paying advertiser, committee, and disclosure fields
  • ๐Ÿ—“๏ธ Normalize start and end dates
  • ๐ŸŽฏ Preserve targeting fields such as country, regions, interests, OS, age, gender, language, postal codes, and metros
  • ๐ŸŽฌ Return creative URLs and media type hints
  • ๐Ÿ”Ž Filter by year, advertiser, country, date range, and free-text search terms
  • ๐Ÿงฐ Include raw archive columns when you need audit-grade exports

Who is it for?

This scraper is built for teams that monitor paid political communication on social platforms.

Typical users include:

  • ๐Ÿ›๏ธ Political compliance teams tracking paid Snapchat election ads
  • ๐Ÿ“Š Ad-intelligence analysts comparing spend and impressions across advertisers
  • ๐Ÿ“ฐ Journalists and researchers investigating public political advertising archives
  • ๐Ÿง‘โ€โš–๏ธ Public affairs and legal teams documenting disclosures
  • ๐Ÿข Agencies monitoring a candidate, issue group, nonprofit, or advertiser portfolio
  • ๐Ÿงช Data teams that need structured CSV/JSON exports for dashboards

Why use this actor?

Snap publishes political ad transparency data as yearly downloadable archives. That is useful, but manual ZIP downloads are slow, repetitive, and hard to integrate.

This actor turns the archive into an Apify dataset with consistent field names and filters.

Use it when you need:

  • repeatable scheduled monitoring,
  • one API call instead of a manual download,
  • structured JSON, CSV, Excel, or API output,
  • consistent field names across archive years,
  • a small filtered extract instead of the whole archive,
  • or raw fields for compliance review.

What data can you extract?

FieldDescription
adIdSnap archive ad identifier
archiveYearYear inferred from the downloaded archive URL
creativeUrlSnap-hosted creative asset URL when present
mediaTypeMedia type inferred from the creative URL
currencyCodeSpend currency code
spendNumeric spend value
impressionsNumeric impression count
startDateNormalized ad start timestamp
endDateNormalized ad end timestamp when present
organizationNameOrganization from the Snap archive
payingAdvertiserNamePaying advertiser name
committeeNameCommittee name
disclosureNameOfCommitteeDisclosure committee name
countryCodeCountry/country-code field from the archive
regionsIncludedIncluded region targeting
regionsExcludedExcluded region targeting
interestsInterest targeting
languageLanguage targeting
osTypeOS targeting
ageBracketAge targeting
genderGender targeting
creativePropertiesCreative metadata field from the archive
rawFieldsOptional original archive columns

How much does it cost to scrape Snapchat political ads?

The actor uses pay-per-event pricing.

  • Start event: a small one-time fee per run.
  • Item event: a tiered fee per ad record saved to the dataset.

The exact platform pricing is visible on the Apify Store page. Use maxItems and filters to keep test runs small.

Input options

years

Archive years to download. Snap archives are available as yearly ZIP files. The default input uses the latest public archive year.

Example:

{
"years": ["2026"],
"maxItems": 100
}

archiveUrls

Optional direct ZIP URLs. Use this only when Snap publishes a new archive URL before the schema is updated, or when you need to test a mirrored archive.

maxItems

Maximum matching ad records to save.

For first tests, keep this at 100 or less. For production monitoring, raise it based on the archive size and your export needs.

advertiserNames

Case-insensitive advertiser filters matched against organization, paying advertiser, committee, and disclosure names.

countryCodes

Filters the archive CountryCode field. Snap sometimes stores country names and sometimes code-like values, so use the exact form you see in your target archive when possible.

searchTerms

Free-text filters matched across advertiser, creative URL, targeting, language, OS, age, gender, regions, and creative metadata.

startDate and endDate

Date range filters for ads active in a window.

includeRawFields

Set to true to include the original Snap archive column names and values in each output row.

Example input: latest archive

{
"years": ["2026"],
"maxItems": 100,
"includeRawFields": false
}

Example input: advertiser monitoring

{
"years": ["2026"],
"advertiserNames": ["Human Appeal"],
"countryCodes": ["united arab emirates"],
"maxItems": 50
}

Example input: multi-year targeting audit

{
"years": ["2025", "2026"],
"searchTerms": ["election"],
"startDate": "2025-01-01",
"maxItems": 250,
"includeRawFields": true
}

Output example

{
"adId": "f917ba828f9b6dcbd5b6dfff8e1210d04812f9fb40d916df84ddfaa7866f85ca",
"archiveYear": 2026,
"creativeUrl": "https://www.snap.com/political-ads/asset/...",
"mediaType": "mp4",
"currencyCode": "GBP",
"spend": 10,
"impressions": 2144,
"startDate": "2026-05-07T19:14:44.000Z",
"organizationName": "Human Appeal Arabic",
"payingAdvertiserName": "HUMAN APPEAL",
"countryCode": "united arab emirates",
"language": "ar",
"osType": "IOS"
}

How to run

  1. Choose one or more archive years.
  2. Add optional filters for advertiser, country, dates, or search terms.
  3. Set maxItems.
  4. Run the actor.
  5. Export the dataset as JSON, CSV, Excel, XML, RSS, or HTML.

Tips for best results

  • Start with one year and maxItems: 100.
  • Add filters only after confirming the archive contains the fields you expect.
  • Use includeRawFields: true for compliance audits or when Snap changes columns.
  • Use scheduled runs for repeat monitoring.
  • Use multiple small targeted runs for advertiser watchlists.

Integrations

You can connect the dataset to:

  • Google Sheets for analyst review,
  • BigQuery or Snowflake for long-term ad intelligence,
  • Slack or email alerts for new advertiser matches,
  • compliance dashboards,
  • newsroom research notebooks,
  • or CRM/enrichment pipelines.

A common workflow is to schedule one run per archive year, filter by advertiser watchlist, and send new rows to a review queue.

API usage: Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/snapchat-ads-library-scraper').call({
years: ['2026'],
maxItems: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.slice(0, 3));

API usage: Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('automation-lab/snapchat-ads-library-scraper').call(run_input={
'years': ['2026'],
'maxItems': 100,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items[:3])

API usage: cURL

curl -X POST 'https://api.apify.com/v2/acts/automation-lab~snapchat-ads-library-scraper/runs?token=YOUR_APIFY_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"years":["2026"],"maxItems":100}'

MCP usage

Use the Apify MCP server with this actor when you want Claude Desktop or Claude Code to run archive checks from natural language.

MCP URL:

https://mcp.apify.com/?tools=automation-lab/snapchat-ads-library-scraper

Claude Code setup:

$claude mcp add apify-snapchat-ads --transport http "https://mcp.apify.com/?tools=automation-lab/snapchat-ads-library-scraper"

Claude Desktop JSON config:

{
"mcpServers": {
"apify-snapchat-ads": {
"url": "https://mcp.apify.com/?tools=automation-lab/snapchat-ads-library-scraper"
}
}
}

Example prompts:

  • "Run the Snapchat Ads Library Scraper for 2026 and summarize the top advertisers by spend."
  • "Find Snap political ads mentioning election in 2025 and 2026."
  • "Export the latest Snapchat political ads archive records as CSV."

Scheduling

For monitoring workflows, schedule the actor weekly or monthly. Political ad archives may update over time, so scheduled pulls help maintain a historical local copy.

Data source

The actor uses Snap's public political ads transparency archives linked from https://www.snap.com/political-ads.

It does not require a Snapchat login, browser automation, cookies, or private APIs.

Limitations

  • The actor depends on the public archive files Snap makes available.
  • Column names may drift between years.
  • Some records may omit optional fields such as end date, targeting, committee, or creative metadata.
  • Creative asset availability is controlled by Snap.

Legality

This actor extracts public transparency archive data. You are responsible for using the data lawfully, respecting Snap's terms, and complying with privacy, election, and advertising regulations in your jurisdiction.

FAQ

Is this an official Snapchat API?

No. The actor downloads and parses public transparency archive ZIP files linked from Snap's political ads page.

Can I scrape all years?

Yes. Add multiple values to years, but start with one year while testing so runs stay fast and inexpensive.

Troubleshooting

Why did I get zero results?

Your filters may be too narrow. Try removing advertiserNames, countryCodes, searchTerms, and date filters, then run one archive year with a small maxItems.

Why is a country value not matching?

Snap's archive field may contain a country name rather than a two-letter code. Inspect a broad sample or enable includeRawFields to see the exact value.

Why is endDate empty?

Many archive records do not include an end date. The actor returns null when Snap leaves it blank.

Other automation-lab actors that can complement this one:

Changelog

Initial version:

  • public Snap political ads ZIP download,
  • CSV parsing,
  • normalized archive fields,
  • advertiser/country/date/search filters,
  • optional raw field output.

Support

If a run fails, include the run ID, input JSON, archive year, and the filter values you used when reporting the issue.