Skills amazon-ads-open-cli
git clone https://github.com/openclaw/skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/bin-huang/amazon-ads-open-cli" ~/.claude/skills/clawdbot-skills-amazon-ads-open-cli && rm -rf "$T"
skills/bin-huang/amazon-ads-open-cli/SKILL.mdAmazon Ads CLI Skill
You have access to
amazon-ads-open-cli, a read-only CLI for the Amazon Advertising API (v2/v3). Use it to list advertising profiles, inspect Sponsored Products/Brands/Display campaigns and their hierarchy, browse DSP orders and creatives, manage audiences, and request async performance reports across Amazon marketplaces.
Quick start
# Check if the CLI is available amazon-ads-open-cli --help # List advertising profiles (marketplaces) amazon-ads-open-cli profiles # List Sponsored Products campaigns amazon-ads-open-cli sp-campaigns
If the CLI is not installed, install it:
npm install -g amazon-ads-open-cli
Authentication
The CLI requires an Amazon OAuth2 access token and client ID from a Login with Amazon app. Credentials are resolved in this order:
flag (per-command) -- reads the specified JSON file--credentials <path>- Auto-detected file:
~/.config/amazon-ads-open-cli/credentials.json - Environment variables:
+AMAZON_ADS_ACCESS_TOKENAMAZON_ADS_CLIENT_ID
Note: when a credentials file is found (either via
--credentials or at the default path), its profile_id can be overridden by the AMAZON_ADS_PROFILE_ID environment variable if the file does not contain one. If the credentials file is not found or does not contain valid access_token + client_id, the CLI falls through to environment variables.
The credentials JSON file format:
{ "access_token": "your_access_token", "client_id": "your_client_id", "profile_id": "your_profile_id" }
Environment variables:
-- OAuth2 access tokenAMAZON_ADS_ACCESS_TOKEN
-- Login with Amazon client IDAMAZON_ADS_CLIENT_ID
-- marketplace profile ID (required for most commands)AMAZON_ADS_PROFILE_ID
Before running any command, verify credentials are configured by running
amazon-ads-open-cli profiles. If it fails with a credentials error, ask the user to set up authentication.
Most commands require a profile ID (marketplace-specific). Use the
profiles command first to discover profile IDs, then set AMAZON_ADS_PROFILE_ID.
Entity hierarchy
Profile (marketplace: US, UK, DE, JP, etc.) +-- Sponsored Products | +-- Campaign -> Ad Group -> Product Ad / Keyword / Target +-- Sponsored Brands | +-- Campaign -> Ad Group -> Keyword / Target +-- Sponsored Display | +-- Campaign -> Ad Group -> Product Ad / Target +-- DSP (programmatic) +-- Advertiser -> Order -> Line Item -> Creative +-- Audience (configured at Line Item level)
Output format
All commands output pretty-printed JSON (2-space indent) by default. Use
--format compact for single-line JSON (useful for piping).
Global options available on every command:
-- output format:--format <format>
(default) orjsoncompact
-- path to credentials JSON file--credentials <path>
All listing commands support offset-based pagination via
--start-index and --count parameters.
Commands reference
Profiles
# List all advertising profiles (marketplaces) -- no profile ID required amazon-ads-open-cli profiles # Get a specific profile -- no profile ID required amazon-ads-open-cli profile 1234567890
The
profiles and profile commands do not require AMAZON_ADS_PROFILE_ID to be set. All other commands do.
Sponsored Products campaigns
# List SP campaigns amazon-ads-open-cli sp-campaigns amazon-ads-open-cli sp-campaigns --state enabled amazon-ads-open-cli sp-campaigns --start-index 100 --count 50 # Get a specific SP campaign amazon-ads-open-cli sp-campaign 123456
Options for
sp-campaigns:
-- start index for pagination (default 0)--start-index <n>
-- results per page (default 100, max 5000)--count <n>
-- filter by state:--state <state>
,enabled
,pausedarchived
Sponsored Brands campaigns
# List SB campaigns amazon-ads-open-cli sb-campaigns amazon-ads-open-cli sb-campaigns --state paused # Get a specific SB campaign amazon-ads-open-cli sb-campaign 123456
Options for
sb-campaigns:
-- start index for pagination (default 0)--start-index <n>
-- results per page (default 100)--count <n>
-- filter by state:--state <state>
,enabled
,pausedarchived
Sponsored Display campaigns
# List SD campaigns amazon-ads-open-cli sd-campaigns amazon-ads-open-cli sd-campaigns --state enabled # Get a specific SD campaign amazon-ads-open-cli sd-campaign 123456
Options for
sd-campaigns:
-- start index for pagination (default 0)--start-index <n>
-- results per page (default 100)--count <n>
-- filter by state:--state <state>
,enabled
,pausedarchived
Sponsored Products ad groups
# List SP ad groups amazon-ads-open-cli sp-adgroups amazon-ads-open-cli sp-adgroups --campaign-id 123456 --state enabled # Get a specific SP ad group amazon-ads-open-cli sp-adgroup 789012
Options for
sp-adgroups:
-- start index for pagination (default 0)--start-index <n>
-- results per page (default 100)--count <n>
-- filter by campaign ID--campaign-id <id>
-- filter by state:--state <state>
,enabled
,pausedarchived
Sponsored Brands ad groups
# List SB ad groups amazon-ads-open-cli sb-adgroups amazon-ads-open-cli sb-adgroups --start-index 0 --count 50
Options for
sb-adgroups:
-- start index for pagination (default 0)--start-index <n>
-- results per page (default 100)--count <n>
Note:
sb-adgroups does not support --campaign-id or --state filtering.
Sponsored Display ad groups
# List SD ad groups amazon-ads-open-cli sd-adgroups amazon-ads-open-cli sd-adgroups --campaign-id 123456
Options for
sd-adgroups:
-- start index for pagination (default 0)--start-index <n>
-- results per page (default 100)--count <n>
-- filter by campaign ID--campaign-id <id>
Note:
sd-adgroups does not support --state filtering.
Sponsored Products ads
# List SP product ads amazon-ads-open-cli sp-ads amazon-ads-open-cli sp-ads --adgroup-id 789012 --state enabled # Get a specific SP ad amazon-ads-open-cli sp-ad 345678
Options for
sp-ads:
-- start index for pagination (default 0)--start-index <n>
-- results per page (default 100)--count <n>
-- filter by ad group ID--adgroup-id <id>
-- filter by state:--state <state>
,enabled
,pausedarchived
Sponsored Display ads
# List SD ads amazon-ads-open-cli sd-ads amazon-ads-open-cli sd-ads --adgroup-id 789012
Options for
sd-ads:
-- start index for pagination (default 0)--start-index <n>
-- results per page (default 100)--count <n>
-- filter by ad group ID--adgroup-id <id>
Note:
sd-ads does not support --state filtering.
Sponsored Products keywords
# List SP keywords amazon-ads-open-cli sp-keywords amazon-ads-open-cli sp-keywords --campaign-id 123456 --state enabled amazon-ads-open-cli sp-keywords --adgroup-id 789012
Options for
sp-keywords:
-- start index for pagination (default 0)--start-index <n>
-- results per page (default 100)--count <n>
-- filter by ad group ID--adgroup-id <id>
-- filter by campaign ID--campaign-id <id>
-- filter by state:--state <state>
,enabled
,pausedarchived
Sponsored Products negative keywords
# List SP negative keywords amazon-ads-open-cli sp-negative-keywords amazon-ads-open-cli sp-negative-keywords --campaign-id 123456 amazon-ads-open-cli sp-negative-keywords --adgroup-id 789012
Options for
sp-negative-keywords:
-- start index for pagination (default 0)--start-index <n>
-- results per page (default 100)--count <n>
-- filter by ad group ID--adgroup-id <id>
-- filter by campaign ID--campaign-id <id>
Note:
sp-negative-keywords does not support --state filtering.
Sponsored Products targets
# List SP product targets (ASIN and category targeting) amazon-ads-open-cli sp-targets amazon-ads-open-cli sp-targets --adgroup-id 789012 --state enabled
Options for
sp-targets:
-- start index for pagination (default 0)--start-index <n>
-- results per page (default 100)--count <n>
-- filter by ad group ID--adgroup-id <id>
-- filter by state:--state <state>
,enabled
,pausedarchived
Sponsored Brands targets
# List SB targets amazon-ads-open-cli sb-targets amazon-ads-open-cli sb-targets --start-index 0 --count 50
Options for
sb-targets:
-- start index for pagination (default 0)--start-index <n>
-- results per page (default 100)--count <n>
Note:
sb-targets does not support --adgroup-id or --state filtering.
Sponsored Display targets
# List SD targets amazon-ads-open-cli sd-targets amazon-ads-open-cli sd-targets --adgroup-id 789012
Options for
sd-targets:
-- start index for pagination (default 0)--start-index <n>
-- results per page (default 100)--count <n>
-- filter by ad group ID--adgroup-id <id>
Note:
sd-targets does not support --state filtering.
Performance reports (async)
Reports are requested asynchronously. You submit a report request and receive a report ID, then poll for completion.
Sponsored Products report
amazon-ads-open-cli sp-report --record-type campaigns --start-date 20260101 amazon-ads-open-cli sp-report --record-type keywords --start-date 20260101 --metrics impressions,clicks,cost,sales14d
Options for
sp-report:
-- required:--record-type <type>
,campaigns
,adGroups
,productAds
,keywordstargets
-- required: report date in YYYYMMDD format--start-date <date>
-- comma-separated metric names (default:--metrics <metrics>
)impressions,clicks,cost,sales14d
Sponsored Brands report
amazon-ads-open-cli sb-report --record-type campaigns --start-date 20260101 amazon-ads-open-cli sb-report --record-type keywords --start-date 20260101 --metrics impressions,clicks,cost
Options for
sb-report:
-- required:--record-type <type>
,campaigns
,adGroupskeywords
-- required: report date in YYYYMMDD format--start-date <date>
-- comma-separated metric names (default:--metrics <metrics>
)impressions,clicks,cost
Sponsored Display report
amazon-ads-open-cli sd-report --record-type campaigns --start-date 20260101 amazon-ads-open-cli sd-report --record-type targets --start-date 20260101 --metrics impressions,clicks,cost
Options for
sd-report:
-- required:--record-type <type>
,campaigns
,adGroups
,productAdstargets
-- required: report date in YYYYMMDD format--start-date <date>
-- comma-separated metric names (default:--metrics <metrics>
)impressions,clicks,cost
Report status
# Check report status and get download URL amazon-ads-open-cli report-status amzn1.report.abc123
The response includes the report status and, when complete, a download URL. Poll this command until the status indicates the report is ready.
DSP orders
# List DSP orders (programmatic display/video) amazon-ads-open-cli dsp-orders amazon-ads-open-cli dsp-orders --start-index 0 --count 50 # Get a specific DSP order amazon-ads-open-cli dsp-order 123456
Options for
dsp-orders:
-- start index for pagination (default 0)--start-index <n>
-- results per page (default 100)--count <n>
DSP commands use the v3 API endpoint.
DSP line items
# List DSP line items amazon-ads-open-cli dsp-line-items amazon-ads-open-cli dsp-line-items --order-id 123456
Options for
dsp-line-items:
-- filter by order ID--order-id <id>
-- start index for pagination (default 0)--start-index <n>
-- results per page (default 100)--count <n>
DSP creatives
# List DSP creatives amazon-ads-open-cli dsp-creatives amazon-ads-open-cli dsp-creatives --start-index 0 --count 50
Options for
dsp-creatives:
-- start index for pagination (default 0)--start-index <n>
-- results per page (default 100)--count <n>
Audiences
# List DSP audiences amazon-ads-open-cli audiences amazon-ads-open-cli audiences --start-index 0 --count 50 # Get a specific audience amazon-ads-open-cli audience 123456
Options for
audiences:
-- start index for pagination (default 0)--start-index <n>
-- results per page (default 100)--count <n>
Brand safety
# List brand safety deny lists amazon-ads-open-cli brand-safety-lists
The
brand-safety-lists command has no pagination options. It returns all deny lists.
Workflow guidance
When the user asks for an account overview
- Run
to discover accessible marketplacesamazon-ads-open-cli profiles - Set the desired profile ID, then list campaigns across ad types:
amazon-ads-open-cli sp-campaigns --state enabledamazon-ads-open-cli sb-campaigns --state enabledamazon-ads-open-cli sd-campaigns --state enabled
- Present campaign counts and statuses
When the user asks for performance data
- Use report commands to request async reports:
amazon-ads-open-cli sp-report --record-type campaigns --start-date YYYYMMDD
- Poll with
until completeamazon-ads-open-cli report-status <report-id> - Download and present the report data from the returned URL
When the user asks about campaign structure
- List campaigns:
amazon-ads-open-cli sp-campaigns - Drill into ad groups:
amazon-ads-open-cli sp-adgroups --campaign-id <id> - Inspect ads:
amazon-ads-open-cli sp-ads --adgroup-id <id> - Review keywords:
amazon-ads-open-cli sp-keywords --adgroup-id <id> - Check targets:
amazon-ads-open-cli sp-targets --adgroup-id <id>
When the user asks about keyword performance
- List keywords:
amazon-ads-open-cli sp-keywords --campaign-id <id> - Check negative keywords:
amazon-ads-open-cli sp-negative-keywords --campaign-id <id> - Request a keyword-level report:
amazon-ads-open-cli sp-report --record-type keywords --start-date YYYYMMDD
When the user asks about DSP/programmatic
- List orders:
amazon-ads-open-cli dsp-orders - Drill into line items:
amazon-ads-open-cli dsp-line-items --order-id <id> - Review creatives:
amazon-ads-open-cli dsp-creatives - Check audiences:
amazon-ads-open-cli audiences - Review brand safety:
amazon-ads-open-cli brand-safety-lists
When the user wants to compare ad types
- Pull campaigns for each type side by side:
amazon-ads-open-cli sp-campaigns --state enabledamazon-ads-open-cli sb-campaigns --state enabledamazon-ads-open-cli sd-campaigns --state enabled
- Request reports for each type with the same date range
- Compare metrics across Sponsored Products, Brands, and Display
Error handling
- "No credentials found" -- ask the user to set
+AMAZON_ADS_ACCESS_TOKEN
env vars, or createAMAZON_ADS_CLIENT_ID~/.config/amazon-ads-open-cli/credentials.json - "Profile ID required" -- the command needs
. RunAMAZON_ADS_PROFILE_ID
first to discover available profile IDsprofiles - HTTP 401 -- access token is expired or invalid; ask the user to refresh their OAuth token
- HTTP 403 -- the profile may not have access to the requested resource, or the API scope is insufficient
- "Unknown command" -- verify the command name matches the reference above
- Empty results -- check that the profile ID corresponds to the correct marketplace and that campaigns/entities exist
All errors are output as JSON to stderr in the format:
{"error": "message"}