Adyntel is a TikTok ads scraper. It returns every sponsored TikTok video a brand is running as JSON, with play, like, comment and share counts, from nothing more than the company's domain. The influencers posting for the brand come back in the same call. Look up one company or run it across thousands.
No credit card required
Adyntel resolves a company domain to the brand's TikTok account and returns structured data for every sponsored video it is running.
For the company:
continuation_tokens for brands with many adsFor each ad:
is_ad, ad_source and bc_typeExample response (gymshark.com):
{
"handle": "gymshark",
"brand_ads": [
{
"aweme_id": "7661334167342320918",
"url": "https://www.tiktok.com/@gymshark/video/7661334167342320918",
"posted_at": 1783793370,
"desc": "Onyx V1 Returns. July 16th. 7pm BST | 2pm EDT | 8pm CEST #onyxv1 #onyx #davidlaid #Gymshark",
"is_ad": true,
"ad_source": 1,
"bc_type": 0,
"stats": {
"play_count": 1577611,
"digg_count": 242881,
"comment_count": 1030,
"share_count": 9118,
"collect_count": 17384,
"download_count": 1051
},
"music": { "title": "original sound - gymshark", "is_commerce_music": true, "is_original_sound": true },
"shop_product_url": null,
"region": "GB"
},
{ /* more ads... */ }
],
"continuation_tokens": { "brand_ads": "1787940000001" },
"cache": { "hit": false, "age_s": 0 }
}
Each call returns one page of ads and a continuation_tokens object. Page through until the token is null. 1 credit per call.
Much of a brand's paid reach on TikTok runs through creators and never appears on the brand's own account. Set influencer_ads to true and the same call returns them.
Each influencer comes back with their handle, nickname, bio and follower count, a trust tier such as paid_disclosed, the hashtag or signal Adyntel found them through, and one sample sponsored video with its engagement stats.
One extra credit per call. The influencers key only appears when you ask for it.
With influencer_ads: true (gymshark.com):
{
"handle": "gymshark",
"brand_ads": [ /* ... */ ],
"influencers": [
{
"handle": "llivsole",
"nickname": "LIV",
"bio": "sweat, smiles, and your fav playlist",
"trust_tier": "paid_disclosed",
"discovered_via": "#gymsharkpartner",
"sample_ad": {
"url": "https://www.tiktok.com/@llivsole/video/7683197142659271950",
"desc": "I am in looove with this color AND it's cotton, use code LLIV10 at checkout for 10% off your order!! @Gymshark #gymshark #gymsharkpartner #ad",
"stats": { "play_count": 10317, "digg_count": 192, "comment_count": 12, "share_count": 7 },
"region": "US"
}
}
],
"continuation_tokens": {
"brand_ads": "1787940000001",
"influencers": { "gymsharkpartner": "20" }
}
}
2 credits per call with influencer ads: one for the scrape, one for the influencer lookup.
Two more endpoints read the TikTok Ad Library itself. Start from a keyword instead of a domain, then open any ad for its targeting and impressions.
tiktok_search
Searches the TikTok Ad Library by keyword. Each matching ad comes with its advertiser name, estimated audience, first and last shown dates, images and video. Add a country_code to limit results to one market. The filter covers European markets; a US filter is not available, and a search without a country returns ads from all markets.
tiktok_ad_details
Takes an ad id from a search result and returns the advertiser's registered name and country, age and gender targeting per region, impressions per region, total impressions, and the target audience size.
Use it to measure a category before you build a list, or to check how a competitor targets a market you are entering.
Ad details (id from a search for "toys" in DE):
{
"data": {
"ad": {
"id": "1816831112281202",
"name": "elevateshoes",
"estimated_audience": "100K-200K",
"first_shown_date": 1732665600000,
"last_shown_date": 1733702400000,
"videos": [ { "cover_img": "https://...", "video_url": "https://..." } ]
},
"advertiser": { "name": "elevateshoes", "registry_location": "Germany" },
"targeting": {
"age": [ { "region": "DE", "18-24": true, "25-34": true, "35-44": true, "45-54": true, "55+": true, "13-17": false } ],
"gender": [ { "region": "DE", "female": true, "male": true } ],
"location": {
"data": [ { "region": "AT", "impressions": "27K" }, { "region": "DE", "impressions": "116K" } ],
"total_impressions": "100K-200K"
},
"target_audience_size": "21.9M-26.8M"
}
}
}
Search returns the ad ids. Details returns targeting for one ad.
Run one domain or batch thousands. Same structure every time.
Run it for:
Creative research
Pull every sponsored video from your top competitors with direct TikTok URLs and play counts. Sort by plays to see which concepts get watched, and check the music field to see which sounds they license.
Competitive monitoring
Schedule daily checks on your competitors and catch a new video or a new creator the day it appears. Repeated calls give you a timeline of their TikTok activity.
DTC and e-commerce qualification
A brand running sponsored videos, or paying creators to post, is spending on TikTok. Flag those accounts before outreach. A shop_product_url tells you they sell through TikTok Shop.
Agency prospecting
A live creator program with several disclosed partners means budget and an in-house or agency team running it. Companies posting sponsored videos with no disclosed creators are the ones without a creator program yet.
Inbound enrichment
Trigger a call when a prospect signs up. Route consumer brands by TikTok activity: no ads, brand ads only, or brand ads plus creators.
Start without a list
The advertiser database covers Meta, Google and LinkedIn ad activity for 2.2M+ companies. Build the list there, then run the TikTok endpoint across the export.
Example request:
POST https://api.adyntel.com/tiktok
{
"api_key": "your_api_key",
"email": "you@company.com",
"company_domain": "gymshark.com",
"influencer_ads": true
}
// or return it by webhook instead
{
"api_key": "your_api_key",
"email": "you@company.com",
"company_domain": "gymshark.com",
"webhook_url": "https://your.app/adyntel"
}
// answers immediately:
{ "status": "job started", "jobId": "4a9edbbc-abcf-44b0-8e3d-ceef332db44a" }
With a webhook the ads are POSTed to your URL when the scrape finishes. Without one they come back in the response.
Clean JSON with the same structure in every response.
Add as HTTP API enrichment or use Adyntel's direct integration. Map fields to columns. Build conditional logic:
brand_ads not empty: tag as "TikTok advertiser"influencers not empty: tag as "runs creator program"shop_product_url present: tag as "TikTok Shop seller"Store as custom fields: tiktok_handle (text), tiktok_ads_found (number), tiktok_last_ad_at (date), tiktok_creators (number). Trigger sequences when a company starts posting sponsored videos or adds creators.
Store full JSON in a JSONB column. Query by play count, region, music, or shop link. Track changes over time by storing responses daily.
Pass structured ad data as context: "Here are 40 sponsored TikTok videos from Gymshark and the 12 creators posting for them: [JSON]. What hooks and offers repeat?"
Import via Apps Script or Power Query. Flatten JSON into rows. One row per video, pivot by company, sort by play count or posting date.
A standard HTTP POST, parsed with the JSON library you already have. No SDK to install.
response = requests.post('https://api.adyntel.com/tiktok', json={
'api_key': key,
'email': email,
'company_domain': 'gymshark.com',
'influencer_ads': True
})
data = response.json()
ads = data['brand_ads']
creators = data.get('influencers', [])
Start with 50 free credits so you can test the product. No credit card required.
Need more than 50k credits? Contact us for a custom plan.
Adyntel's TikTok ads scraper API
company.com format, with no https:// or www. It has to be the brand's own domain; tiktok.com itself is rejected. Adyntel finds the brand's TikTok handle and returns its ads.is_ad flag, the ad source, play, like, comment, share, save and download counts, the music used and whether it is commercial or original sound, and the TikTok Shop product URL when the video links to one.influencer_ads to true. The response adds an influencers list: each creator's handle, nickname, bio, follower count, a trust tier such as paid_disclosed, the hashtag or signal they were found through, and one sample sponsored video. This costs one extra credit on top of the scrape.continuation_tokens object with one token for the brand's ads and one per influencer. Send it back on the next call to get the following page. The last page comes back with a null token.webhook_url. The call answers immediately with a job id and the ads are POSTed to your URL when the scrape finishes. Without a webhook the ads come back in the response itself.tiktok_search endpoint searches the TikTok Ad Library by keyword and returns each ad's advertiser name, estimated audience, first and last shown dates, images and video. Add a country_code to limit it to one market. The filter covers European markets; a US filter is not available, and a search without a country returns ads from all markets.tiktok_ad_details. You get the advertiser's registered name and country, the age and gender targeting per region, impressions per region, total impressions, and the target audience size.influencer_ads set to true costs 2 credits, one for the scrape and one for the influencer lookup.