Cole um perfil, post ou reel público. O Web Unlocker devolve a página do Instagram sem login: o número exato de seguidores e os 12 posts mais recentes de um perfil, e as curtidas, os comentários e a legenda exatos de um post. $0.98 por 1.000 páginas.
1.000 requisições grátis · Pague só se der certo · Mais de 195 países · Pronto para o Claude
As páginas do Instagram levam de 3 a 12 segundos. Ainda está em andamento, não precisa clicar de novo.
Pronto para seus próprios perfis? Obtenha uma chave de API ou agende uma demo.
Conte um pouco sobre sua equipe e receba:
Páginas públicas, sem login e sem conta no Instagram. Plataformas de influenciadores, marcas, ferramentas de social listening e pesquisadores leem estes quatro tipos de página, cada um cobrado como uma página.










Quer testar você mesmo? Pegue sua chave de API com 1.000 requisições grátis.
O Web Unlocker cobra uma página de perfil uma vez, com os seguidores exatos e os 12 posts mais recentes, a $0.98 por 1.000 páginas. Os scrapers de perfis do Instagram na Apify, na Bright Data e na ScrapeCreators cobram mais pelo mesmo perfil.
A Apify cobra $2.60 por 1.000 perfis.
Aqui 1.000 custam $1.14.
O Instagram devolve vazia cerca de uma página de perfil em cada sete. Peça de novo com uma URL nova e os dados voltam: o preço acima já conta essas novas tentativas.
Quanto custam 1.000 perfis do Instagram
1.000 perfis públicos com seguidores e bio, a preços publicados
Gologin: $0.98 por 1.000 páginas, mais uma nova tentativa a cada cerca de sete perfis. A Bright Data cobra cada registro, $1.50 por 1.000. A ScrapeCreators cobra cada requisição, $1.88 por 1.000 no plano de $47. O scraper de perfis do Instagram da própria Apify cobra $2.60 por 1.000 perfis no plano grátis.
Pronto para rodar nos seus próprios perfis? Obtenha sua chave de API e requisições grátis.
Nosso teste de scraping do Instagram: 20 perfis, 20 posts e 20 reels das grades deles, e 10 páginas de hashtag, cada um pedido até três vezes, como a demo acima faz. Veja o que voltou e com que rapidez.
51 de 60 voltaram na primeira tentativa.
Os outros 9 na segunda ou na terceira.
A API do próprio Instagram, os scrapers de Instagram da Apify e a Instagram Scraper API da Bright Data: o que cada um cobra pelos mesmos 1.000 perfis e o que exige de você antes de começar.
| O que é preciso | ||||
|---|---|---|---|---|
| Você paga por | Uma página | Grátis com limites | Cada resultado | Cada registro |
| 1.000 perfis | $1.14 | Grátis | $2.60 | $1.50 |
| Contas pessoais | Sim | Não | Sim | Sim |
| Sua própria conta no Instagram | Não precisa | Conta profissional | Não precisa | Não precisa |
| Grátis para começar | 1.000 requisições | Com um app da Meta | $5 por mês | 5.000 por mês |
| A página inteira em HTML | Sim | Não | Não | Não |
Faz scraping de mais do que o Instagram? O Web Unlocker devolve qualquer página do mesmo jeito, pelo mesmo preço.
Uma página de perfil traz os 12 posts mais recentes, e a página de cada post traz as curtidas e os comentários exatos. 13 páginas, $0.0127, e você tem o engajamento real do criador, post a post.
O Instagram arredonda para 268M.
O scraper devolve 268,157,304.
O Instagram guarda os dados de uma página pública como JSON dentro do HTML. O Web Unlocker devolve esse HTML, e poucas linhas de código leem o perfil ou o post. A aba Lista de perfis é um pequeno crawler do Instagram: entra uma lista de contas, sai um CSV.
Preencha o formulário acima. A chave chega por e-mail em até um dia útil.
Um perfil para os seguidores e os posts mais recentes, um post ou reel para as curtidas e os comentários.
Confira se a página veio com dados e peça de novo com uma URL nova quando o Instagram enviar uma vazia.
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`);Pronto para rodar nos seus próprios perfis? Obtenha sua chave de API e requisições grátis.
Uma conta, uma rede de proxies, um ecossistema. Escolha o produto de que a tarefa precisa.
Faz scraping de mais sites? Veja os scrapers do Facebook, do Google Play, do Twitter (X), do YouTube, do Reddit e do Google Maps, ou todas as ferramentas de web scraping.
Um Instagram scraper é uma ferramenta que lê páginas públicas do Instagram e as transforma em dados: os seguidores, a bio e os posts mais recentes de um perfil, e as curtidas, os comentários e a legenda de um post. O Gologin Web Unlocker é uma API de Instagram scraper: envie o endereço de uma página e ele a devolve com esses dados, a $0.98 por 1.000 páginas.
Envie o endereço de um perfil, post ou reel público ao Web Unlocker. Ele devolve a página como um visitante sem login a vê, com os dados que o Instagram guarda dentro dela em JSON: seguidores, posts, curtidas, comentários e legendas. O código acima lê tudo isso em poucas linhas.
Envie o endereço do perfil ao Web Unlocker com a biblioteca requests e leia o JSON da página. A aba Python acima é um script completo, testado na API real: ele mostra os seguidores, o número de contas seguidas, a bio e os 12 posts mais recentes do perfil.
Só em parte. O Business Discovery da Instagram API lê contas comerciais e de criador de conteúdo, e só a partir da sua própria conta profissional, por meio de um app da Meta. Contas pessoais ficam de fora, e a busca por hashtag para em 30 hashtags por semana. A antiga Basic Display API foi encerrada em 4 de dezembro de 2024.
Sim. Perfis, posts e reels públicos e a página de populares de uma hashtag carregam sem login. O Web Unlocker os abre como um visitante sem login, então você não precisa de conta no Instagram e não arrisca nenhuma das suas. Perfis privados continuam fechados: os posts deles são só para seguidores aprovados. O TikTok funciona do mesmo jeito: o TikTok scraper lê perfis e vídeos públicos sem login.
De vez em quando o Instagram envia uma página sem dados: cerca de uma página de perfil em cada sete no nosso teste. A demo acima e os exemplos de código verificam se os dados vieram e pedem de novo com uma URL nova. Posts e reels voltaram na primeira tentativa 36 vezes em 40.
Não como lista: a lista de seguidores de uma conta só abre para usuários logados. O número exato de seguidores é público, e o Web Unlocker o devolve com cada perfil.
O número de comentários, sim: cada página de post e de reel traz o número exato. Os comentários em si carregam só para usuários logados, então o Web Unlocker não os devolve.
Para muitas hashtags, o Instagram mostra a visitantes sem login uma página de populares com 12 reels em destaque e o número de reproduções deles, e o Web Unlocker a devolve. O feed completo de uma hashtag é para usuários logados.
Sim. Cada post de uma página de perfil e cada página de post vêm com os links dos arquivos de imagem, então seu código pode salvá-los.
$0.98 por 1.000 páginas, o mesmo preço para toda página: um perfil com os 12 posts mais recentes é uma página, um post é uma página. Uma requisição com falha não custa nada. Os planos começam em $49 por mês para 50.000 requisições.
O Web Unlocker vem com 1.000 requisições grátis, o suficiente para 1.000 perfis ou posts. Ferramentas open source como Instaloader e instagrapi são grátis: rodam nos seus próprios servidores, muitas vezes pedem login no Instagram, e mantê-las funcionando conforme o Instagram muda fica por sua conta.
Depende da tarefa. A Instagram API é grátis para as contas comerciais e de criador de conteúdo que você alcança a partir da sua. Apify e Bright Data vendem linhas prontas e cobram cada resultado. O Web Unlocker devolve a página pública inteira por um preço por página, no Instagram e em qualquer outro site.
Sim. O scraper de perfis do Instagram da Apify cobra $2.60 por 1.000 perfis no plano grátis. O Web Unlocker devolve a mesma página de perfil pública, com o número exato de seguidores e os 12 posts mais recentes, por $1.14 a cada 1.000 perfis, contando as novas tentativas.
Perfis, posts e reels que carregam sem login são páginas públicas. No caso Meta v. Bright Data, em janeiro de 2024, um tribunal federal dos EUA concluiu que os termos da Meta não proíbem o scraping sem login de dados públicos. O que você coleta e como usa é decisão sua, então confira com as regras que valem para o seu projeto.
Conte um pouco sobre sua equipe e receba: