Replicating KeywordToolService.getKeywordVariations
Replicating SiteSuggestionService.getSitesByUrls
Requesting more attributes
Discover v2009: Getting ideas with TargetingIdeaService
Tuesday, November 03, 2009
As we announced recently, KeywordToolService and SiteSuggestionService were among the services deprecated to make way for their v2009 successors. In designing their new replacement, we sought to create a unified experience similar to our other v2009 services. The new TargetingIdeaService combines queries for both keywords and placements into one service with a common method to retrieve TargetingIdeas. In this blog post, we will discuss querying the new service for ideas to aid you in shaping your campaign and how you would go about migrating from v13.
Similar to our other new services, the TargetingIdeaService uses a get method along with a selector to query for both keywords and placements. There are currently two types of requests that can be made - ideas and stats. We will discuss querying for ideas here and save stats for a future blog post.
There are 4 main parameters of the selector which are used for querying ideas:
Using these 4 parameters, you will have a vast degree of customization for your results. Each of these parameters and their limitations is best described in the TargetingIdeaSelector documentation page. We will now walk through a few examples on how you would replicate v13's functionality, and how you can improve upon it with v2009.
In v13, you would typically retrieve a list of keyword variations from the getKeywordVariations method. Below is a snippet of code which replicates the basic functionality of this method.
Keyword keyword = new Keyword();
keyword.setText("cheap airline tickets");
keyword.setMatchType(KeywordMatchType.BROAD);
LanguageTarget language = new LanguageTarget();
language.setLanguageCode("en");
CountryTarget country = new CountryTarget();
country.setCountryCode("US");
TargetingIdeaSelector selector = new TargetingIdeaSelector();
selector.setRequestType(RequestType.IDEAS);
selector.setIdeaType(IdeaType.KEYWORD);
selector.setSearchParameters(new SearchParameter[] {
new RelatedToKeywordSearchParameter(null, new Keyword[] {keyword}),
new LanguageTargetSearchParameter(null, new LanguageTarget[] {language}),
new CountryTargetSearchParameter(null, new CountryTarget[] {country})});
selector.setPaging(new Paging(0, 6));
The results you get back may resemble keywords like:
cheap airline tickets/EXACT
cheap airline tickets/BROAD
cheap airline tickets/PHRASE
airline tickets/BROAD
airline tickets/EXACT
airline tickets/PHRASE
As you can see, since the results were not filtered, they weren't that great. You can improve the results by specifying additional search parameters in the selector:
// Using the same keyword from above, filter by removing the original
// keyword, by keeping the same match type, and by only choosing
// "long-tail" keywords.
new ExcludedKeywordSearchParameter(null, new Keyword[] {keyword}),
new KeywordMatchTypeSearchParameter(null,
new KeywordMatchType[] {keyword.getMatchType()}),
new CompetitionSearchParameter(null,
new CompetitionSearchParameterLevel[] {
CompetitionSearchParameterLevel.LOW}),
The results are now more interesting:
legion air tickets/BROAD
air tram tickets/BROAD
block air tickets/BROAD
sheap air tickets/BROAD
cheap airfare tracker/BROAD
cheap airfare forum/BROAD
You will notice now that the results are beginning to give you a better idea on how you would shape your campaign. We will now explore placement functionality, formerly found within the SiteSuggestionService.
In v13, you would typically retrieve a list of similar websites to expand your content network campaign using the getSitesByUrls method. Below is a snippet of code which replicates the basic functionality of this method.
String[] urls = new String[] {"made-up-tickets-site.com",
"made-up-ticket-seller.com"};
LanguageTarget language = new LanguageTarget();
language.setLanguageCode("en");
CountryTarget country = new CountryTarget();
country.setCountryCode("US");
TargetingIdeaSelector selector = new TargetingIdeaSelector();
selector.setRequestType(RequestType.IDEAS);
selector.setIdeaType(IdeaType.PLACEMENT);
selector.setSearchParameters(new SearchParameter[] {
new RelatedToUrlSearchParameter(null, urls, true),
new PlacementTypeSearchParameter(null,
new SiteConstantsPlacementType[] {SiteConstantsPlacementType.SITE}),
new LanguageTargetSearchParameter(null, new LanguageTarget[] {language}),
new CountryTargetSearchParameter(null, new CountryTarget[] {country})});
selector.setPaging(new Paging(0, 6));
The results you get back may resemble placements like:
made-up-tickets-site.com
made-up-tickets-site.com::Search Results,Top center
made-up-ticket-seller.com
made-up-ticket-seller.com::Homepage,Bottom right
another-made-up-ticket-seller.com
yet-another-made-up-ticket-seller.com
Though you now have a better idea of which placements you would like to pursue, you may still have difficulty ranking your results. We will finally discuss pulling additional attributes to help better evaluate targeting ideas.
The TargetingIdeaService adds new functionality not previously found in v13 to help you better understand your results. For example, you may notice from the results above that "another-made-up-ticket-seller.com" looks interesting, but does not offer much information beyond its URL. To investigate, you can request that a sample URL for each placement be supplied to determine if this is the right website for you. You can do this by adding the SAMPLE_URL attribute to the requestedAttributeTypes parameter:
// PLACEMENT is added to associate with SAMPLE_URL.
selector.setRequestedAttributeTypes(new AttributeType[] {
AttributeType.PLACEMENT, AttributeType.SAMPLE_URL});
When the results are returned, you will then be able to visit each sample URL to investigate the location and quality of placement yourself, something that was not previously possible with v13's SiteSuggestionService. All available attributes are listed in the AttributeType documentation page.
As we've shown in this blog post, there are many new and exciting uses for the TargetingIdeaService. We've included examples of using this service in all of our client libraries to help get you started, so please jump in and let us know of any feedback you may have on our forums.
-- Adam Rogal, AdWords API Team