API de Scraper de Imágenes de Google: Lee la vertical de imágenes como JSON
Advanced Data Extraction Specialist
Puntos Clave:
- Una solicitud POST, sin navegador. Los datos de Google Images provienen de una sola
POSTal actorscraper.google.searchcontbm: "isch". La API del Scraper renderiza la página y la analiza del lado del servidor; recibes un JSON de vuelta. - El vertical de imágenes es un campo de entrada.
tbm: "isch"cambia el actor de búsqueda de Google al vertical de Imágenes;qcontiene tu consulta. Todo lo demás es opcional. - Un encabezado de autenticación en todas partes. Cada llamada lleva
x-api-token: <tu clave>. Una clave de cuenta cubre el actor y cada otro actor descraper.*. - JSON analizado, aplanado en el nivel superior. El actor devuelve
metadata,search_informationysuggested_searchesdirectamente — sin un envoltorio deresultque desempaquetar. Cada chip de refinamiento ensuggested_searcheslleva una miniatura en líneadata:image/jpeg;base64. - La cuadrícula completa de imágenes está en
metadata.rawUrl. El objeto analizado muestra los chips de refinamiento y los metadatos de búsqueda;metadata.rawUrlapunta a la página de Google Images completamente renderizada almacenada cuando necesitas cada URL de imagen que el objeto analizado no aplana. - Gratis para comenzar. Las nuevas cuentas de Scrapeless incluyen créditos gratuitos para la API de Scraper — regístrate en app.scrapeless.com.
Introducción: leer el vertical de Imágenes como JSON
Google Images se basa en uno de los índices visuales más grandes de la web abierta, y mucho trabajo depende de lo que ofrece: investigación visual de productos, monitoreo de marcas y logotipos, creación de conjuntos de datos de imágenes para entrenamiento de modelos, seguimiento de cómo una consulta se representa en diferentes regiones y obtención de referencias de diseño a gran escala. La consulta es la entrada; una cuadrícula de imágenes y una fila de chips de refinamiento son la salida.
Obtener esa salida de manera programática es la parte difícil. La página de Imágenes se renderiza con JavaScript, las miniaturas están incrustadas como base64 dentro de la carga del script, los chips de refinamiento y las URL de imágenes están enterrados en los datos de hidratación de la página, y una solicitud anónima recibe un desafío en lugar de una cuadrícula. Un scraper manual tiene que renderizar la página, superar la capa anti-bot y realizar ingeniería inversa al marcado — tres trabajos, todos los cuales cambian cuando Google lanza un rediseño.
Esta guía explica el actor scraper.google.search en la API de Scraper de Scrapeless, ejecutado con tbm: "isch". Una solicitud HTTP devuelve un objeto analizado más una copia almacenada de la página de imágenes renderizada. Sin navegador que controlar, sin analizador que mantener. El ejemplo trabajado a continuación es la captura real de q: "golden retriever"; una guía complementaria de la API de Scraper cubre la familia de respuestas de AI con la misma forma de solicitud.
Por qué la API de Scraper para Google Images
- Sin navegador, sin analizador que mantener. El actor renderiza y analiza la página de Imágenes en el servidor; recibes campos estructurados, no un DOM que caminar o un blob de base64 que decodificar a mano.
- Una entrada cambia el vertical. El mismo actor de búsqueda de Google sirve resultados web e imágenes — establece
tbm: "isch"y la respuesta regresa como el vertical de Imágenes. - Egreso residencial y renderización están integrados. El geo-enrutamiento y el renderizado de JavaScript se ejecutan dentro del actor; envías
{ actor, input }y lees el resultado. - Una forma para leer. El objeto analizado de Imágenes está aplanado en el nivel superior, por lo que un envoltorio de cliente escrito una vez maneja la respuesta sin desempaquetar sobres anidados.
Obtén tu clave de API en el plan gratuito en app.scrapeless.com. El actor de búsqueda de Google es parte de Deep SerpApi, que está en el catálogo de precios.
Requisitos Previos
- Una cuenta de Scrapeless y clave de API — regístrate en app.scrapeless.com.
curlpara la prueba rápida, o Python 3.10+ para el cliente a continuación.- Familiaridad básica con HTTP y JSON.
Almacena tu clave en el entorno para que nunca aparezca en el código:
bash
export SCRAPELESS_API_KEY=tu_token_api_aqui
La solicitud
Google Images utiliza el endpoint de site/SERP. Nombras el actor, le entregas una entrada y envías tu clave en el encabezado.
- Endpoint:
POST https://api.scrapeless.com/api/v1/scraper/request - Actor:
scraper.google.search - Encabezado de Autenticación:
x-api-token: $SCRAPELESS_API_KEY
El cuerpo es { "actor": "<nombre>", "input": { … } }. Para el vertical de Imágenes, la entrada son dos campos:
json
{
"actor": "scraper.google.search",
"input": { "q": "golden retriever", "tbm": "isch" }
}
| campo de entrada | requerido | descripción |
|---|---|---|
q |
sí | la cadena de consulta para la búsqueda de imágenes |
tbm |
sí | vertical de búsqueda — "isch" selecciona Google Imágenes |
hl |
no | idioma de la interfaz, por ejemplo, "es" |
gl |
no | país / región, por ejemplo, "es" |
google_domain |
no | dominio de Google al que hacer la solicitud, por ejemplo, ".google.com" |
Ejemplo — curl y Python
La verificación más rápida es una sola llamada 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": "retriever dorado", "tbm": "isch" }
}'
La misma solicitud en Python, con la respuesta analizada directamente en un diccionario:
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("retriever dorado")
# google.search aplana el resultado analizado en el nivel superior,
# así que data.get("result", data) vuelve a la respuesta completa.
print(json.dumps(data.get("result", data), indent=2, ensure_ascii=False))
Debido a que el actor de búsqueda de Google aplana su salida analizada en el nivel superior, no hay una clave result a la que acceder — data.get("result", data) simplemente devuelve toda la respuesta, y puedes leer search_information y suggested_searches directamente de ella.
Obtén tu clave API en el plan gratuito: app.scrapeless.com
Lo que obtienes de vuelta
Para la vertical de Imágenes, el actor proporciona un sobre metadata de Scrapeless, la search_information que Google devuelve, y la fila de chips de refinamiento de imágenes (suggested_searches) que Google presenta sobre la cuadrícula. Cada chip lleva su propia miniatura en línea. Esta es la captura real para q: "retriever dorado", tbm: "isch":
json
// Captura real para q:"retriever dorado", tbm:"isch".
// miniaturas en base64 recortadas; suggested_searches abreviado a 2 de 5 chips — muestra 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 la ortografía exacta",
"query_displayed": "retriever dorado",
"total_results": 0,
"time_taken_displayed": ""
},
"suggested_searches": [
{
"name": "Cachorro",
"link": "https://www.google.com/search?sca_esv=…&gl=us&q=retriever+dorada+cachorro&uds=…&udm=2&sa=X&…",
"uds": "",
"q": "Cachorro retriever dorado",
"thumbnail": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/…"
},
{
"name": "Bonito",
"link": "https://www.google.com/search?sca_esv=…&gl=us&q=bonito+retriever+dorada&uds=…&udm=2&sa=X&…",
"uds": "",
"q": "Bonito retriever dorado",
"thumbnail": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/…"
}
]
}
Campo por campo:
| campo | tipo | lo que contiene |
|---|---|---|
metadata.engine |
string | el motor del actor que atendió la solicitud — "google.search" |
metadata.rawUrl |
string (URL) | copia almacenada de la página de Google Imágenes completamente renderizada; consíguela para la cuadrícula completa de imágenes |
pagination |
objeto | cursores de paginación; un objeto vacío en esta captura |
search_information.query_displayed |
string | la consulta que Google devolvió ("retriever dorado") |
search_information.organic_results_state |
string | el estado de ortografía / resultados ("Resultados para la ortografía exacta") |
search_information.total_results |
número | el conteo de resultados que Google informó — 0 para la vertical de imágenes aquí |
search_information.time_taken_displayed |
string | la cadena de tiempo de Google; vacía en esta captura |
suggested_searches[] |
array | los chips de refinamiento de imágenes renderizados sobre la cuadrícula |
suggested_searches[].name |
string | la etiqueta del chip ("Cachorro", "Bonito", "Labrador", …) |
suggested_searches[].q |
string | la consulta refinada que ejecuta el chip ("Cachorro retriever dorado") |
suggested_searches[].link |
string (URL) | la URL de búsqueda de Google Imágenes para ese refinamiento (udm=2 es el parámetro de vertical de imágenes de Google) |
suggested_searches[].uds |
string | el token de chip uds de Google; vacío en esta captura |
suggested_searches[].thumbnail |
string | una vista previa en línea data:image/jpeg;base64 para el chip |
Algunas observaciones honestas sobre la forma:
- El objeto analizado revela los chips de refinamiento, no un array plano
images_results. Para el verticalisch, el actor devuelvesuggested_searchesmás la página renderizada enmetadata.rawUrl. Cuando necesites cada URL de imagen en la cuadrícula, obténmetadata.rawUrl: esa página almacenada contiene el conjunto completo que el objeto analizado no aplana. - Las miniaturas son inline base64. El
thumbnailde cada chip es un valor completodata:image/jpeg;base64, utilizable sin una segunda solicitud; el fixture las recorta para mejorar la legibilidad. search_informationrefleja lo que muestra Google.total_resultsytime_taken_displayedpueden regresar como0y vacíos en el vertical de imágenes, donde Google no muestra la línea "Acerca de N resultados" que ofrece en la búsqueda web.- Trata los campos por chip como anulables.
udsestá presente en cada chip pero vacío en esta captura, y el conteo de chips varía según la consulta: lee lo que hay en vez de asumir una longitud fija.
Conclusión
Leer Google Imágenes se reduce a una decisión y una solicitud: apunta al actor scraper.google.search en el vertical de Imágenes con tbm: "isch", envía { actor, input } con tu x-api-token, y lee los campos analizados. La respuesta se aplana en el nivel superior: metadata, search_information, y los chips de refinamiento suggested_searches con sus miniaturas inline, mientras que metadata.rawUrl contiene la página completamente renderizada para la cuadrícula completa. Escribe el envoltorio del cliente una vez, dirígelo a la consulta que necesites, y la misma forma cubre los actores de respuesta AI cuando la canalización crezca.
¿Listo para construir tu canalización de datos de imágenes impulsada por IA?
Únete a nuestra comunidad para reclamar un plan gratuito y conectarte con desarrolladores que están construyendo canalizaciones de Google Imágenes: Discord · Telegram.
Regístrate en app.scrapeless.com para créditos gratuitos de Scraper API y apunta al actor scraper.google.search a las consultas, idiomas y regiones que tu canalización de imágenes necesita.
Preguntas Frecuentes
Q: ¿Es legal rastrear Google Imágenes?
El actor recopila datos públicamente visibles. Las reglas varían según la jurisdicción y los términos de servicio de Google, así que revisa los ToS relevantes y consulta con un abogado para tu caso de uso antes de ejecutar a gran escala. Nunca recojas datos personales protegidos bajo GDPR o CCPA, y respeta los derechos asociados con imágenes individuales.
Q: ¿Cómo me autentico?
Cada solicitud lleva el encabezado x-api-token: <tu clave>. Una clave de cuenta funciona en scraper.google.search y en todos los demás actores. Crea una clave en el plan gratuito en app.scrapeless.com.
Q: ¿Cómo cambio de resultados web a imágenes?
Establece tbm: "isch" en la entrada. El mismo actor scraper.google.search sirve el SERP web por defecto; tbm: "isch" selecciona el vertical de Imágenes y cambia la forma analizada a los chips de refinamiento de imágenes más la página de imagen renderizada.
Q: ¿Dónde están las URLs de imagen reales?
El objeto analizado revela los chips de refinamiento (suggested_searches) y los metadatos de búsqueda. La cuadrícula completa de URLs de imágenes se encuentra en la página almacenada en metadata.rawUrl: obtén esa URL cuando necesites cada imagen en la página de resultados, no solo la fila de refinamiento.
Q: ¿Puedo restringir resultados por idioma o país?
Sí. Las entradas opcionales hl (idioma de la interfaz), gl (país / localidad) y google_domain limitan la solicitud; por ejemplo, { "q": "golden retriever", "tbm": "isch", "hl": "es", "gl": "es" }.
Q: ¿Necesito un proxy?
No. La salida residencial y la geo-enrutación están integradas en el actor: tú envías la entrada y el actor maneja la red y la capa de renderizado.
Q: ¿Puedo ejecutar esto sin un SDK o agente de IA?
Sí. Es HTTP simple: curl, requests de Python, fetch de Node, o cualquier lenguaje con un cliente HTTP funciona directamente contra POST /api/v1/scraper/request. No se requiere SDK.
En Scrapeless, solo accedemos a datos disponibles públicamente y cumplimos estrictamente con las leyes, regulaciones y políticas de privacidad del sitio web aplicables. El contenido de este blog es sólo para fines de demostración y no implica ninguna actividad ilegal o infractora. No ofrecemos garantías y renunciamos a toda responsabilidad por el uso de la información de este blog o enlaces de terceros. Antes de realizar cualquier actividad de scraping, consulte a su asesor legal y revise los términos de servicio del sitio web de destino u obtenga los permisos necesarios.



