Transforme o Google Trends em um sinal de demanda com Python
Leia a série temporal, calcule uma direção de tendência simples, e a única coisa que precisa acertar: um valor do Trends é interesse relativo, nunca um número de volume de busca. Testado em agosto de 2026.

Você quer um número para o quanto de interesse um tópico está recebendo agora, para colocar num dashboard, decidir o que estocar, ou decidir sobre o que escrever a seguir. Ler um gráfico de linha no site do Google Trends não escala além de uma consulta de cada vez, e não encaixa em lugar nenhum onde um script possa usar.
O que o /v1/trends retorna
Mande uma query para o /v1/trends e você recebe interest_over_time, e dentro dela uma lista timeline_data. Cada ponto tem um date (um intervalo legível como “Aug 23-29, 2026”), um timestamp, e uma lista values com um item por busca que você pediu, cada um trazendo um value de 0 a 100. Na nossa amostra, para a busca “web scraping api”, vieram 53 pontos semanais cobrindo cerca de um ano, por 5 créditos.
O número é relativo, nunca absoluto
É aqui que as coisas mais dão errado: um value do Trends não é uma contagem de buscas. É um índice, escalado de forma que o ponto mais alto no intervalo que você pediu vale 100 e todo o resto é uma fração desse pico. Um valor de 14 não significa 14 buscas nem 14 de nada contável. Significa 14% do que quer que tenha sido a semana mais movimentada naquela janela.
Isso tem duas consequências que passam despercebidas. Primeiro, você não pode comparar um valor de uma busca com o valor de outra busca e concluir que um tópico é mais buscado, porque cada um é escalado contra o próprio pico, não uma referência compartilhada. Segundo, um valor calculado sobre um intervalo de datas ou uma localização não é comparável a um valor calculado sobre outro diferente, pelo mesmo motivo: mude a janela e todo ponto é reescalado contra um novo pico. Se você precisa de dois tópicos na mesma escala, peça os dois juntos numa única chamada para que compartilhem uma referência, ou compare o formato (subindo, caindo, estável) em vez do nível bruto.
Lendo a série e uma direção de tendência
import requests
API_KEY = "faf_live_..." # sua chave FastAF
resp = requests.get(
"https://api.fastaf.co/v1/trends",
params={"query": "web scraping api", "data_type": "TIMESERIES"},
headers={"Authorization": f"Bearer {API_KEY}"},
timeout=60,
)
resp.raise_for_status()
points = resp.json()["interest_over_time"]["timeline_data"]
series = [(p["date"], p["values"][0]["value"]) for p in points]
for date, value in series[-8:]:
print(f"{date:<26} {value:>3}")
recent = [v for _, v in series[-8:]]
prior = [v for _, v in series[-16:-8]]
recent_avg = sum(recent) / len(recent)
prior_avg = sum(prior) / len(prior)
change = (recent_avg - prior_avg) / prior_avg * 100
direction = "rising" if change > 10 else "falling" if change < -10 else "flat"
print(f"recent avg {recent_avg:.1f} vs prior avg {prior_avg:.1f}: {direction} ({change:+.1f}%)")
Na nossa amostra isso imprimiu as últimas oito semanas, oscilando entre 5 e 88, com uma média recente de 37,9 contra uma média das oito semanas anteriores de 84,6: uma queda de 55%, rotulada como “falling”. Se oito semanas é a janela certa depende de como o tópico costuma se mover. Uma categoria que muda mais devagar pode comparar blocos de 90 dias em vez de dois de 8 semanas; o formato do cálculo continua o mesmo.
Colocando em uso
Uma linha de dashboard só precisa do value mais recente e do rótulo de direção, atualizados na cadência que combine com a frequência real de mudança do interesse subjacente: diário é exagero para uma série que só reporta em blocos semanais, como a nossa amostra. Para uma decisão de estocar ou escrever, a direção importa mais que o nível absoluto: um tópico subindo de 20 para 40 é um sinal mais claro do que um tópico que está parado em 80 há meses, mesmo que 80 pareça o número maior.
Quanto custa
Uma chamada custa 5 créditos, independente de quantas semanas voltam na série, então preencher um dashboard com um ano de histórico e atualizá-lo semanalmente custam os mesmos 5 créditos. Requisições com falha não são cobradas.
Comece com o plano gratuito, 500 créditos e sem cartão, o que dá 100 chamadas: suficiente para puxar a série de todos os tópicos entre os quais você está decidindo antes de se comprometer a monitorar qualquer um deles.