My code were outdated. For not last version of API (which is currently
v201109).
I've researched this issue and this is new version of code that you
need, it's based on examples/v201109/GetRelatedKeywords.php, changes
are commented:
try {
// Get AdWordsUser from credentials in "../auth.ini"
// relative to the AdWordsUser.php file's directory.
$user = new AdWordsUser();
// Log SOAP XML request and response.
$user->LogDefaults();
// Get the TargetingIdeaService.
$targetingIdeaService = $user->GetService('TargetingIdeaService',
'v201109');
// Create seed keyword.
$keyword = new Keyword();
$keyword->text = 'mars cruise';
$keyword->matchType = 'BROAD';
// Create selector.
$selector = new TargetingIdeaSelector();
$selector->requestType = 'IDEAS';
$selector->ideaType = 'KEYWORD';
$selector->requestedAttributeTypes =
array('CRITERION', 'AVERAGE_TARGETED_MONTHLY_SEARCHES');
// Set selector paging (required for targeting idea service).
$paging = new Paging();
$paging->startIndex = 0;
$paging->numberResults = 10;
$selector->paging = $paging;
// Create related to keyword search parameter.
$relatedToKeywordSearchParameter = new
RelatedToKeywordSearchParameter();
$relatedToKeywordSearchParameter->keywords = array($keyword);
// Create keyword match type search parameter to ensure unique
results.
$keywordMatchTypeSearchParameter = new
KeywordMatchTypeSearchParameter();
$keywordMatchTypeSearchParameter->keywordMatchTypes =
array('BROAD');
// Start changes
$locations = array();
$location = new Location();
$location->id = 2840; //Id can be found with examples/v201109/
GetLocationCriteria.php
// I've selected whole United States
$locations[] = $location;
$locationTargetParameter = new
LocationSearchParameter($locations); // Expects arra of locations
$selector->searchParameters =
array($relatedToKeywordSearchParameter,
$keywordMatchTypeSearchParameter, $locationTargetParameter);
// End changes
// Get related keywords.
$page = $targetingIdeaService->get($selector);
// Display related keywords.
if (isset($page->entries)) {
foreach ($page->entries as $targetingIdea) {
$data = MapUtils::GetMap($targetingIdea->data);
$keyword = $data['CRITERION']->value;
$averageMonthlySearches =
isset($data['AVERAGE_TARGETED_MONTHLY_SEARCHES']->value)
? $data['AVERAGE_TARGETED_MONTHLY_SEARCHES']->value : 0;
printf("Keyword with text '%s', match type '%s', and average
monthly "
. "search volume '%s' was found.\n", $keyword->text,
$keyword->matchType, $averageMonthlySearches);
}
} else {
print "No related keywords were found.\n";
}
} catch (Exception $e) {
print $e->getMessage();
}