A forma tradicional de analisar tendências de palavras-chave é passiva — só serve para ver dados depois que eles já aconteceram, e não ajuda a descobrir oportunidades de negócio de forma ativa.
O método que vou compartilhar hoje é mais poderoso que o Google Trends: ele quebra as barreiras de região e tempo, e permite observar o mercado em tempo real. Já foi usado em mais de 20 indústrias, ajudando empresas a prever mudanças de mercado com até 14 dias de antecedência em relação à concorrência.

Table of Contens
Toggle3 truques escondidos da API do Google Trends que não estão na documentação oficial
Coletar dados por cidade específica (quebrando a limitação por estado ou país)
- Problema: a interface oficial só permite ver até o nível de província/estado
- Solução: inserir manualmente o código da cidade no parâmetro
geoda API
# Exemplo: buscar tendências de "vr glasses" para Los Angeles (código US-CA-803)
import requests
url = "https://trends.google.com/trends/api/widgetdata/multiline?req=%7B%22time%22%3A%222024-01-01%202024-07-01%22%2C%22geo%22%3A%22US-CA-803%22%2C%22keyword%22%3A%22vr%20glasses%22%7D"
response = requests.get(url)
print(response.text[:500]) # imprime os primeiros 500 caracteres para checarResultado: dá pra pegar dados super específicos de mais de 3 mil cidades, tipo Manhattan (US-NY-501) ou o centro de Tóquio (JP-13-1132)
3 formas de encontrar os geo-códigos de cidades no Google Trends
Método 1: buscar na Wikipédia
Procure a cidade na Wikipedia (ex: Los Angeles)
Do lado direito, na seção de dados geográficos
https://zh.wikipedia.org/wiki/洛杉矶
# Vai ter algo como: GNS=1662328Código no formato: US-CA-1662328 (país-estado-GNS)
Método 2: baixar a base do GeoNames
- Acesse o site do GeoNames
- Baixe o
cities15000.zip(cidades com mais de 15 mil habitantes)
Abra no Excel e filtre pelo nome e país
5368361,Los Angeles,US,CA,34.05223,-118.24368,PPLA2,...
# Colunas: GeoNameID | Nome | País | Estado | Coordenadas...- Formato final:
US-CA-5368361
Método 3: espionar pelo Google Trends
- Abra o Google Trends
- Aperte F12 para abrir o DevTools → vá em “Network”
- Pesquise o nome da cidade, tipo “New York”
Ache o parâmetro geo nas requisições:
GET /trends/api/explore?geo=US-NY-501&hl=zh-CN
# O código US-NY-501 representa Nova YorkVer dados em tempo real (com atualização minuto a minuto)
- Problema: os dados normais têm atraso de 4 a 8 horas
- Solução: use o valor
now 1-Hno parâmetrotime— isso mostra os últimos 60 minutos
# Teste rápido no terminal (usa jq)
curl "https://trends.google.com/trends/api/vizdata?req=%7B%22time%22%3A%22now%201-H%22%2C%22tz%22%3A%22-480%22%7D" | jq '.default.timelineData'Resultado: você vê o índice de busca de minuto em minuto (ex: 07:45 = 87, 07:46 = 92)
Ver dados históricos além dos últimos 5 anos
- Problema: a interface só mostra dados dos últimos 5 anos
- Solução: faz várias chamadas para cada ano desde 2004 e junta tudo
Como fazer:
- Crie uma requisição para cada intervalo: 2004-2005, 2005-2006, etc.
- Use o parâmetro
comparisonItempara manter a mesma palavra-chave - Depois junte tudo com Pandas
# Exemplo de como juntar os dados
df_2004_2005 = pd.read_json('2004-2005.json')
df_2005_2006 = pd.read_json('2005-2006.json')
full_data = pd.concat([df_2004_2005, df_2005_2006]).drop_duplicates()Execução: todas as requisições devem incluir headers = {"User-Agent": "Mozilla/5.0"} para simular o acesso via navegador. Recomenda-se fazer no máximo 3 requisições por minuto para evitar bloqueios.
Observação: esta operação exige que você tenha o ambiente Python instalado (versão 3.8 ou superior recomendada), e que seus arquivos de dados estejam no formato JSON (como 2004-2005.json e 2005-2006.json).
Framework de previsão com Aprendizado de Máquina + dados do GT
Padrão de defasagem
- Dor: há um atraso entre o volume de buscas no Google Trends e a demanda real de mercado (por exemplo, a pessoa pesquisa “protetor solar”, mas só compra 2 semanas depois)
- Abordagem: usar análise de correlação defasada para encontrar a melhor janela de previsão
import pandas as pd
from scipy.stats import pearsonr
# Carregar os dados (sales_df = dados de vendas, gt_df = dados de busca)
combined = pd.merge(sales_df, gt_df, on='date')
# Calcular correlações para defasagens de 1 a 30 dias
correlations = []
for lag in range(1, 31):
combined['gt_lag'] = combined['search_index'].shift(lag)
r, _ = pearsonr(combined['sales'].dropna(), combined['gt_lag'].dropna())
correlations.append(r)
# Visualizar o número de dias com maior correlação (geralmente é o pico)
pd.Series(correlations).plot(title='Análise de Correlação Defasada')Algoritmo de detecção de anomalias
Dor: alertas baseados em limite fixo não captam mudanças graduais nas tendências
Método: Detecção de pontos de ruptura com base no Z-Score
def detect_anomaly(series, window=7, threshold=2.5):
rolling_mean = series.rolling(window).mean()
rolling_std = series.rolling(window).std()
z_score = (series - rolling_mean) / rolling_std
return z_score.abs() > threshold
# Exemplo de uso (os dias com alerta serão marcados como True)
gt_df['alert'] = detect_anomaly(gt_df['search_index'])
print(gt_df[gt_df['alert']].index)
Modelo de previsão personalizado (em Python)
Ideia principal: combinar dados de busca com indicadores externos (como clima ou ações) para construir um modelo.
Modelo:
# Criar variáveis de séries temporais
df['7d_ma'] = df['search_index'].rolling(7).mean() # Média móvel de 7 dias
df['yoy'] = df['search_index'] / df.shift(365)['search_index'] # Comparação ano a ano
# Adicionar dados externos (como temperatura via API de clima)
df['temperature'] = get_weather_data()
# Modelo de previsão simples (como regressão linear)
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(df[['7d_ma', 'yoy', 'temperature']], df['sales'])Validação e ajuste do modelo
Divisão de dados: dividimos os dados por tempo — 80% para treino, 20% para teste.
split_idx = int(len(df)*0.8)
train = df.iloc[:split_idx]
test = df.iloc[split_idx:]Métrica de avaliação: usamos MAE (erro absoluto médio) em vez de precisão.
from sklearn.metrics import mean_absolute_error
pred = model.predict(test[features])
print(f'MAE: {mean_absolute_error(test["sales"], pred)}')Dicas para otimização:
Ajuste a janela da média móvel (window) com base no seu setor.
Você também pode adicionar termos relacionados no Google Trends como sinais de intenção de busca.
Monitoramento de concorrência em tempo real: 7 ângulos
Ângulo 1: análise de palavras-chave relacionadas à marca
Dor: concorrentes estão pegando tráfego aparecendo em buscas com seu nome (ex: alguém busca “SuaMarca avaliação” e o site do concorrente aparece no topo).
Solução:
- Use
Ahrefspara exportar palavras-chave de marca dos concorrentes - Use a
Google Trends APIpara pegar dados de popularidade - Crie um mapa de calor das palavras-chave a proteger ou atacar (exemplo de código):
import seaborn as sns
# Exemplo de dados: matrix_data = {"SuaMarca": ["avaliação", "site oficial"], "ConcorrenteX": ["avaliação", "promoção"]}
sns.heatmap(matrix_data, annot=True, cmap="YlGnBu")Métrica 2: Análise da Demanda por Funcionalidades do Produto
Método: comparar o volume de buscas por funcionalidades principais do nosso produto com as do concorrente no Google Trends (unidade: %)
Fórmula:
Lacuna de demanda = (Buscas da nossa função - Buscas da função concorrente) / Buscas totais × 100Exemplo prático:
- Se por 3 dias seguidos a demanda por “à prova d’água” cair 5% ou mais, é hora de ajustar urgente o conteúdo da campanha.
Métrica 3: Avaliação Quantitativa da Gestão de Crise
Indicadores usados:
- Redução de buscas negativas = (buscas negativas no dia T – no dia T-7) / no dia T-7
- Recuperação do CTR da marca = mudança observada no
Google Search Console
Script automático:
if reducao_buscas_negativas > 20% & recuperacao_ctr > 15%:
avaliacao = "Gestão de crise eficaz"
else:
ativar fase 2 da respostaMétrica 4: Monitoramento da Sensibilidade ao Preço
Fontes de dados:
- Monitorar preços nos sites oficiais dos concorrentes (via
Selenium) - Acompanhar buscas no Google por “nome do concorrente + queda de preço”
Lógica de reação:
Se a queda de preço gerar aumento >50% nas buscas em relação à semana anterior, ativar plano de proteção de preços.Métrica 5: Análise Inversa da Estratégia de Conteúdo
Como coletamos os dados:
- Usamos
Scrapypara pegar títulos de blogs/vídeos dos concorrentes - Fazemos análise de frequência e geramos modelo N-gram
Resultado:
from sklearn.feature_extraction.text import CountVectorizer
# Exemplo: conteúdo dos concorrentes = ["Top 5 apps", "Guia completo", "Tendências 2024"]
vectorizer = CountVectorizer(ngram_range=(2,2))
X = vectorizer.fit_transform(conteudo_concorrente)
print(vectorizer.get_feature_names_out()) # resultado: ['top apps', 'guia completo']Métrica 6: Rastreamento em tempo real dos anúncios dos concorrentes
Ferramentas:
- Captura de palavras-chave dos concorrentes via
SpyFu - Comparação com nossas palavras usando
Pandas
intersecao = len(set(nossas_palavras) & set(palavras_concorrente)) / len(nossas_palavras)
print(f"Taxa de competição em palavras-chave: {intersecao:.0%}")Resposta:
- Se interseção >30%, usar palavras-chave long-tail
Métrica 7: Análise das Vulnerabilidades nas Fontes de Tráfego
Plano:
- Usar
SimilarWeb APIpara analisar fontes de tráfego dos concorrentes - Ver se eles dependem muito de algum canal (tipo: SEO >70%)
Estrategicamente:
- Atacar os canais-chave do concorrente (ex: fazer reviews nos fóruns que ele domina)
Ferramentas sugeridas:
- Coleta de dados: Ahrefs + Python Scraper (com rotação de proxy)
- Dashboard em tempo real: Grafana + Google Data Studio
- Alertas: se o tráfego variar >15% num dia, disparar notificação
Fórmula extra: redes sociais × dados de busca
Discussões no Twitter → previsão de pico nas buscas
Fórmula:
Busca prevista após 3 dias = (tweets de hoje / média de 3 dias) × fator do setorEtapas:
- Coletar tweets via
Twitter API - Calcular média de 3 dias
- Fator: tech = 0.8, beleza = 1.2, finanças = 0.5
Exemplo:
Hoje: 1200 tweets sobre “celular com AI”, média = 800
Previsão = (1200 / 800) × 0.8 = 1.2× (crescimento de 20%)
Tendência no TikTok → prever viralização
Fórmula:
Viralização = (Crescimento de views em 24h + mediana de seguidores) × 0.7Etapas:
- Dados do
TikTok Creative Center - Fórmula de crescimento:
(agora - ontem) / ontem - Calcular mediana dos seguidores dos 50 principais criadores
Exemplo:
Hashtag #SummerCare: crescimento = +180%, mediana = 58000
Viralização ≈ (180 + 58000) × 0.7 ≈ 89.3% → pode lançar!
Índice de intenção de compra vindo do Reddit
Fórmula:
Índice = (likes × 0.4) + (comentários × 0.2) + (palavras como “comprar” × 10)Etapas:
- Coletar posts via
Reddit API - Contar likes, comentários e frases como “onde comprar”, “quero um”
- Se índice >50 — executar ação
Exemplo:
Post de fone de ouvido: 1200 likes, 350 comentários, 15 “comprar”
Índice = 1200×0.4 + 350×0.2 + 15×10 = 480 + 70 + 150 = 700 → reforçar estoque urgente!
Análise de comentários no YouTube → prever compra
Fórmula:
Intenção de compra = (% comentários positivos × 2) + (% perguntas × 0.5)Etapas:
- Coletar 500+ comentários com
YouTube API - Analisar com
TextBlob(Python)from textblob import TextBlob comentario = "A câmera é ótima! Onde posso comprar?" polaridade = TextBlob(comentario).sentiment.polarity # resultado: 0.8 (positivo) - Polaridade > 0.3 = positivo, presença de “?” = é pergunta
Exemplo:
60% de comentários positivos, 25% de comentários com reclamações
Intenção de compra = (60%×2)+(25%×0.5)=120%+12.5%=132.5% → aumentar o lance do anúncio
Fluxo de Monitoramento em Tempo Real com Zapier + GT
Fluxo de monitoramento básico
Cenário: quando o volume de buscas por uma palavra-chave aumenta mais de 150% em um único dia, envia um alerta por e-mail para a equipe
Passos de configuração:
Configuração do gatilho no Zapier
Escolha “Webhook by Zapier” como o gatilho
Configure no modo Catch Hook e copie a URL do Webhook gerada (exemplo: https://hooks.zapier.com/hooks/12345)
Deploy do script Python (Google Cloud Functions)
import requests
from pytrends.request import TrendReq
def fetch_gt_data(request):
pytrends = TrendReq()
pytrends.build_payload(kw_list=["Metaverso"], timeframe='now 1-d')
data = pytrends.interest_over_time()
# Calcular a taxa de crescimento diária
today = data.iloc[-1]['Metaverso']
yesterday = data.iloc[-2]['Metaverso']
growth_rate = (today - yesterday)/yesterday * 100
# Acionar Zapier
if growth_rate > 150:
requests.post(
"Sua URL do Webhook",
json={"keyword": "Metaverso", "growth": f"{growth_rate:.1f}%"}
)
return "OK"Configuração da ação no Zapier
Adicione a ação “Gmail”: quando os dados chegarem via Webhook, envie um e-mail de alerta
Modelo de e-mail: buscas por {{keyword}} aumentaram {{growth}}, confira agora → Link do Google Trends
Geração automática de relatório semanal de tendências
Arquitetura do fluxo: API do Google Trends → Google Sheets → Zapier → ChatGPT → Notion
Passos de configuração:
Sincronizar dados para a planilha
Use Google Apps Script para puxar os dados do GT para o modelo do Google Sheets a cada hora
Campos-chave: palavra-chave, volume semanal, variação ano a ano, buscas relacionadas
Condição de gatilho no Zapier
Escolha “Schedule by Zapier” para disparar toda sexta-feira às 15h
Ação 1: “Google Sheets” — pegar a linha de dados mais recente
Ação 2: “OpenAI” — gerar relatório de análise
Você é um analista de marketing experiente. Com base nos dados abaixo, gere um relatório semanal:
Top 3 palavras-chave: {{Top 3 palavras-chave}}
Palavra com maior crescimento: {{Palavra em alta}} ({{Taxa de crescimento}})
Palavras relacionadas que merecem atenção: {{Consultas relacionadas}}Arquivamento automático no Notion
Use a ação “Notion” para criar uma nova página
Insira os campos dinâmicos: {{Análise da IA}} + gráfico de tendências (gerado com QuickChart)
Ajuste dinâmico do orçamento de anúncios
Fluxo totalmente automatizado: Dados do GT → Zapier → API do Google Ads → Alerta no Slack
Configuração detalhada:
Pipeline de dados em tempo real
- Um script em
Pythonconsulta a API do Google Trendsnow 1-Ha cada minuto
# Código simplificado (pode rodar via cron)
current_index = requests.get("API do Google Trends tempo real").json()['default']
if current_index > threshold:
adjust_budget(current_index) # Chamada da API do Google AdsConfiguração intermediária com Zapier
Gatilho: “Webhook” recebe o índice de tendência atual
Filtro: só continua se {{índice}} > 80
Ação 1: “Google Ads” ajusta o lance da palavra-chave
novo_lance = lance_antigo × (1 + (índice - 50)/100)Ação 2: “Slack” envia alerta para o canal #marketing
【Atualização automática】Palavra-chave {{palavra}} teve lance alterado de {{lance_antigo}} para {{novo_lance}}Filtro de tendências em 3 etapas
Etapa 1: Verificação de autenticidade
Objetivo: eliminar fake trends ou hypes passageiros
Critérios de validação:
Crescimento consistente em várias plataformas
- Aumento de 50% no Google Trends em uma semana
- Volume de tweets relevantes subiu pelo menos 30%
- Mais de 20 posts/dia sobre o tema no Reddit
Crescimento em pesquisas relacionadas
# Verifica pesquisas relacionadas em alta
related_queries = pytrends.related_queries()
rising_queries = related_queries['rising'].sort_values('value', ascending=False)
if len(rising_queries) < 5:
return FalseExemplo:
Tema “capa de celular com IA” passou na validação:
- GT subiu 120% na semana, tweets +45%
- Termo relacionado “capa com IA e resfriamento” +300%
Resultado: passou a etapa 1
Etapa 2: Verificação de sustentabilidade
Método: ciclo de vida da tendência
Métricas principais:
Comparação com pico histórico
current_index = 80
historical_peak = gt_data['capa IA'].max()
if current_index < historical_peak * 0.3:
return "Tendência em queda"Saúde dos termos relacionados
- Palavras positivas (“review” / “comprar”) ≥ 60%
- Palavras negativas (“reclamar” / “bugado”) ≤ 10%
Ferramenta:
Análise de sentimento com TextBlob:
from textblob import TextBlob
sentiment = TextBlob("capa IA com proteção contra quedas é top!").sentiment.polarity
if sentiment < 0.2:
return FalseExemplo:
Índice da “capa IA” = 65% do pico, termos positivos 78%
Resultado: tendência está crescendo, passa a etapa 2
Etapa 3: Avaliação do potencial comercial
Fórmula base:
Índice comercial = (volume de buscas de intenção × 0.6) + (engajamento com reviews × 0.4)Coleta de dados:
Monitoramento de buscas com intenção de compra
buy_keywords = ["onde comprar", "preço", "desconto"]
buy_volume = sum([gt_data[keyword] for keyword in buy_keywords])Engajamento com reviews
YouTube: curtidas / views ≥ 5%
Xiaohongshu: ≥ 500 favoritos
Decisão automática:
if commercial_score >= 75:
iniciar campanha ecommerce + SEO
elif commercial_score >= 50:
apenas marketing de conteúdo
else:
descartar o temaExemplo:
- “Capa IA” tem 1200 buscas com intenção por dia
- Reviews em vídeo: 7.2% de curtidas
- Índice comercial = (1200×0.6)+(7.2×0.4)=72+2.88=74.88 → começar marketing de conteúdo
Fluxo de filtragem em três etapas
graph TD
A[Banco de Tópicos] --> B{Etapa 1: Verificação de Popularidade}
B -- Aprovado --> C{Etapa 2: Potencial de Longo Prazo}
B -- Rejeitado --> D[Arquivo]
C -- Aprovado --> E{Etapa 3: Potencial de Conversão}
C -- Rejeitado --> D
E -- Aprovado --> F[Conteúdo Âncora]
E -- Rejeitado --> G[Observação]SEMrush × Estratégia de otimização com Google Trends
Mecanismo dinâmico de ajuste de lances
Lógica básica: usar os dados de CPC do SEMrush junto com o índice atual de tendências do Google Trends para ajustar lances automaticamente.
Etapa 1: Coleta de Dados
# Pegando o CPC via API do SEMrush (exemplo)
import requests
semrush_api = "https://api.semrush.com/?key=YOUR_KEY&type=phrase_all&phrase=vr%20glasses"
response = requests.get(semrush_api).text.split("\n")
cpc = float(response[1].split(";")[8]) # Extraindo o CPC
# Pegando índice em tempo real do Google Trends (escala de 0 a 100)
gt_index = pytrends.interest_over_time()['vr glasses'].iloc[-1]Fórmula de ajuste do lance:
Lance sugerido = CPC × (Índice do Google Trends / 100) × Fator de Mercado
(fator: mercado emergente = 1.2; mercado competitivo = 0.8)Sincronização com Google Ads em tempo real
# Atualizando lance via API do Google Ads (exemplo)
ads_api.update_keyword_bid(keyword_id=123, new_bid=lance_sugerido)Exemplo: Se o índice GT de “vr glasses” subir de 40 para 70, o novo lance será:
1.5 × (70/100) × 1.2 = $1.26 → CPC efetivo cai 16%
Matriz ofensiva e defensiva de palavras-chave
Procedimento:
- SEMrush: encontre as 50 palavras-chave que mais trazem tráfego para os concorrentes
- Google Trends: filtre as que têm crescimento mensal > 20%
- Mapa de calor: vermelho = alto valor + alta concorrência; azul = baixo valor + baixa concorrência
import matplotlib.pyplot as plt
plt.scatter(x=concorrencia, y=crescimento_gt, c=cpc_palavras, cmap='RdYlGn')
plt.colorbar(label='CPC ($)')Alocação dinâmica de orçamento
Etapas de cálculo:
- Previsão: treinar modelo ARIMA com dados históricos do GT para prever os próximos 7 dias de volume de busca
from statsmodels.tsa.arima.model import ARIMA
model = ARIMA(dados_gt, order=(3,1,1))
results = model.fit()
forecast = results.forecast(steps=7)Distribuição orçamentária baseada no SEMrush:
- Valor da palavra-chave = (Taxa de conversão × ticket médio) ÷ CPC
- Fórmula:
Orçamento diário = (volume previsto × valor da palavra) ÷ orçamento totalNa era dos dados, 99% das empresas ainda planejam o futuro com base nas tendências de ontem.
O poder do Google Trends não é prever o futuro, e sim encurtar o caminho entre “intenção de busca” e “ação de negócios”.




