This page explains the differences when working with a keyword plan using the Google Ads API versus the UI. We also give some recommendations on how to avoid mismatches in historical metrics when mixing usage.
API behavior
As of version v11 of the Google Ads API, KeywordPlan
exposes only a forecast_period
setting at the plan level.
Other settings such as geo targets, network settings, and language targets
are available only at the
KeywordPlanCampaign
level.
UI behavior
The Google Ads UI exposes these settings at the plan level and doesn't expose the
underlying KeywordPlanCampaign
and KeywordPlanAdGroup
objects.
Consequence
The difference between how the API and UI treat keyword plans can result in seeming discrepancies when comparing results between the two. To avoid misinterpreting the results, keep the following rules in mind:
The Google Ads API always uses the settings at the
KeywordPlanCampaign
level.The Google Ads UI always uses the settings at the
KeywordPlan
level. However, these settings are not currently accessible to the API.If you create a
KeywordPlan
using the Google Ads API, it shows up in the UI as targeting all locations and languages.The UI also shows various metrics for all locations and languages; the settings at the underlying
KeywordPlanCampaign
are ignored by the UI. The UI might also prevent you from editing these keyword plans.If you create a
KeywordPlan
using the UI, the Google Ads UI sets geo targets for the underlyingKeywordPlanCampaign
under certain conditions.These settings are not presented to you on the UI, which can lead to a mismatch in metrics when comparing them against the values retrieved using the API.
Editing the keyword plan settings in the UI can also cause the API and UI metrics to diverge.
Recommendations
When possible, avoid mixing the keyword plans created by the API and the UI.
When investigating metric mismatches between the API and the UI for a given keyword plan, take these steps:
Retrieve the
KeywordPlan
using the following query.SELECT keyword_plan.resource_name, keyword_plan.name FROM keyword_plan WHERE keyword_plan.name = 'YOUR_PLAN_NAME'
Retrieve the
KeywordPlanCampaign
using the following query.SELECT keyword_plan_campaign.resource_name, keyword_plan_campaign.geo_targets, keyword_plan_campaign.keyword_plan_network, keyword_plan_campaign.language_constants FROM keyword_plan_campaign WHERE keyword_plan.resource_name = 'YOUR_PLAN_RESOURCE_NAME'
Create a new keyword plan in the UI using these settings and use it to compare the results.