O Google Trends é um site com dados para analisar a popularidade de pesquisas efetuadas no Google Search. Toda vez que um usuário procura por algum termo no buscador Google, a empresa registra esta pesquisa e atualiza um índice de popularidade do termo. O índice é baseado no volume de pesquisa e varia de 0 a 100 (quanto maior, mais popular).
O site do Google Trends disponibiliza dados gratuitamente para várias regiões, idiomas, períodos e categorias. A riqueza de dados é tão grande que o Economista Chefe do Google, Hal Varian, já publicou um paper1 mostrando como utilizar estes dados para produzir previsões econômicas.
Para tornar estes dados mais acessíveis e conhecidos, neste artigo mostramos como utilizar o portal de dados do Google Trends para coletar dados em tempo quase real, utilizando as linguagens de programação R e Python.
Como coletar dados do Google Trends?
Não existe, atualmente, uma API oficial que disponibilize os dados do Google Trends. Apesar disso, os dados podem ser baixados através de arquivos CSV diretamente no site da empresa.
- Acesse o site https://trends.google.com/
- Digite um termo de interesse (por exemplo “black friday”) e clique em “Explore”
- Aplique filtros de interesse
- Clique no botão de download para baixar um arquivo CSV
Como coletar dados do Google Trends no Python?
- Copie o link de download do arquivo CSV (pode ser necessário abrir a página de downloads do seu navegador e inspecionar manualmente o link de origem do arquivo baixado)
- Utilize o código abaixo, substituindo o link, para coletar e visualizar os dados
# Pacotes import pandas as pd import numpy as np import plotnine as p9 # Link para CSV obtido na página do Google Trends (botão download) link = ( "https://trends.google.com/trends/api/widgetdata/multiline/csv?req=%7B%22" + "time%22%3A%222018-12-06%202023-12-06%22%2C%22resolution%22%3A%22WEEK%22%" + "2C%22locale%22%3A%22pt-PT%22%2C%22comparisonItem%22%3A%5B%7B%22geo%22%3A" + "%7B%22country%22%3A%22BR%22%7D%2C%22complexKeywordsRestriction%22%3A%7B%" + "22keyword%22%3A%5B%7B%22type%22%3A%22BROAD%22%2C%22value%22%3A%22black%2" + "0friday%22%7D%5D%7D%7D%5D%2C%22requestOptions%22%3A%7B%22property%22%3A%" + "22%22%2C%22backend%22%3A%22IZG%22%2C%22category%22%3A0%7D%2C%22userConfi" + "g%22%3A%7B%22userType%22%3A%22USER_TYPE_LEGIT_USER%22%7D%7D&token=APP6_" + "UEAAAAAZXHxwslgEqAgRSM-qX7mibUgeGKgziCx&tz=180" ) # Coleta de dados online dados = pd.read_csv( filepath_or_buffer = link, skiprows = 3, names = ["periodo", "gtrends"], converters = { "periodo": lambda x: pd.to_datetime(x), "gtrends": lambda x: int(np.where(x == "<1", "0", x)) } ) # Visualização de dados print( p9.ggplot(dados) + p9.aes(x = "periodo", y = "gtrends") + p9.geom_line() + p9.scale_x_date(date_breaks = "1 year", date_labels = "%Y") + p9.labs( title = 'Buscas por "black friday" no Google', subtitle = "Índice de popularidade do termo, de 0 a 100", x = "", y = "Google Trends", caption = "Dados: Google | Elaboração: Análise Macro" ) )
Como coletar dados do Google Trends no R?
- Copie o link de download do arquivo CSV (pode ser necessário abrir a página de downloads do seu navegador e inspecionar manualmente o link de origem do arquivo baixado)
- Utilize o código abaixo, substituindo o link, para coletar e visualizar os dados
# Pacotes library(readr) library(dplyr) library(ggplot2) # Link para CSV obtido na página do Google Trends (botão download) link <- paste0( "https://trends.google.com/trends/api/widgetdata/multiline/csv?req=%7B%22", "time%22%3A%222018-12-06%202023-12-06%22%2C%22resolution%22%3A%22WEEK%22%", "2C%22locale%22%3A%22pt-PT%22%2C%22comparisonItem%22%3A%5B%7B%22geo%22%3A", "%7B%22country%22%3A%22BR%22%7D%2C%22complexKeywordsRestriction%22%3A%7B%", "22keyword%22%3A%5B%7B%22type%22%3A%22BROAD%22%2C%22value%22%3A%22black%2", "0friday%22%7D%5D%7D%7D%5D%2C%22requestOptions%22%3A%7B%22property%22%3A%", "22%22%2C%22backend%22%3A%22IZG%22%2C%22category%22%3A0%7D%2C%22userConfi", "g%22%3A%7B%22userType%22%3A%22USER_TYPE_LEGIT_USER%22%7D%7D&token=APP6_", "UEAAAAAZXHxwslgEqAgRSM-qX7mibUgeGKgziCx&tz=180" ) # Coleta de dados online dados <- readr::read_csv( file = link, skip = 3, col_names = c("periodo", "gtrends") ) |> dplyr::mutate( gtrends = as.numeric(dplyr::if_else(gtrends == "<1", "0", gtrends)) ) # Visualização de dados dados |> ggplot2::ggplot() + ggplot2::aes(x = periodo, y = gtrends) + ggplot2::geom_line() + ggplot2::scale_x_date(date_breaks = "1 year", date_labels = "%Y") + ggplot2::labs( title = 'Buscas por "black friday" no Google', subtitle = "Índice de popularidade do termo, de 0 a 100", x = NULL, y = "Google Trends", caption = "Dados: Google | Elaboração: Análise Macro" )
Notas
- Coleta de dados online é um procedimento sempre suscetível a erros;
- Há limite de requisições de dados;
- Os dados podem mudar a qualquer momento, sem aviso prévio;
- Existem bibliotecas de R e Python para coletar estes dados, mas estão inoperantes na data de escrita deste material.
Conclusão
Como acompanhar e antecipar tendências de mercado? Independentemente da resposta final, os dados são o meio. Neste artigo, mostramos como obter dados do Google Trends em tempo quase real, utilizando as linguagens de programação R e Python.
Quer aprender mais?
Clique aqui para fazer seu cadastro no Boletim AM e baixar o código que produziu este exercício, além de receber novos exercícios com exemplos reais de análise de dados envolvendo as áreas de Data Science, Econometria, Machine Learning, Macroeconomia Aplicada, Finanças Quantitativas e Políticas Públicas diretamente em seu e-mail.
Referências
Varian, Hal R. and Choi, Hyunyoung, Predicting the Present with Google Trends (April 2, 2009). Available at SSRN: https://ssrn.com/abstract=1659302 or http://dx.doi.org/10.2139/ssrn.1659302