Skip to main content

Python wrapper for the Amazon Advertising API

Project description

PYTHON-AMAZON-AD-API

CodeQL CodeQL CodeQL Documentation Status Verified on Openbase

Amazon's Advertising API

A python 3 wrapper to access Amazon's Advertising API with an easy-to-use interface.

Install

Badge

pip install python-amazon-ad-api

Donate

If you find this project is useful consider donating or sponsor it to keep on going on it, thank you.

paypal

alt text

Overview

You need obtain your own credentials with Amazon that may include an amazon developper account and access as seller or vendor. Please view the checklist of Amazon Ads API onboarding overview

Code Credentials

You can use your credentials as follows passing it to the client as a dict. Please review the full documentation to see all posibilities to include your credentials.

from ad_api.api import sponsored_products


my_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 Credentials

Use 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.yml

version: '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 code

from ad_api.api import sponsored_products

# Leave empty will use the 'default' account
result=sponsored_products.Campaigns().list_campaigns()
# will use germany account data
result=sponsored_products.Campaigns(account="germany").list_campaigns()

Search path for credentials.yml

  • macOS and Other Unix: ~/.config/python-ad-api
  • Windows: %APPDATA%\python-ad-api where the APPDATA environment variable falls back to %HOME%\AppData\Roaming if undefined

Confuse Help

Marketplaces

Marketplaces are used to define basically the API endpoints Amazon 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:

from ad_api.api import sponsored_products
from ad_api.base import Marketplaces

# You can pass NA or US, CA, MX or BR for North America and JP, AU or SG for Far East
result=sponsored_products.Campaigns(marketplace=Marketplaces.NA).list_campaigns()

Exceptions

You can use a try except statement when you call the API and catch exceptions if some problem ocurred:

from ad_api.api import sponsored_products
from ad_api.base import AdvertisingApiException

try:

    result = sponsored_products.Campaigns().get_campaign_extended(
        campaignId=campaign_id
    )

    logging.info(result)

except AdvertisingApiException as error:
    logging.info(error)

Debug

Use 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 possible errors.

from ad_api.api import sponsored_products
from ad_api.base import AdvertisingApiException

try:

    result = sponsored_products.Campaigns(debug=True).get_campaign_extended(
        campaignId=campaign_id
    )

    logging.info(result)

except AdvertisingApiException as error:
    logging.info(error)

Set Up

Create a .env file and put in the root of your project ( SANDBOX or PRODUCTION )

# environment variables defined inside a .env file
AWS_ENV=SANDBOX
.
├── .env
└── campaign_client.py

Switcher SandBox Environment

Use a .env to manage the environment. Is high recommended try the SANDBOX environment as some features may delete (archive) modules as campaigns, ad groups,...etc and this cannot be undone.

AWS_ENV=SANDBOX
# AWS_ENV=PRODUCTION

To use the sandbox you may create a test profile id to include in your credentials with this python amazon advertising api note the amz_country_code = "ES" refers to the marketplace you will create the test sandbox account.

import logging
from ad_api.api import Profiles
from ad_api.base import AdvertisingApiException

logging.basicConfig(
    level=logging.DEBUG,
    format="%(asctime)s:%(levelname)s:%(message)s"
)


def register_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)

    except AdvertisingApiException as error:
        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/register

Modules Available Common Resources

Amazon Attribution open beta

  • Advertisers
  • Publishers
  • Attribution tags
  • Reports

Brand Metrics open beta

Advertising Test Account

Modules Available Sponsored Products 2.0

  • Ad Groups
  • Bid Recommendations
  • Campaigns
  • Keywords
  • Negative Keywords
  • Product Ads
  • Suggested Keywords
  • Product Targeting
  • Negative Product Targeting
  • Campaign Negative Keywords
  • Reports
  • Snapshots

Modules Available Sponsored Products 3.0

  • Budget Rules
  • Campaign Optimization Rules
  • Ranked Keywords Recommendations
  • Product Targeting
  • Budget Recommendations
  • Budget Rules Recommendations
  • Product Recommendations

Modules Available Sponsored Brands

  • Campaigns
  • Ad Groups
  • Keywords
  • Negative Keywords
  • Product Targeting
  • Negative Product Targeting
  • Targeting Recommendations
  • Bid Recommendations
  • Stores
  • Landing Page Asins
  • Media
  • Brands
  • Moderation
  • Reports
  • Snapshots

Modules Available Sponsored Display

  • Campaigns
  • Ad Groups
  • Reports
  • Product Ads
  • Targets
  • Negative Targets
  • Targets Recommendations
  • Bid Recommendations
  • Creatives

Modules Available DSP

  • Reports

Simple Example Usage Campaigns with Credentials

import logging
from ad_api.base import AdvertisingApiException
from ad_api.api.sp import Campaigns

logging.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.payload
    for campaign in campaigns:
        logging.info(campaign)

    logging.info(len(campaigns))


except AdvertisingApiException as error:
    logging.info(error)

SELLING PARTNER API

This API is based on the API Client created by @saleweaver which also build Python-Amazon-Selling-Partner-API with an easy-to-use interface. If you need use the Amazon's Selling Partner API you can find it here

DISCLAIMER

We are not affiliated with Amazon

LICENSE

License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python-amazon-ad-api-0.3.7.tar.gz (68.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

python_amazon_ad_api-0.3.7-py3-none-any.whl (111.9 kB view details)

Uploaded Python 3

File details

Details for the file python-amazon-ad-api-0.3.7.tar.gz.

File metadata

  • Download URL: python-amazon-ad-api-0.3.7.tar.gz
  • Upload date:
  • Size: 68.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for python-amazon-ad-api-0.3.7.tar.gz
Algorithm Hash digest
SHA256 f1b2c0088a4e0e597c73b347bc4696edaa0880fe1be416360d038dc1d4158e13
MD5 32f71d05a76b67fea6003bb8b06a3f77
BLAKE2b-256 a259b9123a28ea208847c1ba3d01f3f9b2b5a81427067ceeac5df75ff441a4bd

See more details on using hashes here.

File details

Details for the file python_amazon_ad_api-0.3.7-py3-none-any.whl.

File metadata

File hashes

Hashes for python_amazon_ad_api-0.3.7-py3-none-any.whl
Algorithm Hash digest
SHA256 c019fbdd8ec86ec6130bbe2ab223fc9013d9999f5bc53ed0ca4700e89cc9bbc6
MD5 ac64c77cae477e6c7d88a337eaac594f
BLAKE2b-256 4dabed7b97b48f60bdb59ef46560de555f1dafcd86ff4e0e69886c121934266f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page