TikTok Hashtag Scraper - Videos by Tag, No Login
Pricing
$0.25 / 1,000 result returneds
TikTok Hashtag Scraper - Videos by Tag, No Login
No-login TikTok hashtag scraper. Add any hashtag and pull videos with views, likes, comments, shares, author, music and cover URLs. No API key, no proxy needed, beats IP blocking. Failed runs cost nothing. Export JSON/CSV/Excel or send to Notion.
Pricing
$0.25 / 1,000 result returneds
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
2 days ago
Last modified
Categories
Share
⚡ TikTok Hashtag Scraper — Videos by Hashtag (No Login, No API Key)
Pull every video under any TikTok hashtag — no login, no API key, no proxy. Feed it hashtags (with or without #) or /tag/ URLs and get back each video with views, likes, comments, shares, saves, video & cover URLs, music/sound, author and timestamps. Export to JSON, CSV or Excel, call it from the API, or have results delivered straight to Notion. Just $0.25 per 1,000 results.
No account. No signing keys. No msToken to paste. Paste a hashtag and run.
Why this scraper wins
- 🔓 Keyless, sign-free, proxy-free — no login, no API key, no signing keys, and no proxy needed. It just works.
- 🛡️ Beats TikTok's IP blocking — sources data through infrastructure TikTok trusts, so you always get the real numbers instead of a flagged-IP decoy.
- 💸 Cheaper, pay-per-result — $0.25 / 1,000 results, billed only for videos actually returned. Empty/failed runs cost nothing.
- 🧹 Clean, flat records — one tidy object per video, ready for sheets, dashboards or LLM pipelines.
- 📬 Built-in Notion delivery — push every run into Notion via Apify connectors, zero extra code.
- 🚦 Honest errors — a clear
errorCoderow (BLOCKED,RATE_LIMITED,NO_RESULTS) when something goes wrong, instead of silent emptiness.
What you can scrape
| Mode | Input | Returns |
|---|---|---|
| Hashtag | hashtags (e.g. cats, #spacex) | Videos under each hashtag |
| Tag URL | a /tag/ URL in startUrls | Videos under that hashtag |
Want profiles, search and single videos too? Use the all-in-one TikTok Scraper.
Input
| Field | Type | Description |
|---|---|---|
hashtags | array | Hashtags (with or without #) to pull videos from. |
startUrls | array | Or paste TikTok /tag/ URLs, e.g. https://www.tiktok.com/tag/cats. |
resultsPerPage | integer | Max videos per hashtag (1–2000, default 50). Charged per result. |
proxyConfiguration | object | Optional — this scraper needs no proxy. |
notionConnector | string | Optional Notion connector ID for delivery via Apify MCP connectors. |
notionParentId | string | Optional Notion database/data-source id. |
Output (one record per video)
{"ok": true,"type": "video","id": "7300000000000000000","webVideoUrl": "https://www.tiktok.com/@catlover/video/7300000000000000000","text": "best nap ever 😴 #cats #catsoftiktok","createTime": "2024-06-12T14:00:00.000Z","hashtags": ["cats", "catsoftiktok"],"region": "US","playCount": 2400000,"diggCount": 318000,"commentCount": 4200,"shareCount": 9100,"collectCount": 15000,"downloadCount": 800,"isAd": false,"video": {"duration": 23,"cover": "https://...jpg","dynamicCover": "https://...webp","playAddr": "https://...mp4","downloadAddr": "https://...mp4"},"music": { "id": "...", "title": "original sound", "authorName": "catlover", "original": true, "duration": 23 },"author": { "id": "...", "uniqueId": "catlover", "nickname": "Cat Lover", "avatar": "https://...jpg" }}
Pricing
$0.25 per 1,000 results (pay-per-result). You are only charged for videos actually returned — empty or failed runs cost nothing.
FAQ
Do I need a TikTok account? No. Public hashtag pages work fully keyless.
Do I need a proxy? No. This scraper needs no proxy at all — that's a key advantage. It works from any IP.
How many videos can I get per hashtag? Up to 2,000 per hashtag via resultsPerPage; the default is 50.
How does it beat TikTok's blocking? TikTok serves flagged IPs a fake decoy page with bogus numbers. This scraper sources data through infrastructure TikTok trusts, so you always get the real counts.
It returned an errorCode row — why? That's the actor telling you exactly what happened (BLOCKED, RATE_LIMITED, NO_RESULTS) instead of failing silently.