<?php
namespace Google\AdsApi\Examples\AdWords\v201705\Optimization;
require '../../../../../../../vendor/autoload.php';
use Google\AdsApi\AdWords\AdWordsServices;
use Google\AdsApi\AdWords\AdWordsSession;
use Google\AdsApi\AdWords\AdWordsSessionBuilder;
use Google\AdsApi\AdWords\v201702\cm\Keyword;
use Google\AdsApi\AdWords\v201702\cm\Language;
use Google\AdsApi\AdWords\v201702\cm\Location;
use Google\AdsApi\AdWords\v201702\cm\NetworkSetting;
use Google\AdsApi\AdWords\v201702\cm\Paging;
use Google\AdsApi\AdWords\v201702\o\AttributeType;
use Google\AdsApi\AdWords\v201702\o\IdeaType;
use Google\AdsApi\AdWords\v201702\o\LanguageSearchParameter;
use Google\AdsApi\AdWords\v201702\o\LocationSearchParameter;
use Google\AdsApi\AdWords\v201702\o\NetworkSearchParameter;
use Google\AdsApi\AdWords\v201702\o\RelatedToQuerySearchParameter;
use Google\AdsApi\AdWords\v201702\o\RequestType;
use Google\AdsApi\AdWords\v201702\o\TargetingIdeaSelector;
use Google\AdsApi\AdWords\v201702\o\TargetingIdeaService;
use Google\AdsApi\Common\OAuth2TokenBuilder;
use Google\AdsApi\Common\Util\MapEntries;
/**
* This example gets keyword ideas related to a seed keyword.
*/
class GetKeywordIdeas {
const PAGE_LIMIT = 500;
public static function runExample(AdWordsServices $adWordsServices,
AdWordsSession $session) {
$targetingIdeaService =
$adWordsServices->get($session, TargetingIdeaService::class);
$selector = new TargetingIdeaSelector();
$selector->setRequestType(RequestType::STATS);
$selector->setIdeaType(IdeaType::KEYWORD);
$selector->setRequestedAttributeTypes([
AttributeType::KEYWORD_TEXT,
AttributeType::SEARCH_VOLUME
]);
$searchParameters = [];
$keyword = 'Yoga';
$relatedToQuerySearchParameter = new RelatedToQuerySearchParameter();
$relatedToQuerySearchParameter->setQueries([$keyword]);
$searchParameters[] = $relatedToQuerySearchParameter;
$languageParameter = new LanguageSearchParameter();
$english = new Language();
$english->setId(1000);
$languageParameter->setLanguages([$english]);
$searchParameters[] = $languageParameter;
$locationData = new LocationSearchParameter();
$india = new Location();
$india->setId(2356);
$locationData->setLocations([$india]);
$searchParameters[] = $locationData;
$networkSetting = new NetworkSetting();
$networkSetting->setTargetGoogleSearch(true);
$networkSetting->setTargetSearchNetwork(false);
$networkSetting->setTargetContentNetwork(false);
$networkSetting->setTargetPartnerSearchNetwork(false);
$networkSearchParameter = new NetworkSearchParameter();
$networkSearchParameter->setNetworkSetting($networkSetting);
$searchParameters[] = $networkSearchParameter;
$selector->setSearchParameters($searchParameters);
$selector->setPaging(new Paging(0, self::PAGE_LIMIT));
$totalNumEntries = 0;
do {
$page = $targetingIdeaService->get($selector);
if ($page->getEntries() !== null) {
$totalNumEntries = $page->getTotalNumEntries();
foreach ($page->getEntries() as $targetingIdea) {
$data = MapEntries::toAssociativeArray($targetingIdea->getData());
$keyword = $data[AttributeType::KEYWORD_TEXT]->getValue();
$searchVolume =
($data[AttributeType::SEARCH_VOLUME]->getValue() !== null)
? $data[AttributeType::SEARCH_VOLUME]->getValue() : 0;
printf(
"Keyword idea with text '%s', and average "
. "monthly search volume %d was found.\n",
$keyword,
$searchVolume
);
}
}
$selector->getPaging()->setStartIndex(
$selector->getPaging()->getStartIndex() + self::PAGE_LIMIT);
} while ($selector->getPaging()->getStartIndex() < $totalNumEntries);
printf("Number of results found: %d\n", $totalNumEntries);
}
public static function main() {
$oAuth2Credential = (new OAuth2TokenBuilder())
->fromFile()
->build();
$session = (new AdWordsSessionBuilder())
->fromFile()
->withOAuth2Credential($oAuth2Credential)
->build();
self::runExample(new AdWordsServices(), $session);
}
}
GetKeywordIdeas::main();
I am getting ridculous search volumes for even keywords such as 'svvqwegwqqg' which should not have a search volume in millions.
If i use TARGETED_MONTHLY_SEARCHES, the answer is always 1. Please help