Package: python-amazon-ad-api
PYTHON-AMAZON-AD-APIAmazon's Advertising APIA python 3 wrapper to access Amazon's Advertising API with an easy-to-use interface.Installpip install python-amazon-ad-apiDonateIf you find this project is useful consider donating orsponsorit to keep on going on it, thank you.OverviewYou need obtain your own credentials with Amazon that may include an amazon developer account and access as seller or vendor. Please view the checklist ofAmazon Ads API onboarding overviewCode CredentialsYou can use your credentials as follows passing it to the client as a dict. Please review the fulldocumentationto see all posibilities to include your credentials.fromad_api.apiimportsponsored_productsmy_credentials=dict(refresh_token='your-refresh_token',client_id='your-client_id',client_secret='your-client_secret',profile_id='your-profile_id',)result=sponsored_products.Campaigns(credentials=my_credentials).list_campaigns()YAML CredentialsUse a credentials.yml file with your credentials for more convenience and manage diferent accounts or profiles. Amazon requires one profile per marketplace so it is helpful to keep all in one file and switch directly from the code, using the account.Create a file credentials.ymlversion:'1.0'default:refresh_token:'your-refresh-token'client_id:'your-client-id'client_secret:'your-client-secret'profile_id:'your-profile-id'germany:refresh_token:'other-refresh-token'client_id:'other-client-id'client_secret:'other-client-secret'profile_id:'other-profile-id'Python codefromad_api.apiimportsponsored_products# Leave empty will use the 'default' accountresult=sponsored_products.Campaigns().list_campaigns()# will use germany account dataresult=sponsored_products.Campaigns(account="germany").list_campaigns()Search path for credentials.ymlmacOS and Other Unix:~/.config/python-ad-apiWindows:%APPDATA%\python-ad-apiwhere theAPPDATAenvironment variable falls
back to%HOME%\AppData\Roamingif undefinedConfuse HelpMarketplacesMarketplaces are used to define basically theAPI endpointsAmazon need to use depending on the regions, by default it will use EU so if you are using one of the marketplaces that are under the Europe (EU). Covers UK, FR, IT, ES, DE, NL, AE, SE, PL, and TR marketplaces you can skip. If you are using either North America (NA) or Far East (FE), you will need import from base and pass the marketplace as follows:fromad_api.apiimportsponsored_productsfromad_api.baseimportMarketplaces# You can pass NA or US, CA, MX or BR for North America and JP, AU or SG for Far Eastresult=sponsored_products.Campaigns(marketplace=Marketplaces.NA).list_campaigns()ExceptionsYou can use atryexcept statement when you call the API and catch exceptions if some problem ocurred:fromad_api.apiimportsponsored_productsfromad_api.baseimportAdvertisingApiExceptiontry:result=sponsored_products.Campaigns().get_campaign_extended(campaignId=campaign_id)logging.info(result)exceptAdvertisingApiExceptionaserror:logging.info(error)DebugUse debug=True if you want see some logs like the header you submit to the api endpoint, the method and path used among the params and the data submitted if any, to trace some possible errors.fromad_api.apiimportsponsored_productsfromad_api.baseimportAdvertisingApiExceptiontry:result=sponsored_products.Campaigns(debug=True).get_campaign_extended(campaignId=campaign_id)logging.info(result)exceptAdvertisingApiExceptionaserror:logging.info(error)importloggingfromad_api.apiimportProfilesfromad_api.baseimportAdvertisingApiExceptionlogging.basicConfig(level=logging.DEBUG,format="%(asctime)s:%(levelname)s:%(message)s")defregister_assistant(value:str):logging.info("-------------------------------------")logging.info("Profiles > register_assistant(%s)"%value)logging.info("-------------------------------------")try:result=Profiles(debug=True).register_assistant(country_code=value)logging.info(result)exceptAdvertisingApiExceptionaserror:logging.info(error)if__name__=='__main__':amz_country_code="ES"register_assistant(amz_country_code)Or you could do with a curl command, note the{"countryCode":"ES"}that refers to the marketplace you will operate.curl \
    -X PUT \
    -H "Content-Type:application/json" \
    -H "Authorization: Bearer Your-Token \
    -H "Amazon-Advertising-API-ClientId: your-client-id" \
    --data '{"countryCode":"ES"}' \
     https://advertising-api-test.amazon.com/v2/profiles/registerModules Available Common ResourcesProfilesManager AccountsPortfoliosInvoicesBillingAudiencesChange History open BetaCreative Assets open BetaElegibilityInsightsLocalizationProduct SelectorValidation ConfigurationsTactical recommendations betaAmazon Attribution open betaAdvertisersPublishersMacro tagsNon Macro tagsReportsBrand Metrics open betaPost ReportGet ReportDownload ReportAdvertising Test AccountCreate test accountGet test account informationModules Available Sponsored Products 2.0Warning: [PLANNED DEPRECATION 6/30/2023]
There is a new version 3 of Sponsored Product API, please check themigration guide.Modules Available Sponsored Products 3.0ThemeBased Bid RecommendationKeyword RecommendationsKeywordsNegative KeywordsProduct TargetingCampaign OptimizationBudget RulesProduct AdsNegative Targeting ClausesCampaign Negative Targeting ClausesBudget recommendations and missed opportunitiesBudget Rules RecommendationCampaignsAd GroupsConsolidated RecommendationsCampaign Negative KeywordsProduct RecommendationsBudget UsageReportsModules Available Sponsored Brands 3.0CampaignsAd GroupsKeywordsNegative KeywordsProduct TargetingNegative Product TargetingTargeting RecommendationsBid RecommendationsStoresLanding Page AsinsMediaBrandsModerationReportsSnapshotsModules Available Sponsored Brands 4.0CampaignsAd GroupsAds GroupsModules Available Sponsored DisplayCampaignsAd GroupsReportsProduct AdsTargetsNegative TargetsTargets RecommendationsBid RecommendationsCreativesBrand Safety ListBudget RulesCampaigns Budget UsageForecastsRecommendationsModules Available DSPReportsSimple Example Usage Campaigns with Credentialsimportloggingfromad_api.baseimportAdvertisingApiExceptionfromad_api.api.spimportCampaignslogging.basicConfig(level=logging.DEBUG,format="%(asctime)s:%(levelname)s:%(message)s")credentials=dict(refresh_token='your-refresh_token',client_id='your-client_id',client_secret='your-client_secret',profile_id='your-profile_id',)try:states='enabled'res=Campaigns(credentials=credentials,debug=True).list_campaigns_extended(stateFilter=states)campaigns=res.payloadforcampaignincampaigns:logging.info(campaign)logging.info(len(campaigns))exceptAdvertisingApiExceptionaserror:logging.info(error)API NOTICEThis API is based on theAPI Clientcreated by@saleweaverbut adapted to amazon advertising authentication requerimentsDISCLAIMERWe are not affiliated with Amazon but they used our api :)LICENSE