TikTok Profile, Hashtag, Search, Video & Trending Scraper
Pricing
from $2.20 / 1,000 results
TikTok Profile, Hashtag, Search, Video & Trending Scraper
Scrape TikTok without login. Extract profiles, bios, follower stats and videos; search by hashtag or keyword; scrape individual videos with full engagement stats; or collect posts from the current trending feed.
Pricing
from $2.20 / 1,000 results
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
1
Bookmarked
69
Total users
28
Monthly active users
5 days ago
Last modified
Categories
Share
TikTok Scraper: Profiles, Videos, Hashtag Search & Trending Feed
TikTok turns into a clean, structured feed with this scraper. Give it usernames to get a public profile plus its videos, hashtags or keywords to get matching videos, direct video links to get full stats for a single video, or run it with no input at all to get the current trending feed. No login is ever required. Export the result to JSON, CSV or Excel, or pull it straight into your app through the API.
Why This Scraper?
- Four modes in one actor: profile, hashtag/keyword search, video, and trending, so you do not need separate tools for each job.
- Profile mode returns the full public profile (bio, avatar, follower/following/heart/video counts, verified flag) plus a paginated list of that account's videos.
- Search mode accepts a plain keyword or a hashtag (start the term with #) and returns matching videos either way.
- Video mode returns full stats for a single video: plays, likes, comments, shares and saves, plus music info, hashtags, duration and cover images.
- Trending mode needs no input at all beyond the mode itself; run it as-is to pull the current trending feed.
- Public data only: the actor never logs in, so it can only read what is publicly visible; private accounts and their videos return no data.
- Clear, honest run reporting: a run that could not read anything fails loudly, so an empty dataset always means "nothing matched", never "something broke".
Use Cases
- Social listening and brand monitoring: track a hashtag or keyword and pull matching videos as they post.
- Creator and competitor research: collect a profile's stats and video history to benchmark growth and content.
- Trend and sound discovery: scan the trending feed or a hashtag to see what is gaining traction right now.
- Dataset building for analytics or ML: collect video metadata (captions, stats, hashtags, music) at scale for research.
Data You Get
Sample shape: values are illustrative placeholders, not from a live profile or video.
| Field | Example |
|---|---|
recordType | "video" (also "profile") |
sourceMode | "search" (also "profile", "video", "trending") |
id | "7000000000000000000" (video only) |
url | link to the video or profile |
uniqueId | "samplecreator" (profile only) |
nickname | "Sample Creator" (profile only) |
authorUsername | "samplecreator" (video only) |
desc | "Sample video caption #sample" (video only) |
playCount | 500000 (video only) |
diggCount | 42000 (likes; video and profile both carry this field) |
commentCount | 1200 (video only) |
shareCount | 1200 (video only) |
collectCount | 3300 (saves; video only) |
followerCount | 125000 (profile only) |
followingCount | 340 (profile only) |
heartCount | 2400000 (total likes received; profile only) |
videoCount | 210 (profile only) |
verified | false (profile only) |
createTimeIso | "2026-01-01T00:00:00.000Z" (video only) |
scrapedAt | "2026-01-01T00:00:00.000Z" |
Video records also carry authorNickname, authorSecUid, authorAvatarUrl, duration, width, height, musicId, musicTitle, musicAuthor, musicUrl, hashtags, coverUrl, dynamicCoverUrl, originCoverUrl and region. Profile records also carry secUid, signature (bio), avatarUrl, privateAccount and bioLink.
How to Use
- Pick a mode:
profile(usernames or profile URLs),search(hashtags or keywords),video(direct video URLs), ortrending(no input needed). - Fill in the field for that mode; leave the other mode fields blank.
- Set Max results per unit to control how many videos come back per username, per query, or from the feed, then click Start.
- Download the dataset as JSON, CSV or Excel, or read it through the API.
Profile mode:
{"mode": "profile","usernames": ["samplecreator", "@anothercreator"],"maxItems": 20}
Hashtag or keyword search:
{"mode": "search","queries": ["#fyp", "cooking tutorial"],"maxItems": 20}
Single video, full stats:
{"mode": "video","videoUrls": ["https://www.tiktok.com/@samplecreator/video/7000000000000000000"]}
Current trending feed:
{"mode": "trending","maxItems": 20}
Run it from your code
Python:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("abotapi/tiktok-scraper").call(run_input={"mode": "search", "queries": ["#fyp"], "maxItems": 20})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item.get("desc"), item.get("playCount"))
JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('abotapi/tiktok-scraper').call({ mode: 'search', queries: ['#fyp'], maxItems: 20 });const { items } = await client.dataset(run.defaultDatasetId).listItems();
Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.
Video links must be the full link
Short share links (vm.tiktok.com, vt.tiktok.com) are not resolved in video mode. Open the share link once in a browser, copy the full address it redirects to (it looks like https://www.tiktok.com/@username/video/1234567890), and paste that instead.
How Max results per unit adds up
The cap applies per unit, not to the whole run: per username in profile mode, per hashtag or keyword in search mode, or to the whole feed in trending mode. Three usernames with a cap of 20 can return up to 60 video records plus the 3 profile records themselves, since a profile record does not count against the video cap. Set it to 0 to walk a unit until it runs out on its own.
Send results into your apps (MCP connectors)
The input form includes an optional Pipe results into your apps field for Model Context Protocol connectors, but connector export is not active in the current build of this actor: selecting a connector has no effect, and the run log notes that nothing was sent. Your results are always in the dataset; to move them into Notion, Airtable, Google Sheets or similar apps today, use the Integrations tab (Make, Zapier, n8n, webhooks) or the API.
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | profile | profile, search, video, or trending. |
usernames | array | (none; sample ["tiktok"]) | Usernames or profile URLs, with or without @. Profile mode only. |
queries | array | (none; sample ["#fyp"]) | Hashtags (start with #) or plain keywords. Search mode only. |
videoUrls | array | (none; sample provided) | Direct TikTok video URLs. Video mode only. |
maxItems | integer | 3 | Max results per unit: videos per username, per query, or from the feed. 0 = unlimited. Not used in video mode: every video URL is fetched once. |
proxyTier | string | residential | residential (recommended) or datacenter (cheaper, less reliable). |
proxy | object | (none; prefilled with Apify Proxy on) | Advanced connection settings. Leave apifyProxyGroups unset so proxyTier above decides Residential vs Datacenter. |
mcpConnectors | array | (none) | Reserved for connector export, which is not active in the current build; leave empty. |
notionParentPageUrl | string | (none) | Only used by connector export (not active in the current build). |
maxNotifyListings | integer | 50 | Only used by connector export (not active in the current build). |
Output Example
Sample shape: values are illustrative placeholders, not from a live record.
{"recordType": "video","sourceMode": "search","id": "7000000000000000000","url": "https://www.tiktok.com/@samplecreator/video/7000000000000000000","desc": "Sample video caption #sample","createTime": 1767225600,"createTimeIso": "2026-01-01T00:00:00.000Z","authorUsername": "samplecreator","authorNickname": "Sample Creator","authorSecUid": "MS4wSample0000000000000000000000000000000000000000000","authorAvatarUrl": "https://p16-sign-va.tiktokcdn.com/sample-avatar.jpeg","duration": 18,"width": 1080,"height": 1920,"playCount": 500000,"diggCount": 42000,"commentCount": 1200,"shareCount": 1200,"collectCount": 3300,"musicId": "7000000000000000001","musicTitle": "Sample Sound","musicAuthor": "Sample Artist","musicUrl": "https://sf16-ies-music.tiktokcdn.com/sample-music.mp3","hashtags": ["sample", "fyp"],"coverUrl": "https://p16-sign-va.tiktokcdn.com/sample-cover.jpeg","dynamicCoverUrl": "https://p16-sign-va.tiktokcdn.com/sample-dyncover.jpeg","originCoverUrl": "https://p16-sign-va.tiktokcdn.com/sample-origcover.jpeg","region": "US","scrapedAt": "2026-01-01T00:00:00.000Z"}
Plan Requirement
This actor defaults to Apify's Residential proxy tier, which TikTok's edge treats far more reliably than datacenter connections. An account without Residential proxy access can still start a run, but is far more likely to see few or 0 results; a Starter plan or higher typically includes Residential proxy access. Switch Proxy tier to Datacenter only if you are deliberately trading reliability for a lower cost per run.
FAQ
How much does it cost?
You pay a flat fee to start the run plus a per-record fee for each profile, video or search hit returned. Video mode also carries an extra per-video surcharge on top of the standard record fee, since fetching one video's full detail page costs more than a profile or search hit. The Pricing tab shows the current rates. Use Max results per unit to cap the cost of any run.
Is it legal to scrape TikTok?
This actor collects only publicly available profile and video data; login is never required. You are responsible for how you use it: follow TikTok's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Video, cover and music files themselves may belong to their creators or rights holders even though the metadata is public.
Can I run this on a schedule to catch new videos?
Yes, schedule it from the Schedules tab. Each run is a fresh crawl; this actor has no built in incremental or deduplication mode, so records are not tagged as new or already seen. Deduplicate downstream, for example by id, if you only want what changed since the last run.
Why does video mode say it could not find a video?
Video mode needs the full link, https://www.tiktok.com/@username/video/1234567890. Short share links (vm.tiktok.com, vt.tiktok.com) are not resolved; open one in a browser first and copy the full address it redirects to.
Why did my run fail instead of returning an empty dataset?
A run fails only when it collected 0 records and at least one target could not be read at all, or loaded without carrying any usable data; the status message says which. A keyword or hashtag that genuinely matches nothing still ends as a successful, honestly empty run. If some targets were read and others were not, the run stays green with a warning: the dataset is just incomplete for the targets that failed. For trending mode specifically, a run that fails outright most often means the feed's underlying request shape changed; please report it so the mapping can be refreshed.
Can I use it with AI agents or MCP?
Yes. Call it from any Apify integration or MCP client like any other actor. Sending results to connected apps through the connector field is not active in the current build; use the Integrations tab instead.
๐ Want more TikTok data?
Pair this actor with these related scrapers from the same team:
| ๐งฉ TikTok Comments Scraper Scrape comments from TikTok videos using one or more video URLs or IDs. Extract comment... | ๐ฑ Tiktok Live Recorder Record TikTok live streams to MP4 with full metadata, all stream quality URLs, and... |
| ๐ฑ Lemon8 Media Scraper Lightweight Lemon8 scraper for extracting image and video URLs from posts, with optional... | ๐ฑ Mastodon From $1/1K. Scrape trending Mastodon profiles and related posts from any Mastodon... |
| ๐ฑ Universal Media Extractor Extract videos, audio, and metadata from 1000+ websites including YouTube, TikTok... | ๐ฑ ViewStats Scraper Scrape YouTube channel analytics from ViewStats. Look up channels by handle, URL, or... |
๐ Browse all abotapi scrapers
๐ฌ Support & custom scrapers
- ๐ Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
- ๐ ๏ธ Need another site, extra fields or a private build? Email contact@abotapi.com or message Telegram @abotapi.
- โญ Enjoying it? A quick review on the actor page helps other users find it.