TikTok Scraper - Hashtags, Profiles & Video Data
Pricing
from $2.00 / 1,000 results
TikTok Scraper - Hashtags, Profiles & Video Data
Scrape TikTok videos, profiles, hashtags, and search results. Get video URLs, play counts, likes, comments, shares, and channel signals for research and monitoring.
Pricing
from $2.00 / 1,000 results
Rating
0.0
(0)
Developer
kane liu
Maintained by CommunityActor stats
1
Bookmarked
50
Total users
2
Monthly active users
3 days ago
Last modified
Categories
Share
TikTok Scraper
Pull videos, profiles, and hashtag trends from TikTok — with full engagement data and optional video download.
Architecture: this Apify Actor is a thin client. Scraping runs on the tiktok-com Cloud Run worker (Patchright + XHR + CapSolver) over HTTPS + API key. Existing input/output fields and Store pricing are unchanged; the ten lead fields documented below were added without renaming or removing earlier fields.
Worker URL is config, not code: the Actor reads
WORKER_BASE_URLfrom Actor environment variables (plus optional per-runworkerBaseUrl). If you migrate the worker to a new host, updateWORKER_BASE_URL(andWORKER_AUTHif the API key changes) in Apify Console — no Actor code change required. SetWORKER_PROVIDES_PROXY=1when the worker supplies its ownPROXY_URLinstead of Apify RESIDENTIAL.
Current guest-web availability (2026-09-09): Public Profile identity and single Video Detail are opened and lead-enriched. TikTok currently puts Search, Hashtag, and Profile post grids behind a slider challenge. Those surfaces fail honestly instead of returning an empty success or rows from a different surface. HTTP 200 platform shells are not treated as data.
- ✅ Accept hashtag, username, keyword-search, or specific-video inputs; current guest availability is surface-specific
- ✅ Get play counts, likes, comments, shares, saves, author info, music, hashtags — 20+ fields per video
- ✅ Optional video download — save TikTok video files to cloud storage for archival or analysis
- ✅ Download successful rows as Excel, CSV, or JSON — no TikTok account is supplied by the user
- ✅ Pay only for what you use: $0.002 per video, no subscription
- ✅ At the listed result price, $5 of Apify credit can cover up to ~2,500 successfully emitted videos
When the requested public surface is available, successful rows cost pennies and provide raw engagement data plus optional video downloads. A slider-gated Search or Hashtag request can fail without a table or result charge.
Need a dedicated scraper for one website?
This Actor is the general tool for protected public pages. If you already have one specific site and a field list, a dedicated scraper is faster and more stable: listing + detail, your export format, delivered to your Apify account or as a standalone runnable client.
I confirm the tier before you pay. The clock starts after that confirmation.
Start here: Submit a custom scraper request
| Starter $50 | Dedicated $100 | Hard target $200–999 | |
|---|---|---|---|
| Site | 1 simple anti-bot public site | 1 medium anti-bot public site | Cloudflare / aggressive anti-bot / custom parser |
| Scope | Full listing + detail fields | Listing + detail + pagination, your field list | Agreed fields, repeatable runs |
| Delivery | CSV/JSON · Apify Actor or standalone runnable client (script/CLI) | Same, plus a sample run and short instructions | Feasibility first, then build |
| Time | 24 hours after we confirm the URL is in scope | 48 hours after confirmation | Quoted after feasibility |
| Fixes | 30 days for small public-layout changes | 30 days | Scoped in the quote |
Hard-target sites are not a 100% uptime promise. You get a dedicated parser that can be re-run on the agreed fields. If the URL is not feasible, you get a refund or pay an assessment fee only — you will know before the build starts.
Not in Starter/Dedicated: login-walled data, native APK / Windows installer / full web apps, or two-year maintenance. Those are a separate quote.
What you can do with it
1. Track what's trending for any hashtag
Hashtag mode is designed to return tagged videos with play counts, likes, and the full engagement breakdown when TikTok exposes the feed to the guest session. As of 2026-09-09, the measured Hashtag surface is slider-gated, so a run can fail without result rows rather than bypassing the challenge or claiming a complete feed.
To run this, pick "Hashtag videos" mode and type the hashtags you want to track (without the #):
What you enter:
| What | Example |
|---|---|
| Mode | Hashtag videos |
| Hashtags | ai, machinelearning (without #) |
| How many videos | 100 |
When TikTok makes the Hashtag feed available, successful rows use this table shape. The current measured guest surface does not guarantee availability or a complete set of every tagged video:
What you get back:
| Description | Author | Plays | Likes | Comments | Shares | Duration | Music |
|---|---|---|---|---|---|---|---|
| This AI tool changed everything 🤯 | @techbro | 2.4M | 180K | 3.2K | 12K | 42s | original sound |
| How I automated my business with AI | @sarahcodes | 890K | 65K | 1.1K | 8.5K | 58s | Aesthetic |
| … | … | … | … | … | … | … | … |
Sort by plays to find the top performers. Sort by likes-to-plays ratio to find the most engaging content. Download as Excel, CSV, or JSON, or pipe into Google Sheets to track hashtag trends over time.
2. Monitor competitor or influencer accounts
Point this Actor at a public username to collect the visible profile identity,
bio, statistics, organization/person clue, and profile links. Profile video
rows are included only when TikTok exposes the posts grid. On 2026-09-09, the
measured @openai profile identity was opened but its posts grid was
slider-gated, so the Actor does not promise a complete video library.
Pick "User profile & videos" mode and type the username (without @):
What you enter:
| What | Example |
|---|---|
| Mode | User profile & videos |
| Usernames | openai, nike, charlidamelio (without @) |
| How many videos | 200 |
What you get back (profile info, plus video rows when the posts grid is available):
The opened profile surface returns a profile summary with followers, following, total likes, video count, bio, verified status, and lead fields. A video table is returned only when the separate posts surface is available:
| Description | Plays | Likes | Comments | Shares | Saves | Duration | Posted |
|---|---|---|---|---|---|---|---|
| trying the viral cloud bread 🍞 | 24.5M | 3.2M | 48K | 125K | 890K | 47s | Apr 2 |
| dance challenge with Mom | 18.1M | 2.1M | 32K | 95K | 650K | 32s | Mar 28 |
| … | … | … | … | … | … | … | … |
You can schedule profile checks, but treat a slider-gated posts grid as a failed acquisition rather than a week with zero posts.
3. Research trending content before creating your own
Search mode is designed to collect public keyword results when TikTok exposes the result feed. The measured Search surface was slider-gated on 2026-09-09, so requesting 200 results does not guarantee 200 rows; a blocked run fails honestly instead of substituting Hashtag or Profile data.
Pick "Search results" mode and type your keywords:
What you enter:
| What | Example |
|---|---|
| Mode | Search results |
| Keywords | cooking tips or fitness motivation or SaaS demo |
| How many videos | 200 |
What you get back:
| Description (first 60 chars) | Author | Plays | Likes | Music | Duration |
|---|---|---|---|---|---|
| 3 meals under $5 that actually... | @joshuaweissman | 9.4M | 1.1M | original sound | 58s |
| This morning routine changed my... | @drjulie | 5.2M | 620K | Metamorphosis | 45s |
| … | … | … | … | … | … |
When Search is available, you can sort returned rows by plays, music, and duration. Current slider-gated sessions do not produce this table.
4. Download and archive TikTok videos
Need the actual video files — not just the metadata? Turn on video download and the Actor saves each video to Apify's cloud storage. You get a persistent download URL for every video that doesn't expire (unlike TikTok's own playUrl which is time-limited).
This is useful for content archival, creative reference libraries, or compliance documentation.
What you enter:
| What | Example |
|---|---|
| Mode | Hashtag videos or Specific video URLs |
| Hashtags or URLs | recipe or paste TikTok video links |
| Download videos? | Yes |
| How many videos | 20 |
What you get back (each row now includes a download link):
| Description | Author | Plays | Video file |
|---|---|---|---|
| 60-second pasta hack 🍝 | @tasty | 5.1M | download |
| The perfect fried egg | @gordonramsay | 12M | download |
Each download link points to a permanent copy of the video file stored in Apify's Key-Value Store. Video download adds a few seconds per video to the run time and uses more storage, but the files are yours to keep.
5. Use it from ChatGPT, Claude, or no-code automation
Ask your AI assistant (ChatGPT, Claude, Cursor) to run this Actor with a public profile or video target. When TikTok exposes the requested surface, the assistant can return current rows in the conversation. A slider-gated Search or Hashtag request fails without inventing a result table. The Actor also works as a "Run Actor" step in Make, n8n, and Zapier.
Connect the Apify MCP server once (configuration in the developer section below), and from then on just ask in plain English:
What your assistant can get back from a successful surface:
| Description | Author | Plays | Likes | Duration |
|---|---|---|---|---|
| 10-min full body, no equipment | @blogilates | 8.3M | 920K | 60s |
| Morning stretch routine | @doctormike | 4.1M | 510K | 45s |
Follow up naturally — "which ones have over 5M plays?" or "show me just the authors and likes".
More Actors like this
Need YouTube, Reddit, TikTok Ads, or another vertical? Use a dedicated Actor below for structured fields. Stay on TikTok Scraper for hashtags, profiles, search, and video URLs.
Social & Content (closest matches)
- YouTube Research Scraper — long-form videos, channels, search & transcripts
- YouTube Shorts Scraper
- Reddit Scraper
- Hacker News Scraper
- TikTok Ads Scraper
Prefer a dedicated site scraper?
If your target has a specialized Actor below, use that first — usually cheaper and more structured than a generic URL scrape.
Jobs & Freelance
- LinkedIn Jobs Scraper
- Indeed Jobs Scraper
- Upwork Jobs Scraper
- Glassdoor Scraper
- Fiverr Gigs Scraper
- Bayt Jobs Scraper
E-commerce
- Walmart Product Scraper
- Amazon Search Scraper
- Shopee Search Scraper
- Etsy Scraper
- SHEIN Product Scraper
- Temu Product Scraper
- Target Product Scraper
- Allegro Scraper
Real Estate
- Zillow & Zumper Scraper
- Realtor.com Scraper
- Apartments.com Rental Scraper
- Rightmove Scraper
- Idealista Scraper
- realestate.com.au Scraper
Travel & Stays
Ads Intelligence
Local & Maps
General tools
→ See the full catalog in Related Actors below, or browse apify.com/lentic_clockss.
How to use (no code required)
- Click "Try for Free" at the top of this page
- Pick a scrape mode — Hashtag, User profile, Search, or specific Video URLs
- Enter the hashtags, usernames, keywords, or video links you want
- Set how many results you want (safe default 1, up to 1,000)
- (Optional) Turn on "Download videos" if you want the actual video files
- Click Start. Opened Profile identity and single Video Detail targets produce Dataset rows ready for Excel, CSV, or JSON. A slider-gated Hashtag, Search, or Profile posts target can fail without rows.
Pick a mode, enter your targets, and download successful rows. Availability is surface-specific: a visible profile identity or single video can work while the same session's Search, Hashtag, or profile posts grid is blocked.
No TikTok account is used on the currently opened guest Profile identity and single Video Detail surfaces. TikTok can still present a slider challenge; the Actor does not log in, solve it, or use your account.
At the listed per-result price, $5 of Apify credit can pay for up to about 2,500 successfully emitted videos. Gated runs can finish without result rows.
What you get back
Each video comes back as one row in a table. Here's everything you'll see:
- Video description with all hashtags and emojis as posted
- Engagement metrics: play count, like count, comment count, share count, and save/bookmark count
- Author info: username, display name, avatar URL, and verified status
- Video details: duration (seconds), resolution (width × height), cover image URL, and direct video link
- Music: song title and artist name
- Metadata: creation timestamp, location tag (if set), and scrape timestamp
- Video file (when download is enabled): a permanent download URL stored in Apify's cloud
For user profile scrapes, you also get the full profile: follower count, following count, total likes received, video count, bio, and verified status.
Lead and contact fields
Lead enrichment is on by default (enrichDetails: true). Every video, profile,
or comment row keeps the existing TikTok fields and includes the complete lead
shape below.
| Field | Type | TikTok meaning and measured source |
|---|---|---|
phones | [{value, type, e164?}] | Public phone values conservatively parsed from visible profile text when present. No valid phone was found on the opened OpenAI profile or video sample; TikTok IDs and slider/session numbers are rejected. |
emails | [{value, type}] | Public email addresses from visible profile text. The opened @openai sample contained no email, so its row uses an empty array plus leadAbsences.emails. |
address | {street, unit, locality, region, postalCode, country, full} | A public postal address when one is actually present. unit is the suite, apartment, or door number. The measured samples had no street address, and video locationCreated=US is not promoted to this object. |
geo | {lat, lng} or null | Verified coordinates that supplement an address. No coordinates were verified in the accepted sample. A country code or content region is not a coordinate. |
person | {name, role?} or null | The public video or comment author identity, for example {name: "eriondedja12", role: "author"}. A handle is an entity clue, not a claim that a legal name or private contact is known. |
org | {name, id?} or null | A public profile organization and TikTok user ID when the profile represents an organization, for example OpenAI with user ID 7256178298626032683. Ordinary video rows can leave it null with an absence reason. |
web | {website, socials[]} or null | The decoded profile bio website plus canonical TikTok profile URLs. Measured examples are https://github.com/openai/birdingpal, https://www.tiktok.com/@openai, and https://www.tiktok.com/@eriondedja12. |
leadSource | search|detail|entity|contact|reveal-xhr | The surface that supplied the clue. The accepted video row uses detail; a profile identity row uses entity. Gated search/tag pages are not relabeled as a successful detail source. |
leadReveal | visible|click|xhr|gated|image|absent | How the clue was obtained. Hydrated profile/video identity uses visible; a blocked surface is reported as gated or fails without emitting a fake empty row. |
leadAbsences | object/map | Per-field reason for an empty or null value. Reasons use the measured scope, such as 本站无(当前 video detail 样本), 闸门锁, or 未验证, instead of silently omitting the field. |
The Dataset views expose all ten lead fields as top-level columns, while the schema also documents the nested address, person, organization, and web subfields.
Reveal and enrichment cost
- Public Profile identity and single Video Detail are read from TikTok's hydrated guest pages. Each target can require one browser page acquisition, so more profiles or video URLs increase run time and anti-bot exposure.
- No "show phone", "show email", or "show address" control was observed on the
opened guest surfaces (
revealControls=[]). The worker therefore makes no extra reveal click and no reveal-XHR request. It never invents a hidden contact endpoint. - Search, Hashtag, and Profile post grids currently hit a slider challenge. The worker does not retry that deterministic gate, solve the slider, or substitute rows from another surface. A gated request can therefore fail without billable result rows.
- Video file download is separate from lead enrichment. Enabling
downloadVideosadds media transfer and storage time, but it does not reveal additional phone, email, address, person, or organization data.
Honest limitations
- The measured guest evidence covers the
@openaiprofile and video7653433309749382430. Phone, email, street/unit address, and coordinates were absent on those opened samples. This is not a promise that every TikTok profile permanently lacks those values. personcan be a public author handle rather than a legal name or direct outreach contact.orgis only populated when the current profile evidence supports an organization identity.- Search, Hashtag, and Profile post grids were slider-gated on 2026-09-09. Public Profile identity, Profile playlists, Home hydration, and single Video Detail were separately opened. One gated sub-surface does not make a visible profile entity empty, and one visible profile does not prove all surfaces are available.
- TikTok's
locationCreatedcontent label is not a street address, door number, or latitude/longitude. It remains an existing content field and is not copied intoaddressorgeo. - A secondary locale/market, click-only contact flow, and GraphQL lead schema
were not verified. These gaps remain
未验证; HTTP 200 platform shells, footer links, Help pages, and challenge tokens are not treated as profile contacts.
Each result set comes back as a table you can download as Excel, CSV, or JSON, or pipe into Google Sheets, Airtable, or any downstream tool through Zapier or Make.
Data sources
Data comes from TikTok's public guest web interface when the requested surface exposes a valid profile or video business entity. Every run is live, so TikTok can show data, a platform shell, or a slider challenge at that moment.
The Actor accepts public profile, video, hashtag, and search inputs, but current validation covered a CA-en guest context and one US-labeled video entity. Secondary locales and markets remain unverified. Public Profile identity and single Video Detail were opened; Search, Hashtag, and Profile posts were slider-gated on 2026-09-09.
Free Apify plan limits (set by this Actor's developer)
If your Apify account is on the free plan, this Actor applies the following limits so you can evaluate it without unlimited usage:
| Limit | Free Apify plan | Paid Apify plan |
|---|---|---|
| Runs of this Actor | 10 runs total | Unlimited |
Results per run (maxResults) | Up to 1,000 | Up to 1,000 |
These caps are enforced by the Actor developer (not Apify platform errors). When you hit the 10-run limit, the run finishes gracefully with a clear status message asking you to upgrade. Paying Apify users are not subject to the run cap.
Pricing
Pay per video. No subscription.
| What triggers a charge | Cost |
|---|---|
| Actor start (each run) | $0.00005 (effectively free) |
| Each video scraped | $0.002 |
| Video file download (optional) | Uses Apify storage — typically pennies per video |
To give you a feel for real-world costs:
Real-world cost examples:
| Scenario | Videos | Total cost |
|---|---|---|
| Quick hashtag check | 50 | $0.10 |
| Competitor account audit | 200 | $0.40 |
| Niche content research | 500 | $1.00 |
| Hashtag trend analysis, when the surface is available | 1,000 | $2.00 |
The cost scales linearly. No tier thresholds, no surprise jumps.
$5 free Apify credit can pay for up to ~2,500 successfully emitted videos at the listed result price. Actual coverage depends on the requested surface; blocked Search or Hashtag runs can fail without rows.
How this compares:
| Tool | Price | What you get | What you don't get |
|---|---|---|---|
| Pipiads | $77–$263/mo | TikTok ad intelligence dashboard | Monthly subscription, no raw data export, focused on ads only |
| EnsembleData | $100–$1,400/mo | TikTok API with daily unit limits | Monthly subscription, unit-based quota |
| Bright Data TikTok | $2.50/1K records ($250 minimum) | Raw dataset | $250 minimum buy-in, static snapshot |
| Other Apify TikTok scrapers | $0.30–$2.00/1K | TikTok search/hashtag data | Some lack video download, profile data, or 4-mode flexibility |
| This Actor | $0.002/video | 4 modes + video download + full engagement + profile data, pay-per-use | — |
No subscription. No daily quota. $0.002 per video. Start there.
Connect to your tools
Use this Actor from any of the major no-code and automation tools:
| Platform | How to connect |
|---|---|
| Make.com | Search "Apify" → "Run Actor" → use Actor ID lentic_clockss/tiktok-scraper |
| n8n | Add Apify node → "Run Actor" → same Actor ID |
| Zapier | Apify integration → "Run Actor" trigger |
| ChatGPT / Claude / Cursor | Connect via Apify's MCP endpoint — your AI assistant calls this Actor directly |
| LangChain, Python, custom code | Via Apify SDK or direct API call |
The most common setups:
- With ChatGPT or Claude: connect once via MCP, then request a public profile or direct video. Search requests return a table only when TikTok exposes that surface to the guest session.
- With Make or Zapier: schedule runs and pipe only successful rows into Google Sheets or Slack. Monitor failed/gated status so it is not mistaken for a genuine zero-result period.
When to use something else
| If you need… | Use this instead |
|---|---|
| TikTok ad creatives specifically (not organic content) | Pipiads — it's built for TikTok advertising intelligence |
| YouTube videos or Shorts | YouTube Research Scraper or YouTube Shorts Scraper |
| Facebook / Instagram ad creatives | Facebook Ad Library Scraper |
| Local business data | Google Maps Scraper |
| Scraping arbitrary websites behind anti-bot protection | Stealth Web Scraper |
FAQ
Q: Do I need a TikTok account? A: No. This Actor uses TikTok's public web interface — no login, no session cookie, no account risk.
Q: How fresh is the data? A: Every successful row comes from a live scrape. A current slider challenge can block the requested surface, so freshness does not guarantee availability.
Q: Can I download the actual video files? A: Yes. Turn on "Download videos" and the Actor saves each video to Apify's Key-Value Store with a persistent download URL. TikTok's own video URLs (playUrl) expire after a few hours — the downloaded copy doesn't.
Q: What engagement metrics do I get? A: Play count, like count, comment count, share count, and save/bookmark count — five engagement signals per video, all in one row.
Q: Can I get 1,000+ videos in one run?
A: The schema max is 1,000 per run. Free Apify plan users are also limited to
10 total runs of this Actor. maxResults=1,000 is a cap, not a guarantee:
slider-gated Hashtag, Search, or Profile posts surfaces can fail without rows.
Q: Why did my free-plan run stop with a free-tier message? A: Free Apify plan users get 10 runs of this Actor and up to 1,000 results per run. These limits are set by the Actor developer (not Apify). When you hit the run cap, the run finishes with a clear status message — it is not a platform bug. Upgrade to a paid Apify plan for unlimited runs.
Q: Can I get profile data (followers, bio) without scraping videos? A: Yes, when the public Profile identity is available. The profile summary (followers, following, total likes, video count, bio, verified status) is a separate record. Its posts grid is a separate surface and can be slider-gated.
Q: Can I run this on a schedule? A: Yes. Use Apify's built-in scheduler or trigger from Make, Zapier, or n8n. Monitor run status as well as row counts, because a blocked surface is an acquisition failure, not a genuine zero-result period.
Related Actors
All 77 public Actors from [lentic_clockss]. Click a name to open the Store detail page.
Jobs & Freelance
- LinkedIn Jobs Scraper
- Bayt Jobs Scraper
- Fiverr Gigs Scraper
- Freelancer.com Scraper
- Glassdoor Scraper
- Himalayas Jobs Scraper
- Indeed Jobs Scraper
- Jobicy Remote Jobs Scraper
- RemoteOK Jobs Scraper
- SEEK Jobs Scraper
- Upwork Jobs Scraper
Real Estate
- Zillow & Zumper Scraper
- Realtor.com Scraper
- 99.co Scraper
- Realtor.com Agents Scraper
- Apartments.com Rental Scraper
- Bayut Scraper
- Craigslist Housing Scraper
- Daft.ie Scraper
- Dot Property Scraper
- FINN.no Scraper
- Funda Scraper
- Hepsiemlak Scraper
- Idealista Scraper
- Immobiliare.it Scraper
- ImmoScout24 Scraper
- Naver Land Scraper
- OpenSooq Scraper
- Otodom Scraper
- Property Finder Scraper
- PropertyGuru Scraper
- realestate.com.au Scraper
- Realtor.ca Scraper
- Rightmove Scraper
- SeLoger Scraper
- SUUMO Scraper
- Zillow Group Scraper
E-commerce
- Shopee Search Scraper
- E-commerce Scraper
- 1688 Global Product Search Scraper
- Allegro Scraper
- Amazon Search Scraper
- ASOS Product Scraper
- Cdiscount Product Scraper
- Costco Product Scraper
- Coupang Product Scraper
- Etsy Scraper
- Lazada Scraper
- MercadoLibre Scraper
- Mercari Japan Scraper
- Rakuten Japan Scraper
- SHEIN Product Scraper
- Target Product Scraper
- Temu Product Scraper
- Walmart Product Scraper
Travel & Stays
- Booking.com & Airbnb Scraper
- Agoda Scraper
- Airbnb Listings Scraper
- Booking.com Hotels Scraper
- Despegar Scraper
- Expedia Scraper
- Traveloka Scraper
- Travelstart Flights Scraper
- Trip.com Scraper
- TripAdvisor Scraper
Social & Content
Ads Intelligence
Local & Maps
General Tools
→ Browse the full profile: apify.com/lentic_clockss
Also Available
- Direct API:
https://opendata.best/api/v1/data— use with any HTTP client and your API key - Postman Collection: Fork and test — pre-built requests with example responses
- GitHub: Collection source files — import JSON into any API client