#!/usr/bin/env python # -*- coding: iso-8859-1 -*- from aw_api.Client import Client class adwordsStats: def __init__(self): auth = { 'email': 'Jason@anyclip.com', 'password': 'zounds12', 'clientEmail': 'chris@anyclip.com', 'userAgent': 'AnyClip: Keyword Stats Getter', 'developerToken': 'kffyoyKRl44FTSsCAQiF-Q',#'jason@anyclip.com++USD' 'applicationToken': 'SAc_CoQtSWRowhONHSdHXw' } config = { 'debug': 'n', 'xml_log': 'n', 'request_log': 'n' } client = Client(headers=auth, config=config) self.targeting_idea_service = client.GetTargetingIdeaService('https://adwords.google.com', 'v200909') def getKeywordStats(self, keyword): keyword = keyword.lower() if keyword.startswith("the"): keyword = keyword.replace("the ", "") selector = { 'searchParameters': [ { 'type': 'RelatedToKeywordSearchParameter', 'keywords': [{ 'text': keyword, 'matchType': 'EXACT' }] }, { 'type': 'CountryTargetSearchParameter', 'countryTargets': [ {'countryCode': 'US'} ] }, { 'type': 'LanguageTargetSearchParameter', 'languageTargets': [ {'languageCode': 'en'} ] }, { 'type': 'KeywordMatchTypeSearchParameter', 'keywordMatchTypes': [ 'EXACT', 'BROAD' ] } ], 'ideaType': 'KEYWORD', 'requestType': 'IDEAS', 'requestedAttributeTypes': ['KEYWORD', 'GLOBAL_MONTHLY_SEARCHES', 'AVERAGE_TARGETED_MONTHLY_SEARCHES'], 'paging': { 'startIndex': '', 'numberResults': '10' }, } ret = { 'broad': { 'gsv': 0, 'lsv': 0 }, 'exact': { 'gsv': 0, 'lsv': 0 } } found = False pageNum = 0 while not found and pageNum <= 200: selector['paging']['startIndex'] = str(pageNum) pageNum += int(selector['paging']['numberResults']) page = self.targeting_idea_service.Get(selector)[0] if 'entries' in page: for result in page['entries']: matches = False for data in result['data']: if data['key'] == 'GLOBAL_MONTHLY_SEARCHES': if 'value' in data['value']: gsv = int(data['value']['value']) else: gsv = 0 elif data['key'] == 'AVERAGE_TARGETED_MONTHLY_SEARCHES': if 'value' in data['value']: lsv = int(data['value']['value']) else: lsv = 0 elif data['key'] == 'KEYWORD': if data['value']['value']['text'] == keyword: matches = True matchType = data['value']['value']['matchType'].lower() if matches: found = True ret[matchType]['gsv'] = gsv ret[matchType]['lsv'] = lsv return ret