As you could imagine, Google has a lot of historical data about keywords and the traffic they generate. Harnessing this data can give you a helpful starting point when you're trying to choose cost-per-click (CPC) bid ranges and keywords for a new product, for which you have no historical keyword or bid data in your own account.
AdWords API users can access our trove of historical keyword and bid data via the Traffic Estimator Service, which gives detailed estimates of how much traffic a keyword may generate at various CPC values. The service is not only useful for new products or campaigns, but it can also estimate the impact of changing the Max CPC of existing keywords as well.
Let's say you'd like estimates for keywords in a new campaign. Below are some tips on deciding whether estimateKeywordList() or estimateCampaignList() is right for you. These two methods are similar, but vary in how much control you have to configure campaign settings when requesting estimates.
<keywordRequests>
<maxCpc>1000000</maxCpc>
<text>sample</text>
<type>Broad</type>
</keywordRequests>
</estimateKeywordList>
However, it's important to understand the assumptions that are factored into that estimate, because they might not match the settings you'd like for your campaign. This method assumes that the network targeting of the hypothetical campaign is GoogleSearch, which means ads run only on Google search result pages. (Read more information on network targeting here.) Also assumed in the keyword estimates are a language targeting of 'English' (language code en) and a location targeting of 'All Countries and Territories'.
The implicit Google search network and English language targeting mean that you'll often get much lower estimates from estimateKeywordList() than you would expect--and sometimes, especially for non-English keywords, you won't get any meaningful results at all.
<campaignRequests>
<adGroupRequests>
<keywordRequests>
<text>sample</text>
<type>Broad</type>
</keywordRequests>
<maxCpc>1000000</maxCpc>
</adGroupRequests>
<networkTargeting>
<networkTypes>GoogleSearch</networkTypes>
</networkTargeting>
<languageTargeting>en</languageTargeting>
<geoTargeting>
<targetAll>true</targetAll>
</geoTargeting>
</campaignRequests>
</estimateCampaignList>
To expand on that basic example, let's say you're thinking of running a campaign that targets users in Mexico and Spain who speak Spanish. You'd like to run this campaign with both SearchNetwork and ContentNetwork targeting. A request that takes those constraints into account and provides an estimate for the Broad-matched keyword muestra with a Max CPC of 1,000,000 micros would look like the following:
<campaignRequests>
<adGroupRequests>
<keywordRequests>
<text>muestra</text>
<type>Broad</type>
</keywordRequests>
<maxCpc>1000000</maxCpc>
</adGroupRequests>
<networkTargeting>
<networkTypes>SearchNetwork</networkTypes>
<networkTypes>ContentNetwork</networkTypes>
</networkTargeting>
<languageTargeting>es</languageTargeting>
<geoTargeting>
<countryTargets>
<countries>MX</countries>
<countries>ES</countries>
</countryTargets>
</geoTargeting>
</campaignRequests>
</estimateCampaignList>
The estimates this request returns will likely be different from the results of a generic estimateKeywordList() call, and they'll be more accurate for your given scenario.
Estimating keyword traffic and CPC bids isn't an exact science, but if you use the right method of the TrafficEstimatorService, you'll often get valuable information that can help you plan your new campaigns. And although using estimateCampaignList() requires a bit more configuration than the more straightforward estimateKeywordList(), the extra effort is a worthwhile trade-off for the increased flexibility and accuracy when working with campaigns that have non-default settings.
--Jeffrey Posnick, AdWords API Team