Вставьте ссылку на профиль или видео. Web Unlocker вернёт страницу без входа: у профиля точное число подписчиков, лайков и 16 последних видео с просмотрами, у видео просмотры, лайки, комментарии, репосты и сохранения. $0.98 за 1000 страниц.
1000 бесплатных запросов · Оплата только за успех · 195+ стран · Работает с Claude
Страницы TikTok загружаются от 4 до 20 секунд, иногда дольше. Всё ещё работаем, нажимать снова не нужно.
Готовы проверить своих блогеров? Получите API-ключ или запишитесь на демо.
Расскажите немного о вашей команде и получите:
Публичные страницы, без входа и без аккаунта TikTok. Платформы для работы с блогерами, агентства, бренды и исследователи читают эти два типа страниц, и каждая оплачивается как одна страница.





Хотите попробовать сами? Получите API-ключ с 1000 бесплатных запросов.
Одна страница профиля приносит точное число подписчиков и лайков блогера и его 16 последних видео с просмотрами, и оплачивается она один раз, по $0.98 за 1000 страниц. Парсеры TikTok на Apify и Bright Data берут за каждое из этих видео как за отдельный результат.
Apify берёт $48 за 1000 блогеров.
Здесь они стоят $0.98.
Страница, которая не загрузилась, ничего не стоит. Если TikTok прислал ошибку, запросите страницу снова: вы платите только за страницу, которая вернулась с данными.
Сколько стоят 1000 блогеров TikTok
1000 профилей с 16 последними видео и просмотрами по опубликованным ценам
Gologin: одна страница профиля на блогера, $0.98 за 1000 страниц. Bright Data считает каждый профиль и каждое видео записью, $1.50 за 1000. На бесплатном тарифе Apify его TikTok Profile Scraper берёт за каждое видео $3.00 за 1000, а самый популярный TikTok Scraper - $3.70 за 1000.
Готовы проверить своих блогеров? Получите API-ключ и бесплатные запросы.
Страница профиля приносит точное число подписчиков и лайков блогера и его 16 последних видео с просмотрами. Страница каждого видео добавляет его лайки, комментарии, репосты и сохранения. 17 страниц, $0.0167, и у вас реальная вовлечённость автора, видео за видео.
TikTok показывает 146.2M подписчиков.
Парсер возвращает 146,194,232.
Собственные API TikTok - для одобренных исследователей и для собственного аккаунта каждого пользователя. Вот что каждый путь требует от вас до старта и сколько он берёт за те же 1000 блогеров.
| Что нужно | ||||
|---|---|---|---|---|
| Данные чужих аккаунтов | Да | Только исследователям | Да | Да |
| Вы платите за | Страницу | Бесплатно после одобрения | Каждое видео | Каждую запись |
| 1000 блогеров по 16 видео | $0.98 | Не для бизнеса | от $48 до $59.20 | $25.50 |
| Старт без заявки | Да | Нет, около 4 недель | Да | Да |
| Бесплатный старт | 1000 запросов | После одобрения | $5 в месяц | 5000 в месяц |
| Страница целиком в HTML | Да | Нет | Нет | Нет |
Парсите не только TikTok? Web Unlocker возвращает любую страницу так же и по той же цене.
TikTok хранит данные публичной страницы как JSON внутри HTML. Web Unlocker возвращает этот HTML, а несколько строк кода достают из него профиль или видео. Вкладка «Список блогеров» - небольшой краулер TikTok: на входе список аккаунтов, на выходе CSV.
Заполните форму выше. Ключ придёт на почту в течение одного рабочего дня.
Профиль - для подписчиков и последних видео, видео - для просмотров, лайков, комментариев, репостов и сохранений.
Проверьте, что страница пришла с данными, и запросите её снова, если TikTok прислал ошибку: вы платите только за страницу, которая вернулась.
pip install requestsGOLOGIN_SCRAPING_API_KEY=your_key python tiktok_profile.pyhttps://parsing.webunlocker.gologin.com/v1/scrapeimport html
import json
import os
import re
import time
import requests
username = "mrbeast"
def scrape(url, marker):
for attempt in range(3):
address = url if attempt == 0 else f"{url}?fresh={int(time.time())}"
try:
response = requests.get(
"https://parsing.webunlocker.gologin.com/v1/scrape",
params={"url": address, "geo": "us", "format": "json"},
headers={"apikey": os.environ["GOLOGIN_SCRAPING_API_KEY"]},
timeout=60,
)
page = response.json().get("data", {}).get("html", "") if response.ok else ""
except requests.RequestException:
page = ""
if marker in page:
return page
time.sleep(3)
raise RuntimeError("TikTok did not send the page, try again later")
page = scrape(f"https://www.tiktok.com/@{username}", '"followerCount"')
script = re.search(r'<script id="__UNIVERSAL_DATA_FOR_REHYDRATION__"[^>]*>(.*?)</script>', page, re.S)
info = json.loads(script.group(1))["__DEFAULT_SCOPE__"]["webapp.user-detail"]["userInfo"]
user, stats = info["user"], info["statsV2"]
videos = []
for item in page.split('data-e2e="user-post-item"')[1:]:
video = re.search(r'/video/(\d+)"', item)
views = re.search(r'data-e2e="video-views"[^>]*>([^<]*)<', item)
caption = re.search(r'<img alt="([^"]*)"', item)
if video:
videos.append({
"url": f"https://www.tiktok.com/@{username}/video/{video.group(1)}",
"views": views.group(1) if views else None,
"caption": html.unescape(caption.group(1)).split(" created by ")[0].strip() if caption else "",
})
profile = {
"username": user["uniqueId"],
"nickname": user["nickname"],
"bio": user["signature"],
"verified": user["verified"],
"followers": int(stats["followerCount"]),
"following": int(stats["followingCount"]),
"likes": int(stats["heartCount"]),
"videos": int(stats["videoCount"]),
"latest_videos": videos,
}
print(json.dumps(profile, indent=2, ensure_ascii=False))
print(f"@{username}: {profile['followers']:,} followers, {len(videos)} latest videos from one page")GOLOGIN_SCRAPING_API_KEY=your_key node tiktok-engagement.mjshttps://parsing.webunlocker.gologin.com/v1/scrapeimport { writeFileSync } from 'node:fs';
const username = 'mrbeast';
async function scrape(url, marker) {
for (let attempt = 0; attempt < 3; attempt += 1) {
const api = new URL('https://parsing.webunlocker.gologin.com/v1/scrape');
api.search = new URLSearchParams({ url: attempt === 0 ? url : `${url}?fresh=${Date.now()}`, geo: 'us', format: 'json' });
try {
const response = await fetch(api, {
headers: { apikey: process.env.GOLOGIN_SCRAPING_API_KEY },
signal: AbortSignal.timeout(60_000),
});
const page = response.ok ? ((await response.json()).data?.html ?? '') : '';
if (page.includes(marker)) return page;
} catch {}
await new Promise((resolve) => setTimeout(resolve, 3000));
}
throw new Error(`TikTok did not send ${url}, try again later`);
}
const data = (page) =>
JSON.parse(page.match(/<script id="__UNIVERSAL_DATA_FOR_REHYDRATION__"[^>]*>([\s\S]*?)<\/script>/)[1]).__DEFAULT_SCOPE__;
const profile = await scrape(`https://www.tiktok.com/@${username}`, '"followerCount"');
const followers = Number(data(profile)['webapp.user-detail'].userInfo.statsV2.followerCount);
const links = profile
.split('data-e2e="user-post-item"')
.slice(1)
.map((item) => item.match(/\/video\/(\d+)"/)?.[1])
.filter(Boolean)
.map((id) => `https://www.tiktok.com/@${username}/video/${id}`);
const rows = [];
for (const url of links) {
const video = data(await scrape(url, '"playCount"'))['webapp.video-detail'].itemInfo.itemStruct;
const stats = video.statsV2;
rows.push({
url,
date: new Date(video.createTime * 1000).toISOString().slice(0, 10),
plays: Number(stats.playCount),
likes: Number(stats.diggCount),
comments: Number(stats.commentCount),
shares: Number(stats.shareCount),
saves: Number(stats.collectCount),
caption: video.desc,
});
}
const cell = (value) => `"${String(value).replaceAll('"', '""')}"`;
writeFileSync(
`${username}-videos.csv`,
[Object.keys(rows[0]).join(','), ...rows.map((row) => Object.values(row).map(cell).join(','))].join('\n'),
);
const sum = (key) => rows.reduce((total, row) => total + row[key], 0);
const engagement = (sum('likes') + sum('comments') + sum('shares') + sum('saves')) / sum('plays');
console.table(rows.map(({ caption, ...row }) => row));
console.log(
`@${username}: ${followers.toLocaleString('en')} followers, ${rows.length} videos, ${(engagement * 100).toFixed(1)}% engagement, ${rows.length + 1} pages, saved to ${username}-videos.csv`,
);GOLOGIN_SCRAPING_API_KEY=your_key node tiktok-creators.mjshttps://parsing.webunlocker.gologin.com/v1/scrapeimport { writeFileSync } from 'node:fs';
const creators = ['mrbeast', 'nasa', 'khaby.lame', 'zachking', 'charlidamelio'];
async function scrape(url, marker) {
for (let attempt = 0; attempt < 3; attempt += 1) {
const api = new URL('https://parsing.webunlocker.gologin.com/v1/scrape');
api.search = new URLSearchParams({ url: attempt === 0 ? url : `${url}?fresh=${Date.now()}`, geo: 'us', format: 'json' });
try {
const response = await fetch(api, {
headers: { apikey: process.env.GOLOGIN_SCRAPING_API_KEY },
signal: AbortSignal.timeout(60_000),
});
const page = response.ok ? ((await response.json()).data?.html ?? '') : '';
if (page.includes(marker)) return page;
} catch {}
await new Promise((resolve) => setTimeout(resolve, 3000));
}
return null;
}
const UNITS = { K: 1e3, M: 1e6, B: 1e9 };
const number = (text) => Number.parseFloat(text) * (UNITS[text.at(-1)] ?? 1);
const rows = [];
for (const username of creators) {
const page = await scrape(`https://www.tiktok.com/@${username}`, '"followerCount"');
if (!page) {
console.log(`@${username}: no page this time, run it again later`);
continue;
}
const script = page.match(/<script id="__UNIVERSAL_DATA_FOR_REHYDRATION__"[^>]*>([\s\S]*?)<\/script>/)[1];
const { user, statsV2 } = JSON.parse(script).__DEFAULT_SCOPE__['webapp.user-detail'].userInfo;
const views = [...page.matchAll(/data-e2e="video-views"[^>]*>([^<]+)</g)].map(([, text]) => number(text)).sort((a, b) => a - b);
rows.push({
username: user.uniqueId,
name: user.nickname,
verified: user.verified,
followers: Number(statsV2.followerCount),
likes: Number(statsV2.heartCount),
videos: Number(statsV2.videoCount),
median_views: views.length ? views[Math.floor(views.length / 2)] : '',
});
}
const cell = (value) => `"${String(value).replaceAll('"', '""')}"`;
writeFileSync('creators.csv', [Object.keys(rows[0]).join(','), ...rows.map((row) => Object.values(row).map(cell).join(','))].join('\n'));
console.table(rows);
console.log(`${rows.length} of ${creators.length} creators, one page each, saved to creators.csv`);Готовы проверить своих блогеров? Получите API-ключ и бесплатные запросы.
Один аккаунт, одна прокси-сеть, одна экосистема. Выберите продукт под задачу.
Парсите больше сайтов? Смотрите парсеры Instagram, YouTube и Reddit или все инструменты для веб-парсинга.
Парсер TikTok, или краулер TikTok, - это инструмент, который читает публичные страницы TikTok и превращает их в данные: подписчиков, лайки и последние видео профиля, просмотры, лайки, комментарии, репосты и сохранения видео. Gologin Web Unlocker - это API парсера TikTok: отправьте ему адрес профиля или видео, и он вернёт страницу с этими данными по $0.98 за 1000 страниц.
Парсинг TikTok - это один запрос на страницу: отправьте в Web Unlocker адрес публичного профиля или видео. Он вернёт страницу такой, какой её видит посетитель без входа в аккаунт, с данными, которые TikTok хранит внутри как JSON. Код выше читает их в несколько строк. Если TikTok прислал ошибку, запросите страницу снова: вы платите только за страницу, которая вернулась.
Отправьте адрес профиля в Web Unlocker через библиотеку requests и прочитайте JSON со страницы. Вкладка Python выше - готовый скрипт, проверенный на живом API: он выводит точное число подписчиков, лайков и видео блогера и его 16 последних видео с просмотрами.
Точное число подписчиков, подписок, лайков и видео, имя, био и отметку верификации, а также 16 последних видео со ссылками, подписями и просмотрами. На странице TikTok показывает округлённые числа, а данные внутри неё хранят точные.
Парсер видео TikTok получает просмотры, лайки, комментарии, репосты и сохранения, подпись, хештеги, звук, дату и длительность, обложку и автора с числом его подписчиков. У крупных видео TikTok округляет просмотры и лайки так же, как показывает их на странице.
Да. Публичные профили и видео открываются без входа, и Web Unlocker открывает их как посетитель без входа в аккаунт. Вам не нужен аккаунт TikTok, и вы не рискуете своими. Закрытые аккаунты остаются закрытыми.
Только для одобренных исследователей. Research API открыт для академических и некоммерческих исследовательских групп в США, Европе и ещё нескольких странах, а проверка заявки занимает около 4 недель. Display API читает только профиль и видео пользователя, который входит в ваше приложение. Ни один из них не подходит для коммерческой работы с данными чужих аккаунтов.
Сложите лайки, комментарии, репосты и сохранения последних видео блогера и разделите на их просмотры. Web Unlocker приносит 16 последних видео со страницы профиля и показатели каждого видео с его собственной страницы: 17 страниц, $0.0167. Вкладка Node.js выше считает сумму и записывает CSV; для MrBeast вышло 14.7%.
Число комментариев - да: оно есть на странице каждого видео. Сами комментарии подгружаются при прокрутке и требуют сессии с входом в аккаунт, поэтому Web Unlocker их не возвращает.
$0.98 за 1000 страниц, одна цена за любую страницу: профиль с 16 последними видео - одна страница, видео с его показателями - одна страница. Неудачный запрос ничего не стоит. На старте у вас 1000 бесплатных запросов, а тарифы начинаются от $49 в месяц за 50 000 запросов.
Зависит от задачи. Apify и Bright Data продают готовые строки из профилей, видео, хештегов и комментариев и берут деньги за каждую. Web Unlocker возвращает всю публичную страницу профиля или видео по одной цене за страницу, в TikTok и на любом другом сайте, поэтому проверка блогеров стоит центы.
Да. TikTok Scraper от Apify берёт за каждое видео, $3.70 за 1000 на бесплатном тарифе, поэтому 16 последних видео блогера - это 16 результатов. Web Unlocker возвращает профиль с этими 16 видео и их просмотрами как одну страницу: $0.98 за 1000 блогеров.
Профили и видео, которые открываются без входа, - это публичные страницы. В деле Meta v. Bright Data в январе 2024 года федеральный суд США решил, что условия платформы не запрещают парсинг публичных данных без входа в аккаунт. Что вы собираете и как используете, решаете вы, поэтому сверьтесь с правилами, которые относятся к вашему проекту.
Расскажите немного о вашей команде и получите: