Yandex Direct Api Wrapper (yandex direct api v5)
Installation
Instal user pip
...
pip install yandex-direct-api
Usage
from direct_api import DirectAPI
client = DirectAPI('<access_token>', '<clid>', lang='ru')
AgencyClient:add
name |
type |
default value |
login |
str |
*required |
first_name |
str |
*required |
last_name |
str |
*required |
currency |
str |
*required |
grants |
list |
None |
notification |
dict |
None |
settings |
dict |
None |
result = client.AgencyClient.add(login='<login>', first_name='<fname>', last_name='<lname>', currency='RUB')
AgencyClient:get
name |
type |
default value |
field_names |
list |
*required |
limit |
int |
500 |
offset |
int |
0 |
logins |
list |
None |
archived |
str |
None |
result = client.AgencyClient.get(field_names=["ClientId", "ClientInfo"])
AgencyClient:update
name |
type |
default value |
clients |
list |
*required |
clients = [{
"ClientId": 1
"ClientInfo": 'client info',
},
]
result = client.AgencyClient.update(clients=clients)
AdExtension:add
name |
type |
default value |
ad_extensions |
list |
*required |
ad_extendsions = [{
"Callout": {"CalloutText": "<callout text>"},
},
]
result = client.AdExtension.add(ad_extendsions=ad_extendsions)
AdExtension:delete
name |
type |
default value |
ids |
list |
*required |
ids = ['1', '2', '3']
result = client.AdExtension.delete(ids)
AdExtension:get
name |
type |
default value |
field_names |
list |
*required |
ids |
list |
None |
types |
list |
None |
statuses |
list |
None |
modify_since |
str |
None |
callout_field_names |
list |
None |
limit |
int |
500 |
offset |
int |
0 |
field_names = ['Id', 'Type', 'Status']
result = client.AdExtension.get(field_names)
AdGroup:add
name |
type |
default value |
ad_groups |
list |
*required |
ad_groups = [{'Name': 'Test', 'CampaignId': '123', 'RegionIds'}]
result = client.AdGroup.add(ad_groups)
AdGroup:delete
name |
type |
default value |
ids |
list |
*required |
ids = ['123', '124', '125']
result = client.AdGroup.get(ids=ids)
AdGroup:get
name |
type |
default value |
field_names |
list |
*required |
ids |
list |
None |
campaign_ids |
list |
None |
types |
list |
None |
statuses |
list |
None |
serving_statuses |
list |
None |
app_icon_statuses |
list |
None |
negative_keyword_shared_set_ids |
list |
None |
mobile_app_ad_group_field_names |
list |
None |
dynamic_text_ad_group_field_names |
list |
None |
dynamic_text_feed_ad_group_field_names |
list |
None |
limit |
int |
500 |
offset |
int |
500 |
field_names = ['AdGroupId', 'Name', 'CampaignId']
result = client.AdGroup.get(field_names=field_names)
AdGroup:update
name |
type |
default value |
ad_groups |
list |
*required |
ad_groups = [{'Name': 'Test', 'CampaignId': '123', 'RegionIds', 'AdGroupId': '123'}]
result = client.AdGroup.update(ad_groups)
AdImage:add
name |
type |
default value |
ad_images |
list |
*required |
ad_images = [{'Name': 'Test', 'ImageData': '<binary>'}]
result = client.AdImage.add(ad_images)
AdImage:delete
name |
type |
default value |
hashes |
list |
*required |
hashes = ['<hash1>', '<hash2>']
result = client.AdImage.delete(hashes)
AdImage:get
name |
type |
default value |
field_names |
list |
*required |
ad_images_hashes |
list |
None |
associated |
str |
None |
limit |
init |
500 |
offset |
init |
0 |
field_names = ['AdImageHash', 'Name']
result = client.AdImage.get(field_names)
Ad:add
name |
type |
default value |
ads |
list |
*required |
ads = [{'AdgroupId': '<id>', 'TextAd': {}}]
result = client.Ad.add(ads)
Ad:archive
name |
type |
default value |
ids |
list |
*required |
ids = ['123', '124']
result = client.Ad.archive(ids)
Ad:delete
name |
type |
default value |
ids |
list |
*required |
ids = ['123', '124']
result = client.Ad.delete(ids)
Ad:get
name |
type |
default value |
field_names |
list |
*required |
ids |
list |
None |
campaign_ids |
list |
None |
ad_group_ids |
list |
None |
states |
list |
None |
statuses |
list |
None |
types |
list |
None |
mobile |
str |
None |
v_card_ids |
list |
None |
sitelink_set_ids |
list |
None |
ad_image_hashes |
list |
None |
v_card_moderation_statuses |
list |
None |
sitelink_moderation_statuses |
list |
None |
ad_image_moderation_statuses |
list |
None |
ad_extension_ids |
list |
None |
text_ad_field_names |
list |
None |
text_ad_price_extension_field_names |
list |
None |
mobile_app_field_names |
list |
None |
dynamic_text_ad_field_names |
list |
None |
mobile_app_image_ad_field_names |
list |
None |
text_ad_builder_ad_field_names |
list |
None |
mobile_app_ad_builder_ad_field_names |
list |
None |
cpc_video_ad_builder_ad_field_names |
list |
None |
cpm_banner_ad_builder_ad_field_names |
list |
None |
cpm_video_ad_builder_ad_field_names |
list |
None |
limit |
int |
500 |
offset |
int |
0 |
field_names = ['Id', 'CampaignId']
result = client.Ad.get(field_names)
Ad:moderate
name |
type |
default value |
ids |
list |
*required |
ids = ['123', '124']
result = client.Ad.moderate(ids)
Ad:resume
name |
type |
default value |
ids |
list |
*required |
ids = ['123', '124']
result = client.Ad.resume(ids)
Ad:suspend
name |
type |
default value |
ids |
list |
*required |
ids = ['123', '124']
result = client.Ad.suspend(ids)
Ad:unarchive
name |
type |
default value |
ids |
list |
*required |
ids = ['123', '124']
result = client.Ad.unarchive(ids)
Ad:update
name |
type |
default value |
ads |
list |
*required |
ads = [{'AdgroupId': '<id>', 'TextAd': {}, 'Id': '<Id>'}]
result = client.Ad.update(ads)
AudienceTarget:add
name |
type |
default value |
ads |
list |
*required |
ads = [{'AdgroupId': '<id>', }]
result = client.AudienceTarget.add(ids)
AudienceTarget:delete
name |
type |
default value |
ids |
list |
*required |
ids = ['232324353']
result = client.AudienceTarget.delete(ids)
AudienceTarget:get_audience_targets
name |
type |
default value |
field_names |
list |
*required |
ids |
list |
None |
ad_group_ids |
list |
None |
campaign_ids |
list |
None |
retargeting_list_ids |
list |
None |
interest_ids |
list |
None |
states |
list |
None |
limit |
int |
500 |
offset |
int |
0 |
field_names = ['Id']
result = client.AudienceTarget.get_audience_targets(field_names, campaigns_ids=[123])
AudienceTarget:resume
name |
type |
default value |
ids |
list |
*required |
ids = ['232324353']
result = client.AudienceTarget.resume(ids)
AudienceTarget:set_bids
name |
type |
default value |
bids |
list |
*required |
bids = [{'Id': '<id>', 'AdGroupId': '<Id>'}]
result = client.AudienceTarget.set_bids(bids)
Bid:get
name |
type |
default value |
field_names |
list |
*required |
keyword_ids |
list |
None |
ad_group_ids |
list |
None |
campaign_ids |
list |
None |
serving_statuses |
list |
None |
limit |
int |
500 |
offset |
int |
0 |
field_names = ['Id']
result = client.Bid.suspend(field_names, campaign_ids=[1232424532])
Bid:set
name |
type |
default value |
bids |
list |
*required |
bids = [{'Bid': '<long>'}]
result = client.Bid.set(bids)
Bid:set_auto
name |
type |
default value |
bids |
list |
*required |
bids = [{'CampaignID': '<long>', 'Scope': 'SEARCH'}]
result = client.Bid.set_auto(bids)
BidsModifier:add
name |
type |
default value |
bid_modifiers |
list |
*required |
bid_modifiers = [{'MobileAdjustment': {'BidModifier': '<id>'}}]
result = client.BidsModifier.add(bid_modifiers)
BidsModifier:delete
name |
type |
default value |
ids |
list |
*required |
ids = ['1312324343']
result = client.BidsModifier.delete(ids)
BidsModifier:get
name |
type |
default value |
field_names |
list |
*required |
ids |
list |
None |
campaign_ids |
list |
None |
ad_group_ids |
list |
None |
types |
list |
None |
levels |
list |
None |
mobile_adjustment_field_names |
list |
None |
desktop_adjustment_field_names |
list |
None |
demographics_adjustment_field_names |
list |
None |
retargeting_adjustment_field_names |
list |
None |
regional_adjustment_field_names |
list |
None |
video_adjustment_field_names |
list |
None |
limit |
list |
500 |
offset |
list |
0 |
field_names = ['Id', 'CampaignId', 'Type']
result = client.BidsModifier.get(field_names, campaign_ids=['123453534'])
BidsModifier:set
name |
type |
default value |
bid_modifiers |
list |
*required |
ids = [{'Id': '<id>', 'BidModifier': 124242}]
result = client.BidsModifier.set(bid_modifiers)
BidsModifier:toggle
name |
type |
default value |
bid_modifier_toggle_items |
list |
*required |
bid_modifier_toggle_items = [{'CampaignId': '<id>', 'Type': "DEMOGRAPHICS_ADJUSTMENT","Enabled": "YES"}]
result = client.BidsModifier.toggle(bid_modifier_toggle_items)
Campaign:add
name |
type |
default value |
campaigns |
list |
*required |
campaign_item = {} # campaign object
campaigns = [campaign_item]
result = client.Campaign.add(campaigns)
Campaign:archive
name |
type |
default value |
ids |
list |
*required |
ids = ['12312535', '345345345', '23432325345']
result = client.Campaign.archive(ids)
Campaign:delete
name |
type |
default value |
ids |
list |
*required |
ids = ['12312535', '345345345', '23432325345']
result = client.Campaign.delete(ids)
Campaign:get
name |
type |
default value |
field_names |
list |
*required |
ids |
list |
None |
types |
list |
None |
states |
list |
None |
statuses |
list |
None |
statuses_payments |
list |
None |
text_campaign_field_names |
list |
None |
mobile_app_campaign_field_names |
list |
None |
dynamic_text_campaign_field_names |
list |
None |
cpm_banner_campaign_field_names |
list |
None |
limit |
int |
500 |
offset |
int |
0 |
field_names = ['Id', 'Name', 'Type']
result = client.Campaign.get(field_names=field_names)
Campaign:resume
name |
type |
default value |
ids |
list |
*required |
ids = ['12312535', '345345345', '23432325345']
result = client.Campaign.resume(ids)
Campaign:suspend
name |
type |
default value |
ids |
list |
*required |
ids = ['12312535', '345345345', '23432325345']
result = client.Campaign.suspend(ids)
Campaign:unarchive
name |
type |
default value |
ids |
list |
*required |
ids = ['12312535', '345345345', '23432325345']
result = client.Campaign.unarchive(ids)
Campaign:update
name |
type |
default value |
campaigns |
list |
*required |
campaigns = [{'Id': '12312535','Name': 'updated!']
result = client.Campaign.unarchive(campaigns)
Change:check_dictionaries
name |
type |
default value |
timestamp |
int |
*required |
from time import time
timestamp = int(time.now()- 1800)
result = client.Change.check_dictionaries(timestamp)
Change:check_campaigns
name |
type |
default value |
timestamp |
int |
*required |
from time import time
timestamp = int(time.now()- 1800)
result = client.Change.check_campaigns(timestamp)
Change:check
name |
type |
default value |
timestamp |
int |
*required |
field_names |
list |
*required |
campaign_ids |
list |
None |
ad_group_ids |
list |
None |
ad_ids |
list |
None |
from time import time
timestamp = int(time.now()- 1800)
field_names = ['Id', 'Name']
result = client.Change.check(timestamp, fiel_names)
Creative:get
name |
type |
default value |
field_names |
list |
*required |
ids |
list |
None |
types |
list |
None |
video_extension_creative_field_names |
list |
None |
cpc_video_creative_field_names |
list |
None |
cpm_video_creative_field_names |
list |
None |
limit |
int |
10000 |
offset |
int |
0 |
field_names = ['Id', 'Name', 'Type', 'PreviewUrl']
result = client.Creative.get(field_names)
Dictionary:get
name |
type |
default value |
dictionary_names |
list |
*required |
dictionary_names = ['TimeZones', 'Currencies']
result = client.Dictionary.get(dictionary_names)
DynamicTextAdTarget:add
name |
type |
default value |
webpages |
list |
*required |
bid |
list |
None |
context_bid |
str |
None |
context_bid |
str |
None |
strategy_priority |
str |
None |
webpages = [{'Name': 'Test', 'AdGroupId': '123242453253'}]
result = client.DynamicTextAdTarget.add(webpages)
DynamicTextAdTarget:delete
name |
type |
default value |
ids |
list |
*required |
ids = ['213232432432']
result = client.DynamicTextAdTarget.delete(ids)
DynamicTextAdTarget:get
name |
type |
default value |
field_names |
list |
*required |
ids |
list |
None |
ad_group_ids |
list |
None |
campaign_ids |
list |
None |
states |
list |
None |
limit |
int |
10000 |
offset |
int |
0 |
ids = ['AdGroupId', 'Bid']
result = client.DynamicTextAdTarget.get(ids)
DynamicTextAdTarget:resume
name |
type |
default value |
ids |
list |
*required |
ids = ['213232432432']
result = client.DynamicTextAdTarget.resume(ids)
DynamicTextAdTarget:suspend
name |
type |
default value |
ids |
list |
*required |
ids = ['213232432432']
result = client.DynamicTextAdTarget.suspend(ids)
DynamicTextAdTarget:set_bids
name |
type |
default value |
bids |
list |
*required |
set_bit_item = {} # set bid item from doc
bids = [set_bit_item]
result = client.DynamicTextAdTarget.set_bids(bids)
KeywordBid:get
name |
type |
default value |
field_names |
list |
*required |
campaign_ids |
list |
None |
ad_group_ids |
list |
None |
keyword_ids |
list |
None |
serving_statuses |
list |
None |
search_field_names |
list |
None |
network_field_names |
list |
None |
limit |
int |
10000 |
offset |
int |
0 |
field_names = ['Id']
campaign_ids = ['123123212353']
result = client.KeywordBid.get(field_names, campaign_ids=campaign_ids)
KeywordBid:set
name |
type |
default value |
keyword_bids |
list |
*required |
set_bit_item = {} # set bid item from doc
keyword_bids = [set_bit_item]
result = client.KeywordBid.set(keyword_bids)
KeywordBid:set_auto
name |
type |
default value |
keyword_bids |
list |
*required |
set_bit_item = {} # set bid item from doc
keyword_bids = [set_bit_item]
result = client.KeywordBid.set_auto(keyword_bids)
Keyword:add
name |
type |
default value |
keywords |
list |
*required |
keyword = {"Keyworod": "yandex-dircet-api-python", "AdGroupId": "12324324334"}
keywords = [keyword]
result = client.Keyword.add(keywords)
Keyword:delete
name |
type |
default value |
ids |
list |
*required |
ids = ['1232432547357348']
result = client.Keyword.delete(ids)
Keyword:get
name |
type |
default value |
field_names |
list |
*required |
ids |
list |
None |
ad_group_ids |
list |
None |
campaign_ids |
list |
None |
states |
list |
None |
statuses |
list |
None |
serving_statuses |
list |
None |
modified_since |
str |
None |
limit |
int |
10000 |
offset |
int |
0 |
field_names = ['Id', 'Keyword']
result = client.Keyword.delete(field_names, campaign_ids=['23232343583'])
Keyword:resume
name |
type |
default value |
ids |
list |
*required |
ids = ['1232432547357348']
result = client.Keyword.resume(ids)
Keyword:suspend
name |
type |
default value |
ids |
list |
*required |
ids = ['1232432547357348']
result = client.Keyword.resume(ids)
Keyword:update
name |
type |
default value |
keywords |
list |
*required |
keywords = [{'Id': '123123243534', 'Keyword': 'updated yandex'}]
result = client.Keyword.update(keywords)
KeywordsResearch:deduplicate
name |
type |
default value |
keywords |
list |
*required |
operation |
list |
None |
keywords = [{'Id': '123123243534', 'Keyword': 'updated yandex'}]
operation = 'MERGE_DUPLICATES'
result = client.KeywordsResearch.deduplicate(keywords, operation)
KeywordsResearch:has_search_volume
name |
type |
default value |
field_names |
list |
*required |
keywords |
list |
*required |
region_ids |
list |
*required |
field_names = ['Keyword']
keywords = [{'Id': '123123243534', 'Keyword': 'updated yandex'}]
region_ids = ['123123123']
result = client.KeywordsResearch.has_search_volume(field_names, keywords, region_ids)
Lead:get
name |
type |
default value |
field_names |
list |
*required |
turbo_page_ids |
list |
None |
date_time_from |
str |
None |
date_time_to |
str |
None |
limit |
int |
10000 |
offset |
int |
0 |
field_names = ['TurboPageId', 'TurboPageName', 'id']
result = client.Lead.get(field_names)
NegativeKeywordSharedSet:add
name |
type |
default value |
negative_keyword_shared_sets |
list |
*required |
negative_keyword_shared_sets = [{'Name': 'name', 'NegativeKeywords': [123]}]
result = client.Lead.get(negative_keyword_shared_sets)
NegativeKeywordSharedSet:delete
name |
type |
default value |
ids |
list |
*required |
ids = [12312325]
result = client.NegativeKeywordSharedSet.delete(ids)
NegativeKeywordSharedSet:get
name |
type |
default value |
field_names |
list |
*required |
ids |
list |
None |
limit |
int |
10000 |
offset |
int |
0 |
field_names = ['Id', 'Name', 'NegativeKeywords']
result = client.NegativeKeywordSharedSet.get(field_names)
NegativeKeywordSharedSet:update
name |
type |
default value |
negative_keyword_shared_sets |
list |
*required |
negative_keyword_shared_sets = [{'Id': '12324234234', 'Name': 'test', 'NegativeKeywords': ['1231321']}]
result = client.NegativeKeywordSharedSet.update(negative_keyword_shared_sets)
RetargetingList:add
name |
type |
default value |
retargeting_list |
list |
*required |
retargeting_obj = {} # object from doc
retargeting_list = [retargeting_obj]
result = client.RetargetingList.add(retargeting_list)
RetargetingList:delete
name |
type |
default value |
ids |
list |
*required |
ids = [12313254325345345353]
result = client.RetargetingList.delete(ids)
RetargetingList:get
name |
type |
default value |
field_names |
list |
*required |
ids |
list |
None |
types |
list |
None |
limit |
int |
10000 |
offset |
int |
0 |
field_names = ['Type', 'Id', 'Name']
ids = [12313254325345345353]
result = client.RetargetingList.get(field_names, ids=ids)
RetargetingList:update
name |
type |
default value |
retargeting_list |
list |
*required |
retargeting_obj = {} # object from doc
retargeting_list = [retargeting_obj]
result = client.RetargetingList.update(retargeting_list)
Sitelink:add
name |
type |
default value |
sitelinks_sets |
list |
*required |
sitelinks = [{'Title': 'sitelink1'}]
sitelinks_sets = [sitelinks]
result = client.Sitelink.add(sitelinks_sets)
Sitelink:delete
name |
type |
default value |
ids |
list |
*required |
ids = [12313254325345345353]
result = client.Sitelink.delete(ids)
Sitelink:get
name |
type |
default value |
field_names |
list |
*required |
ids |
list |
None |
sitelinks_field_names |
list |
None |
limit |
int |
10000 |
offset |
int |
0 |
field_names = ['Id', 'Sitelinks']
result = client.Sitelink.get(field_names)
TurboPage:get
name |
type |
default value |
field_names |
list |
*required |
ids |
list |
None |
limit |
int |
10000 |
offset |
int |
0 |
field_names = ['Id', 'Name', 'Href']
result = client.TurboPage.get(field_names)
VCard:add
name |
type |
default value |
vcards |
list |
*required |
vcard = {
'CampaignId': '1231231232131',
'Country': '<country>',
'City': '<City>',
'CompanyName': '<CompanyName>',
}
vcards = [vcard]
result = client.VCard.add(vcards)
VCard:delete
name |
type |
default value |
ids |
list |
*required |
ids = [12313254325345345353]
result = client.Sitelink.delete(ids)
VCard:get
name |
type |
default value |
field_names |
list |
*required |
ids |
list |
None |
limit |
int |
10000 |
offset |
int |
0 |
field_names = ['Id', 'Country', 'City']
result = client.VCard.get(field_names)
Report:get
name |
type |
default value |
selection_criteria |
list |
*required |
field_names |
list |
*required |
report_name |
str |
*required |
report_type |
str |
*required |
date_range_type |
str |
*required |
processing_mode |
str |
auto |
headers |
dict |
None |
goals |
list |
None |
attribution_models |
list |
None |
page |
dict |
None |
order_by |
list |
None |
format |
str |
TSV |
include_vat |
str |
YES |
include_discount |
str |
NO |
selection_criteria= {
"DateFrom": date_from.strftime('%Y-%m-%d'),
"DateTo": date_to.strftime('%Y-%m-%d'),
}
field_names = [
"Date",
"Impressions",
"Clicks",
"Cost",
"CriterionId",
"Criterion",
"CampaignId",
"AdId",
"Device",
"AdGroupId",
"CampaignType",
"AvgClickPosition",
"Slot",
"LocationOfPresenceId",
"Placement",
"AvgImpressionPosition",
"LocationOfPresenceName",
"CampaignName",
"AdNetworkType",
]
page = {"Limit": 100000000},
report_name = f"ActualData - 123"
report_type = "CUSTOM_REPORT",
date_range_type = "CUSTOM_DATE"
result = client.Report.get(
selection_criteria=selection_criteria,
field_names=field_names,
report_name=report_name,
report_type=report_type,
date_range_type=date_range_type,
page=page,
)
Client:add
name |
type |
default value |
login |
str |
*required |
first_name |
str |
*required |
last_name |
str |
*required |
currency |
str |
*required |
grants |
list |
None |
notification |
dict |
None |
settings |
dict |
None |
result = client.Client.add(login='clid', first_name='ivan', last_name='petrov', currency='RUB')
Client:get
name |
type |
default value |
field_names |
list |
*required |
logins |
list |
None |
archived |
str |
None |
limit |
int |
500 |
offset |
int |
0 |
field_names = ['ClientId', 'ClientInfo']
result = client.Client.get(field_names)
TODO: