Alternativa a Google Custom Search API: guía de migración antes del cierre del 1 de enero de 2027
Google Custom Search JSON API cierra el 1 de enero de 2027. Mapa de parámetros, 59 llamadas reales y la factura: 5 USD frente a 0,694 USD por 1000.

Google cerró la Custom Search JSON API a clientes nuevos, y los clientes actuales pierden el acceso el 1 de enero de 2027. En nuestras pruebas reales, la herramienta web de EveryInfra cuesta 0,694 USD por cada 1000 llamadas, cerca del 14 % de los 5 USD de Google, y con 10.000 consultas al día la factura mensual baja de 1485 USD a 208,20 USD. Antes de migrar, resuelve dos cosas: nuestro parámetro site devolvió cero resultados en 2 de 3 intentos, así que escribe site: dentro de la consulta; y si copias start o cx de Google, recibes un 422 en lugar de que se ignoren en silencio.
Esta es una guía de migración. Está pensada para equipos que todavía llaman a customsearch/v1 o que usaban la Bing Web Search API antes de su retiro. Responde a tres preguntas: ¿a dónde migrar antes de la fecha límite, qué código cambiar y cuánto costará cada mes?
Para los demás proveedores usamos solo documentación pública, páginas de precios y hilos de foros. Abrimos y guardamos cada página el 8 de noviembre de 2026, entre las 00:14 y las 00:40 hora de Singapur. No creamos cuentas en otros servicios ni llamamos a sus API. Todos los números de nuestro lado salen de llamadas reales hechas ese mismo día.
Ya tenemos una comparación de seis API de búsqueda para agentes de IA y una guía sobre qué herramienta de búsqueda usar en cada fase de una tarea; aquí no repetimos ninguna de las dos. Si todavía no has decidido migrar, empieza por este. Este artículo trata una sola tarea: salir de Google Custom Search y de Bing Web Search con el menor riesgo posible.

La respuesta corta: elegir una alternativa a Google Custom Search API según el uso
La Custom Search JSON API se usa para tres trabajos distintos. Hay quien la usa como buscador interno de su propio sitio web. Hay quien busca en toda la web para un producto, un monitor de precios o un conjunto de datos. Y hay quien se la da a un agente de IA como herramienta de búsqueda. Google solo ofrece reemplazo para el primer caso.
La tabla indica a dónde puede ir cada grupo, el precio por 1000 llamadas y qué hay que cambiar. Los precios son precios públicos o precios de nuestro catálogo, leídos el 08-11-2026.
| Para qué la usa | A dónde puede migrar | Por 1000 llamadas | Qué cambia |
|---|---|---|---|
| Buscador de su propio sitio, hasta 50 dominios, con caja de búsqueda | Google Programmable Search Element (la versión gratis muestra anuncios de Google) | 0 USD | Sustituir las llamadas JSON por el código incrustado |
| Buscador de su sitio, con JSON y control del orden | Google Agent Search Enterprise (antes Vertex AI Search) | 4,00 USD | Almacén de datos nuevo, aplicación nueva, autenticación nueva, unos 14 pasos |
| Búsqueda en toda la web para un producto, monitor o datos | Herramienta web de EveryInfra | 0,694 USD | Renombrar parámetros; start pasa a page |
| Búsqueda en toda la web con resultados de Bing | bing/search de EveryInfra | 0,556 USD | Sin count ni offset; solo la primera página |
| Búsqueda en toda la web con país e idioma | web/search de EveryInfra | 1,389 USD | gl pasa a country, hl pasa a language |
| Página de resultados completa con anuncios y paneles | SerpAPI, Serper, Bright Data | de 0,30 a 25,00 USD | Parámetros y respuesta nuevos |
| Búsqueda para agentes con texto de la página | Tavily, Firecrawl, o nuestra web más read | de 1,50 a 8,00 USD | Pasar a una llamada de herramienta |
Hay un detalle fácil de pasar por alto. El reemplazo que propone Google, Agent Search, cubre la búsqueda en sitios web de hasta 50 dominios. La entrada del blog de Programmable Search Engine del 20-01-2026 pide a quien busca en toda la web que contacte con Google por un producto aparte. Ese producto no tiene precio público ni alta directa. Por eso, si usas la API JSON para buscar en toda la web, Google no te da nada que puedas activar hoy.
Calendario del cierre: qué cerraron Google y Microsoft
Las dos grandes API públicas de búsqueda web cerraron en unos dieciocho meses. El aviso de ciclo de vida de Microsoft indica que las Bing Search APIs se retiraron el 11 de agosto de 2025. Todas las instancias quedaron fuera de servicio y no se aceptan altas nuevas. Microsoft recomienda Grounding with Bing Search dentro de Azure AI Agents.
Google avanzó por etapas. La Site Restricted JSON API dejó de funcionar el 8 de enero de 2025. El 20 de enero de 2026, los motores nuevos perdieron la opción de buscar en toda la web. El mismo día, la Custom Search JSON API se cerró a clientes nuevos.
La captura de abajo muestra la sección de precios de la página para desarrolladores de Google. La abrimos el 8 de noviembre de 2026 a las 00:2x hora de Singapur, con la página en inglés. El pie de la página indica que se actualizó por última vez el 18 de febrero de 2026. El recuadro verde azulado contiene los datos de partida de todos los cálculos de este artículo.

| Fecha | Qué pasó | Fuente |
|---|---|---|
| 08-01-2025 | Google cerró la Custom Search Site Restricted JSON API | developers.google.com |
| 11-08-2025 | Microsoft retiró las Bing Search APIs | learn.microsoft.com |
| 20-01-2026 | Motores nuevos limitados a 50 dominios; la API JSON se cierra a clientes nuevos | Blog de Programmable Search Engine |
| Abril de 2026 | Vertex AI Search pasa a llamarse Agent Search, dentro de Gemini Enterprise Agent Platform | Tabla de nombres de Google Cloud |
| Hacia el 09-09-2026 | Google publica y luego retira la documentación de una Web Search Service API solo para socios | Search Engine Journal |
| 16-10-2026 | Un gestor de la comunidad de Google vuelve a publicar el aviso con la misma fecha | Comunidad de Programmable Search |
| 01-01-2027 | Se apaga la API JSON; los motores antiguos pierden "Search the entire web" | developers.google.com |
El calendario muestra una tendencia. El cierre de 2027 no es la primera vez que Google recorta sus API de búsqueda: la Site Restricted JSON API de la tabla cerró en enero de 2025. Para ti, esto significa que incluso migrar a Agent Search requiere margen para el próximo cambio. Envuelve cada llamada de búsqueda en una función propia y así un cambio futuro de proveedor tocará un solo archivo.
¿Existe una API de búsqueda de Google en noviembre de 2026?
La pregunta más repetida en los foros es directa: ¿existe todavía una API de búsqueda de Google? A fecha del 8 de noviembre de 2026, un desarrollador normal no puede obtener una. No hay ninguna API de Google para buscar en toda la web que puedas activar por tu cuenta. Abrimos cada página oficial de Google y Microsoft, y el resultado está en la tabla.
| Opción oficial | Qué busca | Quién puede usarla | Precio | Estado el 08-11-2026 |
|---|---|---|---|---|
| Custom Search JSON API | Toda la web o sitios elegidos | Solo clientes actuales | 5 USD por 1000, 100 gratis al día | Se apaga el 01-01-2027 |
| Programmable Search Element | Hasta 50 dominios | Cualquiera | Gratis, con anuncios | Sigue como caja de búsqueda incrustada |
| Agent Search Enterprise | Búsqueda en sitios, hasta 50 dominios | Clientes de Google Cloud | 4,00 USD por 1000; 10.000 consultas de prueba al mes | Sigue; requiere un almacén de datos |
| Producto de búsqueda en toda la web | Toda la web | Por solicitud | No público | Solo un formulario de interés |
| Web Search Service API | Toda la web | Socios con acuerdo firmado | No público | La documentación da 404 |
| Grounding with Bing Search | Toda la web | Suscripción de pago de Azure | 14 USD por 1000 | Solo dentro de Azure AI Foundry, sin resultados en bruto |
Las dos últimas filas merecen más detalle. Search Engine Journal informó el 11-09-2026 que Google había publicado documentación de una Web Search Service API. Cada solicitud necesitaba un ID de cliente de socio y la dirección IP del usuario final. Search Engine Roundtable informó el 28-09-2026 que esa documentación ya no estaba. Pedimos la dirección antigua con curl el 8 de noviembre y recibimos un 404. Hoy no es una opción que se pueda incluir en un plan de migración.
En el lado de Microsoft, la página de precios de Grounding with Bing indica 14 USD por 1000 transacciones. La misma página dice que la salida no se puede usar directamente en otras aplicaciones. La documentación de uso añade que ni el desarrollador ni el usuario final ven los resultados en bruto. Se obtiene una respuesta del modelo con citas, no una página de resultados en JSON. Es un producto distinto de la antigua Bing Web Search API y no sirve a quien necesita los datos.
Precios de la API de búsqueda de Google frente a las alternativas
El precio es lo primero que revisa un equipo que migra. La tabla compara el precio de Google, los reemplazos de Google y Microsoft y cinco API de búsqueda de terceros. La unidad es la misma para todos: 1000 búsquedas de 10 resultados cada una. Los precios de terceros salen de cada página de precios, leída el 08-11-2026 entre las 00:16 y las 00:20 hora de Singapur. En los planes por créditos usamos la regla de cada proveedor sobre cuántos créditos gasta una búsqueda.
Nuestros precios salen del campo price_usd del catálogo de herramientas de búsqueda y del catálogo de capacidades de datos. Los comparamos con el billing.charged_usd de cada respuesta real.
| Servicio | Plan de pago de entrada | Plan más bajo de la página | Cuota gratis | Fuente |
|---|---|---|---|---|
| Google Custom Search JSON API | 5,00 USD | 5,00 USD | 100 al día | overview |
| Google Agent Search Enterprise | 4,00 USD | 4,00 USD | 10.000 de prueba al mes | Precios de Agent Search |
| Grounding with Bing Search | 14,00 USD | 14,00 USD | Ninguna | Precios de Bing |
| SerpAPI | 25,00 USD | 3,75 USD | 250 al mes | serpapi.com/pricing |
| Serper | 1,00 USD | 0,30 USD | 2500 una vez | serper.dev |
| Tavily | 8,00 USD | 5,00 USD | 1000 créditos al mes | Documentación de Tavily |
| Firecrawl | 7,60 USD | 1,50 USD | 1000 créditos al mes | firecrawl.dev/pricing |
| Bright Data SERP API | 1,50 USD | 1,30 USD | 5000 al mes | brightdata.com |
web de EveryInfra | 0,694 USD | 0,694 USD | 1 USD de prueba | catálogo |
bing/search de EveryInfra | 0,556 USD | 0,556 USD | Igual | catálogo |
web/search de EveryInfra | 1,389 USD | 1,389 USD | Igual | catálogo |
Estas son las cuentas. El plan Starter de SerpAPI cuesta 25 USD al mes por 1000 búsquedas, así que la entrada es de 25 USD por 1000. Su plan más bajo, Cloud 1M, cuesta 3750 USD por 1.000.000 de búsquedas, es decir, 3,75 USD por 1000. El paquete Starter de Serper cuesta 50 USD por 50.000 créditos, y la propia página indica 1,00 USD por 1000. Su paquete más grande indica 0,30 USD por 1000, y todos los créditos de Serper caducan a los 6 meses.
La documentación de Tavily dice que una búsqueda básica cuesta 1 crédito, a 0,008 USD por uso o 0,005 USD en el plan Growth. La página de facturación de Firecrawl indica 2 créditos por cada 10 resultados de búsqueda. Su plan Hobby cuesta 19 USD al mes por 5000 créditos, es decir, 2500 búsquedas o 7,60 USD por 1000. Su plan Scale cuesta 749 USD al mes por 1.000.000 de créditos, o 500.000 búsquedas a 1,50 USD por 1000. La SERP API de Bright Data cuesta 1,5 USD por 1000 en pago por uso, y su plan Scale cuesta 499 USD al mes con 380.000 solicitudes incluidas.
El gráfico deja una idea clara. En la unidad más básica, una búsqueda con 10 resultados, los 5 USD de Google quedan en la parte media alta y hay muchas opciones más baratas. Pero el gráfico solo muestra planes de entrada. Con mucho volumen, Serper llega a 0,30 USD por 1000, por debajo de nuestros 0,694 USD. Los 25 USD de SerpAPI compran una página de resultados completa y estructurada, con anuncios, paneles y resultados locales. Primero decide qué campos necesitas y después compara precios.
Factura mensual: las 100 consultas gratis y el tope de 10.000 al día
El precio de Google tiene dos límites: 100 consultas gratis al día y un máximo de 10.000 al día. Por esos dos límites, la factura real cambia mucho según el volumen. Usamos meses de 30 días y cinco volúmenes diarios.
| Consultas al día | Consultas al mes | Google Custom Search | Agent Search Enterprise | `web` de EveryInfra | `bing/search` de EveryInfra |
|---|---|---|---|---|---|
| 100 | 3000 | 0 USD (todo gratis) | 0 USD (dentro de la prueba) | 2,08 USD | 1,67 USD |
| 1000 | 30.000 | 135,00 USD | 80,00 USD | 20,82 USD | 16,68 USD |
| 3000 | 90.000 | 435,00 USD | 320,00 USD | 62,46 USD | 50,04 USD |
| 10.000 | 300.000 | 1485,00 USD | 1160,00 USD | 208,20 USD | 166,80 USD |
| 30.000 | 900.000 | Supera el tope diario, no es posible | 3560,00 USD | 624,60 USD | 500,40 USD |
Las fórmulas son sencillas. La factura de Google es (consultas diarias − 100) × 30 × 0,005 USD, y se detiene en 10.000 al día. La de Agent Search es (consultas mensuales − 10.000) × 0,004 USD, y cubre búsqueda en sitios de hasta 50 dominios, no toda la web. Nuestras dos columnas son llamadas del mes por precio de catálogo. No tenemos cuota gratis mensual; las cuentas nuevas reciben 1 USD de prueba, válido 24 horas desde que se reclama.
El gráfico muestra tres cosas. Primero, por debajo de 100 consultas al día Google es gratis y nosotros costamos 2,08 USD al mes. En ese tramo Google es más barato hasta el cierre; no hay prisa, pero prueba otra API antes de fin de diciembre. Segundo, a partir de unos cientos de consultas diarias, la diferencia crece 7,2 veces, que es 5 USD dividido entre 0,694 USD. Con 10.000 al día, la diferencia es de 1276,80 USD al mes.
Tercero, el límite de Google de 10.000 al día es un tope duro, y para superarlo los equipos abrían más proyectos. Nosotros no tenemos tope diario; el límite es por minuto. La página de precios indica 60 llamadas por minuto por cuenta, compartidas entre todas sus claves. Eso permite hasta 86.400 llamadas al día. Para más, puedes comprar un paquete de velocidad de 30 días o alcanzar un tramo de recarga más alto.
Veamos un ejemplo de una tienda en línea en México que vigila precios de la competencia. Supongamos 1500 búsquedas en un día laborable y 300 en un día de fin de semana. Un mes de 30 días con 22 días laborables y 8 de fin de semana suma 35.400 búsquedas. En Google, tras las 100 gratis de cada día, la factura es (1400 × 22 + 200 × 8) × 0,005 USD = 162,00 USD. En nuestra herramienta web, el mismo mes cuesta 35.400 × 0,000694 USD = 24,57 USD.
Mapa de parámetros: Custom Search JSON API en la API nueva
Los parámetros son la parte más laboriosa de la migración. La referencia cse.list de Google enumera más de 30 parámetros. Llevamos los 22 que de verdad se usan a las tres entradas de EveryInfra. La columna "Comprobado" indica qué llamada real probó cada fila. Las filas sin prueba dicen "sin probar" y siguen la descripción del catálogo.
| Parámetro de Google | Qué hace (documentación de Google) | Herramienta `web` | `web/search` | `bing/search` | Comprobado |
|---|---|---|---|---|---|
key | Clave en la URL | Cabecera Authorization: Bearer | Igual | Igual | 401 real |
cx | ID del motor de búsqueda | No existe; da 422 | No existe | No existe | 422 real |
q | Consulta | q | keyword | keyword | Real |
num | De 1 a 10 resultados | num, de 1 a 10 | Fijo, hasta 10 | limit | Real |
start | Índice del primer resultado; start+num ≤ 100 | page (empieza en 1) | No existe | No existe; solo la primera página | 422 y paginación reales |
gl | País del usuario | location (nombre o código de 2 letras) | country | country | Real |
hl | Idioma de la interfaz | No existe | language | language (con país) | Real |
cr | Solo documentos de un país | No existe; location se acerca | No existe | No existe | Sin probar |
lr | Solo documentos en un idioma | No existe | language se acerca | language se acerca | Sin probar |
siteSearch | Incluir o excluir un sitio | site, o site: en q | site: en keyword | site: en keyword | Real |
siteSearchFilter | i incluye, e excluye | -site: en q | Igual | Igual | Sin probar |
dateRestrict | Últimos N días, semanas, meses o años | after, before (fechas) | No existe | No existe | Real |
sort=date | Ordenar por fecha | No existe | No existe | No existe | — |
exactTerms | Frase obligatoria | Comillas en q | Igual | Igual | Real |
excludeTerms | Palabra prohibida | -palabra en q | Igual | Igual | Real |
orTerms | Al menos una de estas | OR en q | Igual | Igual | Sin probar |
fileType | Extensión de archivo | filetype:pdf en q | Igual | Igual | Real |
safe | SafeSearch | No existe | No existe | No existe | — |
searchType=image | Búsqueda de imágenes | No existe; usa la herramienta media | No existe | No existe | Sin probar |
filter | Filtro de contenido duplicado | No existe | No existe | No existe | — |
c2coff | Chino simplificado y tradicional | No existe | No existe | No existe | — |
linkSite, lowRange, highRange, rights | Enlaces, rangos numéricos, licencias | No existe | No existe | No existe | — |
Dos notas sobre la tabla. La primera: cx representa toda la configuración de un motor, con listas de sitios, exclusiones, refuerzos, sinónimos y resultados destacados. Todo eso se configura en el panel de Google, no en la solicitud. Nuestra herramienta web no tiene el concepto de "motor de búsqueda". El límite de sitio va en cada solicitud con site: y las exclusiones con -site:; los refuerzos y destacados no tienen equivalente. Si tu motor tiene decenas de reglas de sitio, conviértelas en una plantilla de consulta en tu código.
La segunda: nuestra herramienta web no tiene parámetro de idioma. Google usa hl para el idioma de la interfaz y lr para el idioma de los documentos. En nuestro lado, solo web/search y bing/search aceptan language. Con la herramienta web, el idioma de la consulta decide el idioma de los resultados, y en la mayoría de los casos basta. Si vigilas resultados en varios idiomas, usa web/search.
Prueba real 1: parámetros de Google en la herramienta `web`
El mapa de parámetros sale de la documentación; esta sección sale de llamadas reales. El 8 de noviembre de 2026, de 00:20 a 00:32 hora de Singapur, enviamos los patrones más comunes de Google a la herramienta web. También copiamos tal cual start y cx de Google y count de Bing. Cada fila es una respuesta original, y el tiempo es el tiempo total medido en el cliente.
| Hora (SGT) | Patrón de Google | Lo que enviamos | Resultado | Tiempo | Cobro |
|---|---|---|---|---|---|
| 00:20:27 | Sin key | Sin cabecera Authorization | 401, "Missing API key" | 165 ms | 0 USD |
| 00:20:30 | start=11 | "start": 11 | 422; allowed lista 7 parámetros | 211 ms | 0 USD |
| 00:20:34 | cx, gl | "cx": "…", "gl": "us" | 422; señala primero cx | 111 ms | 0 USD |
| 00:20:42 | siteSearch=developers.google.com | "site": "developers.google.com" | 200, 0 resultados, reembolsado | 1281 ms | 0 USD |
| 00:20:51 | gl=sg | "location": "sg" | 10 resultados, todos sobre centros de comida de Singapur | 1591 ms | 0,000694 USD |
| 00:20:59 | dateRestrict=m1 | "after": "2026-10-09" | 10 resultados, todos posteriores al 9 de octubre | 2437 ms | 0,000694 USD |
| 00:21:09 | start=11 | "page": 2 | 10 resultados, ninguno repetido de la página 1 | 1924 ms | 0,000694 USD |
| 00:21:18 | start=101 (Google da error) | "page": 11 | 10 resultados, solo 2 siguen en tema | 4285 ms | 0,000694 USD |
| 00:21:29 | num=5 | "num": 5 | 5 resultados | 2376 ms | 0,000694 USD |
| 00:21:38 | exactTerms + excludeTerms | "\"programmable search engine\" -reddit" | 7 resultados, todos con la frase, ninguno de reddit | 2889 ms | 0,000694 USD |
| 00:21:48 | fileType=pdf | filetype:pdf en q | 7 resultados, todos PDF | 4533 ms | 0,000694 USD |
| 00:30:42 | siteSearch dentro de la consulta | site:developers.google.com en q | 10 resultados, todos de ese dominio | 1271 ms | 0,000694 USD |
| 00:32:05 | siteSearch=en.wikipedia.org | "site": "en.wikipedia.org" | 9 resultados, todos de ese dominio | 2313 ms | 0,000694 USD |
La tabla deja cuatro hallazgos.
El primero: el parámetro site no es fiable, y es el hallazgo que más debemos contar con honestidad. Con developers.google.com, el parámetro site devolvió 0 resultados. El mismo dominio escrito como site:developers.google.com dentro de la consulta devolvió 10, todos páginas oficiales de Custom Search. Con en.wikipedia.org, las dos formas devolvieron 9 resultados. Con docs.python.org y "asyncio timeout", las dos formas devolvieron 0 a las 00:30:26 y a las 00:30:34 hora de Singapur, y ambas se reembolsaron.
Nuestra recomendación es directa. Pasa el valor de siteSearch de Google a la consulta como site: y no dependas del parámetro site. Durante la prueba en paralelo, prueba los dominios que más limitas. La misma consulta de docs.python.org con site: en bing/search devolvió 503 tras 17,3 segundos, así que del lado de Bing no tenemos resultados con límite de sitio. En todas las llamadas que devolvieron resultados, no apareció ningún otro dominio.
El segundo: la paginación no tiene el límite de 100 resultados, pero lo que viene después sirve poco. La documentación de Google dice que la API JSON nunca devuelve más de 100 resultados, y start más num por encima de 100 da error. Nuestra page 11, que cubre los resultados 101 a 110, devolvió 10 resultados y se cobró. Solo 2 de los 10 seguían hablando de "custom search json api shutdown"; el resto eran registros de cambios de sitios técnicos. Si tu código antiguo divide palabras clave para esquivar el límite de 100, puedes mantenerlo, pero no esperes resultados útiles en la posición 200.
El tercero: los filtros de fecha usan fechas de calendario. dateRestrict=m1 significa el último mes. Nuestro after recibe una fecha real, así que calcula hoy menos 30 días en tu código, como en el ejemplo de más abajo. En esa llamada, 6 de 10 resultados eran enlaces de redirección del tipo google.com/goto, que requieren otra solicitud para resolverse. La llamada a la página 11 de esta misma prueba también trajo 6 redirecciones de 10. En cambio, las 12 consultas normales de web en la prueba real 2 devolvieron 114 resultados sin ninguna redirección. Solo los puntos del código con filtro de fecha o páginas profundas necesitan resolver redirecciones antes de guardar las URL.
El cuarto: los parámetros copiados se bloquean en lugar de ignorarse en silencio. Tanto start como cx devolvieron 422. El campo allowed listó siete nombres: after, before, location, num, page, q, site. El campo next_steps indicó quitar el parámetro y confirmó que no se cobró nada. Esto ayuda a migrar, porque Google suele ignorar un parámetro mal escrito, y el código antiguo puede arrastrar parámetros que nunca funcionaron, como daterestrict en minúsculas en lugar de dateRestrict. Tras la migración devuelven 422 desde la primera llamada: parece un error de la API nueva, pero es un problema antiguo que por fin se ve. La respuesta trae param, allowed y next_steps, así que se corrige de una vez.
Sin equivalente directo: qué hacer con hl, safe, searchType y sort
Algunas filas del mapa dicen "No existe". Son las que más frenan una migración, así que aquí damos un reemplazo para cada una. Cada propuesta se basa en nuestras 12 consultas y 13 pruebas de parámetros, no en una suposición a partir de la documentación.
Empecemos por hl. Google usa hl para el idioma de la interfaz, que cambia un poco el orden, y lr para limitar los resultados a un idioma. Nuestra herramienta web solo tiene location, que es un país. En la prueba real 2, la consulta "receta paella valenciana" con es devolvió 8 resultados, y 7 eran páginas en español. La consulta mexicana "precio del dolar hoy mexico" con mx devolvió 10 páginas en español. Una consulta en chino sobre comida en Singapur, con sg, devolvió 10 páginas en chino, mezclando escritura simplificada y tradicional.
En la mayoría de los casos, el idioma de la consulta más el país bastan. Si necesitas fijar el idioma, usa web/search, que tiene language y cuesta 0,001389 USD por llamada, el doble que web. Resérvalo para los pocos puntos del código que necesitan un idioma fijo. La mezcla de escrituras chinas es justo lo que controla c2coff en Google, y nosotros no tenemos ese interruptor.
Sigue safe. En Google, safe=active filtra contenido para adultos, y ninguna de nuestras tres entradas tiene ese interruptor. Si tu producto es para menores o escuelas, o exige mucha seguridad de marca, añade un filtro propio. El más sencillo es una lista de dominios bloqueados que se aplica a cada url después de la llamada. Una opción más estricta es pasar títulos y fragmentos al modelo de moderación que ya uses. Añade ese filtro durante la prueba en paralelo, no después del cambio.
Después, searchType=image. Google busca imágenes con un parámetro más. Nosotros separamos imágenes y vídeo en la herramienta media, con q, kind y num, a 0,000694 USD por llamada. La forma de la respuesta es distinta de la de web, así que en los puntos de búsqueda de imágenes hay que cambiar también el código que lee la respuesta. No probamos media para este artículo, por eso solo damos sus parámetros.
Por último, sort=date. El orden por fecha de Google solo funciona en motores con datos estructurados, y muchos equipos vieron que nunca les funcionó. No tenemos parámetro de orden. Acota la ventana con after y before, y ordena en tu lado por el campo de fecha. En la prueba real 1, los 10 resultados de la llamada con after tenían fecha. Pero las fechas son texto tal cual, como "Oct 19, 2026" o "5 days ago", así que conviértelas antes. Para noticias recientes encaja mejor la herramienta news o google_news/search; esta última devolvió 503 en nuestros tres intentos, así que no tenemos datos de resultados.
Prueba real 2: 12 consultas en tres entradas y cuánto coinciden
Los parámetros tienen equivalente; la siguiente pregunta es si los resultados se parecen. Elegimos 12 consultas sobre documentación técnica, productos de consumo, vivienda en Singapur, español de España y de México, una consulta en chino y un tema del Reino Unido. Entre las 00:22 y las 00:30 hora de Singapur, enviamos cada consulta a la herramienta web, a web/search y a bing/search. Son 36 llamadas, todas con HTTP 200. Contamos coincidencias por URL tras quitar el protocolo, www. y la barra final, sin contar redirecciones; las cifras son URL únicas por consulta.
| Consulta | País | URL únicas en `web` | URL únicas en `web/search` | URL únicas en `bing/search` | `web` y `web/search` | `web` y `bing/search` | En las tres |
|---|---|---|---|---|---|---|---|
| google custom search api alternative | us | 10 | 10 | 10 | 10 | 1 | 1 |
| python requests timeout retry | us | 9 | 9 | 10 | 4 | 3 | 1 |
| best running shoes 2026 | us | 9 | 9 | 3 | 7 | 1 | 1 |
| hdb resale flat prices 2026 | sg | 9 | 10 | 7 | 8 | 3 | 3 |
| free weather api | us | 10 | 10 | 9 | 10 | 4 | 4 |
| kubernetes ingress nginx retirement | us | 10 | 10 | 10 | 7 | 5 | 3 |
| receta paella valenciana | es | 8 | 9 | 10 | 7 | 2 | 2 |
| precio del dolar hoy mexico | mx | 10 | 6 | 10 | 6 | 3 | 2 |
| Comida en Singapur (consulta en chino) | sg | 10 | 10 | 8 | 10 | 1 | 1 |
| openai agents sdk mcp tools | us | 9 | 10 | 6 | 6 | 2 | 2 |
| site search for university website | gb | 10 | 10 | 10 | 10 | 3 | 3 |
| bing search api retirement | us | 10 | 10 | 10 | 10 | 1 | 1 |
| Total | — | 114 | 113 | 103 | 95 | 29 | 24 |
En 12 llamadas, la herramienta web devolvió 114 resultados, y 95 de ellos aparecieron también en web/search, una coincidencia del 83 %. Solo 29 aparecieron en bing/search, el 25 %. Solo 24 URL aparecieron en las tres entradas, y la unión de las tres sumó 204 URL distintas. Las dos primeras entradas se parecen mucho, y bing/search ordena la web a su manera. Con "bing search api retirement", web y web/search devolvieron las mismas 10 URL, y bing/search solo compartió 1.
Estas cifras sirven de dos maneras. Primero, ningún proveedor nuevo reproducirá exactamente tus resultados de Google. En la prueba en paralelo, pregúntate si los resultados bastan para tu producto, no cuál es el porcentaje de coincidencia. Segundo, algunos productos no pueden perder fuentes, como un monitor de reputación de marca. Esos productos pueden llamar a web y a bing/search: juntas cubrieron 188 URL distintas en 12 consultas, un 65 % más que una sola entrada, por 0,000694 USD más 0,000556 USD por consulta.
Las dos consultas en español merecen una mirada para los lectores de España y América Latina. Con "receta paella valenciana" en es, web y web/search compartieron 7 URL, y bing/search solo 2 con web. Con "precio del dolar hoy mexico" en mx, web/search devolvió solo 6 URL únicas, frente a 10 de las otras dos entradas, y aun así se cobró la llamada completa: solo se reembolsan las respuestas con cero resultados. Lo mismo pasó con "best running shoes 2026" en bing/search, que devolvió 3. En consultas poco comunes, el costo real por resultado es mayor que el precio de catálogo. Si tu producto vive de consultas en español, incluye un buen lote de ellas en la prueba en paralelo, porque el comportamiento por idioma cambia más que el promedio.
Cada entrada tiene sus puntos fuertes en los campos que devuelve. La tabla muestra la cobertura de campos en las 12 consultas.
| Entrada | Resultados en bruto | Con fragmento | Con fecha | Con subenlaces | Precio por llamada |
|---|---|---|---|---|---|
Herramienta web | 114 | 110 (96,5 %) | 46 (40,4 %) | 0 | 0,000694 USD |
web/search | 114 | 105 (92,1 %) | 40 (35,1 %) | 7 (6,1 %) | 0,001389 USD |
bing/search | 103 | 101 (98,1 %) | 55 (53,4 %) | 0 | 0,000556 USD |
Las fechas son texto tal cual en las tres entradas, por ejemplo "Oct 19, 2026" o "5 days ago", así que conviértelas antes de guardarlas. Los items de Google no tienen un campo de fecha estándar: las fechas se esconden en las metaetiquetas de pagemap y muchas veces faltan. Después de migrar, tendrás fecha en más resultados que antes.
Campos de respuesta: items[] pasa a ser results[]
También hay que cambiar el código que lee la respuesta. La estructura de respuesta de Google sigue OpenSearch 1.1. Los resultados están en el arreglo items, con title, htmlTitle, link, displayLink, snippet, htmlSnippet, formattedUrl y pagemap. El objeto exterior trae searchInformation.totalResults y queries.nextPage. Nuestras tres entradas listan sus campos en response_fields del catálogo, y comprobamos cada uno con nuestras respuestas reales.
| Campo de Google | Herramienta `web` | `web/search` | `bing/search` | Nota |
|---|---|---|---|---|
items[].title | results[].title | results[].title | results[].title | Texto plano, sin negritas |
items[].link | url | url | url | Algunos son redirecciones; ver prueba real 1 |
items[].displayLink | No existe; tome el dominio de url | No existe | displayed_url | Estilo de ruta en bing/search |
items[].snippet | snippet | text | text | Entre 100 y 400 caracteres |
items[].pagemap | No existe | image_url (algunos) | No existe | Datos estructurados por otra vía |
| Sin equivalente | published | published_at | date_text | Fecha de publicación, texto tal cual |
| Sin equivalente | No existe | sub_links, rank | rank | Subenlaces y posición |
searchInformation.totalResults | No existe | No existe | No existe | Sin total estimado |
queries.nextPage | Suma 1 a page | No existe | No existe | — |
| Sin equivalente | billing.charged_usd | billing.charged_usd | billing.charged_usd | Importe cobrado en esta llamada |
La trampa más común es totalResults. Mucho código antiguo lo usa para saber si hay resultados o para contar páginas. Tras la migración ese campo no existe, así que comprueba si results está vacío. La segunda trampa es htmlSnippet: algunos buscadores internos lo insertan directo en el HTML para mostrar coincidencias en negrita. Después de migrar, el resaltado lo haces tú.
Cómo cambiar el código: una función de Python antes y después
Este es un código antiguo típico. Llama a customsearch/v1 con requests y reúne los primeros 30 resultados.
import requests
def google_cse(q, pages=3):
out = []
for i in range(pages):
r = requests.get("https://www.googleapis.com/customsearch/v1", params={
"key": GOOGLE_KEY, "cx": CX, "q": q, "num": 10,
"start": 1 + i * 10, "gl": "mx", "dateRestrict": "m1",
}, timeout=30)
items = r.json().get("items", [])
out += [{"title": x["title"], "url": x["link"], "snippet": x.get("snippet", "")} for x in items]
if not items:
break
return outLa herramienta web de EveryInfra requiere cuatro cambios. Cambia la URL y el método de GET a POST. Pasa la clave de la URL a una cabecera. Renombra los parámetros: start pasa a page, gl pasa a location y dateRestrict=m1 pasa a una fecha after. Renombra los campos: items pasa a results y link pasa a url. Borra cx.
import os, datetime, requests
def everyinfra_web(q, pages=3):
after = (datetime.date.today() - datetime.timedelta(days=30)).isoformat()
out = []
for page in range(1, pages + 1):
r = requests.post("https://api.everyinfra.com/api/v1/search",
headers={"Authorization": f"Bearer {os.environ['EVERYINFRA_API_KEY']}"},
json={"tool": "web", "params": {"q": q, "num": 10, "page": page,
"location": "mx", "after": after}},
timeout=60)
r.raise_for_status()
rows = r.json().get("results", [])
out += [{"title": x["title"], "url": x["url"], "snippet": x.get("snippet", "")} for x in rows]
if not rows: # las páginas vacías no se cobran; paramos aquí
break
return outTambién puedes probar primero una llamada con curl. El cuerpo de la solicitud es el mismo.
curl -s https://api.everyinfra.com/api/v1/search \
-H "Authorization: Bearer $EVERYINFRA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"tool":"web","params":{"q":"precio del dolar hoy","num":10,"location":"mx"}}'Hay dos comportamientos distintos de Google que tu código debe manejar. El primero es el 422 ante un parámetro desconocido (ver el cuarto hallazgo de la prueba real 1): trátalo como "corrige el parámetro", no como "reintenta". El segundo es el 429: cada cuenta tiene 60 llamadas por minuto por defecto y, por encima, recibe 429 con retry_after, así que los procesos por lotes deben esperar y reintentar.
Alternativa a la Bing Search API: migrar desde Bing Web Search v7
La Bing Web Search API dejó de funcionar el 11 de agosto de 2025. Muchos equipos que todavía buscan un reemplazo de Bing pasaron entonces a una solución provisional y ahora quieren volver a comparar precios. Nuestra capacidad bing/search busca con la sintaxis de Bing y devuelve la primera página, unos 10 resultados web. El precio de catálogo es de 0,000556 USD por llamada, es decir, 0,556 USD por 1000. La tabla lleva los parámetros de Bing v7 a los nuestros.
| Parámetro de Bing v7 | Qué hace | `bing/search` | Nota |
|---|---|---|---|
q | Consulta, con operadores como site: | keyword | Hasta 2048 caracteres |
count | Resultados por llamada, 10 por defecto, máximo 50 | limit | Enviar count da 422 |
offset | Resultados que se saltan, para paginar | No existe | Solo la primera página |
mkt | Mercado, como es-MX | country + language | Se divide en dos parámetros |
setLang | Idioma de la interfaz | language | Solo funciona junto con country |
cc | Código de país | country | — |
freshness | Day, Week, Month o un rango de fechas | No existe | Use after en la herramienta web |
safeSearch | Off, Moderate, Strict | No existe | — |
responseFilter | Solo páginas web, noticias, etc. | No existe | Para noticias, google_news/search |
El parámetro que más se equivoca al venir de Bing es count. A las 00:20:38 hora de Singapur enviamos count: 20, como haría alguien que viene de Bing. La respuesta 422 listó cuatro nombres en allowed: keyword, country, language y limit; el número de resultados va en limit. La misma respuesta trae una pista did_you_mean basada en la ortografía, que al escribir este artículo decía country, algo que no sirve a quien viene de Bing. Por eso conviene renombrar con la lista allowed. A las 00:31:15 enviamos limit: 5 y recibimos 5 resultados en 4,46 segundos, con un cobro de 0,000556 USD.
Latencia: tiempo total en las tres entradas
Google devuelve searchInformation.searchTime, que es el tiempo de búsqueda dentro de sus servidores. Nosotros medimos el tiempo total en el cliente, desde la solicitud hasta la respuesta completa, enviada desde Singapur por internet pública. Esa cifra importa más a tus usuarios. En 12 consultas, la herramienta web tuvo una mediana de 1,75 segundos, con un mínimo de 1,27 y un máximo de 2,72. web/search tuvo una mediana de 2,16 segundos. bing/search tuvo una mediana de 4,54 segundos y una llamada más lenta de 9,25 segundos.
En un buscador interno donde el usuario espera, los 1 a 3 segundos de web se acercan a la experiencia de Google. Los 4 a 9 segundos de bing/search no encajan en un camino que ve el usuario; úsela para procesos en segundo plano. Además, uno de nuestros cuatro errores temporales fue una llamada a bing/search que devolvió 503 tras 17,3 segundos. Los procesos en segundo plano necesitan un tiempo de espera de 60 segundos o más, y reintentos.
Fallos, resultados vacíos y errores: qué se cobra
La documentación de Google no dice si las solicitudes fallidas se cobran; solo dice que se factura por consulta. La página de precios de SerpAPI indica que solo cuentan las búsquedas correctas, y que no cuentan las de caché, con error ni fallidas. También dice que una respuesta con 100 resultados y una vacía cuentan igual, como 1 búsqueda. Nuestra regla es que los fallos y los resultados vacíos no cuestan nada. En este artículo hicimos 59 llamadas reales; se cobraron 48, por un total de 0,039858 USD. Estas son las otras 11, cada una con su respuesta original.
| Hora (SGT) | Entrada | Caso | HTTP | Cobro | Qué dice la respuesta |
|---|---|---|---|---|---|
| 00:20:27 | web | Sin clave | 401 | 0 USD | "Nothing was charged" |
| 00:20:30 | web | start copiado de Google | 422 | 0 USD | Lista 7 parámetros válidos |
| 00:20:34 | web | cx copiado de Google | 422 | 0 USD | Igual |
| 00:20:38 | bing/search | count copiado de Bing | 422 | 0 USD | did_you_mean dice country (debería ser limit) |
| 00:20:42 | web | Parámetro site, 0 resultados | 200 | 0 USD | empty_result_refunded |
| 00:22:00 | google_news/search | No disponible temporalmente, intento 1 | 503 | 0 USD | retry_after: 60, fallo 1 de 3 |
| 00:30:26 | web | Parámetro site, 0 resultados | 200 | 0 USD | empty_result_refunded |
| 00:30:34 | web | site: en la consulta, 0 resultados | 200 | 0 USD | empty_result_refunded |
| 00:30:51 | bing/search | No disponible temporalmente, 17,3 s | 503 | 0 USD | request_failed_refunded |
| 00:31:26 | google_news/search | No disponible temporalmente, intento 2 (9 min 26 s después) | 503 | 0 USD | Fallo 2 de 3 |
| 00:32:24 | google_news/search | No disponible temporalmente, intento 3 (58 s después, sin time_window) | 503 | 0 USD | Sigue diciendo fallo 2 de 3 |
La respuesta 503 de google_news/search trae retryable: true, retry_after: 60 y max_retries: 2, y su next_steps confirma que no hubo cobro. Nuestros tres intentos se separaron 9 minutos 26 segundos y 58 segundos, y el tercero ya no llevaba time_window. Los tres devolvieron 503, así que el servicio estuvo caído durante ese rato y no fue un fallo aislado. Por eso no tenemos datos de resultados, y para las consultas de noticias solo damos los parámetros. Un proceso por lotes puede seguir retry_after y parar en max_retries.
El reembolso de resultados vacíos importa durante la migración. En la prueba en paralelo, envías tal cual un lote de consultas antiguas, y algunas pueden no devolver nada en la API nueva, como las llamadas con site de arriba. Esas llamadas no cuestan nada; solo pagas las que devuelven resultados.

Conectarlo a un agente de IA: configuración MCP y una llamada completa
Muchos equipos usaban la Custom Search JSON API como herramienta de búsqueda para un agente, no para una página web. Nuestra dirección MCP remota es https://api.everyinfra.com/mcp. El 8 de noviembre de 2026, a las 00:2x hora de Singapur, una llamada tools/list sin clave devolvió 12 herramientas. La de búsqueda es everyinfra_search, que recibe tool y params, igual que el cuerpo de la solicitud REST. En clientes con MCP remoto, como Claude Code o Cursor, la configuración queda así:
{
"mcpServers": {
"everyinfra": {
"type": "http",
"url": "https://api.everyinfra.com/mcp",
"headers": { "Authorization": "Bearer ${EVERYINFRA_API_KEY}" }
}
}
}A las 00:31:56 hora de Singapur llamamos a everyinfra_search por MCP con {"tool": "web", "params": {"q": "custom search json api discontinued january 1 2027", "num": 5}}. A los 2,35 segundos devolvió 5 resultados. El primero fue la página de descripción general de Custom Search JSON API en Google. Su fragmento decía que los clientes actuales tienen hasta el 1 de enero de 2027, con fecha Feb 18, 2026, igual que el pie de página que vimos en la propia página. La llamada costó 0,000694 USD, lo mismo que por REST, y el modelo recibe el mismo JSON con billing.charged_usd, así que el agente puede llevar su propio gasto.
Si usabas una clase envoltorio de búsqueda de Google en un marco como LangChain, lo más sencillo es escribir una función de herramienta propia. Usa la función everyinfra_web de arriba y regístrala como herramienta del marco; así, un cambio futuro de proveedor solo toca esa función. La especificación MCP 2026-07-28 eliminó el saludo de inicialización y volvió el protocolo sin estado. Conectar servidores remotos es más fácil que hace un año, y nuestra página MCP muestra la configuración de cada cliente.
Cuándo encaja mejor otro proveedor
No tienes por qué migrar con nosotros. En los casos de la tabla encaja mejor otra opción, y lo decimos claramente.
| Su situación | Mejor opción | Por qué |
|---|---|---|
| Buscar solo en sus 50 dominios o menos, dentro de una página | Programmable Search Element | Gratis y Google lo mantiene; no tenemos caja de búsqueda incrustable |
| Buscador interno con reglas de orden propias o respuestas generadas | Google Agent Search Enterprise | Crea un índice, refuerza y controla el orden; nosotros damos resultados de la web abierta |
| Millones de llamadas al mes, solo títulos, enlaces y fragmentos | Paquete Ultimate de Serper | Precio público de 0,30 USD por 1000, por debajo de nuestros 0,694 USD; los créditos caducan a los 6 meses |
| Páginas de resultados completas: anuncios, paneles, resultados locales, compras | SerpAPI, Bright Data SERP API | JSON estructurado de toda la página; SerpAPI lista decenas de motores |
| Búsqueda para agentes con texto de la página en una sola llamada | Tavily | Cada resultado trae texto relevante; nosotros necesitamos web más read |
| Rastrear un sitio entero y pasarlo a Markdown | Firecrawl | Rastrear es su producto principal; nuestra herramienta crawl toma hasta 20 páginas por llamada |
| Resultados y contrato de la propia Google | Solicitar el producto de búsqueda web de Google | Solo Google puede ofrecerlo; precio no público |
Un punto de SerpAPI merece su propia nota. Su página de precios menciona un "US Legal Shield" en los planes altos, con cobertura legal de hasta 2 millones de USD para extraer y analizar resultados de búsqueda. Si tu equipo legal lo exige, nosotros no lo ofrecemos. Sobre la caducidad de créditos de Serper, nuestro artículo de alternativas a Serper muestra la cuenta: con 1000 llamadas al mes, el precio real del paquete más pequeño es de 8,33 USD por 1000.
Lo que no podemos hacer
Esta sección enumera nuestros límites para quien toma la decisión. Nuestra herramienta web no es una API oficial de Google, su orden puede diferir de google.com y no garantizamos posiciones de Google. Los rastreadores de posiciones y los informes SEO necesitan posiciones exactas y páginas completas. Deberían usar un servicio de páginas de resultados como SerpAPI, o probar un lote de términos en nuestro web/search, que tiene campo rank.
La tabla resume los demás límites y qué hacer con cada uno.
| Lo que no tenemos | Qué hacer |
|---|---|
Equivalente de searchType=image | Usar la herramienta media, con otros parámetros y otra respuesta |
| Interruptor SafeSearch | Filtrar por dominio o con su propio modelo de moderación |
Parámetro de idioma en web | Usar web/search con language |
| Tope diario de 10.000 | No existe; el límite es de 60 llamadas por minuto y los picos esperan turno |
| Caja de búsqueda gratis con anuncios | Construir tú la interfaz del buscador interno |
Dos límites más importan en una migración. Primero, cobramos de un saldo prepagado por llamada, sin factura mensual de la nube ni contratos de descuento por uso comprometido. Los equipos que necesitan factura y pago empresarial deben comprobar que su proceso financiero acepta saldo prepagado. Segundo, no tenemos un documento de SLA para tu expediente de compras. En este artículo, google_news/search falló tres veces y bing/search una vez, y las tablas muestran cada caso. Para puntos de alta disponibilidad, conecta dos entradas y cambia de una a otra si falla; si fallan las dos, no pagas nada.
Qué vigilar después del cambio
El cambio no es el final. Durante las dos primeras semanas, revisa tres cifras cada día. Las tres se calculan con las respuestas, sin sistema de monitoreo adicional.
| Cifra | De dónde sale | Valor normal | Qué revisar primero si sube |
|---|---|---|---|
| Tasa de resultados vacíos | results vacío | 0 de 12 consultas normales en nuestra prueba | Puntos del código que usan el parámetro site |
| Número de errores 422 | Estado HTTP y param | Casi 0 desde el segundo día | Scripts antiguos con nombres de Google |
| Total cobrado al día | Suma de billing.charged_usd | Llamadas × precio de catálogo | Bucles y paginación sin condición de parada |
La primera cifra es la tasa de resultados vacíos; si sube, busca puntos del código que sigan usando el parámetro site (ver la prueba real 1). Los vacíos no cuestan nada, así que la factura no crece, pero tus usuarios notan el "no hay resultados" antes que tu equipo de finanzas.
La segunda cifra es el número de errores 422. Registra el campo param de cada uno y ordena por frecuencia; el primer día suelen venir de funciones poco usadas, como una tarea de cierre de mes, y en uno o dos días deberían quedar cerca de cero.
La tercera cifra es el total cobrado al día. Suma billing.charged_usd de cada respuesta y compáralo con tu estimación: web cuesta 0,000694 USD por llamada, bing/search 0,000556 USD y web/search 0,001389 USD. Si el total real es claramente mayor, busca un bucle que repite la misma consulta o una paginación sin condición de parada. Google te frenaba a 10.000 al día y nosotros no, así que fija siempre un número máximo de páginas.
Lista de migración en seis pasos
Este es el trabajo en forma de lista. Cada paso tiene una acción y su motivo. Siguiendo este orden, puedes terminar el cambio a mediados de diciembre y conservar dos semanas de margen.
- Inventario: busca
customsearch/v1ycx=en tu código. Anota cada punto de llamada, sus parámetros y su volumen diario. - Mapa de parámetros: renómbralos con el mapa de arriba. Marca los puntos que usan
safe,searchType=imageosort, porque no tienen equivalente directo. - Una semana en paralelo: envía las mismas consultas reales a la API antigua y a la nueva. Compara coincidencia de URL, vacíos y latencia.
- Cambio: haz de la API nueva el camino principal. Mantén la clave antigua como respaldo hasta finales de diciembre.
- Vigilancia de errores: revisa los 422 (cambios olvidados), los vacíos (uso de
site) y los 429 (exceso del límite por minuto). - Limpieza: borra el
cxy la clave de Google antes del 31 de diciembre de 2026. Así, los errores de enero no parecerán un problema nuevo.
El paso 3 es el que más se salta y el que más importa. Nuestra propia prueba muestra que los resultados de entradas distintas coinciden menos de lo que se espera, como se ve en la prueba real 2. Ninguna parte está equivocada; los servicios de búsqueda ordenan de forma distinta. El objetivo de la prueba en paralelo no es "igual que Google", sino "suficiente para nuestro producto". Si tu producto revisa los 10 primeros resultados en busca de malas noticias sobre una marca, prueba 50 marcas reales y lee los resultados a mano. Escribe los criterios de aprobación antes de la prueba, no después de ver los resultados.
La prueba en paralelo también cuesta dinero, aunque poco. La tabla supone 500 consultas reales al día durante 7 días, es decir, 3500 llamadas en cada lado.
| Lado de la prueba | Cálculo | Costo en 7 días |
|---|---|---|
Herramienta web de EveryInfra | 3500 × 0,000694 USD | 2,43 USD |
bing/search de EveryInfra (opcional) | 3500 × 0,000556 USD | 1,95 USD |
| Google Custom Search | (500 − 100) × 7 × 0,005 USD | 14,00 USD |
| Total | — | 18,38 USD |
La prueba completa cuesta menos de 20 USD, mucho menos que un incidente en producción. Los vacíos y los fallos no cuestan nada, así que puedes añadir consultas raras y consultas limitadas a un sitio sin coste extra.
Cambios recientes, de octubre a noviembre de 2026
Las API de búsqueda cambiaron rápido en el último mes. Estos puntos afectan directamente a una migración, y cada fila dice qué significa para ti.
| Fecha | Cambio | Qué significa para ti |
|---|---|---|
| 16-10-2026 | Un gestor de la comunidad de Google volvió a publicar el aviso de cierre de enero en el foro de ayuda | No hay señales de aplazamiento; planifica para el 1 de enero |
| 23-10-2026 | Firecrawl publicó un artículo sobre alternativas a Google Search JSON API con precios leídos ese día | Los terceros compiten por estos usuarios; revisa tú cada página de precios |
| 27-10-2026 | Otro proyecto existente informó de un 403 "project has no access" en el foro de ayuda | Los clientes actuales pueden perder el acceso antes; no esperes a la última semana de diciembre |
| 03-11-2026 | SerpAPI publicó serpapi-mcp v2.1.0 con parámetros de motores actualizados; la v2.2.0 del 04-11-2026 añadió extract | Los servicios de páginas de resultados ahora leen páginas; la frontera entre productos se mueve |
| 06-11-2026 | AddSearch publicó una guía de migración del buscador interno en tres grupos: hasta 50 dominios, más de 50 y API JSON | El buscador interno y la búsqueda en toda la web necesitan respuestas distintas |
El punto del 27 de octubre requiere atención. El hilo se titula "Custom Search JSON API 403: project has no access despite enabled API and configured engine". Quien lo publica dice que la consola muestra la API activada y el motor configurado, pero las solicitudes devuelven 403. Hay hilos parecidos desde febrero, como este del 21-02-2026. Así que "los clientes actuales mantienen el acceso hasta el 1 de enero" puede no cumplirse en todos los proyectos. Si tu producto depende de la búsqueda, empieza ya la prueba en paralelo.
Primeros pasos: tres pasos para cambiar
Primero, regístrate en el inicio rápido y obtén una clave de API. Las cuentas nuevas que marcan con estrella los dos repositorios everyinfra/everyinfra-agent-plugins y everyinfra/seo-skills en GitHub pueden reclamar 1 USD de prueba en la consola. Eso alcanza para unas 1440 búsquedas web y vale 24 horas desde que se reclama. Segundo, ejecuta el comando curl de arriba con tu consulta más habitual y revisa results y billing.charged_usd. Tercero, sustituye la llamada antigua por la función de Python de arriba, o añade la configuración MCP a tu agente.
La página del producto de búsqueda web tiene la referencia completa de la herramienta. Puedes probar cada capacidad de datos en línea en el mercado, y los precios están en la página de precios. Para buscar por país e idioma, mira la página de la capacidad web/search. Para Bing, mira bing/search, y para noticias, google_news/search. Los resúmenes de plataforma están en las páginas de búsqueda web, Bing y Google News.
Preguntas frecuentes
¿Existe una API de búsqueda de Google?
Sí, pero un desarrollador nuevo ya no puede activar una API de Google para buscar en toda la web. La Custom Search JSON API está cerrada a clientes nuevos y se apaga el 1 de enero de 2027. Agent Search cubre como máximo 50 dominios. El producto para toda la web requiere solicitud y su precio no es público. La pregunta viene de las sugerencias de búsqueda de Google: "is there a google search api" y "does google have a search api".
¿Cómo funcionan los precios de la API de búsqueda de Google y hay algo gratis?
Según la página de Google, los clientes actuales tienen 100 consultas gratis al día y después pagan 5 USD por 1000, con un máximo de 10.000 al día, hasta el 1 de enero de 2027. Con las 10.000 diarias completas, un mes cuesta 1485 USD. Agent Search Enterprise cuesta 4,00 USD por 1000, con 10.000 consultas de prueba al mes. El Programmable Search Element incrustado es gratis, pero muestra anuncios, y Google no tiene una API JSON gratuita y permanente para toda la web. La pregunta viene de las sugerencias de búsqueda de Google: "google search api pricing", "google custom search api pricing" e "is google search api free".
¿Cuál es la búsqueda en toda la web más barata para 60.000 consultas al mes cuando cierre Custom Search?
Un hilo de Reddit en r/googlecloud hace justo esta pregunta. Su autor hacía 40.000 consultas al mes, pronto 60.000, en toda la web, y quería un precio cercano a 5 USD por 1000. Con los precios de este artículo, 60.000 llamadas al mes cuestan 41,64 USD en nuestra herramienta web y 33,36 USD en bing/search. Un paquete Starter de Serper cuesta 50 USD por 50.000 llamadas en 6 meses. El plan Searcher de SerpAPI cuesta 725 USD al mes por 100.000 búsquedas. La elección depende de si necesitas páginas de resultados completas.
¿Qué alternativas hay a la Bing Search API?
Microsoft recomienda Grounding with Bing Search, a 14 USD por 1000, solo dentro de Azure AI Foundry y sin resultados en bruto. Para resultados en bruto, usa un servicio de páginas de resultados (SerpAPI y Bright Data admiten Bing) o nuestra bing/search, a 0,556 USD por 1000. La pregunta viene de las sugerencias de búsqueda de Google: "bing search api alternative" y "bing search api replacement".
¿Por qué Custom Search API devuelve 403 "This project does not have the access"?
Es el error estándar de los proyectos creados después del 20 de enero de 2026. Un gestor de la comunidad de Google lo confirmó en este hilo del foro de ayuda. El 27 de octubre, un proyecto existente informó del mismo error. Un proyecto nuevo no tiene forma de obtener acceso, así que debe migrar a otra API. La pregunta viene de una búsqueda relacionada en Google: "This project does not have the access to Custom Search JSON API".
Referencias
- Custom Search JSON API, descripción general (cerrada a clientes nuevos, fin el 1 de enero de 2027, 5 USD por 1000, 100 gratis al día, tope de 10.000 al día), Google for Developers, actualizado el 18-02-2026, leído el 08-11-2026.
- Método cse.list (q, num, start, gl, hl, cr, lr, siteSearch, dateRestrict, safe, searchType), Google for Developers, leído el 08-11-2026.
- Estructura de la respuesta Search (items, searchInformation, queries.nextPage), Google for Developers, leído el 08-11-2026.
- Custom Search JSON API: introducción (clave, cx, OpenSearch 1.1), Google for Developers, leído el 08-11-2026.
- Uso de REST para llamar a la API (URL de la solicitud, máximo 100 resultados por consulta), Google for Developers, leído el 08-11-2026.
- Custom Search Site Restricted JSON API (cerró el 8 de enero de 2025), Google for Developers, leído el 08-11-2026.
- Operador de búsqueda site:, Google Search Central, leído el 08-11-2026.
- Dirección de la Custom Search JSON API, Google, leído el 08-11-2026.
- Updates to our Web Search Products (motores nuevos limitados a 50 dominios), Programmable Search Engine Blog, 20-01-2026, leído el 08-11-2026.
- Update sites in your search engine (cambios desde el 20 de enero de 2026), Programmable Search Engine Help, leído el 08-11-2026.
- Hilo de la comunidad: Updates to our web search products, Programmable Search Engine Community, respuesta nueva el 16-10-2026, leído el 08-11-2026.
- Hilo de la comunidad: Custom Search JSON API 403, project has no access, Programmable Search Engine Community, 27-10-2026, leído el 08-11-2026.
- Hilo de la comunidad: 403 This project does not have the access to Custom Search JSON API, Programmable Search Engine Community, leído el 08-11-2026.
- Hilo de la comunidad: Custom Search API full web search solution (respuesta del gestor de la comunidad), Programmable Search Engine Community, respuesta del 03-03-2026, leído el 08-11-2026.
- Migrate from Custom Search JSON API, Google Cloud, leído el 08-11-2026.
- Cambios de nombre de Vertex AI (Vertex AI Search pasa a ser Agent Search), Google Cloud, leído el 08-11-2026.
- Precios de Agent Search (Standard 1,50 USD y Enterprise 4,00 USD por 1000, 10.000 consultas de prueba al mes), Google Cloud, leído el 08-11-2026.
- Google Documents Partner-Only API For Full Web Search Results, Search Engine Journal, 11-09-2026, leído el 08-11-2026.
- Google Web Search Service API Documentation Removed, Search Engine Roundtable, 28-09-2026, leído el 08-11-2026.
- Google documents a partner-only Web Search Service API as Custom Search shutdown nears, SEO Forum, leído el 08-11-2026.
- Retiro de Bing Search API (11 de agosto de 2025), Microsoft Learn, leído el 08-11-2026.
- Parámetros de consulta de Bing Web Search API v7 (q, count, offset, mkt, setLang, freshness), Microsoft Learn, leído el 08-11-2026.
- Grounding with Bing Search (respuestas para agentes, sin resultados en bruto), Microsoft Learn, leído el 08-11-2026.
- Precios de Grounding with Bing Search (14 USD por 1000), Microsoft, leído el 08-11-2026.
- Precios de SerpApi, SerpApi, leído el 08-11-2026.
- Documentación de SerpApi Google Search API, SerpApi, leído el 08-11-2026.
- Versiones de serpapi-mcp (v2.1.0, v2.2.0), GitHub, 03-11-2026 y 04-11-2026, leído el 08-11-2026.
- Página principal de Serper (precios, 2500 consultas gratis, créditos válidos 6 meses), Serper, leído el 08-11-2026.
- Precios de Tavily, Tavily, leído el 08-11-2026.
- Créditos de la API de Tavily (la búsqueda básica cuesta 1 crédito), Tavily Docs, leído el 08-11-2026.
- Versiones de tavily-mcp, GitHub, leído el 08-11-2026.
- Precios de Firecrawl, Firecrawl, leído el 08-11-2026.
- Facturación de Firecrawl (la búsqueda cuesta 2 créditos por cada 10 resultados), Firecrawl Docs, leído el 08-11-2026.
- Versiones de firecrawl-mcp-server (v3.36.1), GitHub, 03-11-2026, leído el 08-11-2026.
- Google Search JSON API alternative, Firecrawl Blog, 23-10-2026, leído el 08-11-2026.
- Precios de Bright Data SERP API, Bright Data, leído el 08-11-2026.
- Introducción a Bright Data SERP API, Bright Data Docs, leído el 08-11-2026.
- Versiones de google-api-python-client (v2.201.0), GitHub, 30-09-2026, leído el 08-11-2026.
- OpenSearch 1.1 borrador 6 (la especificación detrás de la respuesta de Custom Search), GitHub, leído el 08-11-2026.
- Registro de cambios de la especificación MCP 2026-07-28, Model Context Protocol, 28-07-2026, leído el 08-11-2026.
- Migrating Off Google Programmable Search Before the 2027 Deadline, AddSearch, 06-11-2026, leído el 08-11-2026.
- Google Custom Search API is closing. Need affordable Open Web Search alternative for 60k req/month, Reddit r/googlecloud, leído el 08-11-2026.
- Is Google's Custom Search API being discontinued? (claves nuevas con 403 el 20 de enero de 2026), Reddit r/googlecloud, leído el 08-11-2026.
- Google quietly announced that Programmable Search won't allow new engines to search the entire web, Hacker News, leído el 08-11-2026.
- Google Search for Discourse AI (aviso de retiro, marzo de 2026), Discourse Meta, leído el 08-11-2026.
- Catálogo de herramientas de búsqueda de EveryInfra (parámetros y precio de web), EveryInfra, leído a las 00:14:49 SGT, leído el 08-11-2026.
- Catálogo de capacidades de datos de EveryInfra (web/search, bing/search, google_news/search), EveryInfra, leído a las 00:14:49 SGT, leído el 08-11-2026.
- Endpoint MCP remoto de EveryInfra (everyinfra_search), EveryInfra, leído el 08-11-2026.
Referencia BL-113