TikTok Hashtag Scraper - Videos, No Watermark, No Login avatar

TikTok Hashtag Scraper - Videos, No Watermark, No Login

Pricing

from $0.25 / 1,000 result returneds

Go to Apify Store
TikTok Hashtag Scraper - Videos, No Watermark, No Login

TikTok Hashtag Scraper - Videos, No Watermark, No Login

Scrape TikTok videos by hashtag. Every row has a link to the video with no watermark. Rows also carry plays, likes, comments, shares and saves. The author and the sound are included. Branded posts are marked. No login or API key. $0.25 per 1,000 videos.

Pricing

from $0.25 / 1,000 result returneds

Rating

5.0

(1)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

28

Total users

8

Monthly active users

a day ago

Last modified

Categories

Share

TikTok Hashtag Scraper: videos posted under any tag, with the counts attached

Give it hashtags and you get the videos TikTok is showing under them, one row each, with plays, likes, comments, shares and saves, the author, the sound and a video link without the watermark. Nothing to log into.

The thing to know before your first run: the limit is run wide, not per tag. Put in three hashtags with a limit of 50 and you get 50 videos in total, and the first tag can use the lot. Run one tag at a time if you need a fair split. A hashtag feed is also what TikTok chooses to show a visitor today, not the full history of the tag.

InputHashtags, or tiktok.com/tag/ links
OutputOne row per video
Ceiling2,000 videos per run
Account neededNone from you
Price$0.25 per 1,000 videos, flat on every plan

๐Ÿ” What TikTok Hashtag Scraper does

It walks the feed behind each tag and flattens every video into one row. Tags are taken with or without the #, and a /tag/ link works too.

The same video showing up under two of your tags is returned once and billed once. Paging stops when TikTok stops handing out a cursor, or at your limit, whichever comes first.

Some field names are TikTok's own rather than the words in the app:

FieldWhat it is
diggCountLikes.
collectCountSaves.
playAddrThe video file without the watermark. downloadAddr is the watermarked one.
isAdBranded content. Useful for keeping promoted posts out of an organic reach read.

A tag that does not exist or comes back empty gets a row saying so, and the run moves on to the next tag.

๐Ÿ“ฅ What you give it

{
"hashtags": ["cats", "spacex"],
"resultsPerPage": 50
}
FieldDefaultWhat it is
hashtagsnoneTags with or without #. The form opens with cats filled in as an example, which is a starting point rather than a default.
startUrlsnoneOr paste links like https://www.tiktok.com/tag/cats. Mix them with hashtags freely.
resultsPerPage50Videos for the whole run, 1 to 2,000, despite what the field name suggests. This is also your spend cap.
sessionCookiesnoneOptional. Your own TikTok sessionid, used only for tags that came back empty. Use a throwaway account: the value sits in the run input, which anyone who can open the run can read.
proxyConfigurationoffLeave it off. It exists for people routing through their own servers at high volume.
notionConnector, notionParentIdnoneOptional. Write each video into a Notion database as well as the dataset.

๐Ÿ“ค What you get back

A real row from a real run. The caption starts with emoji, so it is cut short here, and the media links are trimmed:

{
"ok": true,
"type": "video",
"id": "7417800442127633707",
"webVideoUrl": "https://www.tiktok.com/@lilpawdrama/video/7417800442127633707",
"text": "...#cat #cutecat #catsoftiktok #catlover #cats #funny #pets #usa_tiktok",
"createTime": "2024-09-23T11:34:25.000Z",
"hashtags": ["cat", "cutecat", "catsoftiktok", "catlover", "cats", "funny", "pets"],
"region": "US",
"playCount": 136727,
"diggCount": 22693,
"commentCount": 127,
"shareCount": 437,
"collectCount": 1968,
"downloadCount": 803,
"isAd": true,
"video": { "duration": 30, "cover": "https://p16-common-sign.tiktokcdn-us.com/...", "playAddr": "https://v45.tiktokcdn-us.com/...", "downloadAddr": "https://v45.tiktokcdn-us.com/..." },
"music": { "id": "7136445672676411393", "title": "Cute", "authorName": "Aurel Surya Lie", "original": false, "duration": 179 },
"author": { "id": "7412528791307715627", "uniqueId": "lilpawdrama", "nickname": "lilpawdrama", "avatar": "https://p19-common-sign.tiktokcdn-us.com/..." }
}
FieldWhat it is
id, webVideoUrlUnique per video, and the link a person can open. Use id as your dedupe key across runs.
text, hashtagsThe caption, and the tags parsed out of it without the #.
createTime, regionWhen it was posted, as an ISO timestamp, and the region TikTok reports.
playCount, diggCount, commentCount, shareCount, collectCount, downloadCountThe six counters, as TikTok reports them at read time.
videoDuration in seconds, the still and animated covers, and both file links.
musicThe sound: id, title, artist, whether it is the creator's own, and its length. null when the video has none.
authorThe account that posted it: id, handle, display name and avatar.

๐Ÿงพ Reading the output

Two kinds of row land in your dataset.

RowHow to spot itBilled
A videook: true and type: "video"yes
A diagnosticok: false and an errorCodeno

Filter on ok == true and you have your data. NOT_FOUND means TikTok had no such tag, NO_RESULTS means the tag exists but returned nothing, and BLOCKED means that tag would not answer this run, which re-running usually clears. None of the three is charged.

One quirk of the Overview table: it shows five columns, so a diagnostic row reads as a nearly blank line there. Open the row itself or download the JSON and everything is present.

โ–ถ๏ธ How to run it

  1. Open TikTok Hashtag Scraper and click Try for free.
  2. Type tags into Hashtags, one per line, or paste links into Hashtag URLs.
  3. Set Max videos per hashtag. It is the total for the run, so start at 50 while you look at the output shape.
  4. Click Start.
  5. Download the dataset as JSON, CSV or Excel, or pull it from the Apify API.

๐Ÿ’ฐ How much does it cost?

$0.25 per 1,000 videos. Flat on every Apify plan, no volume tiers.

You pay for videos delivered. Diagnostic rows and a video that turned up under two of your tags in the same run are not charged. resultsPerPage is the ceiling on both the rows and the spend.

๐Ÿ’ก What people use it for

  • Watching a niche tag week by week and tracking which posts actually travelled.
  • Pulling the creators behind a tag, since every row carries the author handle and id.
  • Building a swipe file of hooks: caption, sound, duration and play count in one table.
  • Separating branded posts from organic ones with isAd before reporting on reach.

๐Ÿšง What it does not do

  • No comments and no follower lists. Those are separate actors, linked below.
  • The feed is not an archive. You get what TikTok serves a visitor under that tag now. Old videos that have dropped out of the feed will not come back.
  • The limit is shared across your tags. One greedy tag can consume the whole run.
  • Media links expire. They are signed and short lived. Fetch the file during the run if you want to keep it.
  • A counter TikTok does not send reads as 0. On a fresh video that can mean "not published yet" rather than none.
  • Counts are a snapshot at read time, and TikTok's own figures lag on very new videos.
  • An empty input fails the run instead of returning a sample. Give it at least one tag.

๐Ÿงญ Which TikTok scraper do you need?

If you wantUse
Videos under a hashtagThis one
A profile plus its videos, or a keyword searchTikTok Scraper
Follower and likes counts for a list of handlesTikTok Profile Scraper
Comments under a videoTikTok Comments Scraper
Which hashtags are climbing right nowTikTok Trending Hashtags

โ“ Questions people ask

Do I need a TikTok account? No. The cookie field is optional and only comes into play for tags that came back empty without it.

Is the limit per tag or per run? Per run. The field is called "Max videos per hashtag", but the number you set is the total the run will deliver.

Why did I get fewer videos than I asked for? Either TikTok stopped handing out more of that feed, or an earlier tag in your list had already used the run's allowance.

Can I download the videos? The row carries both file links, watermarked and not. They are signed links that expire, so fetch them promptly, or use the video downloader linked from our store page.

Is scraping TikTok legal? This reads public videos only, never private accounts or messages. Results can still contain personal data, which GDPR and similar laws cover, so have a reason for collecting it. Apify's write-up on the legality of web scraping is a good starting point, and we are not lawyers.

Can I run it on a schedule? Yes. Use Apify's scheduler, or start it from the API and read the dataset when it finishes.

๐Ÿ†˜ If something breaks

Open the Issues tab on the actor page. Include the hashtags you used and the run ID, and the log is usually enough for us to see what happened.