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










Хотите попробовать сами? Получите API-ключ с 1000 бесплатных запросов.
Web Unlocker берёт за страницу профиля один раз, вместе с точным числом подписчиков и 12 последними постами, по $0.98 за 1000 страниц. Парсеры профилей Instagram на Apify, Bright Data и ScrapeCreators берут за тот же профиль больше.
Apify берёт $2.60 за 1000 профилей.
Здесь 1000 стоят $1.14.
Примерно одну страницу профиля из семи Instagram отдаёт пустой. Запросите её снова по новому адресу, и данные вернутся: цена выше учитывает эти повторы.
Сколько стоят 1000 профилей Instagram
1000 публичных профилей с подписчиками и био по опубликованным ценам
Gologin: $0.98 за 1000 страниц плюс один повтор примерно на каждые семь профилей. Bright Data берёт за каждую запись, $1.50 за 1000. ScrapeCreators берёт за каждый запрос, $1.88 за 1000 на тарифе за $47. Собственный парсер профилей Instagram от Apify берёт $2.60 за 1000 профилей на бесплатном тарифе.
Готовы запустить на своих профилях? Получите API-ключ и бесплатные запросы.
Наш тест парсинга Instagram: 20 профилей, 20 постов и 20 Reels из их лент и 10 страниц хештегов, каждая запрошена до трёх раз, так же, как это делает демо выше. Вот что вернулось и как быстро.
51 из 60 вернулись с первой попытки.
Остальные 9 - со второй или третьей.
Собственный API Instagram, парсеры Instagram на Apify и Instagram Scraper API от Bright Data: сколько каждый берёт за те же 1000 профилей и что требует от вас до старта.
| Что нужно | ||||
|---|---|---|---|---|
| Вы платите за | Страницу | Бесплатно с лимитом | Каждый результат | Каждую запись |
| 1000 профилей | $1.14 | Бесплатно | $2.60 | $1.50 |
| Личные аккаунты | Да | Нет | Да | Да |
| Ваш аккаунт Instagram | Не нужен | Про аккаунт | Не нужен | Не нужен |
| Бесплатный старт | 1000 запросов | С приложением Meta | $5 в месяц | 5000 в месяц |
| Страница целиком в HTML | Да | Нет | Нет | Нет |
Парсите не только Instagram? Web Unlocker возвращает любую страницу так же и по той же цене.
Страница профиля приносит 12 последних постов, а страница каждого поста - его точное число лайков и комментариев. 13 страниц, $0.0127, и у вас реальная вовлечённость автора, пост за постом.
Instagram округляет до 268 млн.
Парсер возвращает 268,157,304.
Instagram хранит данные публичной страницы как JSON внутри HTML. Web Unlocker возвращает этот HTML, а несколько строк кода достают из него профиль или пост. Вкладка «Список профилей» - небольшой краулер Instagram: на входе список аккаунтов, на выходе CSV.
Заполните форму выше. Ключ придёт на почту в течение одного рабочего дня.
Профиль - для подписчиков и последних постов, пост или Reels - для лайков и комментариев.
Проверьте, что страница пришла с данными, и запросите её снова по новому адресу, если Instagram прислал пустую.
pip install requestsGOLOGIN_SCRAPING_API_KEY=your_key python instagram_profile.pyhttps://parsing.webunlocker.gologin.com/v1/scrapeimport json
import os
import re
import time
import requests
username = "nasa"
def scrape(url, marker):
for attempt in range(3):
address = url if attempt == 0 else f"{url}?fresh={int(time.time())}"
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=90,
)
page = response.json().get("data", {}).get("html", "") if response.ok else ""
if marker in page:
return page
time.sleep(3)
raise RuntimeError("The page came back without data, try again later")
def blocks(page):
for block in re.findall(r'<script type="application/json"[^>]*>(.*?)</script>', page, re.S):
try:
yield json.loads(block)
except json.JSONDecodeError:
pass
def find(node, key):
if isinstance(node, dict):
for name, value in node.items():
if name == key:
yield value
yield from find(value, key)
elif isinstance(node, list):
for item in node:
yield from find(item, key)
data = list(blocks(scrape(f"https://www.instagram.com/{username}/", '"follower_count"')))
user = next(item for item in find(data, "xig_user_by_username") if "follower_count" in item)
posts = {}
for timeline in find(data, "polaris_ordered_timeline_connection"):
for edge in timeline["edges"]:
post = edge["node"]
reel = post.get("product_type") == "clips"
posts[post["code"]] = {
"url": f"https://www.instagram.com/{'reel' if reel else 'p'}/{post['code']}/",
"type": "reel" if reel else "post",
"caption": (post.get("caption") or {}).get("text", "").split("\n")[0],
"image": post.get("display_uri"),
}
profile = {
"username": user["username"],
"full_name": user["full_name"],
"biography": user["biography"],
"verified": user["is_verified"],
"followers": user["follower_count"],
"following": user["following_count"],
"latest_posts": list(posts.values())[:12],
}
print(json.dumps(profile, indent=2, ensure_ascii=False))
print(f"@{username}: {profile['followers']:,} followers, {len(profile['latest_posts'])} latest posts from one page")GOLOGIN_SCRAPING_API_KEY=your_key node instagram-engagement.mjshttps://parsing.webunlocker.gologin.com/v1/scrapeimport { writeFileSync } from 'node:fs';
const username = 'natgeo';
async function scrape(url, marker) {
for (let attempt = 1; attempt <= 3; attempt++) {
const address = attempt === 1 ? url : `${url}?fresh=${Date.now()}`;
const params = new URLSearchParams({ url: address, geo: 'us', format: 'json' });
const response = await fetch(`https://parsing.webunlocker.gologin.com/v1/scrape?${params}`, {
headers: { apikey: process.env.GOLOGIN_SCRAPING_API_KEY },
});
const page = response.ok ? (await response.json()).data?.html : '';
if (page?.includes(marker)) return page;
await new Promise((resolve) => setTimeout(resolve, 3000));
}
throw new Error(`${url} came back without data, try again later`);
}
function* find(node, test) {
if (Array.isArray(node)) for (const item of node) yield* find(item, test);
else if (node && typeof node === 'object') {
if (test(node)) yield node;
for (const value of Object.values(node)) yield* find(value, test);
}
}
const data = (page) =>
[...page.matchAll(/<script type="application\/json"[^>]*>([\s\S]*?)<\/script>/g)].flatMap(([, json]) => {
try {
return [JSON.parse(json)];
} catch {
return [];
}
});
const profile = data(await scrape(`https://www.instagram.com/${username}/`, '"follower_count"'));
const user = find(profile, (node) => typeof node.follower_count === 'number').next().value;
const codes = [...new Set([...find(profile, (node) => node.code && node.display_uri)].map((post) => post.code))].slice(0, 12);
const posts = [];
for (const code of codes) {
const page = data(await scrape(`https://www.instagram.com/p/${code}/`, '"like_count"'));
const post = find(page, (node) => typeof node.like_count === 'number' && node.code === code).next().value;
posts.push({ url: `https://www.instagram.com/p/${code}/`, date: new Date(post.taken_at * 1000).toISOString().slice(0, 10), likes: post.like_count, comments: post.comment_count });
}
const csv = ['url,date,likes,comments', ...posts.map((post) => `${post.url},${post.date},${post.likes},${post.comments}`)].join('\n');
writeFileSync(`${username}-posts.csv`, csv);
const average = posts.reduce((sum, post) => sum + post.likes + post.comments, 0) / posts.length;
console.table(posts);
console.log(`@${username}: ${user.follower_count.toLocaleString('en-US')} followers, ${Math.round(average).toLocaleString('en-US')} likes and comments a post`);
console.log(`Engagement rate ${((average / user.follower_count) * 100).toFixed(2)}% from ${posts.length + 1} pages: $${((posts.length + 1) * 0.00098).toFixed(4)} on the Growth plan`);GOLOGIN_SCRAPING_API_KEY=your_key node instagram-profiles.mjshttps://parsing.webunlocker.gologin.com/v1/scrapeimport { writeFileSync } from 'node:fs';
const usernames = ['nasa', 'natgeo', 'nike', 'spotify', 'starbucks', 'redbull'];
async function scrape(url) {
for (let attempt = 1; attempt <= 3; attempt++) {
const address = attempt === 1 ? url : `${url}?fresh=${Date.now()}`;
const params = new URLSearchParams({ url: address, geo: 'us', format: 'json' });
const response = await fetch(`https://parsing.webunlocker.gologin.com/v1/scrape?${params}`, {
headers: { apikey: process.env.GOLOGIN_SCRAPING_API_KEY },
});
const page = response.ok ? (await response.json()).data?.html : '';
if (page?.includes('"follower_count"')) return page;
await new Promise((resolve) => setTimeout(resolve, 3000));
}
return '';
}
const field = (page, name) => page.match(new RegExp(`"${name}":("(?:[^"\\\\]|\\\\.)*"|\\d+|true|false)`))?.[1];
const rows = [];
for (const username of usernames) {
const page = await scrape(`https://www.instagram.com/${username}/`);
rows.push({
username,
name: page && JSON.parse(field(page, 'full_name')),
verified: page && field(page, 'is_verified') === 'true',
followers: page && Number(field(page, 'follower_count')),
following: page && Number(field(page, 'following_count')),
posts: page.match(/([\d.,]+[KMB]?) Posts/)?.[1],
});
}
writeFileSync('profiles.csv', ['username,name,verified,followers,following,posts', ...rows.map((row) => Object.values(row).map((value) => JSON.stringify(value ?? '')).join(','))].join('\n'));
console.table(rows);
console.log(`${rows.length} profiles in ${rows.length} pages: $${(rows.length * 0.00098).toFixed(4)} on the Growth plan`);Готовы запустить на своих профилях? Получите API-ключ и бесплатные запросы.
Один аккаунт, одна прокси-сеть, одна экосистема. Выберите продукт под задачу.
Парсите больше сайтов? Смотрите парсеры Facebook, Google Play, Twitter (X), YouTube, Reddit и Google Maps или все инструменты для веб-парсинга.
Парсер Instagram - это инструмент, который читает публичные страницы Instagram и превращает их в данные: число подписчиков, био и последние посты профиля, лайки, комментарии и подпись поста. Gologin Web Unlocker - это API парсера Instagram: отправьте ему адрес страницы, и он вернёт страницу с этими данными по $0.98 за 1000 страниц.
Для парсинга Instagram отправьте в Web Unlocker адрес публичного профиля, поста или Reels. Он вернёт страницу такой, какой её видит посетитель без входа в аккаунт, с данными, которые Instagram хранит внутри как JSON: подписчиками, постами, лайками, комментариями и подписями. Код выше читает их в несколько строк.
Отправьте адрес профиля в Web Unlocker через библиотеку requests и прочитайте JSON со страницы. Вкладка Python выше - готовый скрипт, проверенный на живом API: он выводит подписчиков, подписки, био и 12 последних постов профиля.
Только частично. Business Discovery в Instagram API читает бизнес-аккаунты и аккаунты авторов, и только с вашего собственного профессионального аккаунта через приложение Meta. Личные аккаунты не охватываются, а поиск по хештегам ограничен 30 хештегами в неделю. Старый Basic Display API прекратил работу 4 декабря 2024 года.
Да. Публичные профили, посты, Reels и популярная страница хештега открываются без входа. Web Unlocker открывает их как посетитель без входа в аккаунт, поэтому вам не нужен аккаунт Instagram и вы не рискуете своими. Закрытые профили остаются закрытыми: их посты доступны только одобренным подписчикам. С TikTok так же: парсер TikTok читает публичные профили и видео без входа.
Instagram время от времени отдаёт страницу без данных: в нашем тесте примерно одну страницу профиля из семи. Демо выше и примеры кода проверяют, есть ли данные, и запрашивают страницу снова по новому адресу. Посты и Reels вернулись с первой попытки в 36 случаях из 40.
Не списком: список подписчиков аккаунта открывается только пользователям, которые вошли в аккаунт. Точное число подписчиков публичное, и Web Unlocker возвращает его с каждым профилем.
Число комментариев - да: на странице каждого поста и Reels есть точное число. Сами комментарии загружаются только для пользователей, которые вошли в аккаунт, поэтому Web Unlocker их не возвращает.
Для многих хештегов Instagram показывает посетителям без входа популярную страницу с 12 топовыми Reels и числом их просмотров, и Web Unlocker её возвращает. Полная лента хештега доступна только тем, кто вошёл в аккаунт.
Да. Каждый пост на странице профиля и каждая страница поста приходят со ссылками на файлы изображений, поэтому ваш код может их сохранить.
$0.98 за 1000 страниц, одна цена за любую страницу: профиль с 12 последними постами - одна страница, пост - одна страница. Неудачный запрос ничего не стоит. Тарифы начинаются от $49 в месяц за 50 000 запросов.
С Web Unlocker вы получаете 1000 бесплатных запросов, этого хватит на 1000 профилей или постов. Инструменты с открытым кодом, например Instaloader и instagrapi, бесплатны: они работают на ваших серверах, часто требуют вход в Instagram, а поддерживать их работу при изменениях в Instagram придётся вам.
Зависит от задачи. Instagram API бесплатен для бизнес-аккаунтов и аккаунтов авторов, до которых можно добраться с вашего собственного. Apify и Bright Data продают готовые строки и берут деньги за каждый результат. Web Unlocker возвращает всю публичную страницу по одной цене за страницу, в Instagram и на любом другом сайте.
Да. Парсер профилей Instagram от Apify берёт $2.60 за 1000 профилей на бесплатном тарифе. Web Unlocker возвращает ту же публичную страницу профиля с точным числом подписчиков и 12 последними постами за $1.14 за 1000 профилей, с учётом повторов.
Профили, посты и Reels, которые открываются без входа, - это публичные страницы. В деле Meta v. Bright Data в январе 2024 года федеральный суд США решил, что условия Meta не запрещают парсинг публичных данных без входа в аккаунт. Что вы собираете и как используете, решаете вы, поэтому сверьтесь с правилами, которые относятся к вашему проекту.
Расскажите немного о вашей команде и получите: