All Go tutorials

How to scrape TikTok Comments with Go

Comments on a TikTok video, most liked first. This tutorial gets it with a short Go program and the TikTok Comments API. Each successful call costs 1 credit; errors and not-found answers are free.

1. Get an API key

Sign in to get a key and 100 free credits, no card. Then put the key in an environment variable so it stays out of your code:

export SCRAPEIO_API_KEY="your_key_here"

2. Set up Go

go mod init scrape

3. Write the code

Save this as main.go. Replace PASTE_URL_HERE with a real url.

package main

import (
	"encoding/json"
	"fmt"
	"net/http"
	"net/url"
	"os"
)

func main() {
	params := url.Values{}
	params.Set("url", "PASTE_URL_HERE")
	var items []any
	for {
		req, _ := http.NewRequest("GET", "https://scrapeio.com/v1/tiktok/video/comments"+"?"+params.Encode(), nil)
		req.Header.Set("x-api-key", os.Getenv("SCRAPEIO_API_KEY"))
		res, err := http.DefaultClient.Do(req)
		if err != nil {
			panic(err)
		}
		if res.StatusCode != 200 {
			panic(fmt.Sprintf("HTTP %d", res.StatusCode))
		}
		var body struct {
			Data struct {
				Items   []any  `json:"items"`
				Cursor  string `json:"cursor"`
				HasMore bool   `json:"has_more"`
			} `json:"data"`
		}
		json.NewDecoder(res.Body).Decode(&body)
		res.Body.Close()
		items = append(items, body.Data.Items...)
		if !body.Data.HasMore || body.Data.Cursor == "" || len(items) >= 100 {
			break
		}
		params.Set("cursor", body.Data.Cursor)
	}
	fmt.Println(len(items), "items")
	out, _ := json.MarshalIndent(items[:min(3, len(items))], "", "  ")
	fmt.Println(string(out))
}

The loop follows data.cursor until data.has_more is false, and stops at 100 items. Each page is one call, so it costs 1 credit.

4. Run it

go run main.go

The response has the same envelope on every endpoint: success, cached, credits_used, credits_remaining and data. Shared fields such as handle, followers, plays, likes and created_at have the same names on every platform.

Parameters

NameTypeDescription
url (required)stringTikTok video URL.
cursorstringCursor from the previous page's data.cursor.

Errors and what you pay

StatusMeaningCharged
200SuccessYes, unless cached
400A parameter is missing or wrongNo
401The key is missing or invalidNo
402Not enough creditsNo
403The account or post is privateNo
404Not found on the platformNo
429More than 300 requests a minuteNo
502Every source is down; retry shortlyNo

Same endpoint in other languages

Python · Node.js · JavaScript · TypeScript · Rust · Java · C# · PHP · Ruby · Kotlin · Swift · R

Prefer no code?

Connect the MCP server to Claude Code, Cursor or Codex and ask in plain English. The agent uses the tiktok_comments tool for you.

100 free credits, no card. Credits never expire.

Get API key

More TikTok tutorials in Go