La clave de API es lo único de tu prospección que puede costarte dinero mientras duermes
Un flujo de n8n equivocado devuelve cero filas y lo notas. Una clave de API mal encerrada no avisa: cobra. Esto es lo que hacemos antes de importar cualquier flujo que use Google Places y DeepSeek —restricciones, topes, alertas y una prueba de tres peticiones— con las tarifas y los tramos gratuitos de Places leídos en la lista oficial el 20 de octubre de 2026.
1. Lo que de verdad se rompe: el orden de los hechos
En una instalación de prospección hay tres activos y solo uno tiene riesgo financiero:
- El flujo (el
.json): si está mal, falla a la vista. Ruido, no factura. - Los datos: si están mal, producen una lista mala. Se nota en la primera llamada.
- La clave: si está expuesta, cualquiera la usa y tú pagas. No se nota hasta que llega el resumen del mes.
Y hay un detalle que sorprende a casi todos: Google exige una tarjeta vinculada incluso para usar el
tramo gratuito. Sin facturación activa la clave responde 403 con
REQUEST_DENIED y el flujo se ve «roto» cuando en realidad está sin habilitar. Por eso el orden
correcto es: facturación → API habilitada → clave restringida → tope de cuota → y solo entonces importar.
2. El tramo gratuito real de Places (verificado hoy, no de memoria)
La lista de precios global de Google Maps Platform, consultada el 20/10/2026, muestra el tope gratuito por SKU y por mes, no un cupo único de cuenta. En la API de Places (nueva) lo relevante para prospección es esto (USD por cada 1.000 solicitudes, primer tramo):
| SKU | Gratis al mes | 1.000 solicitudes |
|---|---|---|
| Text Search Essentials (solo IDs) | ilimitado | 0,00 |
| Text Search Pro | 5.000 | 32,00 |
| Text Search Enterprise | 1.000 | 35,00 |
| Text Search Enterprise + Atmosphere | 1.000 | 40,00 |
| Place Details Pro | 5.000 | 17,00 |
| Place Details Enterprise | 1.000 | 20,00 |
La consecuencia práctica: si tu máscara de campos pide teléfono o sitio web, la solicitud se factura a Enterprise —35,00 USD por 1.000— y tienes 1.000 solicitudes gratis al mes, que a 20 resultados por página son del orden de 20.000 negocios. Una corrida diaria de 60 prospectos consume 3 solicitudes: USD 0,105. Lo medimos: es exactamente lo que costó una corrida real de nuestro kit.
Anotamos también la alternativa honesta, porque es más barata: Text Search solo IDs (gratis,
ilimitado) para obtener los placeId y después Place Details Enterprise (1.000 gratis,
20,00 USD por 1.000). Sale a USD 1,00 por 1.000 leads en vez de 1,75. No es el camino por
defecto del kit porque son dos peticiones por página en vez de una: duplica la superficie de
fallo, los tiempos y los puntos donde hay que reintentar. Cuando el volumen justifique ese ahorro, el cambio
está documentado y es una edición de la máscara y del nodo, no una reescritura.
3. Encerrar la clave de Google en cinco pasos
- Proyecto y facturación. Crea un proyecto solo para esto y vincula la tarjeta. El tramo gratuito existe, pero la facturación tiene que estar activa.
- Habilita la API correcta. En la biblioteca busca Places API (New) —la que dice «(New)», no «Places API» a secas— y habilítala. Son APIs distintas con cuotas y respuestas distintas; es el error número uno de la puesta en marcha.
- Restringe la clave por API. En la clave, Restricciones de API: marca solo Places API (New). Si esa clave se filtra, no puede gastar en Maps, Rutas ni Gemini.
-
Restricciones de aplicación: depende de dónde corra n8n. Si tu n8n es Cloud, no tiene IP
fija: deja «Ninguna» y compensa con cuota y alertas. Si es self-hosted con IP fija, restringe por IP y
cualquier uso desde otro sitio devuelve
403. - Tope de cuota y alerta de presupuesto. En Cuotas, fija un máximo diario para Text Search mientras pruebas (200 solicitudes/día es un cinturón razonable). Aparte, en Facturación → Presupuestos y alertas, pon una alerta de 1 USD al 50 %/90 %/100 %. El tope corta el grifo; la alerta te avisa antes de que lo notes en la tarjeta.
4. DeepSeek: prepago, y por qué eso cambia el riesgo
DeepSeek funciona con saldo prepago: cargas, por ejemplo, 5 USD y no hay forma de que una clave filtrada te cobre más que ese saldo. Eso lo hace estructuralmente más seguro que una API con tarjeta al portador. Lo que sí conviene hacer:
- Una clave por proyecto, no una para todo. Si sospechas de una, la borras sin romper lo demás.
- Guardarla solo en la credencial de n8n (cifrada en la base de datos de la instancia), nunca en un nodo de código, ni en las notas de un nodo, ni en un archivo del flujo.
- Rotarla si alguna vez pasó por un chat, una captura o un repositorio. Rotar cuesta treinta segundos; una clave en un repo público, no.
5. La prueba de tres peticiones (60 segundos, antes de importar)
Tener una clave no es tenerla bien. Estas tres peticiones —a mano, con curl— separan los tres
modos de fallo que después se confunden con «el flujo no funciona»:
# 1) ¿La clave vive y la API está habilitada? Esperado: 200
curl -s -o /dev/null -w "%{http_code}\n" \
"https://places.googleapis.com/v1/places:searchText" \
-H "Content-Type: application/json" \
-H "X-Goog-Api-Key: $PLACES_KEY" \
-H "X-Goog-FieldMask: places.id,places.displayName" \
-d '{"textQuery":"dentistas en Providencia, Santiago","pageSize":1}'
# 2) ¿El campo caro está permitido con esta clave? Esperado: 200 (y factura Enterprise)
# Cambia el FieldMask por: places.id,places.displayName,places.nationalPhoneNumber,places.websiteUri
# 3) ¿La restricción por API funciona? Esperado: 403 PERMISSION_DENIED
curl -s "https://maps.googleapis.com/maps/api/geocode/json?address=Santiago&key=$PLACES_KEY" | head -20
Si la 1 da 403 REQUEST_DENIED, falta facturación o la API no está habilitada. Si da
400 con un mensaje de máscara, el problema es el FieldMask, no la clave. Si la 3
devuelve 200, tu clave no está restringida por API: vuelve al paso 3.
En el kit esta comprobación no se hace a mano: scripts/selftest.sh llama a los dos servicios con
tus claves del .env y escribe OK o FALLA con el código HTTP exacto
antes de que importes nada. Arreglar las claves ahí ahorra el 90 % de los diagnósticos posteriores.
6. Lo que no se hace nunca
- Pegar la clave dentro del
.jsondel flujo. Un flujo con la clave escrita es un flujo que no se puede compartir, ni vender, ni subir a un repo, ni pasar a un cliente. - Versionar el
.env. Va en.gitignoreel primer minuto, no el día que lo subes. - Usar la misma clave para producción y pruebas. Cuando la de pruebas se filtra en un foro, no quieres estar rotando la que factura.
- Confiar en que «el tramo gratuito me cubre». Cubre hasta que un bucle mal cerrado hace 900 solicitudes en una tarde. El tope diario es lo que convierte un error en un susto.
El kit incluye el auto-diagnóstico que valida las dos claves, la receta de topes de gasto del primer mes y los códigos HTTP de Places explicados uno por uno. Ver qué incluye →