🎯 Um navegador em nuvem personalizável e anti-detecção alimentado por Chromium desenvolvido internamente, projetado para rastreadores web e agentes de IA. 👉Experimente agora
De volta ao blog

Como Raspagem do Instagram: Perfis, Postagens, Comentários e Mais

Emily Chen
Emily Chen

Advanced Data Extraction Specialist

30-Jun-2026

TL;DR:

  • O Instagram se comunica com suas próprias APIs internas JSON — portanto, chame-as diretamente. A página de perfil é carregada por web_profile_info; posts e comentários vêm do endpoint GraphQL. Você busca esse JSON dentro de uma sessão renderizada em vez de raspar o DOM.
  • Duas coisas fazem os chamados da API funcionarem: o cabeçalho x-ig-app-id e os cookies da própria página. Carregue instagram.com primeiro para que a sessão tenha cookies, em seguida, use fetch() a API de dentro da página com credentials: 'include' e o cabeçalho app-id.
  • Região e um navegador real não são opcionais. O Instagram considera fortemente a reputação do IP e impressões digitais; a mesma chamada que falha de uma saída retorna de forma limpa de outra. Defina proxyCountry e utilize um navegador anti-detecção.
  • Você recebe objetos estruturados, não HTML. web_profile_info retorna o objeto user completo — seguidores, seguindo, contagem de posts, verificação, biografia — exatamente como o front-end do Instagram o consome.
  • Um padrão cobre perfis, posts e comentários. Crie uma sessão, acesse o endpoint interno correspondente, analise o JSON. A superfície muda; a técnica não.
  • Gratuito para começar. Novas contas Scrapeless incluem tempo de execução gratuito do Scraping Browser — inscreva-se em app.scrapeless.com.

Introdução: raspe o Instagram a partir de suas próprias APIs

As páginas da web do Instagram são shells do React hidratadas a partir de endpoints JSON internos. Raspar o DOM renderizado é a maneira difícil e frágil de fazê-lo — seletores mudam e a maioria dos dados nem está no markup inicial. A maneira confiável é chamar os mesmos endpoints que o front-end chama: web_profile_info para um perfil, a consulta GraphQL para um post e seus comentários. Eles retornam JSON limpo e estruturado.

O problema é que esses endpoints apenas respondem a uma solicitação que parece ter vindo do aplicativo web do Instagram. Isso significa três coisas: a solicitação carrega o cabeçalho x-ig-app-id, inclui os cookies da sessão, e se origina de um IP e impressão digital de navegador em que o Instagram confia. Perder qualquer um dos três e você recebe um corpo vazio ou um ponto de verificação.

Este guia opera no Scrapeless Scraping Browser — Chromium anti-deteção com saída residencial — conectado ao Puppeteer via CDP. Você carrega instagram.com para obter uma sessão real, e em seguida chama suas APIs internas de dentro da página. A extração de perfil abaixo foi capturada ao vivo. Apenas dados públicos.


O Que Você Pode Fazer Com Isso

  • Puxar um perfil — seguidores, seguindo, contagem de posts, verificação, biografia, links externos.
  • Buscar um único post pelo shortcode com sua mídia, legenda e contagens.
  • Coletar comentários de um post com autor, texto e contagens de curtidas.
  • Percorrer os posts de um usuário paginando o endpoint da linha do tempo.
  • Enriquecer perfis em escala percorrendo a chamada do perfil em uma lista de handles.

Por Que Scrapeless Scraping Browser

Scrapeless Scraping Browser é um navegador em nuvem personalizável e anti-deteção projetado para rastreadores web e agentes de IA. Para o Instagram especificamente, ele traz:

  • Chromium auto-desenvolvido — um navegador real que inicializa a sessão e mantém os cookies que as chamadas da API precisam.
  • Impressão digital anti-deteção — a solicitação é interpretada como o aplicativo web do Instagram, assim os endpoints internos respondem ao invés de retornar um ponto de verificação.
  • Proxies residenciais em mais de 195 países — defina a saída por país; a região correta é o que garante uma resposta limpa.
  • TTL de sessão configurável — mantenha a sessão ativa durante várias chamadas de endpoint.
  • Uma conexão padrão do Puppeteer — crie uma sessão com o SDK, e depois puppeteer.connect() via CDP; o resto é Puppeteer puro.

Obtenha sua chave de API no plano gratuito em app.scrapeless.com.


Pré-requisitos

  • Node.js 18 ou superior
  • Uma conta Scrapeless e chave de API — inscreva-se em app.scrapeless.com
  • Familiaridade básica com Puppeteer e JSON

Instalação

bash Copy
npm install @scrapeless-ai/sdk puppeteer-core
bash Copy
export SCRAPELESS_API_KEY="seu_token_api_aqui"

Passo 1 — Crie uma sessão e carregue o Instagram

O SDK cria a sessão em nuvem; Puppeteer conecta via CDP. Navegar para instagram.com primeiro é o que fornece à sessão os cookies que a API interna espera:

javascript Copy
import { Scrapeless } from '@scrapeless-ai/sdk';
import puppeteer from 'puppeteer-core';

const client = new Scrapeless({ apiKey: process.env.SCRAPELESS_API_KEY });

const { browserWSEndpoint } = await client.browser.create({
  proxyCountry: 'US',   // defina a saída — a região afeta se a API responde
  sessionTTL: 180,
});

const browser = await puppeteer.connect({ browserWSEndpoint });
const page = await browser.newPage();
javascript Copy
await page.goto('https://www.instagram.com/', {
  waitUntil: 'domcontentloaded',
  timeout: 60000,
});

Se uma chamada travar ou retornar vazia, troque proxyCountry antes de mudar qualquer outra coisa — a região é a causa mais comum.


Etapa 2 — Raspar um perfil de web_profile_info

Com a sessão aquecida, fetch() o endpoint do perfil de dentro da página. Os dois detalhes essenciais são o cabeçalho x-ig-app-id e credentials: 'include' (para que os cookies da página acompanhem):

javascript Copy
const user = await page.evaluate(async (username) => {
  const res = await fetch(
    `https://i.instagram.com/api/v1/users/web_profile_info/?username=${username}`,
    {
      headers: { 'x-ig-app-id': '936619743392459' }, // o id do aplicativo da web público
      credentials: 'include',
    },
  );
  const data = JSON.parse(await res.text());
  return data.data.user;
}, 'nasa');

console.log({
  username: user.username,
  full_name: user.full_name,
  verified: user.is_verified,
  followers: user.edge_followed_by.count,
  following: user.edge_follow.count,
  posts: user.edge_owner_to_timeline_media.count,
});
// {
//   username: 'nasa',
//   full_name: 'NASA',
//   verified: true,
//   followers: 104420451,
//   following: 91,
//   posts: 4817
// }

Isso retorna o objeto completo user do Instagram verbatim — a mesma estrutura que seu próprio front-end renderiza.

Obtenha sua chave de API no plano gratuito: app.scrapeless.com


Etapa 3 — Postagens e comentários do GraphQL

Postagens individuais e seus comentários vêm do endpoint GraphQL do Instagram. A forma é a mesma — fetch() de dentro da página — mas é um POST com o shortcode da postagem nas variáveis:

javascript Copy
const shortcode = 'C1234567abc'; // de instagram.com/p/<shortcode>/

const post = await page.evaluate(async (shortcode) => {
  const variables = JSON.stringify({ shortcode });
  // doc_id identifica a consulta GraphQL persistida que o aplicativo da web usa
  const body = `variables=${encodeURIComponent(variables)}&doc_id=YOUR_DOC_ID`;
  const res = await fetch('https://www.instagram.com/graphql/query', {
    method: 'POST',
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
    body,
    credentials: 'include',
  });
  return JSON.parse(await res.text());
}, shortcode);

O doc_id é o id da consulta persistida que o front-end do Instagram envia; capture o atual do painel de rede de uma visualização real de postagem. A partir da resposta você lê o objeto de mídia (xdt_shortcode_media) para a legenda, URLs de mídia e as bordas de comentários.


O Que Você Recebe de Volta

A chamada ao perfil retorna o objeto user do Instagram. A forma abaixo é uma captura real; as contagens mudam ao longo do tempo:

json Copy
{
  "username": "nasa",
  "full_name": "NASA",
  "is_verified": true,
  "is_private": false,
  "biography": "Fazendo o aparentemente impossível, possível...",
  "external_url": "https://...",
  "edge_followed_by": { "count": 104420451 },
  "edge_follow": { "count": 91 },
  "edge_owner_to_timeline_media": { "count": 4817 }
}
// Captura real de web_profile_info (@nasa). O objeto full user carrega dezenas de outros campos; leia os que você precisa.

Algumas observações honestas:

  • O objeto user é grande. Inclui sinalizadores de negócios, campos de agentes de IA, contagens de destaques e mais — leia o que precisar e ignore o restante.
  • As contagens estão em edge_*.count. Seguidores, seguindo e postagens estão aninhados sob edge_followed_by, edge_follow e edge_owner_to_timeline_media.
  • Contas privadas retornam a estrutura do perfil, mas não a mídia. Verifique is_private antes de esperar postagens.
  • A região importa tanto quanto os cabeçalhos. Defina proxyCountry; uma região desfavorável é a causa usual de um corpo vazio.

Conclusão: chame as APIs que o Instagram já expõe

Raspar o Instagram de maneira limpa significa chamar seus endpoints JSON internos de dentro de uma sessão real e aquecida — web_profile_info para perfis, GraphQL para postagens e comentários — com o cabeçalho x-ig-app-id e os próprios cookies da página. Executar no Scrapeless Scraping Browser é o que faz essas chamadas responderem: Chromium anti-detecção mais saída residencial, para que o Instagram trate a solicitação como seu próprio aplicativo da web. Para o mesmo padrão SDK sobre CDP em outra superfície social, veja o guia do scraper do TikTok; a página do produto do Scraping Browser e documentos cobrem toda a superfície SDK. Defina a região, aqueça a sessão, envie o cabeçalho do app-id e leia o JSON.


Pronto para Construir Seu Pipeline de Dados Potencializado por IA?

Junte-se à nossa comunidade para reivindicar um plano gratuito e se conectar com desenvolvedores que estão construindo pipelines de dados sociais: Discord · Telegram.

Inscreva-se em app.scrapeless.com para obter o tempo de execução gratuito do Scraping Browser e adapte os padrões acima aos perfis, posts e hashtags que seu fluxo de trabalho precisa. Veja preços para escalabilidade.


FAQ

Q: É legal fazer scraping do Instagram?
Coletar dados visíveis publicamente é geralmente permitido, mas os Termos de Serviço do Instagram se aplicam e as regras variam de acordo com a jurisdição. Faça scraping apenas de dados públicos, revise os ToS e consulte um advogado para seu caso de uso.

Q: Por que a API de perfis retorna um corpo vazio ou um ponto de verificação?
Normalmente, uma das três coisas: um cabeçalho x-ig-app-id ausente, falta de cookies de sessão (você pulou o carregamento de instagram.com primeiro) ou uma região de saída que o Instagram desconfia. Envie o cabeçalho, use credentials: 'include' e fixe proxyCountry.

Q: Eu preciso fazer login?
Para perfis públicos e posts, os endpoints do aplicativo web respondem a uma sessão anônima, mas aquecida. O scraping com login é um caminho diferente e de maior risco; este guia se mantém em dados públicos.

Q: De onde vem o doc_id para os posts?
É o id da consulta persistente que a interface do Instagram envia ao GraphQL. Leia o valor atual no painel de rede em uma visualização real de post — ele muda com o tempo.

Q: Eu preciso de um proxy?
Sim. O Instagram pesa muito na reputação de IP; fixe a saída residencial com proxyCountry para que os endpoints internos respondam.

Q: Quantas requisições posso fazer?
Mantenha em um número modesto — algumas sessões por região e um atraso entre as chamadas — para que o sinal de reputação do IP permaneça limpo.

Q: Posso rodar isso sem um agente de IA?
Sim. É o SDK Scrapeless mais o Puppeteer simples sobre o CDP — nenhum agente é necessário.

Na Scorretless, acessamos apenas dados disponíveis ao público, enquanto cumprem estritamente as leis, regulamentos e políticas de privacidade do site aplicáveis. O conteúdo deste blog é apenas para fins de demonstração e não envolve atividades ilegais ou infratoras. Não temos garantias e negamos toda a responsabilidade pelo uso de informações deste blog ou links de terceiros. Antes de se envolver em qualquer atividade de raspagem, consulte seu consultor jurídico e revise os termos de serviço do site de destino ou obtenha as permissões necessárias.

Artigos mais populares

Catálogo