ScrapeField

TikTok scraper API

Profiles, videos, comments and search, with the field names TikTok’s own APIs use. Blocks handled; nothing for you to unblock.

Endpoints
5
From
2 credits a call
Returns
profile, video, comment, hashtag
tiktok.com/@example/video/7435301074483764206
E19.5K914307488
@example

Three days of proofing and it finally behaved. #baking #citywalk #fyp

Gymnopédie No. 1

The same page, from the API sample data

  1. 1username "example"
  2. 2like_count 19541
  3. 3comment_count 914
  4. 4share_count 488
  5. 5video_description "Three days of proofing and it finally behav…
  6. 6music.title "Gymnopédie No. 1"
  7. +view_count 273195favorites_count 307duration 151in the response, not on the page

Try it now

Every TikTok endpoint, as an MCP tool, as a REST call, or as a question in plain English. Each one runs against the live API in demo mode — no key, no account.

POSThttps://scrapefield.com/mcp
5 tools
Transport
HTTP, JSON-RPC 2.0
Methods
initialize · tools/list · tools/call
Auth
Bearer key — or none, for demo mode
claude mcp add --transport http scrapefield https://scrapefield.com/mcp
Runs against the live server. No key, no account.
// press Call — the server lists its 5 tools,
// each with the schema an agent reads before calling it

What people build with it

Three worked examples, each with the calls it makes and what a run costs — multiplied out from the published price of every call.

01

Spot a trend while it is still early

Search a term once a day and rank the videos by views per day since they were posted. What climbs that list fastest is what is about to be everywhere.

GET tiktok/search× 30120 cr
a month, one term daily120 cr

≈ $0.072 at the 250k pack

const API = 'https://api.scrapefield.com/v1';
const sf = (path, q) =>
  fetch(API + '/' + path + '?' + new URLSearchParams(q), {
    headers: { Authorization: 'Bearer ' + process.env.SCRAPEFIELD_KEY },
  }).then((r) => r.json());

const q = { query: 'sourdough', type: 'video', limit: 30 };
const { data } = await sf('tiktok/search', q);

const ranked = data
  .map((v) => {
    const age = (Date.now() - Date.parse(v.create_time)) / 864e5;
    const days = Math.max(age, 1);
    return { url: v.share_url, perDay: Math.round(v.view_count / days) };
  })
  .sort((a, b) => b.perDay - a.perDay);

console.table(ranked.slice(0, 10));
02

Vet a creator before you pay one

Follower counts are easy to inflate; median views are not. Read the profile and the last thirty videos, and you have the audience a post will actually reach and how much of it engages.

GET tiktok/profile× 13 cr
GET tiktok/videos× 13 cr
per creator6 cr

≈ $0.004 at the 250k pack

const API = 'https://api.scrapefield.com/v1';
const sf = (path, q) =>
  fetch(API + '/' + path + '?' + new URLSearchParams(q), {
    headers: { Authorization: 'Bearer ' + process.env.SCRAPEFIELD_KEY },
  }).then((r) => r.json());

const { data: profile } = await sf('tiktok/profile', { username });
const q = { username, limit: 30 };
const { data: videos } = await sf('tiktok/videos', q);

const views = videos.map((v) => v.view_count).sort((a, b) => a - b);
const engaged = videos.reduce(
  (s, v) => s + v.like_count + v.comment_count, 0,
);

console.log({
  followers: profile.follower_count,
  medianViews: views[Math.floor(views.length / 2)],
  engagement: engaged / views.reduce((s, n) => s + n, 0),
});
03

Find the questions in the comments

Under a brand’s videos, the comments are an unfiltered support queue. Pull them for each video and keep the ones that ask something — with the likes that show how many people want the same answer.

GET tiktok/comments× 100300 cr
100 videos, 50 comments each300 cr

≈ $0.179 at the 250k pack

const API = 'https://api.scrapefield.com/v1';
const sf = (path, q) =>
  fetch(API + '/' + path + '?' + new URLSearchParams(q), {
    headers: { Authorization: 'Bearer ' + process.env.SCRAPEFIELD_KEY },
  }).then((r) => r.json());

const questions = [];

for (const url of brandVideos) {
  const { data } = await sf('tiktok/comments', { url, limit: 50 });
  for (const c of data.filter((c) => c.text.includes('?'))) {
    const { text, like_count, reply_count } = c;
    questions.push({ video: url, text, like_count, reply_count });
  }
}

questions.sort((a, b) => b.like_count - a.like_count);

Everything that comes back

The complete response behind the TikTok view at the top of this page, from GET /v1/tiktok/video — every field, including the ones that are null. Fields are named after TikTok's Display and Research APIs, so if you have read those docs you already know them. Every field of tiktok_profile, tiktok_video, tiktok_comment and tiktok_hashtag is documented.

{
  "data": {
    "id": "7435301074483764206",
    "share_url": "https://www.tiktok.com/@example/video/7435301074483764206",
    "username": "example",
    "video_description": "Three days of proofing and it finally behaved. #baking #citywalk #fyp",
    "create_time": "2026-08-25T21:15:26.000Z",
    "duration": 151,
    "cover_image_url": "https://cdn.example/tt/7435301074483764206.jpeg",
    "play_url": "https://cdn.example/tt/7435301074483764206.mp4",
    "view_count": 273195,
    "like_count": 19541,
    "comment_count": 914,
    "share_count": 488,
    "favorites_count": 307,
    "hashtag_names": [
      "baking",
      "citywalk",
      "fyp"
    ],
    "region_code": "US",
    "music": {
      "id": "6959048832134002744",
      "title": "Gymnopédie No. 1",
      "author": "Erik Satie",
      "original": false
    },
    "duet_enabled": true,
    "stitch_enabled": false
  },
  "meta": {
    "request_id": "req_7f3ac1e94b2d40f8a1c6e5d2",
    "credits_charged": 2,
    "credits_remaining": 74218,
    "cached": false,
    "fetched_at": "2026-09-20T09:12:03Z",
    "next_cursor": null
  }
}

Endpoints and prices

One published credit cost per endpoint, charged per call and refunded automatically when a call fails. See what a credit costs.

TikTok, specifically

The questions people ask about this platform before they call it.

Can I search by hashtag or for accounts?
Yes: tiktok/search takes type=video, user or hashtag, and returns videos by default.
Do I get the video files?
You get play_url and cover_image_url on TikTok’s own CDN, with the duration. The play URL is signed by TikTok and stops working after a while, so fetch the file soon if you need it. We do not store or rehost the files.
What counts come with a video?
view_count, like_count, comment_count, share_count and favorites_count (saves) — the names TikTok’s own APIs use — plus the sound in music, and whether duets and stitches are allowed.
How far back can I read an account?
Up to 30 recent videos per call, and meta.next_cursor for the page after.
Does it need my TikTok login?
No. We never take a login, a cookie or a session for any platform. Public videos and profiles only.

The same key, three more platforms

One key, one balance and one invoice across all four — and each platform’s data in its own shape, because they are four different systems.

Your first TikTok call, in a minute

Get a key