TikTok Scraper With Sponsor and Brand Tags avatar

TikTok Scraper With Sponsor and Brand Tags

Pricing

from $3.99 / 1,000 results

Go to Apify Store
TikTok Scraper With Sponsor and Brand Tags

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

Scraply

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

1

Monthly active users

14 days ago

Last modified

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, and BAInfo — fields the platform already attaches to each video but a plain isAd flag alone doesn't explain.
  • Reads tagged brand accounts out of the caption's @mentions (TikTok's own textExtra mention 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

FieldTypeDescription
startUrlsarray (string list)TikTok profile URLs (https://www.tiktok.com/@username) or bare usernames. Leave empty to only run search.
profileScrapeSectionsarray (select)Which profile sections to scrape: videos and/or repost. Default: ["videos"].
searchQuerystringA hashtag or keyword to search. Leave empty to only scrape profiles.
searchTypestring (select)keyword (general TikTok search) or hashtag. Default: keyword.
maxResultsinteger (1–1000)Maximum matching rows to collect per profile / per search query, applied after the sponsor/brand filters below. Default: 100.
includeAdDisclosurebooleanAdds adAuthorization, adLabelVersion, brandOrganicType, and BAInfo to every row. Default: true.
onlySponsoredVideosbooleanKeep only rows where isAd, adAuthorization, brandOrganicType, adLabelVersion, or a pinned anchor is present. Set false to keep the whole feed. Default: true.
brandHandlesarray (string list)Keep only rows whose tagged accounts match one of these @handles (case-insensitive, leading @ optional). Leave empty for no brand restriction.
includeProductAnchorsbooleanAdds anchors, anchorType, isECVideo, and commerceHashtags. Default: true.
proxyConfigurationobjectStandard 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):

FieldDescription
adAuthorizationWhether the creator authorized this video to run as a TikTok ad. null when TikTok sends no marker.
adLabelVersionThe on-screen ad-label version TikTok applied, if any.
brandOrganicTypeTikTok's own branded-content code (e.g. 1010), shipped as a raw string — TikTok publishes no lookup table for these codes.
BAInfoTikTok's branded-content disclosure string, when present.
anchorsThe card TikTok pins under the video (app / CapCut template / product link), raw.
anchorTypeThe anchor's type, derived from the anchor's own logExtra data (e.g. TT_CAPCUT).
isECVideoTikTok Shop video flag, read from TikTok's public embed page.
commerceHashtagsHashtags TikTok itself marks as commercial, read from the same embed page.
taggedAccountsFull @mention objects (userId, userUniqueId, secUid) tagged in the caption.
mentionsThe tagged @handles as a plain string list (this is the base scraper's own mentions field — previously always empty, now populated).
matchedBrandFiltertrue 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)

  • brandOrganicType has no public TikTok documentation. It's shipped as the raw value TikTok returns (observed values include 1001 and 1010) — treat it as a signal to correlate against known sponsored posts, not a documented enum.
  • BAInfo is 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/anchorType had 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 treat includeProductAnchors as a guaranteed product-catalogue feed — it ships exactly what TikTok returns.
  • isECVideo is 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 proxyConfiguration before 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.
  • maxResults is applied per profile, per section, and per search query independently — a run with several profiles, both profileScrapeSections, and a search query can push considerably more rows (and pay-per-event charges) than maxResults alone suggests. Check total expected rows before a large multi-target run.

Filter logic

  • onlySponsoredVideos (default true) keeps a row if any of: isAd is true, adAuthorization is set, brandOrganicType is present, adLabelVersion is a positive number, or the video has a pinned anchor card. Set it to false to keep the entire feed and inspect the marker columns yourself.
  • brandHandles keeps a row only if one of the supplied handles appears in taggedAccounts. Combine it with onlySponsoredVideos: false to find every video that tags a brand, disclosed or not.
  • Both filters are applied client-side after the fetch and before maxResults is enforced, so maxResults reflects 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.