TikTok Scraper With Sponsor and Brand Tags
Pricing
from $3.99 / 1,000 results
TikTok Scraper With Sponsor and Brand Tags
TikTok Scraper With Sponsor and Brand Tags extracts videos, captions, hashtags, sponsor labels, brand tags, creator details, engagement metrics, music, and timestamps. Export structured data to JSON, CSV, Excel, or API.
Pricing
from $3.99 / 1,000 results
Rating
0.0
(0)
Developer
Scraply
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
1
Monthly active users
14 days ago
Last modified
Categories
Share
A TikTok scraper for profiles, hashtags, and keyword search that goes one step further than a
standard TikTok video scraper: on every video it reads TikTok's own paid-partnership and
branded-content disclosure fields — the same signals TikTok uses internally to decide whether to
show the on-screen "Paid partnership" label — instead of guessing "is this sponsored?" from the
caption text. You get which videos are ads, why TikTok marked them that way, and which brand
@handle is tagged, without an LLM, without login, and without inventing data TikTok never sent.
Built as a superset of the standard TikTok Scraper: every input and output field of the base actor still works exactly the same, plus the sponsor/brand-tag layer described below.
What this TikTok scraper does
- Scrapes TikTok profiles by URL or username — profile videos and/or a profile's reposted (reshared) content.
- Runs a TikTok hashtag search or a general keyword search.
- Surfaces TikTok's ad-disclosure fields on every item:
adAuthorization,adLabelVersion,brandOrganicType, andBAInfo— fields the platform already attaches to each video but a plainisAdflag alone doesn't explain. - Reads tagged brand accounts out of the caption's
@mentions(TikTok's owntextExtramention data), so you see which brand is tagged, not just that the caption contains an@. - Reads anchor / commerce data: the card TikTok pins under a video (app, CapCut template, or product link) and hashtags TikTok itself marks as commercial.
- Filters the feed down to sponsored content only, or to videos tagging specific brand handles, so a run returns a brand-deal list instead of a raw feed.
Why use a sponsor & brand-tag TikTok scraper
- Influencer marketing / compliance monitoring — check whether a creator's paid posts actually
carry TikTok's own disclosure markers, not just a caption
#ad. - Brand & competitor tracking — pull a hashtag or keyword search down to only the videos tagging
a specific brand
@handle, to see who's already posting about a competitor. - Creator vetting before a paid deal — run a profile with filtering off to see the real ratio of sponsored vs. organic content in a creator's feed (e.g. one sampled creator's feed was ~31% disclosed-sponsored, a brand storefront account was 100%).
- Branded-content / TikTok Shop research — inspect anchor cards and commerce hashtags TikTok attaches to a video, alongside the standard engagement stats.
This is an organic-feed disclosure scraper — it reads the paid-partnership markers TikTok attaches to regular creator videos. It is not a TikTok Ads Library / Ads Manager scraper and does not return paid ad-buy data (targeting, spend, advertiser IDs); that is a different data source entirely.
Input
| Field | Type | Description |
|---|---|---|
startUrls | array (string list) | TikTok profile URLs (https://www.tiktok.com/@username) or bare usernames. Leave empty to only run search. |
profileScrapeSections | array (select) | Which profile sections to scrape: videos and/or repost. Default: ["videos"]. |
searchQuery | string | A hashtag or keyword to search. Leave empty to only scrape profiles. |
searchType | string (select) | keyword (general TikTok search) or hashtag. Default: keyword. |
maxResults | integer (1–1000) | Maximum matching rows to collect per profile / per search query, applied after the sponsor/brand filters below. Default: 100. |
includeAdDisclosure | boolean | Adds adAuthorization, adLabelVersion, brandOrganicType, and BAInfo to every row. Default: true. |
onlySponsoredVideos | boolean | Keep only rows where isAd, adAuthorization, brandOrganicType, adLabelVersion, or a pinned anchor is present. Set false to keep the whole feed. Default: true. |
brandHandles | array (string list) | Keep only rows whose tagged accounts match one of these @handles (case-insensitive, leading @ optional). Leave empty for no brand restriction. |
includeProductAnchors | boolean | Adds anchors, anchorType, isECVideo, and commerceHashtags. Default: true. |
proxyConfiguration | object | Standard Apify proxy configuration. No proxy is used by default. |
Example input:
{"startUrls": ["https://www.tiktok.com/@mrbeast"],"profileScrapeSections": ["videos"],"maxResults": 50,"onlySponsoredVideos": true,"brandHandles": ["nike"],"includeAdDisclosure": true,"includeProductAnchors": true,"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }}
Output
Every run pushes one row per item to the default dataset, tagged with a type so you can tell the
four sources apart: profile_video, profile_repost, hashtag_search, keyword_search. Failed
targets push a success: false row with an error message instead of a data row.
Sponsor & brand-tag fields present on every successful row (added on top of each source's own existing fields — nothing from the base scraper is removed or renamed):
| Field | Description |
|---|---|
adAuthorization | Whether the creator authorized this video to run as a TikTok ad. null when TikTok sends no marker. |
adLabelVersion | The on-screen ad-label version TikTok applied, if any. |
brandOrganicType | TikTok's own branded-content code (e.g. 1010), shipped as a raw string — TikTok publishes no lookup table for these codes. |
BAInfo | TikTok's branded-content disclosure string, when present. |
anchors | The card TikTok pins under the video (app / CapCut template / product link), raw. |
anchorType | The anchor's type, derived from the anchor's own logExtra data (e.g. TT_CAPCUT). |
isECVideo | TikTok Shop video flag, read from TikTok's public embed page. |
commerceHashtags | Hashtags TikTok itself marks as commercial, read from the same embed page. |
taggedAccounts | Full @mention objects (userId, userUniqueId, secUid) tagged in the caption. |
mentions | The tagged @handles as a plain string list (this is the base scraper's own mentions field — previously always empty, now populated). |
matchedBrandFilter | true if the row matched one of the brandHandles you supplied. |
All base-scraper fields (video/item IDs, URLs, isAd, caption text, engagement stats, author and
music metadata, hashtags, etc.) are unchanged and still present in each row shape — this actor is a
strict superset of the standard TikTok Scraper's output.
Example output row (profile video):
{"type": "profile_video","username": "mrbeast","success": true,"video": {"id": "7...","webVideoUrl": "https://www.tiktok.com/@mrbeast/video/7...","isAd": false,"adAuthorization": null,"adLabelVersion": null,"brandOrganicType": "1010","BAInfo": "","anchors": [],"anchorType": [],"isECVideo": null,"commerceHashtags": [],"taggedAccounts": [{ "userId": "123", "userUniqueId": "somebrand", "secUid": "..." }],"mentions": ["somebrand"],"matchedBrandFilter": false}}
Honest limitations (please read before relying on a field)
brandOrganicTypehas no public TikTok documentation. It's shipped as the raw value TikTok returns (observed values include1001and1010) — treat it as a signal to correlate against known sponsored posts, not a documented enum.BAInfois low-signal. In sampling it was empty or absent on the large majority of rows. Present when TikTok sends it,null/empty otherwise — never fabricated.anchors/anchorTypehad low observed coverage (a small minority of sampled videos), and every observed anchor was a CapCut editor card, not a shop/product card. Don't treatincludeProductAnchorsas a guaranteed product-catalogue feed — it ships exactly what TikTok returns.isECVideois read from TikTok's public embed page and reflects that page's own flag; a positive (true) TikTok Shop video was not observed in sampling, so treat this as "what TikTok's embed reports," not a verified shop-detection feature.- Reliability depends on TikTok not blocking the request. TikTok can rate-limit or block
requests from non-residential IPs. Profile scraping is the most reliable path; if a run returns
zero rows, enable a residential proxy in
proxyConfigurationbefore assuming a target has no matching content. - Comment data is out of scope. This actor reads video-level disclosure and tag data only; TikTok comments live on a separate endpoint this actor does not call.
maxResultsis applied per profile, per section, and per search query independently — a run with several profiles, bothprofileScrapeSections, and a search query can push considerably more rows (and pay-per-event charges) thanmaxResultsalone suggests. Check total expected rows before a large multi-target run.
Filter logic
onlySponsoredVideos(defaulttrue) keeps a row if any of:isAdis true,adAuthorizationis set,brandOrganicTypeis present,adLabelVersionis a positive number, or the video has a pinned anchor card. Set it tofalseto keep the entire feed and inspect the marker columns yourself.brandHandleskeeps a row only if one of the supplied handles appears intaggedAccounts. Combine it withonlySponsoredVideos: falseto find every video that tags a brand, disclosed or not.- Both filters are applied client-side after the fetch and before
maxResultsis enforced, somaxResultsreflects matching rows, not raw fetched rows.
FAQ
Does this need a TikTok login or cookies? No. All scraping runs logged-out against publicly available pages and endpoints.
Is this the same as a TikTok Ads Library scraper? No. This reads disclosure markers on regular, organically-published creator videos. It does not return paid ad-buy data such as targeting or ad spend.
Can I get every sponsored video from a hashtag, filtered to one brand?
Yes — set searchType: "hashtag", searchQuery to the hashtag, onlySponsoredVideos: true, and
brandHandles to the brand's handle(s).
Why is brandOrganicType a string of numbers instead of a label?
TikTok does not publish a lookup table for these codes. The actor ships the raw value rather than
guessing at a label.
Can I scrape private accounts? No — only publicly available content is collected.
Compliance
- Data is collected only from publicly available TikTok pages and endpoints.
- No private or password-protected content is accessed.
- The end user is responsible for ensuring their use complies with TikTok's Terms of Service and applicable data-protection law.