# TikTok Ads Library Scraper: Competitor Ads in Europe (`tenfoldfleet/tiktok-ads-library-scraper`) Actor

Find the TikTok ads any advertiser or keyword ran in Europe, from the public TikTok Ads Library: ad text, video and image URLs, first and last shown dates and unique users reached, by country and date range. No login. $1.40 per 1,000 ads; empty searches are free.

- **URL**: https://apify.com/tenfoldfleet/tiktok-ads-library-scraper.md
- **Developed by:** [Tenfold Fleet](https://apify.com/tenfoldfleet) (community)
- **Categories:** Social media, Agents, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.40 / 1,000 ads

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

### What does TikTok Ads Library Scraper do?

**TikTok Ads Library Scraper** exports ads from the public **TikTok Ads Library** (library.tiktok.com/ads), where TikTok lists every ad shown to users in the **EU, the EEA, Switzerland and the UK**. Give it **advertiser names** or **keywords** and get one clean row per ad: advertiser, ad text, video and image URLs, first and last shown dates and the number of **unique users the ad reached**. Filter by **country** and **date range**, and sort by publication date or by the last day an ad was shown.

Use it as a **TikTok Ads Library API** from the Apify API, a schedule, Make, Zapier, n8n or an AI agent. No TikTok account or login is needed.

> Not affiliated with TikTok or ByteDance. This Actor reads the ad library that TikTok publishes for anyone to browse.

### Why use it?

- **Competitor ad research**: list every TikTok ad a rival ran in Europe over the past year, with the hook in its caption and a link to the video.
- **Creative swipe files**: collect ads for a product phrase ("protein powder", "running shoes") across all advertisers in minutes.
- **Market checks by country**: compare which advertisers push a product category in Germany, France or Poland.
- **Reach signals**: unique-user ranges show which ads got the most delivery.
- **Monitoring**: schedule a weekly run per competitor and spot new ads by `adId` and first shown date.
- **Agency prospecting**: check whether a brand advertises on TikTok in Europe at all, and under which legal entity.

### What data can it extract?

| Field | Description |
|---|---|
| `adId`, `adUrl` | TikTok ad ID and its page in the library |
| `advertiserName` | Advertiser as registered with TikTok |
| `adText` | Caption of the ad |
| `format` | `video` or `image` |
| `firstShown`, `lastShown` | First and last day the ad was shown (YYYY-MM-DD) |
| `uniqueUsersSeen` | Range of unique users who saw the ad, e.g. `10K-100K` |
| `videoUrl`, `videoCoverUrl`, `imageUrls` | Video file, cover image and image URLs (signed links that expire after a few hours) |
| `spent`, `impressions` | Spend and impression counts, when TikTok publishes them (usually empty) |
| `removed`, `removalReason` | Whether TikTok took the ad down, and why |
| `query`, `queryType`, `matchedAdvertiser`, `country` | The search that found the ad |

### How to scrape the TikTok Ads Library

1. Open the Actor and add **advertiser names** (e.g. `Zalando SE`) and/or **keywords** (e.g. `running shoes`).
2. Pick a **country** (or keep *All countries*) and, if you want, a date range and sort order.
3. Set **Max ads per advertiser or keyword**.
4. Click **Start**, then download the ads as JSON, CSV or Excel, or read them from the API.

### How much does it cost?

Pay per result: **$1.40 per 1,000 ads ($0.0014 per ad)**, plus a tiny $0.00005 start fee per run. Compute and proxy costs are included. Searches that find no ads, advertiser names the library does not know and failed searches return a free row and cost nothing. On the Apify free plan, the $5 monthly credit covers about **3,500 ads**. Set a **maximum cost per run** and the Actor stops as soon as it is reached.

### Input

```json
{
    "advertisers": ["Zalando SE"],
    "keywords": ["running shoes"],
    "country": "DE",
    "startDate": "6 months",
    "sortBy": "newest",
    "maxAdsPerQuery": 100
}
```

- **Advertiser names** are typed into the library's search box and the closest advertiser it suggests is used. If that entity has no ads in your country and dates, the next matching suggestion is tried (up to three). Suggestions whose name does not contain what you typed are never used. The `matchedAdvertiser` field shows which one. Legal entity names (`Zalando SE`, `adidas AG`) match best; one brand often has several entities per country.
- **Keywords** are searched as an exact phrase and return ads from all advertisers.
- **Country**: `all` or a two-letter code of a covered country (AT, BE, BG, CH, CY, CZ, DE, DK, EE, ES, FI, FR, GB, GR, HR, HU, IE, IS, IT, LI, LT, LU, LV, MT, NL, NO, PL, PT, RO, SE, SI, SK).
- **Shown since / until**: `YYYY-MM-DD` or relative (`30 days`, `6 months`). Default: the last 12 months.

### Output

```json
{
    "adId": "1880337252383777",
    "advertiserName": "NIKE Retail B.V.",
    "adText": "Übertriff dich selbst",
    "format": "video",
    "firstShown": "2026-10-28",
    "lastShown": "2026-10-28",
    "uniqueUsersSeen": "0-1K",
    "videoUrl": "<signed video URL>",
    "imageUrls": ["<signed image URL>"],
    "adUrl": "<library page of the ad>",
    "query": "nike",
    "queryType": "keyword",
    "country": "all"
}
```

Download the dataset as **JSON, CSV, Excel, XML or HTML**, or fetch it from the Apify API. A `SUMMARY` record in the key-value store lists every search with the total the library reported and the number of ads returned.

### Tips

- One brand often advertises through several legal entities. Run a **keyword** search for the brand name to see them all, then search the entities you need by name.
- The library only shows ads delivered in Europe. For ads aimed only at the US or Asia, the library has nothing to return.
- Video and image links are signed by TikTok and expire after a few hours. Download the files soon after the run if you need them.
- The date filter uses the dates each ad was shown. Narrow it to get only recent creatives.
- Use **Sort by: Most recently shown first** to find ads that are still running.

### FAQ

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

The library is published by TikTok under the EU Digital Services Act so the public can see who advertises and to whom. This Actor reads only that public data and needs no account. You are responsible for how you use the data, including under the GDPR.

#### Why does an advertiser name return no ads?

Either the library has no advertiser whose name contains what you typed, or none of the (up to three) matching entities ran ads in the chosen country and dates. The row with an `error` field explains which and names the entities it checked, and it is free. Try the legal entity name or a keyword search.

#### Does it include targeting and landing pages?

Not yet. This Actor returns what the library's search results show for each ad. The `adUrl` link opens the ad's page in the library, where its targeting is listed.

#### Does it cover US ads?

No. TikTok publishes this library only for ads shown in the EU, the EEA, Switzerland and the UK.

#### How many ads can I get per search?

Up to 1,000 per advertiser or keyword in one run. Split bigger searches (large brands, broad keywords) by country or date range. Deep searches run fewer at a time and take about 3 minutes per 600 ads.

#### Can I use it with an AI agent?

Yes. Call it through the Apify API or the Apify MCP server and pass advertisers or keywords as input.

### Disclaimer

This Actor collects publicly available advertising data. Ads can include names of public figures and creators. Process any personal data in line with the GDPR and other laws that apply to you.

### More tools from Tenfold Fleet

| Actor | Output |
|---|---|
| [ALDI Australia Scraper - AU Products, Unit Prices & Catalogue](https://apify.com/tenfoldfleet/aldi-australia-scraper) | product |
| [Alibaba Image Search - Reverse Lookup of Suppliers by Photo](https://apify.com/tenfoldfleet/alibaba-image-search) | matched product |
| [Alibaba Products Scraper: Wholesale Suppliers, MOQ, Price Tiers](https://apify.com/tenfoldfleet/alibaba-products-scraper) | product |
| [AliExpress Reviews Scraper: Product Feedback & Photos Monitor](https://apify.com/tenfoldfleet/aliexpress-reviews-scraper) | review |
| [AliExpress Keyword Scraper - Exact Sold Counts by Search Term](https://apify.com/tenfoldfleet/aliexpress-search-scraper) | product |
| [Amazon Product Scraper - Details, Prices & Search by ASIN](https://apify.com/tenfoldfleet/amazon-product-scraper) | product |
| [Applicant Tracking Jobs Scraper - Greenhouse, Lever & 6 More](https://apify.com/tenfoldfleet/ats-jobs-scraper) | job posting |
| [Backlinks Checker - Referring Domains, Anchors & Domain Rank](https://apify.com/tenfoldfleet/backlinks-checker) | backlink |
| [BBB Scraper: Business Leads, Ratings & New Reviews](https://apify.com/tenfoldfleet/bbb-scraper-leads-reviews) | business |
| [Bilibili Scraper - Videos, Comments, Danmaku & Search](https://apify.com/tenfoldfleet/bilibili-scraper) | video or comment |
| [Businesses Without Websites - Local Leads with Phone & Rating](https://apify.com/tenfoldfleet/businesses-without-websites) | lead |
| [Coles Product Scraper - Australian Supermarket Prices & Deals](https://apify.com/tenfoldfleet/coles-product-scraper) | product |
| [Contact Details Scraper - One Lead Record per Company Website](https://apify.com/tenfoldfleet/company-contact-finder) | website with contacts |
| [Facebook Ads Library Scraper for Marketers](https://apify.com/tenfoldfleet/facebook-ads-library-scraper) | ad |
| [Facebook Page Contact Finder - Business Leads from Page Links](https://apify.com/tenfoldfleet/facebook-page-contact-finder) | page with contact details |
| [Facebook Reels Scraper: Views & Captions Monitor for Any Page](https://apify.com/tenfoldfleet/facebook-reels-scraper) | reel |
| [Foundit Jobs Monitor: India, Singapore & Malaysia Jobs Scraper](https://apify.com/tenfoldfleet/foundit-jobs-monitor) | job listing |
| [Funding Rounds Scraper - Recently Funded Companies & Investors](https://apify.com/tenfoldfleet/funding-rounds-scraper) | funding round |
| [Google Ads Transparency Center Scraper - Competitor Ads by Site](https://apify.com/tenfoldfleet/google-ads-transparency-scraper) | ad |
| [Google AI Overviews Checker - Citations & Domain Tracker](https://apify.com/tenfoldfleet/google-ai-overviews-checker) | keyword checked |
| [Google Flights Scraper - All Fares per Route & Date (API)](https://apify.com/tenfoldfleet/google-flights-scraper) | route search |
| [Google Hotels Scraper - Nightly Prices, Stars & Booking Sites](https://apify.com/tenfoldfleet/google-hotels-scraper) | hotel |
| [Google for Jobs Scraper - Openings by City, Pay & Job Board](https://apify.com/tenfoldfleet/google-jobs-scraper) | job listing |
| [Google Keyword Planner API Alternative - Ideas, Bids & Volume](https://apify.com/tenfoldfleet/google-keyword-planner) | keyword idea |
| [Google Maps Extractor - Business Leads, Phones & Websites](https://apify.com/tenfoldfleet/google-maps-extractor) | place |
| [Google News Scraper - Articles, Real URLs & Full Text](https://apify.com/tenfoldfleet/google-news-scraper) | article |
| [Google Travel Hotel Rate Tracker - OTA Prices for Every Night](https://apify.com/tenfoldfleet/google-travel-hotel-rate-tracker) | offer |
| [Search Trends by Region & Time - Google Trends Data Scraper](https://apify.com/tenfoldfleet/google-trends-scraper) | keyword |
| [Instagram Reels Search - Keyword to Top Reels, Plays & Creators](https://apify.com/tenfoldfleet/instagram-reels-search) | reel |
| [Instagram Reels Transcript - Speech to Text for Public Reels](https://apify.com/tenfoldfleet/instagram-reels-transcript) | reel transcript |
| [Keyword Ideas & Related Keywords - Difficulty, Volume & CPC](https://apify.com/tenfoldfleet/keyword-ideas) | keyword idea |
| [Keyword Search Volume, CPC & Difficulty Checker (Bulk)](https://apify.com/tenfoldfleet/keyword-search-volume) | keyword with data |
| [Likee Scraper - Creators by Country, Video Views & Likes](https://apify.com/tenfoldfleet/likee-scraper) | video |
| [LinkedIn Ads Library Scraper - Competitor Ad Copy & Targeting](https://apify.com/tenfoldfleet/linkedin-ad-library-scraper) | ad |
| [LinkedIn Company Posts Monitor: New Posts, No Login](https://apify.com/tenfoldfleet/linkedin-company-posts-monitor) | post |
| [LinkedIn Company Scraper: Firmographics & Recent Posts](https://apify.com/tenfoldfleet/linkedin-company-scraper) | company |
| [Pinterest Search Scraper: Pins, Promoted Ads & Shop Trends](https://apify.com/tenfoldfleet/pinterest-search-scraper) | pin |
| [Reddit Brand Monitoring - Keyword Alerts for Posts & Comments](https://apify.com/tenfoldfleet/reddit-brand-monitoring) | mention |
| [Reddit Post Comments Export: Threads to JSON & CSV](https://apify.com/tenfoldfleet/reddit-post-comments-export) | comment |
| [Remote Job Board Scraper - Remote Jobs Aggregator, 7 Sites](https://apify.com/tenfoldfleet/remote-jobs-aggregator) | unique remote job |
| [SEEK Jobs Scraper - Salaries & Hiring Across 8 APAC Job Boards](https://apify.com/tenfoldfleet/seek-job-scraper) | job listing |
| [SEO Agent - AI Keyword Research & Competitor Reports](https://apify.com/tenfoldfleet/seo-agent) | research report |
| [SEO Crawler - Technical SEO Audit Tool & On-Page Checker](https://apify.com/tenfoldfleet/seo-audit-tool) | page audit |
| [SEO Competitor Keywords - Domain Ranked Keywords & Keyword Gap](https://apify.com/tenfoldfleet/seo-competitor-keywords) | keyword |
| [Shopify Inventory Scraper - SKUs, Variants & In-Stock Status](https://apify.com/tenfoldfleet/shopify-products-scraper) | product |
| [Shopify App & Theme Detector - Store Analyzer & Contacts](https://apify.com/tenfoldfleet/shopify-store-analyzer) | shopify store |
| [Sitemap URL Extractor - All URLs from sitemap.xml & robots.txt](https://apify.com/tenfoldfleet/sitemap-url-extractor) | url |
| [Stock Photos & Videos Scraper for Pexels](https://apify.com/tenfoldfleet/stock-photos-scraper) | media item |
| [Website Built With Checker - Find Any Site's CMS & Tech Stack](https://apify.com/tenfoldfleet/tech-stack-detector) | website |
| [Threads Search - Keyword & Profile Posts Scraper (No Login)](https://apify.com/tenfoldfleet/threads-search) | post |
| [TikTok Transcripts - Captions or Speech to Text for Any Video](https://apify.com/tenfoldfleet/tiktok-transcripts) | video transcript |
| [HTML to Text & URL to Markdown - LLM Ready Web Content](https://apify.com/tenfoldfleet/url-to-markdown) | page |
| [Website Traffic Checker - Bulk Domain Traffic Estimate](https://apify.com/tenfoldfleet/website-traffic-checker) | domain with traffic data |
| [WeChat Official Account Articles - Keyword Search to Markdown](https://apify.com/tenfoldfleet/wechat-official-account-articles) | article found |
| [Weibo Scraper - Comment Threads, Hot Search Ranks & User Stats](https://apify.com/tenfoldfleet/weibo-scraper) | comment |
| [Woolworths Product Scraper - AU Shelf Prices, Specials & GTINs](https://apify.com/tenfoldfleet/woolworths-product-scraper) | product |
| [Workday Jobs Scraper - myworkdayjobs.com API with Salary](https://apify.com/tenfoldfleet/workday-jobs-scraper) | job posting |
| [YouTube Channel Email Scraper - Creator Contact Extractor](https://apify.com/tenfoldfleet/youtube-channel-email-scraper) | channel with email |
| [YouTube Livestream & Channel Scraper - Videos, Likes & Stats](https://apify.com/tenfoldfleet/youtube-channel-scraper) | video |
| [YouTube Comments Scraper - Replies, Likes & Sort by Newest](https://apify.com/tenfoldfleet/youtube-comments-scraper) | comment |
| [YouTube Search Scraper: Keyword Video & Shorts Monitor](https://apify.com/tenfoldfleet/youtube-search-scraper) | search result |
| [YouTube Shorts Analytics Scraper - Views, Likes & Hashtags](https://apify.com/tenfoldfleet/youtube-shorts-scraper) | short |
| [YouTube Captions Downloader - Transcript & Subtitles Scraper](https://apify.com/tenfoldfleet/youtube-transcript-scraper) | transcript |

# Actor input Schema

## `advertisers` (type: `array`):

Companies whose TikTok ads you want, e.g. "Zalando SE" or "adidas AG". Each name is typed into the Ad Library and the closest advertiser it suggests is used (shown as matchedAdvertiser in the output); if it has no ads, up to two more matching entities are tried. Use the legal entity name for best matches.

## `keywords` (type: `array`):

Words or phrases to search for in ads, e.g. "protein powder". Each keyword is searched as an exact phrase and returns ads from every advertiser that matches.

## `country` (type: `string`):

Country the ads were shown in. The TikTok Ad Library covers the EU, EEA, Switzerland and the UK only.

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

Only ads last shown on or after this date. YYYY-MM-DD, or a relative value such as "30 days" or "6 months". Default: 1 year ago.

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

Only ads first shown on or before this date. YYYY-MM-DD. Default: today.

## `sortBy` (type: `string`):

Order of the ads, which decides which ones you get when a search has more ads than the limit.

## `maxAdsPerQuery` (type: `integer`):

Stop each search after this many ads (up to 1,000; for more, split the search by country or date range). Each saved ad is one charged result. On the Apify free plan, the $5 monthly credit covers about 3,500 ads.

## `maxConcurrency` (type: `integer`):

How many advertisers or keywords to search at once.

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

Apify Proxy (datacenter) works well. Free-plan users can keep the default.

## Actor input object example

```json
{
  "advertisers": [
    "Zalando SE"
  ],
  "keywords": [
    "running shoes"
  ],
  "country": "all",
  "sortBy": "newest",
  "maxAdsPerQuery": 50,
  "maxConcurrency": 3,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (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 = {
    "advertisers": [
        "Zalando SE"
    ],
    "keywords": [
        "running shoes"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("tenfoldfleet/tiktok-ads-library-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 = {
    "advertisers": ["Zalando SE"],
    "keywords": ["running shoes"],
}

# Run the Actor and wait for it to finish
run = client.actor("tenfoldfleet/tiktok-ads-library-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 '{
  "advertisers": [
    "Zalando SE"
  ],
  "keywords": [
    "running shoes"
  ]
}' |
apify call tenfoldfleet/tiktok-ads-library-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,tenfoldfleet/tiktok-ads-library-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/RnfguH2HU7J6DPl65/builds/eqQniDUngRglSyatf/openapi.json
