TikTok Ads Library Scraper avatar

TikTok Ads Library Scraper

Pricing

from $0.60 / 1,000 results

Go to Apify Store
TikTok Ads Library Scraper

TikTok Ads Library Scraper

Find public TikTok ads from brands and competitors. Search by keyword or advertiser, choose a country and date range, and export ad text, delivery dates, audience estimates, impressions, and creative URLs. Optionally add targeting details or an advertiser activity report.

Pricing

from $0.60 / 1,000 results

Rating

0.0

(0)

Developer

The Netaji

The Netaji

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Search TikTok's public Ads Library, follow copied public URLs, and turn competitor ad activity into structured records.

I built this Actor around the research workflow I actually want: discover ads first, then spend extra requests only on the results that deserve deeper inspection.

Search by market question or reuse a public URL

Use free text for category discovery, exact phrases for messaging checks, keywords for focused themes, or advertiser mode for a known brand. A copied Ads Library search, ad-detail, or report URL can supply the starting context directly.

Search public ads

Search by free text, exact phrase, keyword, or advertiser across a region and date range.

FieldTypeRequiredDescription
querystringNoBrand, product, message, or phrase to find in TikTok's public Ads Library.
search_typestringNoChoose how TikTok should interpret the search query. Use Free text for broad research, Advertiser for one brand, Keyword for a topic, or Exact phrase for matching wording.
advertiser_idstringNoOptional numeric advertiser ID for Advertiser searches. Leave it empty to let the Actor find a unique exact match from the advertiser name in Search query.
regionstringNoTwo-letter country code that selects which public Ads Library market to search, such as GB, DE, FR, or ES.
start_timestringNoOldest ad activity date to include. Leave empty to search the 30 days before End date.
end_timestringNoNewest ad activity date to include. Leave empty to use today.
sortstringNoChoose whether newest, oldest, or highest-impression ads appear first.
maxItemsintegerNoMaximum number of Ads Library results to save. Set 0 to continue until TikTok returns no more pages.

Continue from a public URL

Paste a TikTok Ads Library search, ad detail, or advertiser report URL.

FieldTypeRequiredDescription
startUrlstringNoOptional shortcut: paste a public Ads Library search, ad-detail, or advertiser-report URL. The Actor reads the search settings from the URL; values entered below override matching URL settings.
maxItemsintegerNoMaximum number of Ads Library results to save. Set 0 to continue until TikTok returns no more pages.

Add research depth

Optionally add full ad details per result and one advertiser report for advertiser searches.

FieldTypeRequiredDescription
enrichAdDetailsbooleanNoFor each saved ad, make one extra request for advertiser information, targeting, reach, campaign objective, and complete creative metadata. Each successful detail request has an enrichment charge.
includeAdvertiserReportbooleanNoOnly for Advertiser searches: save one report with regional ad distribution and daily publication counts in the run output. A successful report request has an enrichment charge.

Example market scan

{
"query": "running shoes",
"search_type": "free_text",
"region": "GB",
"start_time": "2026-07-01",
"end_time": "2026-07-24",
"maxItems": 25,
"enrichAdDetails": false
}

One row per public ad

The base record keeps identity, delivery dates, audience signals, and creative URLs together. Optional detail enrichment adds advertiser, targeting, objective, and the full detail payload without changing the base workflow.

📦 Ad identity

FieldTypeDescription
ad_idstringUnique public Ads Library ad ID.
advertiser_namestringAdvertiser name shown for an Ads Library result.
advertiser_idstringAdvertiser business ID when detail enrichment supplies it.
titlestringAds Library creative title or caption.
ad_detail_urlstringPublic TikTok Ads Library detail URL.

📊 Delivery

FieldTypeDescription
regionstringAds Library region used for the search.
first_shown_atstringFirst date the ad was shown.
last_shown_atstringMost recent date the ad was shown.
estimated_audiencestringEstimated audience range reported by the Ads Library.
impressionsnumberImpression value reported for the ad.
spendstringSpend value reported for the ad when available.

🎬 Creative

FieldTypeDescription
video_urlsarrayDirect video URLs exposed for the Ads Library creative.
cover_image_urlsarrayVideo cover image URLs.
image_urlsarrayImage creative URLs.

🔍 Optional detail

FieldTypeDescription
advertising_objectivestringAdvertising objective returned by detail enrichment.
advertiserobjectFull advertiser object returned by optional detail enrichment.
targetingobjectTargeting and reach information returned by optional detail enrichment.
detailsobjectFull detail payload, present only when the workflow fetches it.

Shortened result

{
"ad_id": "1871426970960898",
"advertiser_name": "Example Brand",
"title": "Discover the new collection",
"region": "GB",
"first_shown_at": "2026-07-10T00:00:00.000Z",
"video_urls": [
"https://example.com/ad.mp4"
]
}

Practical competitor-research loop

  • Start broad with enrichment disabled.
  • Save the strongest advertiser names and ad IDs.
  • Re-run a narrow date window with details or an advertiser report enabled.
  • Compare repeated runs to see which messages and creatives remain active.

Pricing follows saved ads and selected add-ons

This Actor uses Apify pay-per-event pricing. Dataset results are the primary charge. Optional enrichment is charged only after the requested extra data is returned successfully; disabled enrichments make no add-on calls.

Apify's free credits may cover small validation runs within the free usage allowance shown on the Actor pricing tab.

Start with a low Max results value and leave enrichment off until the discovery query returns the creatives you want.

Public advertising data and responsible use

This Actor collects public advertising transparency and Creative Center data. It does not access private TikTok accounts or private user data. You are responsible for complying with applicable privacy laws, advertising rules, TikTok terms, and the rights of people or organizations represented in your results. Consult a qualified lawyer if you are unsure.

Run from code

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_API_TOKEN")
run = client.actor("thenetaji/tiktok-ads-library-scraper").call(run_input={
"query": "running shoes",
"search_type": "free_text",
"region": "GB",
"start_time": "2026-07-01",
"end_time": "2026-07-24",
"maxItems": 25,
"enrichAdDetails": false
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

Node.js

import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "YOUR_APIFY_API_TOKEN" });
const run = await client.actor("thenetaji/tiktok-ads-library-scraper").call({
"query": "running shoes",
"search_type": "free_text",
"region": "GB",
"start_time": "2026-07-01",
"end_time": "2026-07-24",
"maxItems": 25,
"enrichAdDetails": false
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Continue the research

  • TikTok Top Ads Scraper & Creative Analyzer — Find high-performing public TikTok ads in Creative Center. Search ranked ads, browse TikTok's Spotlight picks, or analyze known ads by URL or ID. Export videos and engagement metrics, then optionally add details, per-second performance, benchmarks, and similar creatives.
  • Facebook Ads Library Scrape — Scrape public Facebook and Instagram ads from Meta Ad Library: search by keyword or Ad Library URL, browse every ad from a known advertiser Page, or find a Page's ID by brand name. Filter by country, status, category, format, platform, and date, and optionally enrich each ad with full details.

Ask me about a run

Use the Issues tab on the Actor page to report a failing public URL, missing field, or workflow request. Include the run ID and a redacted example input.