TikTok Ad Library (TikTok Ads) Scraper avatar

TikTok Ad Library (TikTok Ads) Scraper

Pricing

from $0.40 / 1,000 results

Go to Apify Store
TikTok Ad Library (TikTok Ads) Scraper

TikTok Ad Library (TikTok Ads) Scraper

Scrape ads from the TikTok Ad Library (library.tiktok.com) by keyword, advertiser or ad ID. Extracts ad creative, video URL, advertiser, spend, impressions, audience size and targeting as JSON, CSV or Excel.

Pricing

from $0.40 / 1,000 results

Rating

0.0

(0)

Developer

ActorFlow

ActorFlow

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

11 days ago

Last modified

Categories

Share

Scrape ads from the TikTok Ad Library (library.tiktok.com) by keyword, advertiser name or ad ID. Every ad comes back with its creative, video link, advertiser, spend, impressions, estimated audience and targeting breakdown, exported as JSON, CSV or Excel, and the actor can be called as an API. Type a keyword, press Start.

Target website: library.tiktok.com

✨ Features of this TikTok Ad Library ads scraper

  • Ad data extraction — ad creative, video and cover links, status, advertiser, impressions, estimated audience, locations, age and gender targeting, languages, interests and landing page.
  • Pagination support — keeps reading search result pages until your ads limit is reached.
  • Proxy support — optional proxy configuration, disabled by default.
  • Keyword, advertiser, region and date filtering — narrow results by keyword, advertiser name, region, date range, timezone and sort order.
  • Quick search mode — skip the per-ad detail lookup when you only need the basic search fields.

🚀 How to scrape TikTok ads in 5 steps

  1. Sign up for a free Apify account — includes $5 monthly credit.
  2. Open the actor page and click Try for free.
  3. Fill in the Input fields (a keyword, advertiser name or ad IDs).
  4. Click Start and wait for the run to complete.
  5. Download results from the Output tab in JSON, CSV, or Excel format.

You can also run this actor via the Apify API or integrate it directly into your workflows using Zapier, Make, or n8n.

💰 Pricing

This actor uses pay-per-result billing based on the compute units a run consumes.

  • New Apify accounts include $5 of free monthly credit.
  • Quick search mode skips the per-ad lookups, so it costs less per run.
  • Proxies are disabled by default, which keeps runs cheapest.

🔧 Input configuration

FieldTypeRequiredDefaultDescription
Keywordstring—nikeKeyword to search ads for.
Advertiser namestring——Only return ads from this advertiser.
Ad IDsarray——Specific ad IDs to fetch in full; not limited by Maximum ads.
Regionstring—allRegion the ads were shown in (EU/EEA countries, GB, CH or all).
Start datestring—one year agoEarliest ad date, YYYY-MM-DD.
End datestring—nowLatest ad date, YYYY-MM-DD.
Timezonestring——IANA timezone used to read the dates, e.g. Europe/Berlin.
Sort bystring—last_shown_date,descLast shown, first shown or impressions, ascending or descending.
Maximum ads per searchinteger—3Ads collected for each search.
Quick searchboolean—falseBasic search fields only, no per-ad detail lookup.
Proxy configurationobject—no proxyProxy used to load the ad library.

📦 TikTok ads scraper output data

The output is a dataset of ads (exportable as JSON, CSV or Excel) with the keys: adId, status, auditStatus, sorAuditStatus, rejectionInfo, adTitle, adType, adSpent, adVideoUrl, adVideoCover, adImageUrls, adStartDate, adEndDate, adStartDateFormatted, adEndDateFormatted, advertiserId, advertiserName, advertiserTtUser, advertiserCountry, advertiserLocation, adImpressions, advertiserPaidForBy, adTotalRegions, adEstimatedAudience, targetingByLocation, targetingByAge, targetingByGender, adCaption, adCategory, adObjective, adLandingUrl, adCallToAction, adDisplayMode, adShowMode, targetingCountries, targetingProvinces, targetingCities, targetingLanguages, targetingOperatingSystems, targetingDeviceModels, targetingInterests, targetingVideoInteractions, targetingCreatorInteractions, targetingAudience, targetingAudienceExclude, targetingHighSpendingPower, totalAds. The dataset has 1 view.

  • Overview — a compact table with ad ID, status, title, video link, cover image, readable start and end dates (YYYY-MM-DD), advertiser and total matching ads.

Output at a glance:

Ad IDAdvertiserTypeCategoryImpressionsEst. audienceObjective
1858580510932129modasymarcas272Apparel & Accessories1K-10K20.1M-24.6MReach
1858053691202833modasymarcas272Apparel & Accessories0-1K20.1M-24.6MReach
1863004056847377modasymarcas272Apparel & Accessories1K-10K20.3M-24.8MReach
1874223554741457NIKE Retail B.V.2Apparel & Accessories10K-100K14.9M-18.3MSales
1873957502496114NIKE Retail B.V.2Apparel & Accessories10K-100K14.9M-18.3MSales

Sample output (raw JSON):

{
"adId": "1858580510932129",
"status": "active",
"auditStatus": "1",
"sorAuditStatus": "1",
"rejectionInfo": null,
"adTitle": "modasymarcas27",
"adType": "2",
"adSpent": "",
"adVideoUrl": "https://library.tiktok.com/api/v1/cdn/1791907533/video/aHR0cHM6Ly92NzcudGlrdG9rY...",
"adVideoCover": "https://p16-common-sign.tiktokcdn.com/tos-no1a-p-0037-no/ogzFeEBBEmRkipsVqfuydIY...",
"adImageUrls": [],
"adStartDate": 1772409600000,
"adEndDate": 1772582400000,
"advertiserId": "7560696377014026257",
"advertiserName": "modasymarcas27",
"advertiserTtUser": null,
"advertiserCountry": null,
"advertiserLocation": "Spain",
"adImpressions": "1K-10K",
"advertiserPaidForBy": "7560696464024797206",
"adTotalRegions": 1,
"adEstimatedAudience": "20.1M-24.6M",
"targetingByLocation": [
{
"region": "ES",
"impressions": "2K",
"breakdowns": [
{
"age": "13-17",
"gender": "MALE",
"impressions": "-"
},
{
"age": "13-17",
"gender": "FEMALE",
"impressions": "-"
}
]
}
],
"targetingByAge": [
{
"region": "ES",
"13-17": true,
"18-24": true,
"25-34": true,
"35-44": true,
"45-54": true,
"55+": true
}
],
"targetingByGender": [
{
"region": "ES",
"female": true,
"male": true,
"unknown": true
}
],
"adCaption": "#tlfpedidos698459872#nike #nike#nike#nike ",
"adCategory": "Apparel & Accessories",
"adObjective": "Reach",
"adLandingUrl": null,
"adCallToAction": null,
"adDisplayMode": "enhanced",
"adShowMode": 1,
"targetingCountries": [
"ES"
],
"targetingProvinces": [],
"targetingCities": [],
"targetingLanguages": [],
"targetingOperatingSystems": [
"ALL"
],
"targetingDeviceModels": [],
"targetingInterests": null,
"targetingVideoInteractions": null,
"targetingCreatorInteractions": null,
"targetingAudience": "No",
"targetingAudienceExclude": "No",
"targetingHighSpendingPower": "No",
"totalAds": 5000
}

🐍 How to scrape TikTok ads with Python, JavaScript or the API

Run the actor programmatically with the official Apify clients. Replace <YOUR_API_TOKEN> with the token from your Apify Console.

Python (pip install apify-client):

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("confidential_gnat/tiktok-ads-scraper").call(run_input={
"query": "nike",
"country": "all",
"maxItems": 10,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

JavaScript (npm install apify-client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('confidential_gnat/tiktok-ads-scraper').call({
query: 'nike',
country: 'all',
maxItems: 10,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

cURL — start a run and wait for the dataset:

curl -X POST "https://api.apify.com/v2/acts/confidential_gnat~tiktok-ads-scraper/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"query": "nike", "country": "all", "maxItems": 10}'

💡 What you can use TikTok Ad Library data for

  • Competitor ad monitoring across brands and regions
  • Creative research: collect video links and captions of live campaigns
  • Estimating reach with impression and audience-size ranges
  • Analysing targeting by age, gender, location and language
  • Tracking advertiser activity for compliance and transparency reporting

Marketers, agencies, researchers and journalists in e-commerce, apparel, finance, politics and media typically use this data.

❓ Frequently asked questions

Can I scrape the TikTok Ad Library legally?

The actor only collects data already publicly visible in the TikTok Ad Library — no login, paywall or private content is accessed. Scraping publicly available data is generally considered lawful (see hiQ Labs v. LinkedIn), but you are responsible for complying with the site's Terms of Service and applicable laws such as GDPR/CCPA if personal data is involved.

What data does the TikTok ads scraper return?

Ad ID, status, title, type, video and cover links, shown dates, advertiser details, impressions, estimated audience, location, age and gender targeting, category, objective and landing page. Turning on Quick search returns only the basic search fields.

Maximum ads per search limits the ads collected for the search; the default is 3. Explicit Ad IDs are always fetched in full. A search can only reach ads the library lists for the chosen region and date range.

Do I need a proxy to scrape library.tiktok.com?

No — the input defaults to no proxy, which is the cheapest option. If runs get throttled, enable a datacenter proxy first and switch to residential only if needed.

How do I scrape TikTok ads with Python?

Use the Python example above and iterate over the dataset items returned by the run.

Can I run this TikTok ads scraper on a schedule?

Yes. Use Apify Schedules to run it daily or weekly with the same input, for example to track a competitor's new ads.

What output formats are supported?

JSON, CSV, Excel, XML and RSS, either from the Output tab or through the Apify API.

Why are some ads marked unavailable?

The ad was removed or rejected after it was listed, so the library no longer returns its details. The actor still saves a record with the ad ID and status unavailable.

🔗 Other actors you may find useful

ActorDescription
📸 Snapchat Profile ScraperScrape public Snapchat profiles, Spotlight videos, stories and highlights.
📅 Facebook Events ScraperScrape public Facebook events by keyword, location, page or URL, no login.
▶️ YouTube Channel Info and Stats ScraperScrape YouTube channel info and statistics from channel About pages.
🎬 YouTube Video List ScraperScrape video listings from YouTube channels and playlists.
🛒 Google Shopping Products ScraperScrape Google Shopping listings with prices, merchants and ratings.

💬 Support & contact

If you encounter any issues or have questions, please open an issue.

You can also find more of our actors on the Actor Flow page.