TikTok Scraper Pro
Pricing
from $1.70 / 1,000 results
TikTok Scraper Pro
Scrape TikTok videos from keyword searches, hashtags, profiles and video URLs: views, likes, shares, saves, comments, captions, music, author stats, with optional comments, video downloads and subtitles. No login. Pay per result.
Pricing
from $1.70 / 1,000 results
Rating
0.0
(0)
Developer
Badr Bouargan
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 days ago
Last modified
Categories
Share
TikTok Scraper Pro – Search, Profiles, Followers & Videos
Scrape TikTok without an account or API key: videos from keyword searches, hashtags, profiles and video URLs, with views, likes, shares, saves, comments count, captions, hashtags, music and author stats. Add profile search, reposts, stories, followers and following lists, MP4 downloads and subtitles when you need them. Pay only for results — failed inputs are never billed.
What can it do?
- 🔍 Search TikTok by keyword: videos ranked by TikTok, or matching profiles
- #️⃣ Hashtags: hashtag views plus its videos
- 😎 Profiles: followers, following, likes, bio, bio link, verification — plus the profile's videos, reposts and live story
- 👥 Followers / following lists of a profile (add-on), each account with its own stats
- 🔗 Video URLs: every field of a video, plus related videos
- 📅 Date filter, ⭐ popularity filter (minimum views or likes, maximum likes), 📌 exclude pinned posts
- ⬇️ Download videos, covers, avatars, sound covers, subtitles and slideshow images to the run's storage
- 🌍 Scrape as in a country: read TikTok from addresses in a chosen country
- Export to JSON, CSV, Excel, XML or HTML, or read through the API, webhooks, Make, Zapier, n8n and the Apify MCP server
Data you get per video
id, text (caption), textLanguage, createTimeISO, webVideoUrl, playCount, diggCount (likes), shareCount, collectCount (saves), commentCount, repostCount, hashtags, mentions, isAd, isSponsored, isPinned, isSlideshow, locationCreated, effectStickers, authorMeta (name, nickname, verified, bio, bio link, followers, following, likes, videos), musicMeta (sound name, author, original, cover, play URL), videoMeta (duration, size, definition, cover, subtitle links) — plus searchQuery, searchHashtag, searchProfile or fromProfileSection telling you where it came from.
Followers / following rows carry the account's own stats plus connectionType and connectedTo (the profile they are linked to).
How to use it in 3 steps
- Fill in any of Search queries, Hashtags, Profiles or Post URLs.
- Set Videos per hashtag or profile (it also caps each search), and optionally profile sections, followers / following, filters and downloads.
- Click Start, then open the Posts overview table or export JSON, CSV or Excel.
The prefilled run (one post, #cooking and @nasa, 10 videos each) finishes in about a minute and costs about nine cents on the Free plan.
Paste inputs the way you have them: links with ?is_from_webapp=… tracking, vm.tiktok.com or tiktok.com/t/ short links, mobile and embed links, bare video IDs, @handles, #tags, or a comma-separated list on one line. A profile or hashtag link put in the wrong list (even in Search queries) is moved to the right one; the same video, profile or hashtag given twice is read (and billed) once. A line that is none of these is listed in FAILED_INPUTS with the reason, never billed, and the run carries on.
Input example
{"searchQueries": ["pasta recipe"],"hashtags": ["cooking"],"profiles": ["nasa"],"profileScrapeSections": ["videos", "reposts"],"maxFollowersPerProfile": 50,"resultsPerPage": 20,"excludePinnedPosts": true}
Output example
{"resultType": "post","id": "7534061113365859586","text": "🤣🤣🤣 #comeramabanana","createTimeISO": "2025-08-02T18:45:03.000Z","webVideoUrl": "https://www.tiktok.com/@bruniela_/video/7534061113365859586","playCount": 55700,"diggCount": 5344,"shareCount": 701,"collectCount": 291,"commentCount": 24,"authorMeta": { "name": "bruniela_", "fans": 51200, "verified": false },"musicMeta": { "musicName": "som original", "musicAuthor": "fox_rus0", "musicOriginal": true },"videoMeta": { "duration": 16, "definition": "540p" },"searchQuery": "banana"}
Every run also writes RUN_SUMMARY and FAILED_INPUTS. Inputs that give nothing are listed there with a code — NOT_FOUND, PRIVATE_ACCOUNT, SEARCH_QUERY_NOT_FOUND, SEARCH_QUERY_PROFILE_NOT_FOUND, PROFILE_REPOSTS_EMPTY, PROFILE_STORIES_EMPTY, PROFILE_FOLLOWERS_EMPTY, PROFILE_FOLLOWING_EMPTY, INVALID_INPUT — and are never billed.
Pricing
Pay per event. Platform usage is included. Add-ons are billed only when you turn them on.
| Event | Free | Starter | Scale | Business |
|---|---|---|---|---|
| Result (one video, profile, hashtag, follower or following row) | $3.70 / 1,000 | $3.00 / 1,000 | $2.30 / 1,000 | $1.70 / 1,000 |
| Add-on: Date filter (per video kept) | $1.30 / 1,000 | $1.00 / 1,000 | $0.80 / 1,000 | $0.60 / 1,000 |
| Add-on: Popularity filter (per video kept) | $1.30 / 1,000 | $1.00 / 1,000 | $0.80 / 1,000 | $0.60 / 1,000 |
| Add-on: Follower / Following (per account) | $4.00 / 1,000 | $3.00 / 1,000 | $2.00 / 1,000 | $1.50 / 1,000 |
| Add-on: Video download (per MP4 saved) | $1.30 / 1,000 | $1.00 / 1,000 | $0.80 / 1,000 | $0.60 / 1,000 |
| Add-on: Scrape as in country (per video) | $1.30 / 1,000 | $1.00 / 1,000 | $0.80 / 1,000 | $0.60 / 1,000 |
| Actor start (per GB of run memory, once per run) | $0.001 | $0.001 | $0.001 | $0.001 |
Example: 100 videos from a search on the Free plan = $0.37, plus a start fee of a few tenths of a cent. Cap any run with Maximum posts in total or a maximum cost per run.
What it does not do
TikTok keeps some data for signed-in users, and some features need a paid AI service. Not included, never billed:
- Comments of videos (
commentsPerPostis accepted and ignored); - AI transcription, AI video description and AI summary — TikTok's own subtitles are available with Download the subtitles;
- video search sorting and date range (search returns TikTok's ranking) — use the date and popularity filters instead;
- profile sorting by popularity / oldest (profiles are read newest first).
Follower and following lists are only served to residential addresses: the Actor switches to them automatically for that add-on. Private accounts return their counters but no videos or lists.
Use it via API
Python (pip install apify-client):
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("badr_xba/tiktok-scraper-pro").call(run_input={"searchQueries": ["pasta recipe"],"profiles": ["nasa"],"resultsPerPage": 20,"scrapeProfileVideos": True,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["resultType"], item.get("webVideoUrl"), item.get("playCount"))
JavaScript (npm install apify-client):
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('badr_xba/tiktok-scraper-pro').call({searchQueries: ['pasta recipe'],searchSection: '/user',maxProfilesPerQuery: 10,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
cURL (runs the Actor and returns the rows in one call):
curl -X POST "https://api.apify.com/v2/acts/badr_xba~tiktok-scraper-pro/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"searchQueries": ["pasta recipe"], "resultsPerPage": 10}'
Integrations
- Make, Zapier and n8n: use the Apify app or node with
badr_xba/tiktok-scraper-proand send each row to Google Sheets, Airtable, a CRM or Slack. - AI agents (MCP): add
https://mcp.apify.com/?actors=badr_xba/tiktok-scraper-proto Claude, Cursor or any MCP client ("find 20 TikTok videos about pasta recipes with over 100k views"). - Schedules and webhooks: monitor keywords, hashtags and creators daily. A run ends as Failed only when TikTok refused every request and nothing was saved; wrong inputs end normally, with their reasons in
FAILED_INPUTS.
Troubleshooting
| What you see | What to do |
|---|---|
BLOCKED, RATE_LIMITED or FEED_UNAVAILABLE in FAILED_INPUTS | TikTok throttled the address. Switch Apify Proxy on and run again: every retry then leaves from a new address. |
SEARCH_QUERY_NOT_FOUND | TikTok returned nothing for that keyword: try a broader one, or the matching hashtag. |
| A profile row but no videos | Private account (PRIVATE_ACCOUNT), no videos, or Collect the videos of each profile is off. |
PROFILE_FOLLOWERS_EMPTY / PROFILE_FOLLOWING_EMPTY | The owner hid the list, or TikTok refused it to that session: run again. |
| Fewer posts than asked | Your date, popularity or pinned filters dropped the rest (see RUN_SUMMARY), or the source has fewer videos. |
INVALID_INPUT | Read the reason next to it: usually a typo, a handle with spaces, or a link to another site. |
FAQ
Do I need a TikTok account? No.
Is it legal? The Actor only reads public data. It can include personal data protected by laws such as the GDPR: collect it only for a legitimate purpose. TikTok's robots.txt disallows its search pages; use search responsibly, or rely on hashtags and profiles.
Something does not work? Open an issue on the Issues tab with the run ID and your input.