TikTok TikTok

TikTok Scraper: extract videos, profiles, hashtags and comments

Apidojo TikTok Scraper is a no-login TikTok data API that collects videos, profiles, hashtags, sounds, places and keyword search results. It costs $0.30 per 1,000 posts, returns 460 posts per second in the published benchmark, targets any country by ISO code, and exports JSON, CSV or Excel.

Free Apify plan: 5 runs a month, 10 items a run. No credit card.

Open record ↵4 queries
$0.30
per 1,000 posts
460/s
posts, measured
24K
users on Apify
99.86%
run success, 30 days

Users and run success are the six TikTok scrapers combined. Read on 21 September 2026.

What are the TikTok Scraper specifications?

TikTok Scraper runs on the Apify platform and accepts 7 TikTok URL types plus a free-text keyword search with 3 sort modes. Each video returns 11 top-level fields plus nested channel, video, song and subtitle objects, exported as JSON, CSV or Excel.

TikTok Scraper specificationsapidojo/tiktok-scraper
Data surfaces on TikTokVideos, photo posts, profiles, hashtags, sounds, places and keyword search
InputsstartUrls, keywords, sortType, dateRange, location, maxItems, includeSearchKeywords, customMapFunction
Price$0.30 per 1,000 posts, the lowest per-item price in the Apidojo catalogue
Speed460 posts/sec measured on the published benchmark; 400–600 is the stated range
Sort modesRELEVANCE · MOST_LIKED · DATE_POSTED, keyword search only, ignored on startUrls
Date rangesALL_TIME · YESTERDAY · THIS_WEEK · THIS_MONTH · LAST_THREE_MONTHS · LAST_SIX_MONTHS
Country targetinglocation takes an ISO 3166-1 alpha-2 code, for example US, GB, DE or TR. Default US
Minimum per input10 posts per query or start URL. Smaller inputs can trip the rate limiter
Output shapingcustomMapFunction, one synchronous JavaScript function per item, not for filtering
Export formatsJSON, JSONL, CSV, Excel, XML, HTML table, API
Login, proxy or API keyNone required
Free planDemo mode, 5 runs per month, 10 items per run
IntegrationsApify REST API, Python and JavaScript clients, n8n, Make, Zapier, webhooks, MCP
MaintenanceDaily, by a dedicated engineering team

What does TikTok Scraper output look like?

TikTok Scraper output is one JSON object per video. Each object carries the video ID, title, five engagement counts, the hashtag array, both upload timestamps, and nested channel, video, song and subtitle objects.

Choose an input type to see its output

Runs onapidojo/tiktok-scraper

The only input that takes sortType, dateRange and a country. Everything else is a URL.

Input

{
  "keywords": ["skincare routine"],
  "sortType": "MOST_LIKED",
  "dateRange": "THIS_MONTH",
  "location": "US",
  "includeSearchKeywords": true,
  "maxItems": 1000
}

Output

{
  "views": 101399,
  "likes": 7420,
  "comments": 201,
  "shares": 1236,
  "bookmarks": 7195,
  "hashtags": ["digitalproducts", "tiktoktutorial"]
}

Runs onapidojo/tiktok-scraper

A creator URL returns their videos, each carrying the full channel object.

Input

{
  "startUrls": ["https://www.tiktok.com/@gordonramsayofficial"],
  "maxItems": 500
}

Output

"channel": {
  "id": "6761142551312729093",
  "name": "jackson",
  "username": "jacksonstips",
  "bio": "this is my only account",
  "verified": true,
  "url": "https://www.tiktok.com/@jacksonstips",
  "followers": 566322,
  "following": 1749,
  "videos": 1114,
  "likes": 3722598
}

Runs onapidojo/tiktok-scraper

Every video published with one sound, with the track metadata on each item.

Input

{
  "startUrls": [
    "https://www.tiktok.com/music/original-sound-7297730198175402784"
  ],
  "maxItems": 1000
}

Output

"song": {
  "id": 7353782204394245000,
  "title": "original sound - jacksonstips",
  "artist": "jacksonstips",
  "album": null,
  "duration": 223,
  "cover": "https://p16-amd-va.tiktokcdn.com/..."
}

Runs onapidojo/tiktok-scraper

Returned wherever the creator published or auto-generated captions. A WebVTT file per language.

Input

{
  "startUrls": [
    "https://www.tiktok.com/@billieeilish/video/7050551461734042926"
  ]
}

Output

"subtitleInformation": [
  {
    "language_code": "en",
    "lang": "eng-US",
    "caption_format": "webvtt",
    "caption_length": 4813,
    "is_auto_generated": false,
    "is_original_caption": true,
    "url": "https://v16-cla.tiktokcdn.com/..."
  }
]

What the fields are

  • Video content

    ID, title, hashtag array, both upload timestamps, post URL, dimensions, duration, cover and thumbnail

  • Engagement

    Views, likes, comments, shares and bookmarks

  • Creator profile

    Username, display name, bio, avatar, verification, followers, following, video count, total likes

  • Sound and subtitles

    Song ID, title, artist, album, duration and cover; subtitle language, format and WebVTT file URL

Field dictionary30 fields
FieldTypeExample valueGroup
idstring7353781970163272993Content
titlestringfull tutorial for diggy proddiesContent
hashtagsarray of strings["digitalproducts","tiktoktutorial"]Content
uploadedAtinteger (Unix)1712185805Content
uploadedAtFormattedstring (ISO 8601)2024-04-03T23:10:05.000ZContent
postPagestringhttps://www.tiktok.com/@user/video/7353…Content
viewsinteger101399Engagement
likesinteger7420Engagement
commentsinteger201Engagement
sharesinteger1236Engagement
bookmarksinteger7195Engagement
channel.usernamestringjacksonstipsCreator
channel.namestringjacksonCreator
channel.idstring6761142551312729093Creator
channel.biostringCreator bio, contact line included where publishedCreator
channel.followersinteger566322Creator
channel.followinginteger1749Creator
channel.videosinteger1114Creator
channel.likesinteger3722598Creator
channel.verifiedbooleantrueCreator
video.durationfloat223.909Content
video.widthinteger576Content
video.heightinteger1024Content
video.urlstringhttps://v45.tiktokcdn-eu.com/…Content
song.titlestringoriginal sound - jacksonstipsSound
song.artiststringjacksonstipsSound
song.durationinteger223Sound
subtitleInformation[].language_codestringenSubtitles
subtitleInformation[].is_auto_generatedbooleanfalseSubtitles
subtitleInformation[].urlstring (WebVTT)https://v16-cla.tiktokcdn.com/…Subtitles

Which Apidojo TikTok scraper fits your job?

Apidojo publishes 6 TikTok scrapers. TikTok Scraper collects videos from keyword searches, profiles, hashtags, sounds and places at $0.30 per 1,000, and the Profile, Comments, Location, User and Music scrapers each handle one job at the same per-item rate.

Start here

TikTok Scraper

apidojo/tiktok-scraper
10.9K users · 4.4 (30)

The main scraper. Collects videos from keyword searches, profiles, hashtags, sounds, places and single video or photo URLs, with three sort modes and ISO country targeting.

  • Keyword search with 3 sort modes
  • Profiles, hashtags, sounds, places
  • Video, engagement, creator, sound and subtitle fields
  • 460 posts per second measured
  • Country targeting by ISO code
  • Minimum 10 posts per input

$0.30 / 1,000 postsPay per result, no per-run fee

TikTok scrapers for a single job

How much does TikTok Scraper cost?

TikTok Scraper costs $0.30 per 1,000 posts, billed per result with no per-run fee, the lowest per-item price in the Apidojo catalogue. Scraping 100,000 TikTok videos costs $30.00. The Location, User, Music and API-variant scrapers add a query fee between $0.003 and $0.006.

TikTok Scraper

$0.30per 1,000 posts

  • Pay per result, no per-run fee
  • The lowest per-item price in the catalogue
  • Minimum 10 posts per input
Run your first query
Query fees on the single-job scrapers
ScraperQuery feePer item
TikTok Location Scraper$0.006 per location (around 20 posts free)$0.30 / 1K
TikTok User Scraper$0.005 per profile, follower or following query$0.50 / 1K
TikTok Music Scraper$0.003 per sound (around 11 posts free)$0.30 / 1K
What a real job costsArithmetic shown
JobScraperCalculationCost
100,000 videos from a hashtagTikTok Scraper100,000 × $0.0003$30.00
Keyword search, 5 terms × 2,000 videosTikTok Scraper10,000 × $0.0003$3.00
200 creators × 100 videos eachProfile Scraper20,000 × $0.0003$6.00
50,000 comments across 500 videosComments Scraper50,000 × $0.0003$15.00
30 trending sounds, 500 videos eachMusic Scraper30 × $0.003 + 14,670 × $0.0003$4.49
25 city places, 1,000 videos eachLocation Scraper25 × $0.006 + 24,500 × $0.0003$7.50

Prices apply to Apify paid plans. The free plan runs TikTok Scraper in demo mode, 5 runs a month, 10 items a run, no credit card.

How does TikTok Scraper compare with the official TikTok APIs?

TikTok’s official APIs do not serve commercial bulk collection. The Research API is limited to approved researchers, caps at 1,000 requests and 100,000 records per day, and TikTok states plainly that commercial users are not eligible. The Display API returns only the logged-in user’s own account.

Side by sidePer 1,000 items
What you getApidojo TikTok ScraperTikTok Research APITikTok Display API
Who can use itAnyone with an Apify accountApproved researchers onlyAny developer, for their own authenticated users
Commercial useAllowedNot eligible, TikTok states this explicitlyAllowed, own-account data only
Whose data you can readAny public video, profile, hashtag, sound or placePublic videos, comments, follower and following listsOnly the account that logged in
Daily ceilingSet by your Apify plan1,000 requests and 100,000 records per day, reset 00:00 UTC600 requests per minute per endpoint
Time to first resultMinutesWeeks, application review, approval not guaranteedHours, after app setup
Country targetingISO 3166-1 alpha-2 code per runRegion filters inside the queryNot applicable
Cost$0.30 per 1,000 postsNo chargeNo charge
Post or interactNo, read-onlyNo, read-onlyYes, through the Content Posting API

Research API limits from TikTok’s own developer FAQ, read on the snapshot date: 1,000 requests and up to 100,000 records per day, quota resetting at midnight UTC, and a direct statement that creators, advertisers and commercial users are not eligible. A 100,000-video dataset is therefore one full day of the entire Research API quota, assuming the application was approved; the same dataset runs in about four minutes here.

How to scrape TikTok with Apidojo in 4 steps

Scraping TikTok with Apidojo takes 4 steps: open the scraper, enter keywords or TikTok URLs, set the sort mode and country, then run and export. No code, proxy or TikTok account is required.

  1. 01

    Open TikTok Scraper on Apify

    Sign in with a free Apify account. No credit card is needed to run it in demo mode.

  2. 02

    Enter keywords or TikTok URLs

    Type search terms into keywords, or paste profile, hashtag, sound, place, video and photo URLs.

  3. 03

    Set the sort mode and country

    Pick RELEVANCE, MOST_LIKED or DATE_POSTED, add an ISO country code, and cap the run with maxItems.

  4. 04

    Run and export the dataset

    Download JSON, CSV or Excel, or pull the results straight through the Apify API.

Which inputs and filters it accepts

Which inputs and filters it accepts12 entries
InputWhat it doesExample
Profile URLVideos published by a creatortiktok.com/@gordonramsayofficial
Hashtag URLVideos under a tag pagetiktok.com/tag/duet
Sound URLVideos published with a soundtiktok.com/music/original-sound-7297730198175402784
Place URLVideos tagged at a locationtiktok.com/place/New-York-22535796481546927
Search URLResults for a query stringtiktok.com/search?q=Recipes
Video URLOne video with its full field settiktok.com/@billieeilish/video/7050551461734042926
Photo URLOne photo posttiktok.com/@rabbitbrandmy/photo/7553874290735729940
keywordsSearches TikTok for terms instead of URLs["skincare routine", "grwm"]
sortTypeOrders keyword results. No effect on startUrls.RELEVANCE · MOST_LIKED · DATE_POSTED
dateRangeRestricts keyword search to a time windowTHIS_WEEK · LAST_THREE_MONTHS · ALL_TIME
locationRegion-specific results, ISO 3166-1 alpha-2US · GB · DE · TR
includeSearchKeywordsAdds the keyword that found each video to its recordtrue
  • sortType

    MOST_LIKED surfaces the proven formats in a niche; DATE_POSTED surfaces what started in the last hours, which is what trend detection needs. It only applies to keyword runs, to sort a hashtag by likes, search the tag as a keyword instead of pasting its URL.

  • location

    One ISO country code per run. Setting it to DE returns the German results for the same keyword, which makes per-market comparison possible from a single scraper rather than a proxy pool.

How do you call the TikTok Scraper API?

TikTok Scraper runs through the Apify REST API and the official Python and JavaScript clients. A keyword run needs three fields, keywords, sortType and location, and returns the videos as JSON in the same response.

Choose a language
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

# Newest videos about a topic, as served in Germany
run = client.actor("apidojo/tiktok-scraper").call(run_input={
    "keywords": ["protein coffee"],
    "sortType": "DATE_POSTED",
    "location": "DE",
    "maxItems": 2000,
})

for v in client.dataset(run.default_dataset_id).iterate_items():
    save_rate = v["bookmarks"] / max(v["views"], 1)
    print(v["uploadedAtFormatted"], v["views"], round(save_rate, 4))
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });

// Every video published with one sound
const run = await client.actor('apidojo/tiktok-scraper').call({
  startUrls: ['https://www.tiktok.com/music/original-sound-7297730198175402784'],
  maxItems: 1000,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
const creators = new Set(items.map((v) => v.channel.username));
console.log(items.length, 'videos from', creators.size, 'creators');
curl -X POST \
  "https://api.apify.com/v2/acts/apidojo~tiktok-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"keywords":["protein coffee"],"sortType":"MOST_LIKED","location":"US","maxItems":500}'
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com/?tools=apidojo/tiktok-scraper",
      "headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }
    }
  }
}
  • n8n

    A daily DATE_POSTED run feeding a new-video alert.

  • Make and Zapier

    Dataset item into an Airtable creator base.

  • Warehouse

    JSONL into BigQuery or Snowflake.

  • Webhooks

    POST to any URL on run success.

How fast is TikTok Scraper?

TikTok Scraper returns 460 posts per second on the published benchmark, against a stated range of 400 to 600. At the measured rate a 100,000-video dataset finishes in about three minutes and forty seconds.

TikTok Scraper460 posts/sec
Profile Scraper425 posts/sec
Location Scraper400 posts/sec
Music Scraper300 posts/sec
Comments Scraper150 comments/sec
How long a run takes
Dataset sizeAt 460/sec, videosAt 150/sec, comments
10,000 items≈ 22 s≈ 1 min 7 s
100,000 items≈ 3 min 37 s≈ 11 min 7 s
1,000,000 items≈ 36 min≈ 1 h 51 min

Benchmark published on the TikTok Scraper listing, run with identical inputs and resources per input type. Real throughput varies with TikTok response times and the mix of inputs.

10.9K
users on TikTok Scraper
14.4M
TikTok Scraper runs, all time
4.6 / 5
across 86 reviews, six scrapers
6
TikTok scrapers in the family

The 4.6 is weighted by review count across all six TikTok scrapers, so TikTok Scraper’s own 4.4 over 30 reviews is inside it rather than hidden behind a better-rated sibling.

What can you build with TikTok Scraper data?

TikTok Scraper data powers 6 workflows: product trend spotting, creator shortlisting, sound tracking, per-country market reads, comment mining and caption corpora. Each recipe names the input, the metric it computes and where the output goes.

  • 01

    Product trend spotting

    tag/tiktokmademebuyit · DATE_POSTED

    Fields
    bookmarks ÷ views, the save rate, as a purchase-intent signal
    Lands in
    A daily sheet, top 50 by save rate
  • 02

    Creator shortlisting

    keywords: niche term · MOST_LIKED

    Fields
    median views over the last 30 videos against channel.followers
    Lands in
    An Airtable outreach base
  • 03

    Sound tracking

    30 rising sound URLs, weekly

    Fields
    new videos per sound per week
    Lands in
    A campaign audio shortlist
  • 04

    Per-country market reads

    the same keyword × location US, GB, DE, TR

    Fields
    overlap of top videos between markets
    Lands in
    A localisation brief
  • 05

    Comment mining

    Comments Scraper on a brand’s 50 top videos

    Fields
    recurring questions and complaints, clustered
    Lands in
    Product and support teams
  • 06

    Caption corpora

    keywords by topic · subtitleInformation

    Fields
    WebVTT files grouped by language_code
    Lands in
    A transcript dataset for fine-tuning or RAG

What are the limits of TikTok Scraper?

TikTok Scraper operates under 5 documented limits. Each one below states what triggers it and how to work within it.

  • At least 10 posts per input

    Smaller requests run at a loss and can trip the rate limiter.

    Set maxItems to 10 or more, and group small inputs into one run rather than many tiny runs.

  • sortType only affects keyword runs

    It is ignored when the run uses startUrls, so pasting a hashtag URL cannot be sorted by likes.

    Search the hashtag as a keyword with MOST_LIKED instead of pasting its tag URL.

  • dateRange only affects keyword runs

    It uses TikTok search’s own date filter, which does not exist on profile, tag or sound pages.

    For URL runs, filter by uploadedAt after the run, or move the query to keywords.

  • customMapFunction cannot filter

    Dropping items through it breaks pay-per-result billing and is treated as abuse.

    Reshape with the map function, cap volume with maxItems, and scope with location.

  • Public content only

    Private and deleted content cannot be read, and TikTok can change what it serves without notice.

    Open the URL in a logged-out browser first, and start from a known public profile or hashtag to confirm the setup.

TikTok Scraper frequently asked questions

FAQ

Everything else people ask

Fifteen questions about this scraper and its family. Anything about the wider catalogue is answered on the scrapers hub.

All 26 scrapers

Using it

Does TikTok Scraper need a TikTok account or API key?

Neither. It reads public TikTok pages without an account, cookies, proxies or a TikTok developer key. You need only an Apify account.

Can TikTok Scraper return results for one country?

Yes. Set location to an ISO 3166-1 alpha-2 code such as US, GB or DE and the run returns that market’s results for the same query.

How do I get the most-liked TikTok videos for a keyword?

Put the term in keywords and set sortType to MOST_LIKED. Use DATE_POSTED for the newest videos and RELEVANCE for the in-app order.

Can TikTok Scraper scrape one specific video?

Yes. The input accepts single video and photo URLs alongside profile, hashtag, sound, place and search URLs.

Which videos use a particular TikTok sound?

Paste the sound’s music URL into TikTok Scraper, or use TikTok Music Scraper. Every video returned carries the song’s title, artist and duration.

Limits and results

Does TikTok Scraper return video transcripts?

It returns subtitle files wherever a video has captions. Each subtitleInformation entry carries a language code, an auto-generated flag and a WebVTT file URL.

Can TikTok Scraper download TikTok videos?

It returns the video file URL, cover and thumbnail for each post. Republishing those files needs the rights holder’s permission.

What is the bookmarks field?

It counts how many people saved the video. Divided by views it gives a save rate, which tracks purchase intent more closely than likes do.

Can TikTok Scraper get follower lists?

It returns follower and following counts on every creator. Full follower and following lists run on TikTok User Scraper at $0.005 per query plus $0.50 per 1,000 users.

Why did my TikTok run return no posts?

Empty runs come from invalid, private or deleted URLs, or from inputs asking for fewer than 10 posts. Test the URL in a logged-out browser, then retry with a known public profile or hashtag.

Plans and integrations

How much does it cost to scrape 100,000 TikTok videos?

It costs $30.00 at $0.30 per 1,000 posts, and takes about three minutes and forty seconds at the measured 460 posts per second.

Is there a free TikTok Scraper plan?

Yes. The free Apify plan runs it in demo mode: 5 runs a month, 10 items per run, no credit card.

Can I use TikTok Scraper instead of the TikTok Research API?

For commercial work, yes, TikTok states that creators, advertisers and commercial users are not eligible for the Research API. It also caps at 100,000 records a day, where this is capped only by your Apify plan. The Research API stays free for approved researchers.

Does TikTok Scraper work with n8n and AI agents?

Yes. It runs in n8n, Make and Zapier through the Apify app, and in Claude, Cursor and other MCP clients through the Apify MCP server.

Other Apidojo scrapers

TikTok is one of six sources in the catalogue. Every scraper publishes its inputs, its output fields and its price the same way this one does.

Browse all 26 scrapers

Run TikTok Scraper on your first keyword

Type a keyword or paste a hashtag, sound or profile URL. The free Apify plan runs it in demo mode with no credit card, and the output shape is the one documented on this page.

Run your first keyword

Somewhere to start

  • keywords: ["protein coffee"] · DATE_POSTED · USWhat started in this niche in the last hours
  • tiktok.com/tag/tiktokmademebuyitA hashtag, newest first, for save-rate work
  • tiktok.com/@gordonramsayofficialOne creator’s whole feed with engagement

Every one of these runs on TikTok Scraper at $0.30 per 1,000 posts.

Apidojo is not affiliated with TikTok Pte. Ltd. or ByteDance.