Google Score
What's that
The Google Score is a rating assigned by Google to local establishment on Google My Business (GMB), based on end customer reviews and ratings. This score reflects end customer satisfaction and can influence the business’s online visibility and reputation.
Going further
Consult the general Metrics API documentation for more.
How do I get my Google Score?
With /stats/google_score:
curl --location --request GET 'https://api.goodays.co/v2/stats/google_score' \
--header 'Content-Type: application/json' \
--header 'Authorization: 1234abcd1234abcd1234abcd1234abcd'
By default, Google Score and other data are returned for the current month.
{
"data": [
{
"key": null,
"description": null,
"public_rating": 4.06,
"public_rating_count": 177135,
"places_count": 70,
"monthly_rating": 4.23,
"monthly_rating_count": 2510,
"action_phone_count": 23916,
"action_website_count": 34752,
"itinerary_count": 17254,
"views_count": 394184,
"rating_distribution": [
{
"value": 1,
"count": 166
},
{
"value": 2,
"count": 118
},
{
"value": 3,
"count": 192
},
{
"value": 4,
"count": 542
},
{
"value": 5,
"count": 1492
}
]
}
]
}
And the return will always contain:
Attribute | Description |
---|---|
key | Distribution key ID. |
description | Description of the distribution key. |
public_rating | Google Public Score at the time of the requested month. (current month by default) ℹ️ This is the score displayed by Google on the establishment's page (on the day of the query if the month is current or on the last day of the month requested). 💡 If places_count is greater than 1, then this is the average Google Score for all the establishments in the query scope. |
public_rating_count | Number of participations at the time of the requested month. (current month by default) ℹ️ This is the total number of reviews displayed on the establishment page (on the day of the request if the month is current or on the last day of the month requested). |
places_count | Number of establishment(s) taken into account when calculating the Google Public Score. (all by default) |
monthly_rating | Monthly Google Score for the requested month. (current month by default) ℹ️ This is the average of Google ratings collected between the first and last day of the month requested. |
monthly_rating_count | Number of participations collected between the first and last day over the requested month. (current month by default) |
action_phone_count | Number of calls generated between the first and last day via the Google Business Profile over the requested month. (current month by default) |
action_website_count | Amount of traffic generated between the first and last day by the Google Business Profile over the requested month (current month by default) |
itinerary_count | Number of times this button was used between the first and last day over the requested month. (current month by default) |
views_count | Number of times the Google Score has been viewed between the first and last day over the requested month. (current month by default) |
rating_distribution | Evolution of the number of received reviews between the first and last day over the requested month. (current month by default) |
Zoom on "key" and "description" attribute
This attributes are only filled in when "by" or "by_level_category" is used.
Otherwise they have the valuenull
.
Add some filters
It is possible to add GET parameters to refine the calculation of the Google Score over a defined month, an establishment...
GET parameters
To calculate a Google Score, it is possible to combine the following GET parameters:
GET parameters | Description |
---|---|
month | Month for the calculation period. Format : YYYY-MM |
place | Filter on an establishment. It is necessary to indicate the ID of the establishment from the endpoint /places |
places | Filter on an establishment list. Format : Establishment IDs separated by commas |
level | Filter on a level. It is necessary to indicate the ID of the establishment from the endpoint /levels |
levels | Filter on a level list. Format : Level IDs separated by commas |
by | Group calculations by. See chapter by |
by_level_category | Group calculations by level category. See chapter by Level Category |
Group calculations
The two "by" parameters allow you to retrieve a list of results aggregated according to the value selected in the input.
Combine the "by" or not combine the "by" ?
You can combine several other GET parameters with a "by" but you can not combine the filters "by" and "by_level_category" in a single request. Only one aggregation parameter is allowed.
Here are the 2 possibilities:
By
Calculate the Google Score by grouping elements and return a list.
The distribution of the calculation can be by : "month", "place".
See "By establishment over the month of May 2024" or By month for one level use cases.
By Level Category
Calculate the Google Score by level category and return a list.
The categories represent your hierarchical or geographical organization depending on your Goodays configuration.
From these categories you can calculate the Google Score distributed by region, business unit, brand, etc.
The category ID to be used is returned by the endpoint /levels, in the "category_id" attribute.
See "By level category" use case.
Use cases
Here are some examples to show you the possibilities of this endpoint. This is obviously not exhaustive, it's up to you to have fun to find the right parameter arrangements :)
By establishment over the month of May 2024
I have to use the following parameters:
- month : the month of May 2024
- by : group calculation by "place"
curl --location --request GET 'https://api.goodays.co/v2/stats/google_score? \
month=2024-05 \
&by=place' \
--header 'Content-Type: application/json' \
--header 'Authorization: 1234abcd1234abcd1234abcd1234abcd'
{
"data": [
{
"key": "Qr43Y5Wo8V",
"description": "Style Haguenau (Haguenau) - 001",
"public_rating": 3.99,
"public_rating_count": 543,
"places_count": 1,
"monthly_rating": 3.75,
"monthly_rating_count": 32,
"action_phone_count": 757,
"action_website_count": 6050,
"itinerary_count": 2273,
"views_count": 1034,
"rating_distribution": [
{
"value": 1,
"count": 6
},
{
"value": 2,
"count": 3
},
{
"value": 3,
"count": 3
},
{
"value": 4,
"count": 1
},
{
"value": 5,
"count": 19
}
]
},
{
"key": "MexGwlEXxK",
"description": "Style Colmar (Colmar) - 002",
"public_rating": 3.96,
"public_rating_count": 428,
"places_count": 1,
"monthly_rating": 4.16,
"monthly_rating_count": 31,
"action_phone_count": 857,
"action_website_count": 5691,
"itinerary_count": 1728,
"views_count": 7892,
"rating_distribution": [
{
"value": 1,
"count": 2
},
{
"value": 2,
"count": 3
},
{
"value": 3,
"count": 4
},
{
"value": 4,
"count": 1
},
{
"value": 5,
"count": 21
}
]
},
{
"key": "KQ4ekDyg8e",
"description": "Style Mulhouse (Mulhouse) - 003",
"public_rating": 3.97,
"public_rating_count": 76,
"places_count": 1,
"monthly_rating": 3.66,
"monthly_rating_count": 29,
"action_phone_count": 890,
"action_website_count": 474,
"itinerary_count": 1575,
"views_count": 1600,
"rating_distribution": [
{
"value": 1,
"count": 6
},
{
"value": 2,
"count": 4
},
{
"value": 3,
"count": 1
},
{
"value": 4,
"count": 1
},
{
"value": 5,
"count": 17
}
]
}
]
}
Zoom on "by" parameter
Here the "by" distributes the calculation by establishment. The attribute "key" contains the ID of the establishment and the "description" its name.
By month for one level
I have to use the following parameters :
- level : level ID
- by : "month"
Hypothesis: in our configuration the level ID "bQdPk9M89r" corresponds to our level "Greater London"
curl --location --request GET 'https://api.goodays.co/v2/stats/google_score? \
level=bQdPk9M89r \
&by=month' \
--header 'Content-Type: application/json' \
--header 'Authorization: 1234abcd1234abcd1234abcd1234abcd'
{
"data": [
{
"key": "2024-03",
"description": "2024-03",
"public_rating": 3.95,
"public_rating_count": 4427,
"places_count": 1,
"monthly_rating": 3.6,
"monthly_rating_count": 42,
"action_phone_count": 1548,
"action_website_count": 8210,
"itinerary_count": 18592,
"views_count": 179935,
"rating_distribution": [
{
"value": 1,
"count": 8
},
{
"value": 2,
"count": 4
},
{
"value": 3,
"count": 4
},
{
"value": 4,
"count": 7
},
{
"value": 5,
"count": 19
}
]
},
{
"key": "2024-04",
"description": "2024-04",
"public_rating": 3.96,
"public_rating_count": 4470,
"places_count": 1,
"monthly_rating": 4.26,
"monthly_rating_count": 43,
"action_phone_count": 3768,
"action_website_count": 4277,
"itinerary_count": 12220,
"views_count": 304021,
"rating_distribution": [
{
"value": 1,
"count": 5
},
{
"value": 2,
"count": 2
},
{
"value": 3,
"count": 3
},
{
"value": 4,
"count": 0
},
{
"value": 5,
"count": 33
}
]
},
{
"key": "2024-05",
"description": "2024-05",
"public_rating": 3.96,
"public_rating_count": 4501,
"places_count": 1,
"monthly_rating": 4.16,
"monthly_rating_count": 31,
"action_phone_count": 2901,
"action_website_count": 3766,
"itinerary_count": 12057,
"views_count": 171853,
"rating_distribution": [
{
"value": 1,
"count": 3
},
{
"value": 2,
"count": 1
},
{
"value": 3,
"count": 4
},
{
"value": 4,
"count": 3
},
{
"value": 5,
"count": 20
}
]
}
]
}
Zoom on "by" parameter
The attributes "key" and "description" both contain the relevant year and month.
By level category
I have to use the following parameters:
- by_level_category : "2"
Hypothesis: in our configuration the level category "2" corresponds to our level "regions".
curl --location --request GET 'https://api.goodays.co/v2/stats/google_score? \
by_level_category=2' \
--header 'Content-Type: application/json' \
--header 'Authorization: 1234abcd1234abcd1234abcd1234abcd'
{
"data": [
{
"key": "AEd7RrD893",
"description": "East Midlands",
"public_rating": 3.98,
"public_rating_count": 81606,
"places_count": 18,
"monthly_rating": 4.0,
"monthly_rating_count": 551,
"action_phone_count": 38894,
"action_website_count": 74268,
"itinerary_count": 118659,
"views_count": 2533490,
"rating_distribution": [
{
"value": 1,
"count": 49
},
{
"value": 2,
"count": 62
},
{
"value": 3,
"count": 57
},
{
"value": 4,
"count": 57
},
{
"value": 5,
"count": 326
}
]
},
{
"key": "rY4WkQk49w",
"description": "West Midlands",
"public_rating": 3.98,
"public_rating_count": 90568,
"places_count": 20,
"monthly_rating": 3.94,
"monthly_rating_count": 623,
"action_phone_count": 42002,
"action_website_count": 76763,
"itinerary_count": 188640,
"views_count": 3319740,
"rating_distribution": [
{
"value": 1,
"count": 59
},
{
"value": 2,
"count": 77
},
{
"value": 3,
"count": 68
},
{
"value": 4,
"count": 57
},
{
"value": 5,
"count": 362
}
]
},
{
"key": "9v8XRlZ43o",
"description": "Yorkshire and the Humber",
"public_rating": 3.99,
"public_rating_count": 77038,
"places_count": 17,
"monthly_rating": 3.97,
"monthly_rating_count": 543,
"action_phone_count": 32274,
"action_website_count": 58795,
"itinerary_count": 175455,
"views_count": 2402351,
"rating_distribution": [
{
"value": 1,
"count": 54
},
{
"value": 2,
"count": 63
},
{
"value": 3,
"count": 53
},
{
"value": 4,
"count": 46
},
{
"value": 5,
"count": 327
}
]
}
]
}
Zoom on "by_level_category" parameter
Here the "by_level_category" distributes the calculation by level category. The attribute "key" contains the ID of the level and the "description" the level name.
Updated 6 months ago