API de Raspagem de Imagens do Google: Ler o Vertical de Imagens como JSON
Advanced Data Extraction Specialist
Principais Conclusões:
- Uma POST, sem navegador. Os dados do Google Images vêm de uma única
POSTpara o atorscraper.google.searchcomtbm: "isch". A API Scraper renderiza a página e a analisa do lado do servidor; você lê o JSON de volta. - O vertical de imagem é um campo de entrada.
tbm: "isch"altera o ator de busca do Google para o vertical de Imagens;qcontém sua consulta. Tudo o mais é opcional. - Um cabeçalho de autenticação em todos os lugares. Cada chamada contém
x-api-token: <sua chave>. Uma chave de conta cobre o ator e todos os outros atoresscraper.*. - JSON analisado, achatado no nível superior. O ator retorna
metadata,search_informationesuggested_searchesdiretamente — sem um wrapperresultpara desempacotar. Cada chip de refinamento emsuggested_searchescontém uma miniaturadata:image/jpeg;base64em linha. - A grade completa de imagens está em
metadata.rawUrl. O objeto analisado apresenta os chips de refinamento e os metadados de busca;metadata.rawUrlaponta para a página do Google Images totalmente renderizada armazenada, quando você precisa de cada URL de imagem que o objeto analisado não achata. - Gratuito para começar. Novas contas Scrapeless incluem créditos gratuitos da API Scraper — inscreva-se em app.scrapeless.com.
Introdução: ler o vertical de Imagens como JSON
O Google Images se baseia em um dos maiores índices visuais na web aberta, e muito trabalho depende do que ele apresenta: pesquisa de produtos visuais, monitoramento de marcas e logotipos, construção de conjuntos de dados de imagem para treinamento de modelos, rastreamento de como uma consulta se apresenta em diferentes regiões e coleta de referências de design em grande escala. A consulta é a entrada; uma grade de imagens e uma linha de chips de refinamento é a saída.
Obter essa saída programaticamente é a parte difícil. A página de Imagens é renderizada em JavaScript, as miniaturas estão embutidas como base64 dentro do payload do script, os chips de refinamento e URLs de imagens estão enterrados nos dados de hidratação da página, e uma solicitação anônima recebe um desafio em vez de uma grade. Um scraper feito à mão precisa renderizar a página, passar pela camada anti-bot e reverter a engenharia da marcação — três tarefas, todas as quais mudam quando o Google publica um redesign.
Este guia descreve o ator scraper.google.search na API Scraper do Scrapeless, executado com tbm: "isch". Uma solicitação HTTP retorna um objeto analisado mais uma cópia armazenada da página de imagem renderizada. Sem navegador para acionar, sem parser para manter. O exemplo trabalhado abaixo é a captura real de q: "golden retriever"; um guia acompanhante da API Scraper cobre a família de respostas de IA com a mesma forma de solicitação.
Por que a API Scraper para Google Images
- Sem navegador, sem parser a manter. O ator renderiza e analisa a página de Imagens no servidor; você recebe campos estruturados, não um DOM para percorrer ou um blob base64 para decodificar manualmente.
- Uma entrada altera o vertical. O mesmo ator de busca do Google serve resultados da web e imagens — defina
tbm: "isch"e a resposta retorna como o vertical de Imagens. - Egress e renderização residencial estão embutidos. Geo-rotações e renderização em JavaScript funcionam dentro do ator; você envia
{ actor, input }e lê o resultado. - Uma forma para ler. O objeto de Imagens analisado é achatado no nível superior, assim um wrapper de cliente escrito uma vez lida a resposta sem desempacotar envelopes aninhados.
Obtenha sua chave de API no plano gratuito em app.scrapeless.com. O ator de busca do Google é parte do Deep SerpApi, que está no catálogo de preços.
Pré-requisitos
- Uma conta Scrapeless e chave de API — inscreva-se em app.scrapeless.com.
curlpara o teste rápido, ou Python 3.10+ para o cliente abaixo.- Familiaridade básica com HTTP e JSON.
Armazene sua chave no ambiente para que nunca apareça no código:
bash
export SCRAPELESS_API_KEY=sua_chave_api_aqui
A solicitação
O Google Images utiliza o endpoint site/SERP. Você nomeia o ator, lhe dá uma entrada e envia sua chave no cabeçalho.
- Endpoint:
POST https://api.scrapeless.com/api/v1/scraper/request - Ator:
scraper.google.search - Cabeçalho de autenticação:
x-api-token: $SCRAPELESS_API_KEY
O corpo é { "actor": "<name>", "input": { … } }. Para o vertical de Imagens, a entrada tem dois campos:
json
{
"actor": "scraper.google.search",
"input": { "q": "golden retriever", "tbm": "isch" }
}
| campo de entrada | obrigatório | descrição |
|---|---|---|
q |
sim | a string de consulta de pesquisa de imagem |
tbm |
sim | vertical de pesquisa — "isch" seleciona Google Imagens |
hl |
não | idioma da interface do usuário, por exemplo, "en" |
gl |
não | país / localidade, por exemplo, "us" |
google_domain |
não | domínio do Google a ser acessado, por exemplo, ".google.com" |
Exemplo — curl e Python
A verificação mais rápida é uma única chamada curl:
bash
curl -sS -X POST https://api.scrapeless.com/api/v1/scraper/request \
-H "Content-Type: application/json" \
-H "x-api-token: ${SCRAPELESS_API_KEY}" \
-d '{
"actor": "scraper.google.search",
"input": { "q": "golden retriever", "tbm": "isch" }
}'
A mesma solicitação em Python, com a resposta analisada diretamente em um dicionário:
python
import os
import json
import requests
ENDPOINT = "https://api.scrapeless.com/api/v1/scraper/request"
def scrape_google_images(query: str) -> dict:
resp = requests.post(
ENDPOINT,
headers={
"Content-Type": "application/json",
"x-api-token": os.environ["SCRAPELESS_API_KEY"],
},
json={"actor": "scraper.google.search", "input": {"q": query, "tbm": "isch"}},
timeout=120,
)
resp.raise_for_status()
return resp.json()
if __name__ == "__main__":
data = scrape_google_images("golden retriever")
# google.search achata a saída analisada no nível superior,
# então data.get("result", data) recorre à resposta inteira.
print(json.dumps(data.get("result", data), indent=2, ensure_ascii=False))
Como o ator de pesquisa do Google achata sua saída analisada no nível superior, não há uma chave result para acessar — data.get("result", data) simplesmente retorna a resposta inteira, e você lê search_information e suggested_searches diretamente dela.
Obtenha sua chave de API no plano gratuito: app.scrapeless.com
O Que Você Recebe de Volta
Para o vertical de Imagens, o ator apresenta um envelope metadata do Scrapeless, a search_information que o Google retorna, e a linha de chips de refinamento de imagem (suggested_searches) que o Google renderiza acima da grade. Cada chip carrega seu próprio miniatura em linha. Esta é a captura real para q: "golden retriever", tbm: "isch":
json
// Captura real para q:"golden retriever", tbm:"isch".
// miniaturas base64 aparadas; suggested_searches abreviadas para 2 de 5 chips — amostra ilustrativa.
{
"metadata": {
"engine": "google.search",
"rawUrl": "https://api.scrapeless.com/storage/scrapeless.scraper.google.search/…_1781025000.html"
},
"pagination": {},
"search_information": {
"organic_results_state": "Resultados para grafia exata",
"query_displayed": "golden retriever",
"total_results": 0,
"time_taken_displayed": ""
},
"suggested_searches": [
{
"name": "Filhote",
"link": "https://www.google.com/search?sca_esv=…&gl=us&q=golden+retriever+puppy&uds=…&udm=2&sa=X&…",
"uds": "",
"q": "Filhote golden retriever",
"thumbnail": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/…"
},
{
"name": "Fofo",
"link": "https://www.google.com/search?sca_esv=…&gl=us&q=cute+golden+retriever&uds=…&udm=2&sa=X&…",
"uds": "",
"q": "Fofo golden retriever",
"thumbnail": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/…"
}
]
}
Campo por campo:
| campo | tipo | o que contém |
|---|---|---|
metadata.engine |
string | o motor do ator que atendeu à solicitação — "google.search" |
metadata.rawUrl |
string (URL) | cópia armazenada da página de Google Imagens completamente renderizada; acessá-la para a grade completa de imagens |
pagination |
objeto | cursores de paginação; um objeto vazio nesta captura |
search_information.query_displayed |
string | a consulta que o Google retornou ("golden retriever") |
search_information.organic_results_state |
string | o estado de grafia / resultados ("Resultados para grafia exata") |
search_information.total_results |
número | a contagem de resultados que o Google relatou — 0 para o vertical de imagem aqui |
search_information.time_taken_displayed |
string | a string de tempo do Google; vazia nesta captura |
suggested_searches[] |
array | os chips de refinamento de imagem renderizados acima da grade |
suggested_searches[].name |
string | o rótulo do chip ("Filhote", "Fofo", "Labrador", …) |
suggested_searches[].q |
string | a consulta refinada que o chip executa ("Filhote golden retriever") |
suggested_searches[].link |
string (URL) | a URL de pesquisa do Google Imagens para esse refinamento (udm=2 é o parâmetro de vertical de imagem do Google) |
suggested_searches[].uds |
string | token de chip uds do Google; vazio nesta captura |
suggested_searches[].thumbnail |
string | uma prévia em linha data:image/jpeg;base64 para o chip |
Algumas observações honestas sobre a forma:
- O objeto analisado revela os chips de refinamento, não um array plano
images_results. Para a verticalisch, o ator retornasuggested_searchesmais a página renderizada emmetadata.rawUrl. Quando você precisa de cada URL de imagem na grade, busquemetadata.rawUrl— essa página armazenada contém o conjunto completo que o objeto analisado não achata. - As miniaturas estão em base64 inline. O
thumbnailde cada chip é um valor completodata:image/jpeg;base64, utilizável sem uma segunda solicitação; o fixture os corta para legibilidade. search_informationreflete o que o Google mostra.total_resultsetime_taken_displayedpodem voltar como0e vazios na vertical de imagem, onde o Google não renderiza a linha "Sobre N resultados" que mostra para pesquisa na web.- Trate os campos por chip como anuláveis.
udsestá presente em cada chip, mas vazio nesta captura, e a contagem de chips varia por consulta — leia o que está lá ao invés de assumir um comprimento fixo.
Conclusão
Ler imagens do Google se resume a uma decisão e um pedido: aponte o ator scraper.google.search para a vertical de Imagens com tbm: "isch", envie { actor, input } com seu x-api-token, e leia os campos analisados de volta. A resposta é achatada no nível superior — metadata, search_information e os chips de refinamento suggested_searches com suas miniaturas inline — e metadata.rawUrl contém a página totalmente renderizada para a grade completa. Escreva o wrapper do cliente uma vez, aponte-o para a consulta que você precisa, e a mesma forma cobre os atores de resposta de IA quando o pipeline crescer.
Pronto para Construir Seu Pipeline de Dados de Imagem com IA?
Junte-se à nossa comunidade para reivindicar um plano gratuito e se conectar com desenvolvedores construindo pipelines de Imagens do Google: Discord · Telegram.
Inscreva-se em app.scrapeless.com para créditos gratuitos da Scraper API e aponte o ator scraper.google.search para as consultas, idiomas e regiões que seu pipeline de imagens precisa.
FAQ
Q: Raspagem de imagens do Google é legal?
O ator coleta dados visíveis publicamente. As regras variam por jurisdição e pelos termos de serviço do Google, então revise os ToS relevantes e consulte um advogado para seu caso de uso antes de operar em larga escala. Nunca colete dados pessoais protegidos sob o GDPR ou CCPA, e respeite os direitos vinculados a imagens individuais.
Q: Como faço para autenticar?
Cada solicitação carrega o cabeçalho x-api-token: <sua chave>. Uma chave de conta funciona em scraper.google.search e em todos os outros atores. Crie uma chave no plano gratuito em app.scrapeless.com.
Q: Como faço para mudar de resultados da web para imagens?
Defina tbm: "isch" no input. O mesmo ator scraper.google.search serve o SERP da web por padrão; tbm: "isch" seleciona a vertical de Imagens e muda a forma analisada para os chips de refinamento de imagem mais a página de imagem renderizada.
Q: Onde estão as URLs reais das imagens?
O objeto analisado revela os chips de refinamento (suggested_searches) e os metadados da pesquisa. A grade completa de URLs de imagem reside na página armazenada em metadata.rawUrl — busque essa URL quando precisar de cada imagem na página de resultados, não apenas da linha de refinamento.
Q: Posso restringir resultados por idioma ou país?
Sim. Os inputs opcionais hl (idioma da interface), gl (país / localidade) e google_domain delimitam a solicitação — por exemplo { "q": "golden retriever", "tbm": "isch", "hl": "pt", "gl": "br" }.
Q: Preciso de um proxy?
Não. A egressão residencial e o roteamento geográfico estão incorporados ao ator — você envia o input, e o ator lida com a camada de rede e renderização.
Q: Posso executar isso sem um SDK ou agente de IA?
Sim. É HTTP puro — curl, Python requests, Node fetch, ou qualquer linguagem com um cliente HTTP funciona diretamente contra POST /api/v1/scraper/request. Nenhum SDK é 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.



