TikTok Videos Scraper

Twelve columns, and
a run we never did properly.

Submit a TikTok video and get a row: the id, the author, the caption, when it went up, and the engagement counts. That is the shape. What we cannot show you is a filled-in example - every run behind this page submitted a placeholder URL rather than a real video, so the honest answer about what it returns on live content is that we have not tested it.

one-time 500 free rows$0.002 per row aftertwelve columns per videoCSV · JSON · Excel
How it works

A video link in, a row out.

  1. STEP 1Sign in to the platform.
  2. STEP 2Open the TikTok Videos Scraper.
  3. STEP 3Paste the video URLs you want, one per line.
  4. STEP 4Pick your output format (CSV / JSON / XLSX).
  5. STEP 5Run the job.
  6. STEP 6Download the results - one row per URL, twelve columns.
What the runs actually show

Four things we can tell you.

We never gave it a real video

All six inputs were the TikTok homepage, a profile page, an incomplete path, or a placeholder id like .../@user/video/123. Every field came back empty, which tells you nothing about live content. We are not going to present that as a verdict on the service.

It reads the input rather than failing blindly

The four runs pointed at a homepage or a profile returned no data. The two pointed at a correctly-shaped but non-existent video id returned item doesn't exist (removed / private). Two distinct answers to two distinct mistakes is a good sign - it parsed the URL and told us which kind of wrong it was.

The schema grew in July

Runs up to 3 July returned ten columns. Runs from 14 July returned twelve, adding saves and reposts. Nothing was removed or renamed. If you built an importer against the older shape it still works, but it is now missing two columns - pin the ones you need rather than relying on position.

url echoes your input exactly

On all six runs url was byte-identical to query. It is not a canonical or resolved address - it is what you submitted, handed back. Do not rely on it to normalise short links or redirects.

What you get back

Twelve columns, per video.

Read from the header of a real export of this service, in sheet order. Only three of the twelve carried a value in our runs, and the reason is the inputs rather than the service - see the note below.

query
The URL exactly as you submitted it, echoed on every row. Keep it: it is what joins the row back to your input list.
video_id
The numeric id of the video.
author
The account that posted it. Empty in our runs, for the same reason.
description
Intended to hold the caption. In our runs it held a status message instead - no data, or item doesn't exist (removed / private). Check this column before treating a blank row as a failure.
create_time
When the video was posted. Empty in our runs.
likes
Like count. Empty in our runs.
comments
Comment count. Empty in our runs.
shares
Share count. Empty in our runs.
plays
Play count. Empty in our runs.
saves
Save count. Added in July - absent from the ten-column runs up to 3 July, present from 14 July.
reposts
Repost count. Added in July alongside saves, and absent from the earlier shape for the same reason.
url
The video address. On all six of our runs this was byte-identical to query - your input handed back, not a canonical URL.

Twelve columns per row · CSV, JSON or Excel

Six runs sit behind this page and not one of them submitted a genuine TikTok video URL. The inputs were the homepage, a profile, an incomplete path and three placeholder ids. Every data column is therefore empty, and that is a fact about our inputs rather than about the service. We are not going to claim it is blocked, and we are not going to claim it works - we have not tested it on live content, and saying otherwise either way would be inventing a result. The 500 free rows exist precisely so you can settle this on a video you care about.

What the columns are for

What a populated row would let you do.

Creator research

Compare engagement across a set of posts

likes, comments, shares, plays, saves and reposts are separate columns rather than one blended score, so you can weight them yourself. Saves and reposts in particular say something different from likes.

Marketing · Research
Campaign tracking

Watch a set of videos over time

Re-run the same URL list on a schedule and keep the counts against the run date. A single reading of a play count is close to meaningless; a series is where the shape of a campaign shows up.

Marketing · Reporting
Content audit

Check what is still live

The description column already distinguishes a missing video from a bad URL. Running an archive of links through it flags the ones that have been removed or made private, which is the cheapest form of link audit there is.

Ops · Compliance
Pricing

Pay only for what you actually use.

Free tier

The first 500 rows are free

One-time, on signup, with no card. Given that we could not test this on a real video, the free tier is the sensible way to find out what it does for you.

One-time, on signup
Rate

$0.002 per row after that

Billed on rows actually returned, at the same rate as every other service here. No service-specific pricing.

Billed on rows returned
No subscription

Nothing recurring

Credits do not expire monthly, so a scheduled campaign check costs almost nothing and commits you to nothing.

No monthly expiry
Pairs well with

The rest of the short-video toolkit.

The honest bit

Why this page has no example row.

Not because the service failed - because we never asked it the right question.

Six runs, six placeholder inputs. The TikTok homepage, one profile page, one incomplete path, and three video ids that were either obviously fake or genuinely non-existent. None of them is a real video, so every data column came back empty and there is nothing to show. That is a gap in our testing, not a finding about the product, and we would rather label it correctly than dress it up as a limitation.

It matters because two of our other TikTok services genuinely are blocked - the hashtags and search scrapers both return a status explaining that TikTok serves those lists from a request-signed API. It would be easy, and wrong, to assume the same wall here. Nothing in these six runs shows that. What they do show is a service that read each URL, worked out what kind of thing it was pointed at, and answered differently for a profile than for a missing video. That is the behaviour of something that is working, being handed bad inputs.

So the honest position is: we do not know what this returns on live content, and the 500 free rows are there for you to find out on a video you actually care about. Our own terms are the same as on every other service here - publicly available pages only, nothing behind a login, no third-party trackers on the data layer, and exports auto-delete after 30 days.

livescraper.app · what our six runs contained
4 runs returned ten columns (to 3 Jul)
2 runs returned twelve (from 14 Jul)
0 runs submitted a real video URL!
url matched query byte-for-byte every time
description held a status, not a caption
The empty columns are our inputs' fault, not necessarily the service's.
Common questions

Things people ask before signing up.

Does this actually return video data?+
We do not know, and we will not guess. All six runs behind this page submitted placeholder URLs - the TikTok homepage, a profile, an incomplete path and three fake or non-existent video ids - so every data column came back empty. That is a fact about our inputs, not about the service. Your first 500 rows are free, which is the honest way to settle it.
What columns will the export contain?+
Twelve since July: query, video_id, author, description, create_time, likes, comments, shares, plays, saves, reposts and url. One row per URL you submit.
Why do some exports have ten columns instead of twelve?+
The schema grew. Runs up to 3 July returned ten columns; runs from 14 July returned twelve, adding saves and reposts. Nothing was removed or renamed, so an older importer still works - it is just missing two columns. Pin the columns you need rather than relying on position.
Is this blocked like the hashtags and search scrapers?+
There is no evidence of that here. Those two return a status explaining that TikTok serves their lists from a request-signed API. This service returned no such message - it returned no data for inputs that were not videos and item doesn't exist (removed / private) for a video id that does not exist. Different behaviour, and consistent with a service that is working.
What is in the description column?+
It is meant to hold the caption. In our runs it held a status message instead - no data or item doesn't exist (removed / private). Read it before treating an empty row as a silent failure; it distinguishes a bad URL from a video that has gone.
Is the url column a canonical link?+
No. On all six runs it was byte-identical to what we submitted. It hands your input back rather than resolving redirects or short links, so do not use it to normalise URLs.
What does it cost?+
Your first 500 rows are free, one-time, with no card. After that it is $0.002 per row, billed on rows actually returned - the same rate as every other service here.

Point it at a video you care about.

We could not test this properly, and we have said so. Your first 500 rows are free, so the answer costs you nothing to get.

Activates instantly · no card required

Scrape TikTok video data

The TikTok Videos Scraper takes a video URL and returns a row of twelve columns: query, video_id, author, description, create_time, likes, comments, shares, plays, saves, reposts and url. Six runs sit behind this page, and they show two things clearly. The first is that the schema grew: runs up to 3 July returned ten columns, and runs from 14 July returned twelve, adding saves and reposts. Nothing was removed or renamed, so an importer written against the older shape still loads - it is simply missing two columns, which is a good argument for pinning the fields you need rather than reading by position.

The second thing is a gap in our own testing, and we would rather label it than hide it. Not one of the six runs submitted a genuine TikTok video URL. The inputs were the TikTok homepage, a profile page, an incomplete path, and three video ids that were either obviously placeholder or genuinely non-existent. Every data column is therefore empty, and that is a fact about what we asked for rather than a finding about the service. There are no engagement figures, author names or example rows anywhere on this page, because producing any would mean inventing them.

It is worth separating this from our other TikTok services. The hashtags and search scrapers are genuinely obstructed: both return a status column explaining that TikTok serves those lists through a request-signed API rather than in the page HTML. Nothing like that appeared here. Instead the service answered differently depending on what it was pointed at - no data for a homepage or a profile, and item doesn't exist (removed / private) for a correctly-shaped video id with no video behind it. Distinguishing two failure modes is what a working parser does, so the reasonable reading is a functioning service handed bad inputs, not a wall.

One further observation for anyone building on it: the url column was byte-identical to query on every run. It echoes your input rather than resolving a canonical address, so it will not normalise short links or follow redirects for you. And description, which is meant to carry the caption, carried a status string in all six runs - read it before treating a blank row as a silent failure, because it is what tells you whether the video is gone or the URL was wrong. Publicly available pages only, no third-party trackers on the data layer, and exports auto-delete after 30 days. Your first 500 rows are free and need no credit card, which is the cheapest way to answer the question this page honestly cannot.