TikTok Public Post Scraper
Pricing
from $2.99 / 1,000 posts
TikTok Public Post Scraper
Scrape visible public TikTok video cards from a hashtag or search page with Playwright and return captions, creators, visible engagement text, music, duration, and thumbnails.
Pricing
from $2.99 / 1,000 posts
Rating
0.0
(0)
Developer
w3crawler
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
TikTok Public Search Video Scraper
Scrape visible public TikTok video cards from a hashtag page or TikTok search page. The Actor uses Playwright, bounded scrolling, and public DOM selectors to extract video IDs, URLs, creator information, captions, visible engagement text, music, duration, and thumbnails.
Despite the historical directory name, this implementation does not accept individual post URLs. It is a public search/hashtag card scraper and does not use account cookies, access private content, or bypass authentication, CAPTCHAs, or other access controls.
Example input
{"query": "street food","maxItems": 10,"proxyConfiguration": {"useApifyProxy": true}}
Hashtag mode:
{"hashtag": "dance","maxItems": 10}
If both hashtag and query are supplied, hashtag mode takes precedence.
Example output
{"recordType": "tiktok-video","status": "success","dataAvailable": true,"source": "tiktok.com","provenance": "public_search_or_hashtag_page","sourceTransport": "playwright","extractionMethod": "search_card_dom","sourceUrl": "https://www.tiktok.com/search?q=street%20food","videoId": "1234567890","url": "https://www.tiktok.com/@creator/video/1234567890","authorUsername": "creator","description": "A public caption","playCount": "12K","likeCount": "900","commentCount": "45","shareCount": "20","searchType": "search","scrapedAt": "2026-08-18T00:00:00.000Z"}
When TikTok returns a challenge, the page has no recognizable cards, or the request fails, a tiktok-post-access-diagnostic record is written. The OUTPUT key-value record reports the final status.
Input
query(string): Public TikTok search phrase, maximum 120 characters.hashtag(string): Hashtag without the leading#; letters, numbers, underscores, and hyphens are accepted. Hashtag takes precedence.maxItems(integer, 1–200): Maximum unique visible video records. Default:30.proxyConfiguration(object, optional): Apify Proxy configuration for public page access.
At least one of query or hashtag is required.
Output and storage
Video records and access diagnostics are written to the default dataset. The Output tab links to the dataset and to OUTPUT in the default key-value store. A bounded debug_html key may also be written when a page is blocked or empty.
OUTPUT contains the selected public URL, search mode, query/hashtag, requested limit, stored video count, failed URLs, empty-page count, blocked-page count, and final status.
Limitations and cost
The Actor reads visible cards after bounded scrolling. TikTok may return different markup, partial results, or a challenge page. Engagement values remain visible text such as 12K or 1.2M; they are not silently converted to numbers.
Browser compute and proxy traffic are the main costs. Start with a small maxItems value and avoid high-frequency retries.
FAQ and disclaimer
Does this Actor scrape an individual post URL?
No. Use a public search phrase or hashtag; the current implementation extracts cards from that result page.
Why are there no video rows?
TikTok may have returned a challenge, an empty page, or markup that no longer matches the selectors. Check the diagnostic and OUTPUT record.
Does it bypass bot detection?
No. It detects challenge pages and records them; it does not solve or defeat them.
Use results only for a legitimate purpose, follow TikTok terms and robots guidance, and review privacy and data-protection obligations. For support, use the Actor Issues tab.