How to scrape TikTok Shop Products with C#
Shop Products This tutorial gets it with a short C# program and the TikTok Shop Products 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 C#
dotnet new console -o scrape && cd scrape3. Write the code
Save this as Program.cs. Replace PASTE_URL_HERE with a real url.
using System.Text.Json;
var http = new HttpClient();
http.DefaultRequestHeaders.Add("x-api-key", Environment.GetEnvironmentVariable("SCRAPEIO_API_KEY"));
var query = new Dictionary<string, string> { ["url"] = "PASTE_URL_HERE" };
string Url() => "https://scrapeio.com/v1/tiktok/shop/products" + "?" + string.Join("&", query.Select(p => $"{p.Key}={Uri.EscapeDataString(p.Value)}"));
var items = new List<JsonElement>();
while (true)
{
var json = await http.GetStringAsync(Url());
var data = JsonDocument.Parse(json).RootElement.GetProperty("data");
if (data.TryGetProperty("items", out var rows)) items.AddRange(rows.EnumerateArray().Select(r => r.Clone()));
var more = data.TryGetProperty("has_more", out var hm) && hm.ValueKind == JsonValueKind.True;
var cursor = data.TryGetProperty("cursor", out var c) && c.ValueKind == JsonValueKind.String ? c.GetString() : null;
if (!more || string.IsNullOrEmpty(cursor) || items.Count >= 100) break;
query["cursor"] = cursor;
}
Console.WriteLine($"{items.Count} items");
Console.WriteLine(JsonSerializer.Serialize(items.Take(3), new JsonSerializerOptions { WriteIndented = true }));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
dotnet runThe 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
| Name | Type | Description |
|---|---|---|
url (required) | string | The TikTok Shop store URL. |
sort_by | top, new_releases | Sort products by best-selling items (top) or newest products (newreleases). |
region | US, GB, DE, FR, IT, ID, MY, MX, PH, SG, ES, TH, VN, BR, JP, IE | Region to get shop products from. |
cursor | string | Cursor parameter from the previous response to retrieve the next page of products. |
Errors and what you pay
| Status | Meaning | Charged |
|---|---|---|
200 | Success | Yes, unless cached |
400 | A parameter is missing or wrong | No |
401 | The key is missing or invalid | No |
402 | Not enough credits | No |
403 | The account or post is private | No |
404 | Not found on the platform | No |
429 | More than 300 requests a minute | No |
502 | Every source is down; retry shortly | No |
Same endpoint in other languages
Python · Node.js · JavaScript · TypeScript · Go · Rust · Java · 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 call_endpoint with path /v1/tiktok/shop/products for you.
100 free credits, no card. Credits never expire.
Get API key