TikTok Scraper Pro avatar

TikTok Scraper Pro

Pricing

from $1.70 / 1,000 results

Go to Apify Store
TikTok Scraper Pro

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

Badr Bouargan

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 days ago

Last modified

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

  1. Fill in any of Search queries, Hashtags, Profiles or Post URLs.
  2. Set Videos per hashtag or profile (it also caps each search), and optionally profile sections, followers / following, filters and downloads.
  3. 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.

EventFreeStarterScaleBusiness
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 (commentsPerPost is 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 ApifyClient
client = 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-pro and send each row to Google Sheets, Airtable, a CRM or Slack.
  • AI agents (MCP): add https://mcp.apify.com/?actors=badr_xba/tiktok-scraper-pro to 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 seeWhat to do
BLOCKED, RATE_LIMITED or FEED_UNAVAILABLE in FAILED_INPUTSTikTok throttled the address. Switch Apify Proxy on and run again: every retry then leaves from a new address.
SEARCH_QUERY_NOT_FOUNDTikTok returned nothing for that keyword: try a broader one, or the matching hashtag.
A profile row but no videosPrivate account (PRIVATE_ACCOUNT), no videos, or Collect the videos of each profile is off.
PROFILE_FOLLOWERS_EMPTY / PROFILE_FOLLOWING_EMPTYThe owner hid the list, or TikTok refused it to that session: run again.
Fewer posts than askedYour date, popularity or pinned filters dropped the rest (see RUN_SUMMARY), or the source has fewer videos.
INVALID_INPUTRead 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.