Skip to main content
Negative keywords prevent ads from showing on unwanted searches. They are one of the safest ways to control spend when Search Match or broad keywords pull in irrelevant traffic. Apple Search Ads supports negative keywords at two levels:
LevelScope
Campaign negative keywordsApply across the campaign
Ad group negative keywordsApply only inside one ad group

Campaign Negative Keywords

List

curl
curl "https://api.appeeky.com/v1/connect/apple-ads/campaigns/2143596801/negativekeywords?limit=50&offset=0" \
  -H "X-API-Key: YOUR_APPEEKY_KEY"

Find

curl
curl -X POST "https://api.appeeky.com/v1/connect/apple-ads/campaigns/2143596801/negativekeywords/find" \
  -H "X-API-Key: YOUR_APPEEKY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "conditions": [
      {
        "field": "text",
        "operator": "CONTAINS",
        "values": ["free"]
      }
    ],
    "pagination": {
      "offset": 0,
      "limit": 50
    }
  }'

Create

curl
curl -X POST "https://api.appeeky.com/v1/connect/apple-ads/campaigns/2143596801/negativekeywords/bulk" \
  -H "X-API-Key: YOUR_APPEEKY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "keywords": [
      { "text": "free", "matchType": "BROAD" },
      { "text": "template", "matchType": "EXACT" }
    ]
  }'

Update

curl
curl -X PUT "https://api.appeeky.com/v1/connect/apple-ads/campaigns/2143596801/negativekeywords/bulk" \
  -H "X-API-Key: YOUR_APPEEKY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "keywords": [
      { "id": 2251741048, "text": "free app", "matchType": "BROAD" }
    ]
  }'

Delete

curl
curl -X POST "https://api.appeeky.com/v1/connect/apple-ads/campaigns/2143596801/negativekeywords/delete" \
  -H "X-API-Key: YOUR_APPEEKY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "keywordIds": [2251741048]
  }'

Ad Group Negative Keywords

Ad group negative endpoints use the same body shapes but include adGroupId in the path.

List

curl
curl "https://api.appeeky.com/v1/connect/apple-ads/campaigns/2143596801/adgroups/2147258884/negativekeywords?limit=50&offset=0" \
  -H "X-API-Key: YOUR_APPEEKY_KEY"

Create

curl
curl -X POST "https://api.appeeky.com/v1/connect/apple-ads/campaigns/2143596801/adgroups/2147258884/negativekeywords/bulk" \
  -H "X-API-Key: YOUR_APPEEKY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "keywords": [
      { "text": "free", "matchType": "BROAD" }
    ]
  }'
Other ad group negative endpoints:
POST /campaigns/:campaignId/adgroups/:adGroupId/negativekeywords/find
PUT /campaigns/:campaignId/adgroups/:adGroupId/negativekeywords/bulk
POST /campaigns/:campaignId/adgroups/:adGroupId/negativekeywords/delete

When to Use Campaign vs Ad Group Negatives

SituationRecommended level
Query is irrelevant for the whole appCampaign
Query is irrelevant only for one theme or audienceAd group
Search Match is finding unrelated trafficCampaign first
Broad keyword pulls mixed trafficAd group first

Practical ASO Use

Use Search Terms Reports to find waste:
  • High impressions, low taps
  • Taps but no installs
  • Queries unrelated to the app’s value prop
  • Queries that imply a free product when your app is paid
  • Brand terms for competitors you do not want to target
Then add negative keywords to reduce spend and keep exploration focused.