Alternativa a Google Custom Search JSON API:
Google ha cerrado la Custom Search JSON API a los nuevos clientes y la apagará para todos el 1 de enero de 2027. Semscraper recoge la página de resultados real de Google, renderizada en un navegador, hasta 10 páginas por palabra clave, unos 100 resultados según la consulta, con pago por uso mediante créditos prepago y sin suscripción.
- La SERP real de Google, no un índice reducido
- Hasta 10 páginas por palabra clave
- 1.000 búsquedas de una página por 0,30 €
- 1.000 SERP gratis
- Sin tarjeta de crédito
Qué anunció Google,
Según la documentación de Google (developers.google.com/custom-search/v1/overview y el centro de ayuda de Programmable Search Engine), consultada el 10 de octubre de 2026.
Desde el 20 de enero de 2026
Los nuevos motores de Programmable Search Engine están limitados a 50 dominios elegidos: la opción «Buscar en toda la Web» ya no se ofrece. Los motores existentes que la usan la conservan hasta el 1 de enero de 2027.
Cerrada a nuevos clientes
Un proyecto nuevo ya no puede activar la Custom Search JSON API. Para buscar en hasta 50 dominios, Google remite a Vertex AI Search; la búsqueda en toda la Web hay que solicitársela a Google.
1 de enero de 2027
Fin de la Custom Search JSON API para los clientes existentes. Toda aplicación que todavía la llame tendrá que haber migrado.
Para qué usos
Semscraper no es un clon exacto de Custom Search: es una API que recoge la página de Google tal como la ve un usuario. Sustituye bien algunos usos, no todos.
Sí: seguir Google
Seguimiento de posiciones, vigilancia de la competencia, estudios de SERP, AI Overviews: obtienes los resultados reales de google.es, google.com o de cualquier otro país, con ciudad y dispositivo incluidos.
Sí: alimentar herramientas y agentes
Datasets, enriquecimiento, agentes y pipelines RAG que necesitan lo que Google muestra de verdad. El procesamiento es asíncrono: cuenta con unos veinte segundos de recopilación por búsqueda, no con una respuesta instantánea.
No: la búsqueda interna de tu sitio
Un buscador que debe responder en una fracción de segundo sobre tus propias páginas requiere un motor de búsqueda para sitios, o Vertex AI Search, que Google ofrece para hasta 50 dominios.
Custom Search JSON API o Semscraper:
| Criterio | Custom Search JSON API | Semscraper |
|---|---|---|
| Origen de los resultados | Tu motor de Programmable Search Engine. Incluso configurado para toda la Web, Google indica que solo cubre una parte de su índice y da prioridad a tus propios sitios. | La página de resultados real de Google, renderizada en un navegador de verdad. |
| Contenido | Una lista de resultados web, sin las funciones de la Búsqueda de Google (Oneboxes, búsqueda universal). | Cada bloque de la página: resultados orgánicos, anuncios, pack local, People Also Ask, AI Overviews con sus fuentes, y más. |
| Número de resultados | 10 por petición, 100 como máximo paginando (start + num no puede superar 100). | Hasta 10 páginas de Google en una sola llamada, unos 100 resultados según la consulta. |
| País, idioma, ciudad, dispositivo | gl favorece los resultados de un país, hl fija el idioma de la interfaz, lr y cr filtran los documentos. | Versión de Google (país e idioma), ciudad o coordenadas GPS, escritorio o móvil. |
| Funcionamiento | Síncrono: la respuesta llega en la misma llamada. | Asíncrono: creas las búsquedas (hasta 1.000 por llamada) y luego recuperas los resultados por ID o los recibes en una URL de callback. Unos veinte segundos de recopilación de mediana para una página, unos cincuenta para 10, más la espera en la cola de tu cuenta (medido en 12 millones de SERPs, 5,3 millones de una página y 260.000 de 10 páginas, del 12 de septiembre al 10 de octubre de 2026). |
| Precio | 100 consultas gratis al día, después 5 $ por cada 1.000, con un máximo de 10.000 al día. | 0,30 € por cada 1.000 búsquedas de una página, 2,10 € por cada 1.000 búsquedas de 10 páginas. Sin suscripción ni límite diario, y tu saldo no caduca nunca. |
| Búsqueda en dominios concretos | Sí, ahora es el único modo de los nuevos motores (50 dominios). | No hay una lista de dominios guardada: el operador site: en la palabra clave limita una búsqueda a un dominio. |
| Búsqueda de imágenes | Sí (searchType=image). | No. Solo se devuelve el bloque de Imágenes, cuando Google lo muestra en la página de resultados. |
Adaptar
Los parámetros no son intercambiables: así adaptas tus llamadas. Los operadores de Google pasan tal cual en la palabra clave.
| Custom Search | Semscraper |
|---|---|
q | keyword |
gl | location, la versión de Google, que no es un código de país: gl=es pasa a location=es (google.es), gl=us pasa a location=en (google.com) |
hl | language, que forma un par válido con location: es/es, en/en, fr/fr... |
num, start | depth, de 1 a 10 páginas de Google, todas devueltas por la misma llamada |
siteSearch | site:ejemplo.es en la palabra clave |
exactTerms | Comillas en la palabra clave |
excludeTerms | -palabra en la palabra clave |
fileType | filetype:pdf en la palabra clave |
lr, cr | Sin equivalente directo: elige la versión de Google y el idioma |
searchType=image | Sin equivalente |
key, cx | Una sola clave de API, enviada en la cabecera Authorization: Bearer |
Migrar una llamada,
La misma necesidad en Python: los 10 primeros resultados orgánicos de una consulta en google.es. La diferencia principal es el funcionamiento en dos tiempos: crear y luego recuperar.
import requests
r = requests.get("https://www.googleapis.com/customsearch/v1", params={
"key": "GOOGLE_API_KEY",
"cx": "SEARCH_ENGINE_ID",
"q": "zapatillas running",
"gl": "es",
"hl": "es",
"num": 10,
})
for item in r.json().get("items", []):
print(item["link"], item["title"], item["snippet"])
import time
import requests
API = "https://api.semscraper.com/v1/serp"
HEADERS = {"Authorization": "Bearer API_KEY"}
# 1. create the search (up to 1,000 keywords per call)
r = requests.post(API, headers=HEADERS, timeout=60, json=[{
"search_engine": "google_search",
"keyword": "zapatillas running",
"location": "es",
"language": "es",
"device": "desktop",
"depth": 1,
}])
r.raise_for_status()
ids = [row["id"] for row in r.json()["data"]]
# 2. fetch the results once ready (about 20 s of collection for a depth-1 search,
# plus queue time), 10 minutes at most
deadline = time.time() + 600
while ids and time.time() < deadline:
time.sleep(10)
r = requests.get(API, headers=HEADERS, timeout=60,
params={"ids": ",".join(ids[:100]), "output": "json"}) # 100 IDs per call
r.raise_for_status()
for row in r.json()["data"]:
if row["status"] != "done":
continue
ids.remove(row["id"])
for block in row["results"]:
if block["type"] == "organic":
for item in block["items"]:
print(item["url"], item["title"], item["description"])
if ids:
print("Still pending, fetch them later by ID:", ids)
El campo link pasa a ser url, snippet pasa a ser description. Además, cada resultado incluye su posición dentro de su bloque (rank_type), su posición en la página (rank_serp), su página de Google y su posición en píxeles. Para miles de palabras clave: créalas en lotes de 1.000, recupera los resultados en lotes de 100 ID o recíbelos en una URL de callback. Consulta la Bulk SERP API.
Cambia
Una migración se prepara: reserva unos días de pruebas antes de apagar la API antigua.
1. Probar
Lanza tus consultas representativas con las 1.000 SERP gratis que recibes al registrarte.
2. Adaptar
Parámetros (gl pasa a location), paso a llamadas asíncronas y campos de respuesta (link pasa a url, snippet pasa a description).
3. Comparar
Pertinencia, cobertura de resultados, plazos y consumo, sobre una muestra de tus consultas reales.
4. Cambiar
Pasa tu aplicación a Semscraper una vez validados los resultados, mucho antes del 1 de enero de 2027.
Lo que cuesta,
Precios públicos: Google consultado el 10 de octubre de 2026, Semscraper a la tarifa estándar, antes de los descuentos por recarga.
| Necesidad | Custom Search JSON API | Semscraper |
|---|---|---|
| 1.000 palabras clave, 1 página (unos 10 resultados) | 5 $ (1.000 consultas de pago, fuera de la cuota gratuita diaria) | 0,30 € |
| 1.000 palabras clave, 10 páginas (unos 100 resultados) | 50 $ (10 consultas de pago por palabra clave, fuera de la cuota gratuita diaria) | 2,10 € |
| Más de 10.000 consultas al día | Imposible: límite de 10.000 al día | Sin límite diario |
Si todavía no has usado las 100 consultas gratis del día, cuenta 4,50 $ y 49,50 $. La Custom Search JSON API ya no está disponible para nuevos clientes: estos precios solo se aplican a las cuentas existentes, hasta el 1 de enero de 2027. Precios detallados de Semscraper.
Preguntas frecuentes
¿Cuándo deja de funcionar la Custom Search JSON API?
¿Devuelve Semscraper los mismos resultados que Custom Search?
¿Puedo limitar las búsquedas a mis dominios?
¿La respuesta es instantánea?
¿Cuánto cuesta Semscraper después de migrar?
Para ir más allá
Cómo hacer scraping de Google en 2026
Recoger resultados de Google a gran escala nunca había sido tan exigente: se acabaron los 100 resultados por página, los AI Overviews cargan tarde y las SERPs cambian de una ciudad a otra. Estas son las opciones y las trampas.
Leer la guía →SERPs geolocalizadas: los resultados de Google vistos desde una ciudad
Dos personas que escriben la misma búsqueda en dos ciudades distintas no ven la misma página. Para medir el SEO local, hay que recoger la SERP desde la ubicación correcta.
Leer la guía →Alternativa a SerpApi: la comparativa honesta
SerpApi es una de las API SERP más conocidas. Si buscas una alternativa para Google Search y Google Maps, esto es lo que diferencia a los dos servicios, incluido aquello en lo que SerpApi es mejor.
Leer la guía →Prueba tus consultas antes de la fecha límite
1.000 SERP gratis, sin tarjeta de crédito.