get_amazon_report

Amazon Ads Read

Fetch Amazon metric rows for a report type + date range, served instantly from Adspirer's nightly-collected warehouse (no polling — Amazon reporting is async)

Endpoint

POST https://api.adspirer.ai/api/v1/tools/get_amazon_report/execute

Headers

Description

Fetch Amazon metric rows for a report type + date range, served instantly from Adspirer's nightly-collected warehouse (no polling — Amazon reporting is async). Rows are per-entity totals ranked by spend; `summary` totals always cover the full (filtered) set. ⚠️ Each call is a BILLED tool call and paging is capped at the top ~5,000 rows — so to find something specific in a big account, USE FILTERS, do not page through everything. Filters: campaign_id, search (substring on term/keyword/ASIN), min_spend/max_spend, min_acos/max_acos, min_roas/max_roas, zero_sales, match_type, sort_by, sort_dir. E.g. wasted spend = zero_sales=true & min_spend=5; inefficient = min_acos=50. Report types: spCampaigns/sbCampaigns/sdCampaigns, spSearchTerm/sbSearchTerm, spTargeting/sbTargeting/sdTargeting, sp/sdAdvertisedProduct, sp/sbPurchasedProduct, sb/sdAdGroup. If data isn't collected yet it says so — never poll.

Request body

All tool arguments are wrapped in an arguments object.

FieldTypeDescription
profile_idstring optionalAmazon Ads profile ID (advertiser account). Omit to use the user's selected account. Find IDs with list_amazon_profiles.
offsetinteger optionalRow offset (default 0). Paging is capped at the top ~5,000 by spend AND each page is a billed call — prefer FILTERS over paging to reach specific rows. default: 0
limitinteger optionalRows per page (default/max 1000). Summary totals always cover ALL matching rows regardless of this. default: 1000
campaign_idstring optionalOnly rows in this campaign ID.
campaign_name_containsstring optionalOnly campaigns whose name contains this text (case-insensitive).
searchstring optionalSubstring match on the entity (search term / keyword / ASIN), case-insensitive.
match_typestring optionalFilter to a match type (EXACT / PHRASE / BROAD).
min_spendnumber optionalOnly rows that spent at least this much.
max_spendnumber optionalOnly rows that spent at most this much.
min_salesnumber optionalOnly rows with at least this much sales.
min_clicksinteger optionalOnly rows with at least this many clicks.
min_impressionsinteger optionalOnly rows with at least this many impressions.
min_acosnumber optionalOnly rows with ACOS% at or above this (finds inefficient spend). Rows with no sales have no ACOS and are excluded — use zero_sales for those.
max_acosnumber optionalOnly rows with ACOS% at or below this (finds efficient spend).
min_roasnumber optionalOnly rows with ROAS at or above this.
max_roasnumber optionalOnly rows with ROAS at or below this.
zero_salesboolean optionalOnly rows that spent with ZERO sales (wasted spend). Combine with min_spend to set a threshold.
sort_bystring optionalSort key: spend (default) | sales | acos | roas | clicks | impressions.
sort_dirstring optionalasc | desc (default desc; use asc with sort_by=acos for most-efficient-first).
report_type_idstring optionalWhich Amazon report to fetch from the warehouse: spCampaigns | sbCampaigns | sdCampaigns | spSearchTerm | sbSearchTerm | spTargeting | sbTargeting | sdTargeting | spAdvertisedProduct | sdAdvertisedProduct | spPurchasedProduct | sbPurchasedProduct | sbAdGroup | sdAdGroup default: "spCampaigns"
ad_productstring optionalSPONSORED_PRODUCTS | SPONSORED_BRANDS | SPONSORED_DISPLAY default: "SPONSORED_PRODUCTS"
start_datestring requiredYYYY-MM-DD
end_datestring requiredYYYY-MM-DD

Example request

{
  "arguments": {
    "start_date": "string",
    "end_date": "string",
    "profile_id": "string",
    "offset": 0,
    "limit": 1000,
    "campaign_id": "string",
    "campaign_name_contains": "string",
    "search": "string"
  }
}

Example responses

200 — Success

{
  "success": true,
  "data": {
    "text": "(tool-specific textual output for get_amazon_report)",
    "quota": {
      "used": 42,
      "limit": 150,
      "tier": "plus",
      "period_end": "2026-05-01"
    }
  },
  "tool": "get_amazon_report"
}

400 — Tool-level error (bad arguments / multi-account selection)

{
  "success": false,
  "error": "You have 25 meta_ads accounts connected. Please specify which account to use by passing the ad_account_id parameter:\n  - Acme Holdings (ad_account_id=\"act_123456789\")\n  - Acme EU (ad_account_id=\"act_987654321\")",
  "is_error": true,
  "tool": "get_amazon_report"
}

402 — Quota exhausted

{
  "success": false,
  "error": "\ud83d\udea8 Monthly limit reached (150/150 tool calls on Plus tier).\nUpgrade to Pro at https://adspirer.ai to keep building.",
  "is_error": true,
  "tool": "get_amazon_report",
  "quota": {
    "used": 150,
    "limit": 150,
    "tier": "plus",
    "period_end": "2026-05-01",
    "upgrade_url": "https://adspirer.ai"
  }
}

Try it live


Adspirer REST API — get an API key at adspirer.ai/keys · adspirer.ai