How is the metric search impression share aggregated?

1,047 views
Skip to first unread message

Aram Maliachi

unread,
Sep 4, 2020, 10:46:00 AM9/4/20
to AdWords API and Google Ads API Forum
I'm running analytics using the google ads api. I am requesting the search_impression_share metric  FROM campaign segmented by date and the numbers match with those displayed in the reporting UI.

The problem I have is how these are aggregated, take the following for example. If I get the average for 89.62 and 84.11 the result is 89.51 not 89.53.

Screen Shot 2020-09-04 at 9.36.25.png

If I go into the data from the api the numbers are way more detailed, in this example numbers are:

0.89622642
0.89400922  

The average for these is 0.89511782 which is again 89.51 and not 89.53 as shown in the reporting UI. 

Where is the 89.53 coming from?

Google Ads API Forum Advisor Prod

unread,
Sep 4, 2020, 2:56:58 PM9/4/20
to maliac...@gmail.com, adwor...@googlegroups.com

Hi Aram,

Thank you for reaching out. Doing the total search_impression_share calculation is not simply adding up the individual search_impression_share and having it divided by the number of items. For instance, in your case, if 479 is the total impressions, you would need to use this formula (89.62% * 285 + 89.40% * 194)  / 479 = 89.53% to calculate the total search_impression_share.

Thanks and regards,
Xiaoming, Google Ads API Team




Google Logo
Xiaoming
Google Ads API Team
 


ref:_00D1U1174p._5004Q24Z2io:ref

Aram Maliachi

unread,
Sep 7, 2020, 10:10:06 AM9/7/20
to AdWords API and Google Ads API Forum
Thanks!

Aram Maliachi

unread,
Sep 7, 2020, 4:14:08 PM9/7/20
to AdWords API and Google Ads API Forum
Sorry, I believe the provided response is not accurate. Even though it tests successfully with the initial given case it fails in most situations. Take the following data as an example:

Screen Shot 2020-09-07 at 15.11.48.png

Here I'm looking for the 33.45% for the campaign aggregated. Again, requesting metrics.search_impression_share, metrics.impressions, segment.date FROM campaign WHERE segment.date BETWEEN '2020-08-01' AND '2020-08-10' to the search_stream endpoint results in the following response (find attached as csv):

Screen Shot 2020-09-07 at 15.05.25.png

Which matches the reporting UI perfectly with higher detail. However using the formula provided in Google's support latest response I'm getting 0.396678851 as a result instead of 0.3345*.
google-ads-support-data.csv
Message has been deleted

Zweitze

unread,
Sep 8, 2020, 4:14:09 AM9/8/20
to AdWords API and Google Ads API Forum
I researched this long time ago - you may check the search function for old discussions on aggregating.
Basically it's not possible. Sometimes the API pushes out results like "< 10.00%" which are impossible to handle.

But if you only get numeric results aggregation with higher accuracy is possible.
To do so, you should realize that SearchImpressionShare only reports the impression share on the Search network. Xiaomings answer is basically correct, but you should only use it with impressions on the Search network. Therefore, you should exclude all impressions from other networks - for instance, impressions on video campaigns are the number of times a video was played on YouTube.

You may consider to use AdvertisingChannelType for excluding non-Search campaigns. Campaigns with channel MULTI_CHANNEL or EXPRESS advertise on Search network AND other networks, but you only get total impressions on all networks - too much.
You can also filter on AdNetworkType2. Filter on SEARCH only, you better not include SEARCH_PARTNERS (you may want to read up what that truly means!). Unfortunately AdNetworkType2 has the predicate value MIXED, showing cross-network results. I have no idea what a cross-network impression could mean, but these results do exist.

In my case I filter on AdNetworkType2. When a campaign manager finds a difference with the Web UI (rarely happens) it's always the partner network, and when I explain partner networks, they are horrified and turn partner networks off - and never mention it again.

Conclusion, as long as you don't get results like "< 10.00%" you should be able to reach a much higher accuracy.


On Monday, September 7, 2020 at 10:14:08 PM UTC+2, Aram Maliachi wrote:
Sorry, I believe the provided response is not accurate. Even though it tests successfully with the initial given case it fails in most situations. Take the following data as an example:



Here I'm looking for the 33.45% for the campaign aggregated. Again, requesting metrics.search_impression_share, metrics.impressions, segment.date FROM campaign WHERE segment.date BETWEEN '2020-08-01' AND '2020-08-10' to the search_stream endpoint results in the following response (find attached as csv):



Google Ads API Forum Advisor Prod

unread,
Sep 8, 2020, 12:19:02 PM9/8/20
to maliac...@gmail.com, adwor...@googlegroups.com

Hi Aram,

Thank you for reaching out. Zweitze has given a great explanation on what happened behind the scene. Please try to use the segments.ad_network_type segmentation to exclude non-Search campaigns.



Thanks and regards,
Xiaoming, Google Ads API Team




Reply all
Reply to author
Forward
0 new messages