Hi everyone,
I am accessing the Keyword Performance Report via the API (in Python3, using the standard libraries) and I'm making two separate requests, one to bring back a list of all my active (/enabled/eligible) keywords, and another to pull performance data for those keywords. I do this because the performance report returns data on inactive keywords that I want to filter out.
I'm puzzled because some active keywords are not being returned in the keyword performance report. According to this advice [
https://support.google.com/google-ads/answer/2404039?hl=en-GB] the performance report will exclude keywords that got no impressions, but I see plenty of keywords with zero impressions that
are returned in the keyword performance report. So why are the keywords missing from the performance report?
Here is the code snippet I use to access the (live) status data:
def getKeywordStatusReport(client):
# Initialize appropriate service.
report_downloader = client.GetReportDownloader(version="v201806")
# Create report query.
report_query = (adwords.ReportQueryBuilder()
.Select("ExternalCustomerId", "CampaignId", "AdGroupId", "Id", "Criteria",
"KeywordMatchType", "CampaignStatus", "AdGroupStatus", "Status")
.From("KEYWORDS_PERFORMANCE_REPORT")
.Where("Status").EqualTo("ENABLED")
.Where("AdGroupStatus").EqualTo("ENABLED")
.Where("CampaignStatus").EqualTo("ENABLED")
.Build())
And the bit I use (the following day) to access the performance data:
def getKeywordPerformanceReport(client):
# Initialize appropriate service.
report_downloader = client.GetReportDownloader(version="v201806")
# Create report query.
report_query = (adwords.ReportQueryBuilder()
.Select("ExternalCustomerId", "CampaignId", "AdGroupId", "Id", "Criteria",
"KeywordMatchType", "Clicks", "Impressions", "Cost", "Conversions", "Date")
.From("KEYWORDS_PERFORMANCE_REPORT")
.During("YESTERDAY")
.Build())
Why would this second query fail to return data on keywords that were active the previous day?
Cheers,
Tom