Skip to content

Python SDK for Amazon Ads API - 100% API Coverage with 4-Tier Governance

License

Notifications You must be signed in to change notification settings

vanling1111/amazon-ads-api-python-sdk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

4 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Amazon Ads API Python SDK

Python 3.11+ License: MIT API Coverage L1 Verified Tests

ไผไธš็บง Amazon Ads API Python SDK - ๅˆ†็บงๆฒป็†็š„ API ่ฆ†็›–

๐Ÿ†• API ๅˆ†็บงไฝ“็ณป (Tiered API Model)

ๆœฌ SDK ้‡‡็”จไธš็•Œ้ฆ–ๅˆ›็š„ API ๅˆ†็บงๆฒป็†ไฝ“็ณป๏ผŒ่งฃๅ†ณ Amazon Ads API ็ขŽ็‰‡ๅŒ–้—ฎ้ข˜๏ผš

็ญ‰็บง ็›ฎๅฝ• ๅฏไฟกๅบฆ ๆ•ฐ้‡ ่ฏดๆ˜Ž
L1 Gold ๐Ÿฅ‡ core/ โญโญโญโญโญ ~270 OpenAPI ้ชŒ่ฏ๏ผŒ็”Ÿไบงๅฏ็”จ
L2 Silver ๐Ÿฅˆ reference/ โญโญโญโญ ~30 ๅฎ˜ๆ–นๆ–‡ๆกฃ็กฎ่ฎค๏ผŒ้œ€ๆ˜พๅผ่ฎฟ้—ฎ
L3 Bronze ๐Ÿฅ‰ services/ โญโญโญ ~15 ไบงๅ“็บง่šๅˆ๏ผŒไพฟๅˆฉๅฐ่ฃ…
L4 Red ๐Ÿ”ด experimental/ โญโญ ~20 Beta/ๅฎž้ชŒๆ€ง๏ผŒ้œ€็กฎ่ฎค้ฃŽ้™ฉ
# L1: ้ป˜่ฎค่ฎฟ้—ฎ๏ผˆๆœ€ๅฎ‰ๅ…จ๏ผ‰
campaigns = client.sp.campaigns.list()

# L2: ๆ˜พๅผๅ‘ฝๅ็ฉบ้—ด๏ผˆๅฎ˜ๆ–นไฝ†้ž OpenAPI๏ผ‰
result = client.reference.amc.run_query(...)

# L3: ๆœๅŠกๅฑ‚
report = client.services.reporting.create_report(...)

# L4: ้œ€็กฎ่ฎค้ฃŽ้™ฉ
exp = client.experimental(acknowledge_risk=True)
exp.sponsored_tv.create_campaign(...)

โœจ ็‰นๆ€ง

  • ๐Ÿ† API ๅˆ†็บงๆฒป็† - L1~L4 ๅฏไฟกๅบฆๅˆ†็บง๏ผŒๅ‘Šๅˆซ่™šๅ‡ API
  • ๐ŸŽฏ 335+ API ่ฆ†็›– - ่ฆ†็›–ๅ…จ้ƒจ Amazon Ads API ไบงๅ“็บฟ
  • ๐Ÿ” OpenAPI ้ชŒ่ฏ - L1 API 100% OpenAPI ่ง„่Œƒ้ชŒ่ฏ
  • ๐Ÿš€ ็ฎ€ๆดๆ˜“็”จ - ็ปŸไธ€ๅฎขๆˆท็ซฏๅ…ฅๅฃ๏ผŒ้“พๅผ่ฐƒ็”จ
  • ๐Ÿ”„ ่‡ชๅŠจ่ฎค่ฏ - OAuth2 Token ่‡ชๅŠจๅˆทๆ–ฐ
  • โšก ่‡ชๅŠจ้‡่ฏ• - ๅ†…็ฝฎๆŒ‡ๆ•ฐ้€€้ฟ้‡่ฏ•ๆœบๅˆถ
  • ๐Ÿ›ก๏ธ Rate Limit - ่‡ชๅŠจๅค„็†้™ๆต
  • ๐Ÿ“Š ็ฑปๅž‹ๅฎ‰ๅ…จ - ๅฎŒๆ•ด็š„็ฑปๅž‹ๆ็คบ
  • ๐Ÿงช ๅฎŒๆ•ดๆต‹่ฏ• - ๅ•ๅ…ƒๆต‹่ฏ• + ้›†ๆˆๆต‹่ฏ•

๐Ÿ“ฆ API ๆจกๅ—ๆ€ป่งˆ

๐Ÿฅ‡ L1: Core APIs (OpenAPI ้ชŒ่ฏ)

ๆจกๅ— ๆ่ฟฐ ็ซฏ็‚นๆ•ฐ OpenAPI
sp/ Sponsored Products ~80 โœ… v3
sb/ Sponsored Brands ~50 โœ… v4
sd/ Sponsored Display ~40 โœ… v3
dsp/ Amazon DSP ~60 โœ… v3
accounts/ Profiles, Portfolios, Billing ~15 โœ…
audiences/ Audiences Discovery ~5 โœ…
eligibility/ Eligibility ~3 โœ…
exports/ Exports ~5 โœ…
products/ Product Selector, Metadata ~10 โœ…

๐Ÿฅˆ L2: Reference APIs (ๅฎ˜ๆ–นๆ–‡ๆกฃ็กฎ่ฎค)

ๆจกๅ— ๆ่ฟฐ ็ซฏ็‚นๆ•ฐ ๆ–‡ๆกฃ
amc/ Amazon Marketing Cloud ~20 API Reference
stream/ Amazon Marketing Stream ~5 API Reference
retail_ad/ Retail Ad Service ~15 API Reference
attribution/ Amazon Attribution ~5 API Reference
posts/ Posts ~5 API Reference

๐Ÿฅ‰ L3: Service APIs (ไบงๅ“็บง่šๅˆ)

ๆจกๅ— ๆ่ฟฐ ่ฏดๆ˜Ž
reporting/ Reports v3, Brand Metrics ไพฟๅˆฉๅฐ่ฃ…
insights/ Audience/Keyword Insights ้ซ˜ๅฑ‚ๆŠฝ่ฑก
recommendations/ Recommendations ่šๅˆๆœๅŠก

๐Ÿ”ด L4: Experimental APIs (Beta/ๅฎž้ชŒๆ€ง)

ๆจกๅ— ๆ่ฟฐ ็Šถๆ€
sponsored_tv/ Sponsored TV Beta
moderation/ Creative Moderation UI-bound
localization/ Localization ไธ็จณๅฎš

๐Ÿš€ ๅฟซ้€Ÿๅผ€ๅง‹

ๅฎ‰่ฃ…

# ไปŽ PyPI ๅฎ‰่ฃ…
pip install amazon-ads-api

# ๆˆ–ไปŽ GitHub ๅฎ‰่ฃ…ๆœ€ๆ–ฐ็‰ˆ
pip install git+https://github.com/vanling1111/amazon-ads-api-python-sdk.git

ๅŸบ็ก€ไฝฟ็”จ

from amazon_ads_api import AmazonAdsClient, AdsRegion

# ๅˆ›ๅปบๅฎขๆˆท็ซฏ
client = AmazonAdsClient(
    client_id="your_client_id",
    client_secret="your_client_secret",
    refresh_token="your_refresh_token",
    profile_id="your_profile_id",  # ๅฟ…้œ€
    region=AdsRegion.NA,  # NA, EU, FE
)

# ่Žทๅ– SP Campaigns
campaigns = await client.sp.campaigns.list_campaigns()
print(campaigns)

# ่Žทๅ–ๅ…ณ้”ฎ่ฏ
keywords = await client.sp.keywords.list_keywords(campaign_id="123456")

# ๆ›ดๆ–ฐ็ซžไปท
await client.sp.keywords.update_bid(keyword_id="789", new_bid=1.50)

๐Ÿข Multi-Account Support

This SDK is multi-account capable and designed for concurrent use:

โœ… What the SDK provides:

  • Multiple Amazon Ads accounts/profiles can run concurrently
  • Each AmazonAdsClient instance is completely isolated
  • Safe for async concurrent operations
  • Handles authentication, rate limiting, and retries per-client

โŒ What the SDK does NOT manage:

  • SaaS tenant or user management
  • Persistent OAuth token storage
  • Account authorization flows
  • User-to-profile permission mapping

These are responsibilities of your application's Service layer.

Example: Multiple Profiles Concurrently

import asyncio
from amazon_ads_api import AmazonAdsClient, AdsRegion

# Create independent clients for different profiles
client1 = AmazonAdsClient(
    client_id='...',
    client_secret='...',
    refresh_token='token_for_profile_1',
    profile_id='profile-123',
    region=AdsRegion.NA
)

client2 = AmazonAdsClient(
    client_id='...',
    client_secret='...',
    refresh_token='token_for_profile_2',
    profile_id='profile-456',
    region=AdsRegion.NA
)

# Concurrent operations are safe!
campaigns1, campaigns2 = await asyncio.gather(
    client1.sp.campaigns.list_campaigns(),
    client2.sp.campaigns.list_campaigns()
)

For SaaS Applications

If you're building a multi-tenant SaaS platform:

  1. Your database stores user-to-profile mappings
  2. Your Service layer validates user permissions
  3. Your Service layer creates one AmazonAdsClient per profile
  4. Your API layer enforces tenant boundaries

See examples/saas_integration.py for a complete example.

้ซ˜็บง็”จๆณ• - v2.0 ๅˆ†็บง่ฎฟ้—ฎ

# ========== L1 Core APIs (็›ดๆŽฅ่ฎฟ้—ฎ) ==========
# Sponsored Products
campaigns = client.sp.campaigns.list_campaigns()
keywords = client.sp.keywords.list_keywords(campaign_id="123")

# Sponsored Brands
sb_campaigns = client.sb.campaigns.list_campaigns()

# Sponsored Display
sd_campaigns = client.sd.campaigns.list_campaigns()

# DSP
dsp_campaigns = client.dsp.campaigns.list_campaigns(advertiser_id="xxx")
dsp_audiences = client.dsp.audiences.list_audiences()

# Accounts
profiles = client.accounts.profiles.list_profiles()
portfolios = client.accounts.portfolios.list_portfolios()

# ========== L2 Reference APIs (ๆ˜พๅผๅ‘ฝๅ็ฉบ้—ด) ==========
# Amazon Marketing Cloud
query_result = client.reference.amc.queries.execute_query(
    query="SELECT * FROM your_table WHERE date > '2024-01-01'"
)

# Marketing Stream
subscriptions = client.reference.stream.subscriptions.list()

# Retail Ad Service
ras_campaigns = client.reference.retail_ad_service.campaigns.list()

# ========== L3 Services (ไบงๅ“็บง่šๅˆ) ==========
# Reports
report = client.services.reporting.reports.create_report(
    report_type="spCampaigns",
    time_unit="DAILY",
    start_date="2024-01-01",
    end_date="2024-01-31",
)

# Insights
keyword_insights = client.services.insights.keywords.get_ranking_keywords()

# Common utilities
assets = client.services.common.assets.upload_asset(...)

# ========== L4 Experimental (้œ€็กฎ่ฎค้ฃŽ้™ฉ) ==========
# Sponsored TV (Beta)
tv_campaigns = client.experimental.sponsored_tv.campaigns.list_campaigns()

# Pre-moderation
moderation = client.experimental.moderation.pre_moderation.submit()

๐Ÿ“– API ๆ–‡ๆกฃ

v2.0 ๆจกๅ—็ป“ๆž„ (ๅˆ†็บงๆžถๆž„)

client
โ”œโ”€โ”€ sp                    # L1 - Sponsored Products
โ”œโ”€โ”€ sb                    # L1 - Sponsored Brands
โ”œโ”€โ”€ sd                    # L1 - Sponsored Display
โ”œโ”€โ”€ dsp                   # L1 - Amazon DSP
โ”œโ”€โ”€ accounts              # L1 - Profiles, Portfolios, Billing
โ”‚
โ”œโ”€โ”€ reference/            # L2 - API Reference ็กฎ่ฎค
โ”‚   โ”œโ”€โ”€ amc               # Amazon Marketing Cloud
โ”‚   โ”œโ”€โ”€ stream            # Marketing Stream
โ”‚   โ”œโ”€โ”€ retail_ad_service # Retail Ad Service
โ”‚   โ”œโ”€โ”€ data_provider     # Data Provider
โ”‚   โ”œโ”€โ”€ posts             # Posts
โ”‚   โ””โ”€โ”€ unified_api       # Unified API
โ”‚
โ”œโ”€โ”€ services/             # L3 - ไบงๅ“็บง่šๅˆ
โ”‚   โ”œโ”€โ”€ reporting         # Reports V3, Brand Metrics, MMM
โ”‚   โ”œโ”€โ”€ insights          # Keyword/Audience Insights
โ”‚   โ”œโ”€โ”€ recommendations   # Recommendations
โ”‚   โ”œโ”€โ”€ common            # Assets, History, Stores
โ”‚   โ”œโ”€โ”€ brand_associations
โ”‚   โ”œโ”€โ”€ ads_data_manager
โ”‚   โ””โ”€โ”€ media_planning
โ”‚
โ””โ”€โ”€ experimental/         # L4 - Beta/ๅฎž้ชŒๆ€ง
    โ”œโ”€โ”€ sponsored_tv      # Sponsored TV (Beta)
    โ”œโ”€โ”€ moderation        # Pre/Unified Moderation
    โ”œโ”€โ”€ localization      # Localization
    โ”œโ”€โ”€ ad_library        # Ad Library
    โ””โ”€โ”€ brand_home        # Brand Home

L1 Core ่ฏฆ็ป†็ป“ๆž„

core/
โ”œโ”€โ”€ sp/                   # Sponsored Products (~80 endpoints)
โ”‚   โ”œโ”€โ”€ campaigns
โ”‚   โ”œโ”€โ”€ ad_groups
โ”‚   โ”œโ”€โ”€ keywords
โ”‚   โ”œโ”€โ”€ targeting
โ”‚   โ”œโ”€โ”€ budget_rules
โ”‚   โ”œโ”€โ”€ recommendations
โ”‚   โ”œโ”€โ”€ product_eligibility
โ”‚   โ”œโ”€โ”€ theme_targeting
โ”‚   โ”œโ”€โ”€ target_promotion_groups
โ”‚   โ””โ”€โ”€ global_recommendations
โ”œโ”€โ”€ sb/                   # Sponsored Brands (~50 endpoints)
โ”‚   โ”œโ”€โ”€ campaigns
โ”‚   โ”œโ”€โ”€ ads
โ”‚   โ”œโ”€โ”€ keywords
โ”‚   โ”œโ”€โ”€ creatives
โ”‚   โ”œโ”€โ”€ brand_video
โ”‚   โ”œโ”€โ”€ moderation
โ”‚   โ”œโ”€โ”€ optimization
โ”‚   โ”œโ”€โ”€ forecasts
โ”‚   โ”œโ”€โ”€ targeting
โ”‚   โ””โ”€โ”€ legacy_migration
โ”œโ”€โ”€ sd/                   # Sponsored Display (~40 endpoints)
โ”‚   โ”œโ”€โ”€ campaigns
โ”‚   โ”œโ”€โ”€ targeting
โ”‚   โ”œโ”€โ”€ creatives
โ”‚   โ”œโ”€โ”€ audiences
โ”‚   โ”œโ”€โ”€ moderation
โ”‚   โ”œโ”€โ”€ optimization
โ”‚   โ”œโ”€โ”€ brand_safety
โ”‚   โ”œโ”€โ”€ locations
โ”‚   โ””โ”€โ”€ reports
โ”œโ”€โ”€ dsp/                  # Amazon DSP (~60 endpoints)
โ”‚   โ”œโ”€โ”€ campaigns
โ”‚   โ”œโ”€โ”€ advertisers
โ”‚   โ”œโ”€โ”€ audiences
โ”‚   โ”œโ”€โ”€ conversions
โ”‚   โ”œโ”€โ”€ measurement
โ”‚   โ””โ”€โ”€ target_kpi
โ”œโ”€โ”€ accounts/             # Accounts (~15 endpoints)
โ”‚   โ”œโ”€โ”€ profiles
โ”‚   โ”œโ”€โ”€ portfolios
โ”‚   โ”œโ”€โ”€ billing
โ”‚   โ”œโ”€โ”€ budgets
โ”‚   โ””โ”€โ”€ test_accounts
โ”œโ”€โ”€ audiences/            # Audiences Discovery
โ”œโ”€โ”€ eligibility/          # Eligibility
โ”œโ”€โ”€ exports/              # Exports
โ”œโ”€โ”€ products/             # Product Selector
โ””โ”€โ”€ locations/            # Locations

๐Ÿ”ง ้…็ฝฎ้€‰้กน

client = AmazonAdsClient(
    client_id="xxx",
    client_secret="xxx",
    refresh_token="xxx",
    region=AdsRegion.NA,      # API ๅŒบๅŸŸ
    profile_id="123456",      # ๅฏ้€‰๏ผŒไนŸๅฏไปฅๅŽ็ปญ่ฎพ็ฝฎ
    max_retries=3,            # ๆœ€ๅคง้‡่ฏ•ๆฌกๆ•ฐ
    timeout=30,               # ่ฏทๆฑ‚่ถ…ๆ—ถ๏ผˆ็ง’๏ผ‰
)

๐Ÿ” ่ฎค่ฏ

่Žทๅ–ๅ‡ญ่ฏ

  1. ๆณจๅ†Œ Amazon Ads Partner Network
  2. ๅˆ›ๅปบ Login with Amazon (LwA) ๅบ”็”จ
  3. ็”ณ่ฏท Amazon Ads API ๆƒ้™
  4. ่Žทๅ– Client ID, Client Secret
  5. ้€š่ฟ‡ OAuth2 ๆต็จ‹่Žทๅ– Refresh Token

ๅŒบๅŸŸ็ซฏ็‚น

ๅŒบๅŸŸ ็ซฏ็‚น
NA (ๅŒ—็พŽ) https://advertising-api.amazon.com
EU (ๆฌงๆดฒ) https://advertising-api-eu.amazon.com
FE (่ฟœไธœ) https://advertising-api-fe.amazon.com

๐Ÿงช ๆต‹่ฏ•

# ๅฎ‰่ฃ…ๅผ€ๅ‘ไพ่ต–
pip install -e ".[dev]"

# ่ฟ่กŒๆ‰€ๆœ‰ๆต‹่ฏ•
pytest

# ๅช่ฟ่กŒๅ•ๅ…ƒๆต‹่ฏ•
pytest tests/unit/

# ๅช่ฟ่กŒ้›†ๆˆๆต‹่ฏ•
pytest tests/integration/

# ่ฆ†็›–็އๆŠฅๅ‘Š
pytest --cov=amazon_ads_api --cov-report=html

# ่ฟ่กŒๅฏผๅ…ฅๆต‹่ฏ•
python tests/test_imports.py

ๆต‹่ฏ•็ป“ๆž„

tests/
โ”œโ”€โ”€ conftest.py              # ๆต‹่ฏ•้…็ฝฎๅ’Œfixtures
โ”œโ”€โ”€ test_imports.py          # ๅฏผๅ…ฅๆต‹่ฏ• (101ไธช็ฑป)
โ”œโ”€โ”€ unit/                    # ๅ•ๅ…ƒๆต‹่ฏ•
โ”‚   โ”œโ”€โ”€ test_base.py         # BaseAdsClient ๆต‹่ฏ•
โ”‚   โ”œโ”€โ”€ test_client.py       # AmazonAdsClient ๆต‹่ฏ•
โ”‚   โ”œโ”€โ”€ test_sp.py           # SP ๆจกๅ—ๆต‹่ฏ•
โ”‚   โ”œโ”€โ”€ test_sb.py           # SB ๆจกๅ—ๆต‹่ฏ•
โ”‚   โ””โ”€โ”€ ...
โ””โ”€โ”€ integration/             # ้›†ๆˆๆต‹่ฏ•
    โ”œโ”€โ”€ test_auth.py         # ่ฎค่ฏๆต็จ‹ๆต‹่ฏ•
    โ”œโ”€โ”€ test_sp_api.py       # SP API ้›†ๆˆๆต‹่ฏ•
    โ””โ”€โ”€ ...

๐Ÿ“ ่ฎธๅฏ่ฏ

MIT License

๐Ÿค ่ดก็Œฎ

ๆฌข่ฟŽๆไบค Issue ๅ’Œ Pull Request๏ผ

  1. Fork ๆœฌไป“ๅบ“
  2. ๅˆ›ๅปบ็‰นๆ€งๅˆ†ๆ”ฏ (git checkout -b feature/amazing-feature)
  3. ๆไบคๆ›ดๆ”น (git commit -m 'Add some amazing feature')
  4. ๆŽจ้€ๅˆฐๅˆ†ๆ”ฏ (git push origin feature/amazing-feature)
  5. ๆไบค Pull Request

๐Ÿ“ž ๆ”ฏๆŒ

๐Ÿ“Š ้กน็›ฎ็Šถๆ€

  • API ็ฑปๆ•ฐ้‡: 101
  • ๆจกๅ—ๆ•ฐ้‡: 30
  • ๆต‹่ฏ•่ฆ†็›–็އ: ็›ฎๆ ‡ >80%
  • Python ็‰ˆๆœฌ: 3.13+

Made with โค๏ธ by vanling1111

About

Python SDK for Amazon Ads API - 100% API Coverage with 4-Tier Governance

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Languages