# ads_sp_get_budget_recommendations (https://sellersheetai.com/docs/mcp-api/tools/ads_sp_get_budget_recommendations)

> Sponsored Products: the recommended daily budget and missed opportunities for existing campaigns — campaigns that are budget-capped, losing impressions/clicks/sales because they ru

Access: **READ** · toolset amazon_ads · family ads.sp

n out of budget. (Distinct from ads_get_budget_recommendation, which covers a new campaign, before it exists.) Amazon Ads API · getBudgetRecommendations · POST /sp/campaigns/budgetRecommendations Docs: https://advertising.amazon.com/API/docs/en-us/sponsored-products/3-0/openapi/prod#tag/Budget-recommendations-and-missed-opportunities/operation/getBudgetRecommendations

## Call it

MCP tool call:

```json
{
  "name": "ads_sp_get_budget_recommendations",
  "arguments": {
    "store": "myStore-US",
    "countryCode": "<countryCode>",
    "campaignIds": []
  }
}
```

Tool API (early access — contact us):

```bash
curl -X POST https://api.sellersheetai.com/api/v1/tools/ads_sp_get_budget_recommendations \
  -H "Authorization: Bearer $SELLERSHEET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"store":"myStore-US","countryCode":"<countryCode>","campaignIds":[]}'
```

## Arguments

| Name | Type | Required | Description |
|---|---|---|---|
| `store` | string | yes | the store ref `<store>-<CC>` (name-country, e.g. 'myStore-US') — one of get_user_context's store_refs, verbatim. |
| `countryCode` | string | yes | the Ads profile's 2-letter country code (e.g. 'US'). |
| `campaignIds` | string[] | yes | 1-100 campaign id strings, from ads_query_campaign. |

## Result

- Amazon's payload in data.result.
- `data.result.budgetRecommendationsSuccessResults` — [{index, campaignId, suggestedBudget, sevenDaysMissedOpportunities {startDate, endDate, percentTimeInBudget, estimatedMissed*Lower/Upper}}].
- `data.result.budgetRecommendationsErrorResults` — per-campaign failures {index, campaignId, code, details}.

## Gotchas

- sevenDaysMissedOpportunities reflects the campaign's last ACTIVE period. For a long-paused campaign that window can be YEARS old — always show startDate/endDate next to the numbers.
- percentTimeInBudget = -1.0 with null dates is the "no data" sentinel (never served / long paused) — it is NOT 0%, never render it as a percent.
- Apply a raise with ads_update_campaign_budget.