How to get finer-grained Google search data
28/7/2024
Google search volumes can be a pretty good market research signal. Their usefulness goes way beyond simple SEO. Search volumes can provide insights into market demand, emerging trends, and much more.
One way of making use of such data is through Google Trends. Google Trends is a gold mine for analysts and researchers, but it has a major drawback: indexed data. It can tell you that search volumes have doubled but it won’t tell you if they went from 10k to 20k or from 10m to 20m. Luckily, there are some workarounds.
Getting some data
Let’s get some data from Google Trends. For best results, we’ll need a keyword with decent amounts of search volume. For example: nike . Download the CSV file.
NOTE: The time range filter should be set as precisely as possible, to avoid issues with the scaling factor. In this case, we’ll take June 2024 - today
As mentioned, this is only one half of the equation. We now have a dataset that tells us how searches have been moving for the keyword nike, but not much else.
We now need a precise number to anchor things on. One way to get this is Google Keyword Planner . There are also some 3rd party vendors .
NOTE: Google Keyword Planner might show ranges if your ad spent is below a certain threshold (which doesn’t seem to be public knowledge)
import pandas as pd
pd.set_option('display.float_format', '{:,.0f}'.format)
data = pd.read_csv("multiTimeline.csv", header=None, names=['Date', 'Value'])
data = data.iloc[2:]
data.Date = pd.to_datetime(data.Date)
data.Value = pd.to_numeric(data.Value)
data =data.set_index("Date", drop=True)
Here’s the Google Trends Data:
Value | |
---|---|
Date | |
2024-06-01 | 75 |
2024-06-02 | 78 |
2024-06-03 | 72 |
2024-06-04 | 69 |
2024-06-05 | 68 |
2024-06-06 | 68 |
2024-06-07 | 69 |
2024-06-08 | 80 |
2024-06-09 | 80 |
2024-06-10 | 71 |
2024-06-11 | 71 |
2024-06-12 | 72 |
2024-06-13 | 69 |
2024-06-14 | 68 |
2024-06-15 | 78 |
2024-06-16 | 76 |
2024-06-17 | 67 |
2024-06-18 | 62 |
2024-06-19 | 67 |
2024-06-20 | 63 |
2024-06-21 | 66 |
2024-06-22 | 75 |
2024-06-23 | 77 |
2024-06-24 | 69 |
2024-06-25 | 65 |
2024-06-26 | 66 |
2024-06-27 | 66 |
2024-06-28 | 72 |
2024-06-29 | 73 |
2024-06-30 | 76 |
2024-07-01 | 69 |
2024-07-02 | 69 |
2024-07-03 | 72 |
2024-07-04 | 76 |
2024-07-05 | 66 |
2024-07-06 | 79 |
2024-07-07 | 78 |
2024-07-08 | 70 |
2024-07-09 | 70 |
2024-07-10 | 74 |
2024-07-11 | 72 |
2024-07-12 | 77 |
2024-07-13 | 84 |
2024-07-14 | 79 |
2024-07-15 | 72 |
2024-07-16 | 74 |
2024-07-17 | 77 |
2024-07-18 | 77 |
2024-07-19 | 84 |
2024-07-20 | 93 |
2024-07-21 | 90 |
2024-07-22 | 80 |
2024-07-23 | 79 |
2024-07-24 | 78 |
2024-07-25 | 84 |
2024-07-26 | 86 |
2024-07-27 | 100 |
2024-07-28 | 96 |
We’ll only need the June subset:
Value | |
---|---|
Date | |
2024-06-01 | 75 |
2024-06-02 | 78 |
2024-06-03 | 72 |
2024-06-04 | 69 |
2024-06-05 | 68 |
2024-06-06 | 68 |
2024-06-07 | 69 |
2024-06-08 | 80 |
2024-06-09 | 80 |
2024-06-10 | 71 |
2024-06-11 | 71 |
2024-06-12 | 72 |
2024-06-13 | 69 |
2024-06-14 | 68 |
2024-06-15 | 78 |
2024-06-16 | 76 |
2024-06-17 | 67 |
2024-06-18 | 62 |
2024-06-19 | 67 |
2024-06-20 | 63 |
2024-06-21 | 66 |
2024-06-22 | 75 |
2024-06-23 | 77 |
2024-06-24 | 69 |
2024-06-25 | 65 |
2024-06-26 | 66 |
2024-06-27 | 66 |
2024-06-28 | 72 |
2024-06-29 | 73 |
2024-06-30 | 76 |
I went ahead and looked up the search volumes in Google Keyword Planner -> 5m average searches in June 2024. What’s left to do is to convert index values in absolute values.
june_avg_idx = june.mean()
june_abs_value = 5_000_000
The conversion is pretty straightforward: we multiply the indexed value by the absolute value for June and then divide by the average index:
final_data = data["Value"].apply(lambda x: (x * june_abs_value)/june_avg_idx)
final_data
Value | |
---|---|
Date | |
2024-06-01 | 5,286,654 |
2024-06-02 | 5,498,120 |
2024-06-03 | 5,075,188 |
2024-06-04 | 4,863,722 |
2024-06-05 | 4,793,233 |
2024-06-06 | 4,793,233 |
2024-06-07 | 4,863,722 |
2024-06-08 | 5,639,098 |
2024-06-09 | 5,639,098 |
2024-06-10 | 5,004,699 |
2024-06-11 | 5,004,699 |
2024-06-12 | 5,075,188 |
2024-06-13 | 4,863,722 |
2024-06-14 | 4,793,233 |
2024-06-15 | 5,498,120 |
2024-06-16 | 5,357,143 |
2024-06-17 | 4,722,744 |
2024-06-18 | 4,370,301 |
2024-06-19 | 4,722,744 |
2024-06-20 | 4,440,789 |
2024-06-21 | 4,652,256 |
2024-06-22 | 5,286,654 |
2024-06-23 | 5,427,632 |
2024-06-24 | 4,863,722 |
2024-06-25 | 4,581,767 |
2024-06-26 | 4,652,256 |
2024-06-27 | 4,652,256 |
2024-06-28 | 5,075,188 |
2024-06-29 | 5,145,677 |
2024-06-30 | 5,357,143 |
2024-07-01 | 4,863,722 |
2024-07-02 | 4,863,722 |
2024-07-03 | 5,075,188 |
2024-07-04 | 5,357,143 |
2024-07-05 | 4,652,256 |
2024-07-06 | 5,568,609 |
2024-07-07 | 5,498,120 |
2024-07-08 | 4,934,211 |
2024-07-09 | 4,934,211 |
2024-07-10 | 5,216,165 |
2024-07-11 | 5,075,188 |
2024-07-12 | 5,427,632 |
2024-07-13 | 5,921,053 |
2024-07-14 | 5,568,609 |
2024-07-15 | 5,075,188 |
2024-07-16 | 5,216,165 |
2024-07-17 | 5,427,632 |
2024-07-18 | 5,427,632 |
2024-07-19 | 5,921,053 |
2024-07-20 | 6,555,451 |
2024-07-21 | 6,343,985 |
2024-07-22 | 5,639,098 |
2024-07-23 | 5,568,609 |
2024-07-24 | 5,498,120 |
2024-07-25 | 5,921,053 |
2024-07-26 | 6,062,030 |
2024-07-27 | 7,048,872 |
2024-07-28 | 6,766,917 |
92 rows × 1 columns
Boom. We now have finer-grained data all the way up to July 28.
Code: Github Repo