Skip to main content
Apple Search Ads tells you how paid App Store campaigns perform before and at install time: spend, impressions, taps, installs, CPA, CPT, and conversion rate. RevenueCat tells you what those acquired users earn after install: purchases, subscriptions, renewals, and revenue. The profitability endpoint joins both sides so you can see which campaigns, ad groups, and keywords are actually profitable.
GET /v1/connect/apple-ads/profitability

What This Answers

Use this endpoint when you want to know:
  • Which paid keywords are profitable?
  • Which campaigns have positive ROAS?
  • Which ad groups spend money but do not earn it back?
  • Which keywords should be scaled?
  • Which rows should be paused, bid down, or moved to exact match?
This is private first-party analytics. It only works for Apple Search Ads accounts and RevenueCat projects you can access.
Apple Search Ads does not have a public competitor ad library like Meta Ad Library. You cannot use this endpoint to see another company’s Apple Ads spend, bids, revenue, or ROAS.

Data Sources

MetricSource
Campaigns, ad groups, keywords, status, budgetsApple Search Ads Campaign Management API
Spend, impressions, taps, installs, CPA, CPT, conversion rateApple Search Ads reports
RevenueRevenueCat Charts API, using Apple Search Ads attribution segments
ProfitCalculated by Appeeky: revenue - spend
ROASCalculated by Appeeky: revenue / spend
InsightsCalculated by Appeeky from spend, revenue, profit, ROAS, and installs

Requirements

You need:
  1. An Appeeky API key.
  2. Apple Search Ads connected in Appeeky, or Apple Search Ads credentials passed per request.
  3. A RevenueCat secret API key.
  4. RevenueCat’s Apple Search Ads integration enabled for the project.
If RevenueCat does not have Apple Search Ads attribution enabled, Appeeky can still return Apple Ads spend and install metrics, but revenue, profit, and ROAS will be missing or incomplete.

Request

curl
curl \
  "https://api.appeeky.com/v1/connect/apple-ads/profitability?level=keyword&days=14&currency=USD" \
  -H "X-API-Key: YOUR_APPEEKY_KEY" \
  -H "X-RC-Key: sk_YOUR_REVENUECAT_SECRET_KEY" \
  -H "X-RC-Project: proj_YOUR_PROJECT_ID"

Headers

HeaderRequiredDescription
X-API-KeyYesYour Appeeky API key
X-RC-KeyYesRevenueCat secret API key
X-RC-ProjectNoRevenueCat project ID. Required only when the API key can access multiple projects.
If Apple Search Ads is not saved in Appeeky, pass per-request Apple credentials:
HeaderDescription
X-ASA-Client-IdApple Search Ads client ID
X-ASA-Team-IdApple Search Ads team ID
X-ASA-Key-IdApple Search Ads key ID
X-ASA-Org-IdApple Search Ads organization ID
X-ASA-Private-KeyEC private key PEM
X-ASA-Private-Key-B64Base64-encoded EC private key PEM

Query Parameters

ParameterDefaultDescription
levelkeywordRollup level: keyword, campaign, adgroup, or search_term.
campaignIdOptional single campaign ID.
campaignIdsOptional comma-separated campaign IDs. Omit to scan campaigns in the connected account.
fromStart date, YYYY-MM-DD.
toEnd date, YYYY-MM-DD.
days14Trailing window when from and to are omitted.
limit200Max Apple report rows per campaign.
campaignLimit25Max campaigns to scan when campaignIds is omitted.
currencyUSDRevenueCat currency.
minSpend20Spend threshold used for insight buckets.
insightstrueSet false to omit optimization insights.

Response

{
  "data": {
    "level": "keyword",
    "dateRange": {
      "from": "2026-05-27",
      "to": "2026-06-09"
    },
    "currency": "USD",
    "rows": [
      {
        "id": "123456789",
        "name": "screenshot search",
        "level": "keyword",
        "campaignId": "2143596801",
        "campaignName": "Search",
        "keywordId": "123456789",
        "keyword": "screenshot search",
        "matchType": "EXACT",
        "spend": 82.4,
        "revenue": 146.2,
        "profit": 63.8,
        "roas": 1.774,
        "installs": 19,
        "taps": 73,
        "impressions": 1420,
        "avgCpa": 4.34,
        "avgCpt": 1.13,
        "ttr": 0.0514,
        "conversionRate": 0.2603,
        "currency": "USD",
        "revenueMatched": true,
        "sourceRows": 1
      }
    ],
    "totals": {
      "spend": 82.4,
      "revenue": 146.2,
      "profit": 63.8,
      "roas": 1.774,
      "installs": 19,
      "taps": 73,
      "impressions": 1420,
      "avgCpa": 4.34,
      "avgCpt": 1.13,
      "ttr": 0.0514,
      "conversionRate": 0.2603
    },
    "insights": [
      {
        "type": "scale",
        "title": "Scale candidates",
        "detail": "Rows with ROAS >= 1.5 and at least 20 spend."
      }
    ],
    "meta": {
      "source": "live",
      "appleReport": "keywords",
      "revenueSource": "revenuecat_charts",
      "revenueSegmentId": "apple_search_ads_keyword",
      "revenueAttributionAvailable": true,
      "warnings": []
    }
  }
}

Rollup Levels

LevelBest forRevenue support
campaignPortfolio-level budget decisionsSupported when RevenueCat exposes Apple Search Ads campaign segments
adgroupComparing targeting groupsSupported when RevenueCat exposes Apple Search Ads ad group segments
keywordROAS by paid keywordSupported when RevenueCat exposes Apple Search Ads keyword segments
search_termReal user query analysisApple metrics only; RevenueCat does not expose stable search-term revenue attribution
Search terms and keywords are not the same thing. A keyword is what you target in Apple Search Ads. A search term is what the user typed. RevenueCat attribution can map revenue to Apple Search Ads keyword/campaign/ad group dimensions, but not to arbitrary search terms.

Insight Types

TypeMeaning
scaleHigh ROAS rows with enough spend and installs to consider increasing budget or bids
wasting_spendRows with meaningful spend but weak ROAS or zero installs
profitableRows with the highest absolute profit
no_revenue_attributionApple Ads metrics exist, but RevenueCat revenue did not match
needs_more_dataNo clear winner or loser crossed the current spend threshold