TikTok Ads Library Scraper - Ad Creatives, Videos & Dates avatar

TikTok Ads Library Scraper - Ad Creatives, Videos & Dates

Pricing

$3.00 / 1,000 ad scrapeds

Go to Apify Store
TikTok Ads Library Scraper - Ad Creatives, Videos & Dates

TikTok Ads Library Scraper - Ad Creatives, Videos & Dates

Search the TikTok Ads Library by advertiser name, business ID or ad ID in any supported region. Get each ad's creative format, video and image URLs, first and last shown dates, audience range and rejection info as JSON, or a free count of matching ads.

Pricing

$3.00 / 1,000 ad scrapeds

Rating

0.0

(0)

Developer

SR

SR

Maintained by Community

Actor stats

0

Bookmarked

213

Total users

68

Monthly active users

17 days ago

Last modified

Share

TikTok Ads Library Scraper

Search the TikTok Ads Library for advertiser names, creative media and publication dates. This TikTok ad library scraper returns structured records for active or stopped ads, a free count-only result, or a direct link to a known ad. Marketers, agencies and analysts use it to study competitors' TikTok ads, collect ad examples for creative briefs, and monitor how an advertiser's campaigns change over time, without copying results from the library website by hand.

The data comes from TikTok's public ad library (the Commercial Content Library at library.tiktok.com). You can run the Actor from Apify Console, schedule it, or call it as an API from your own code and receive the same JSON every time.

What the TikTok Ads Library Scraper collects

Use this Actor to review an advertiser's creative history, compare messages across regions, or collect media links for your own analysis. Each ad record includes its identifier, advertiser name, creative format, audit status, first and last shown dates, and the number of days between those dates. Where TikTok supplies them, records also include video URLs, cover images, image URLs, estimated audience and rejection information.

The source determines which fields have useful values. In the responses used to validate this Actor, impression was zero and spent was an empty string. Those values are retained as returned. They do not establish that an advertiser spent nothing, and the Actor does not estimate campaign budgets, conversions or return on advertising spend. Use the dates and creative content for analysis that the available data supports.

Input

Provide search, ad_id, or adv_biz_ids. The default search mode uses an advertiser name. The store's prefilled search is nike; a measured regional search used the following input:

{"search":"coolblue","region":"NL","limit":30}

The input above produced 30 records for Coolblue B.V. in a validation run. Results can change as advertisers publish or stop ads. A search never promises a fixed catalogue snapshot.

FieldDefaultWhat it controls
searchEmptyAdvertiser name, or the legacy keyword query
ad_idEmptyReturns one ad identifier and its library link
adv_biz_idsEmptyAdvertiser business ID sent alongside the search
regionallSearch region, such as NL, DE, FR or GB
query_type11 searches by advertiser name; 0 retains legacy keyword behavior
sortlast_shown_date,descSort on first shown, last shown or impressions, ascending or descending
ad_statusactiveActive, inactive, or all ads
only_totalfalseReturns a count row instead of ad creatives
start_dateOne year before the runLower date bound in YYYY-MM-DD format
end_dateCurrent timeUpper date bound in YYYY-MM-DD format
limit20Number of ads requested, from 1 to 500
offset0Offset for resuming an earlier search
search_idEmptyResume value from an earlier result's _next_search_id
proxy_urlEmptyOptional advanced connection setting

Set ad_status to inactive to examine stopped creative, or to all to include both active and stopped ads. The status describes the search filter; the separate audit_status field describes the creative's review status.

The legacy keyword mode, query_type: "0", can return advertisers unrelated to the query. This behavior was also observed in the previous Actor version. Use advertiser-name mode for a search that should concern a particular business. A business-ID filter is sent together with the search, so clear the search field when you intend to filter by ID alone.

region: "US" is unsupported by the library search. Use all for the global result set. Date filters apply to the source search. An ad-ID lookup returns its link without fetching creative content and ignores the date window.

How to use the TikTok Ads Library Scraper

  1. Enter an advertiser name in search, for example a brand you want to follow.
  2. Pick a region and choose ad_status: active, inactive or all.
  3. Set limit to the number of ads you need, or set only_total to true for a free count first.
  4. Start the run and download the dataset as JSON, CSV or Excel, or fetch it through the Apify API.

To call it from code, send the same input to the Apify API endpoint run-sync-get-dataset-items for this Actor and you receive the ad rows in the response.

Output

Every result is a dataset row. Ordinary ad rows preserve the existing field names and JSON types: ad_id, advertiser_name, audit_status, ad_type, first_shown, last_shown, days_shown, estimated_audience, impression, spent and deeplink. Search context appears in query, region, sort, ad_status, total_ads_in_search and pages_fetched.

Optional videos contain video_url and cover_image when supplied. image_urls is a list of image links. rejection_info contains reasons and affected regions when available. Missing media blocks remain absent. Media links may expire, so retrieve the media you need while the links remain valid.

New fields include result_type, _type, fetched_at, ad_text, source and platform. Creative identifiers, formats and dates are also available under shared names alongside the original names. An ad row has result_type: "ad". An ad-ID lookup has result_type: "ad_link" and contains the identifier, link and an explanatory note. It does not contain a fetched creative.

For only_total: true, the dataset contains one count row with total_ads, total_is_exact, total_note, the query and the search window. A count below 5000 is marked exact; a count of 5000 or more is marked as a lower bound, matching the existing Actor behavior. This is a count of matching library ads, not an advertiser's complete campaign or account history.

Download the dataset as JSON or your preferred Apify export format. The summary record retains itemCount and errorCount. The OUTPUT record also provides status, billing counts and warnings. When collection is interrupted after results have arrived, those results remain available and the output explains the interruption. A search with no ads completes successfully with an empty dataset and an error record describing the empty result.

Output example

This ad row is a real result from the previous Actor version for the input {"search": "coolblue", "region": "NL", "limit": 30}. Media links are signed and expire, so the links below may no longer open.

{
"ad_id": "1877308015260690",
"advertiser_name": "Coolblue B.V.",
"audit_status": "approved",
"ad_type": "video",
"first_shown": "2026-09-27",
"last_shown": "2026-09-30",
"days_shown": 4,
"estimated_audience": "100K-200K",
"impression": 0,
"spent": "",
"deeplink": "https://library.tiktok.com/ads/detail/?ad_id=1877308015260690",
"videos": [
{
"video_url": "https://library.tiktok.com/api/v1/cdn/1790917006/video/aHR0cHM6Ly92NzcudGlrdG9rY2RuLmNvbS9hNjc5ODllZDZmNzIxMGU1ZTllODQ0Zjc2M2FiZGU4YS82YWJmOGUwOS92aWRlby90b3MvdXNlYXN0MmEvdG9zLXVzZWFzdDJhLXZlLTAwNTFjNzk5LWV1dHRwL29zQ21CaXdJSUQxUW5PQkRFQTBUNW9pRFpXTzAxQWZtM0JBeW9ZLw==/348dadcd-3144-48a9-953e-c3452c07c245?a=475769&bt=973&btag=e000b8000&bti=PDU2NmYwMy86&ft=.NpOcInz7ThHG~4GXq8Zmo&l=202610021256469A3FA202E92A1F90C769&mime_type=video_mp4&rc=ZWc4NDw2OTY8ZmY4ZTk2Z0BpamR2dHk5cng5ZDMzODYzNEBeNl8vNTUvNjUxMTJeLjBiYSNjMmFnMmRrZm9hLS1kMDFzcw%3D%3D&signature=9yOZ53fYRc8ndUQjZBoIuToas5Wr7B23TbBNVY%2FZtlI%3D&vvpl=1",
"cover_image": "https://p19-common-sign.tiktokcdn.com/tos-alisg-p-0051c001-sg/o8CNAqkaZWtebGaGQVQM4G84g6fUAhEJDgpjfb~tplv-tiktokx-origin.jpeg?dr=14582&refresh_token=475be666&x-expires=1790935200&x-signature=2bJAGCc5nxyfPDE8dTeFOog8NGM%3D&t=4d5b0474&ps=13740610&shp=0c75dd76&shcp=9b759fb9&idc=sg1"
}
],
"image_urls": [
"https://p19-common-sign.tiktokcdn.com/tos-alisg-p-0051c001-sg/o8CNAqkaZWtebGaGQVQM4G84g6fUAhEJDgpjfb~tplv-tiktokx-origin.jpeg?dr=14582&refresh_token=475be666&x-expires=1790935200&x-signature=2bJAGCc5nxyfPDE8dTeFOog8NGM%3D&t=4d5b0474&ps=13740610&shp=0c75dd76&shcp=9b759fb9&idc=sg1"
],
"query": "coolblue",
"region": "NL",
"sort": "last_shown_date,desc",
"ad_status": "active",
"total_ads_in_search": 36,
"pages_fetched": 4,
"_next_search_id": "eyJsYXN0X3NvcnQiOlsyMy45OTQ2MDgsMTc5MDcyNjQwMDAwMF0sIm5leHRfY3Vyc29yIjozMn0=",
"_next_offset": 32
}

A count-only run for {"search": "coolblue", "region": "NL", "ad_status": "all", "only_total": true} returned this single row and no charged events:

{
"result_type": "count",
"query": "coolblue",
"adv_biz_ids": null,
"region": "NL",
"ad_status": "all",
"total_ads": 813,
"total_is_exact": true,
"total_note": null,
"start_date": null,
"end_date": null
}

Use cases for TikTok Ads Library data

  • Competitor research. List every active ad a competitor runs in a region, with its format and how long it has been shown. Ads that stay live for many days are often the ones that work.
  • Creative inspiration. Collect TikTok ads examples with their video and cover image links to build mood boards and creative briefs for your own campaigns.
  • Campaign monitoring. Schedule a daily or weekly run for a set of advertisers and compare first_shown and last_shown to see when new creative starts and old creative stops.
  • Market and regional comparison. Run the same advertiser in several regions to see which messages it uses in each market.
  • Compliance and review. Check audit_status and rejection_info to see which creatives were rejected and in which regions.
  • Lead research for agencies. Use the free count-only mode to see which brands advertise actively before you pitch them.

TikTok Ads Library Scraper compared with other options

OptionWhat you getLimits
TikTok ad library websiteBrowse ads one by oneNo export, manual copying, no scheduling
TikTok Creative Center top adsPopular ads by industry and objectiveSelected top ads, not an advertiser's full library history
Ad spy toolsDashboards with ad collectionsMonthly subscription, data stays in their tool
This ActorStructured JSON rows per ad, per advertiser and region, plus a free countOnly fields the library itself publishes; no spend estimates

This Actor fits when you need the TikTok Ads Library as a data source: rows you can load into a spreadsheet, database or BI tool, on a schedule, and paid per ad delivered instead of per month.

Pricing

The existing pay-per-event price is $0.003 per scraped event. Each delivered ad row creates one event. An ordinary ad-ID lookup creates one event for its link row, matching the previous Actor version. Count-only requests are free of this event, including the combination of ad_id and only_total: true. Empty searches and soft errors create no scraped events. The Actor has no custom credits or additional start event.

A run from a user without a paid Apify plan delivers at most ten rows. Paying users keep the requested limit, up to 500 ads. Higher limits may require more search pages, so completion time depends on the requested volume and the source's response time.

FAQ

Is this the same as TikTok Creative Center?

No. Creative Center shows a selection of top-performing ads. This Actor searches the TikTok ad library, where you look up the ads of a specific advertiser, filtered by region, status and date.

Can I use the TikTok Ads Library Scraper as an API?

Yes. Every Apify Actor can be started through the Apify API. Send the input as JSON and read the dataset items from the response or from the run's dataset.

Does this return active and stopped ads?

Yes. Use ad_status: "active", "inactive" or "all". The default remains active. Change the filter when researching creative that an advertiser has already stopped running.

Can I retrieve one creative by its ad ID?

An ad_id request returns the identifier and a link to its TikTok library page. It does not retrieve the content of that detail page. Use an advertiser search to collect creative records and media available in the search results.

Are count-only requests charged per ad?

No. A count-only run delivers one summary row and zero scraped events. The count reports whether the figure is exact or a lower bound. It does not download all matching creative records.

The Actor automatically collects pages up to the requested limit. For a separate run, the existing _next_search_id and _next_offset fields let you resume where the earlier search stopped. These fields are hidden by Apify exports that use clean=true; request the uncleaned dataset if you need them. Keep the original search filters unchanged when resuming.

Can this measure an advertiser's spend?

Only values actually supplied by the library are returned. Empty spend values and zero impression values are retained, and no campaign spend estimate is generated. The Actor is useful for creative and publication history even when those commercial metrics are unavailable.