Skip to content

Revenue

Use /reports/revenue to get revenue for all your apps, broken down by source: app sales, ads, IAPs, returns and educational.

GET /reports/revenue?start_date={start_date}&end_date={end_date}&products={products}&countries={countries}
Argument Type Description
start_date Date (yyyy-MM-dd) First date to report on, inclusive. With a granularity other than daily, we round it down to the nearest period. Default: the earliest data available.
end_date Date (yyyy-MM-dd) Last date to report on, inclusive. With a granularity other than daily, we round it up to the nearest period. Default: the latest data available.
group_by List One or more pivots, separated by commas. Available pivots: product, country, date, and store.
products List (productId | productId1, productId2, …) Products to include in the response. Default: all active products in your account.
countries List (isoCode | isoCode1;isoCode2;isoCodeN) Countries to limit the report to. Get country codes from /data/countries. Default: all countries.
format String Output format: JSON or CSV. Defaults to JSON.

Note: With format=csv, we don’t fully serialize sub-objects (like the product in /revenue/products/…), only their reference, to avoid repetition.
Field Description
sales Revenue from app downloads, after the store’s fee.
iap Revenue from in-app purchases, after the store’s fee.
subscriptions Revenue from recurring in-app purchases, after the store’s fee.
ads Revenue from ad publishing, after the store’s fee.
edu Revenue from purchases through the Volume Purchase for Education program, after the store’s fee.
business Revenue from purchases through the Volume Purchase for Business program, after the store’s fee.
returns Money refunded to users, after the store’s fee.
total The total revenue for the period, after the store’s fee, where total = sales + iap + subscriptions + ads + edu - returns.
gross_sales Revenue from app downloads, before the store’s fee.
gross_iap Revenue from in-app purchases, before the store’s fee.
gross_subscriptions Revenue from recurring in-app purchases, before the store’s fee.
gross_edu Revenue from purchases through the Volume Purchase for Education program, before the store’s fee.
gross_business Revenue from purchases through the Volume Purchase for Business program, before the store’s fee.
gross_returns Money refunded to users, before the store’s fee.
gross_total The total revenue for the period, before the store’s fee, where gross_total = gross_sales + gross_iap + gross_subscriptions + ads + gross_edu - gross_returns.
// /reports/revenue?start_date=-30
{
"returns": "170.71",
"edu": "5481.19",
"ads": "25980.75",
"sales": "12506.15",
"iap": "6711.91",
"subscriptions": "11661.84",
"total": "50509.29",
"gross_sales": "798.11",
"gross_iap": "2947.29",
"gross_subscriptions": "12020.66",
"gross_edu": "0.00",
"gross_returns": "25.10",
"gross_total": "4262.28"
}
GET /reports/revenue/?group_by={group_by}&start_date={start_date}&end_date={end_date}&products={products}&countries={countries}&format={format}
Argument Type Description
start_date Date (yyyy-MM-dd) First date to report on, inclusive. With a granularity other than daily, we round it down to the nearest period. Default: the earliest data available.
end_date Date (yyyy-MM-dd) Last date to report on, inclusive. With a granularity other than daily, we round it up to the nearest period. Default: the latest data available.
group_by List One or more pivots, separated by commas. Available pivots: product, country, date, and store.
products List (productId | productId1, productId2, …) Products to include in the response. Default: all active products in your account.
countries List (isoCode | isoCode1;isoCode2;isoCodeN) Countries to limit the report to. Get country codes from /data/countries. Default: all countries.
format String Output format: JSON or CSV. Defaults to JSON.

Note: With format=csv, we don’t fully serialize sub-objects (like the product in /revenue/products/…), only their reference, to avoid repetition.

Like other /reports routes, you can group the response by one value or combine several to get a nested response. The breakdown changes, but the leaves use the same format as the totals object in the previous example.

// GET /reports/revenue/?group_by=dates&start_date=-30
{
"2017-06-12": {
"returns": "19.20",
"edu": "0.00",
"ads": "1023.01",
"sales": "511.10",
"iap": "2047.11",
"subscriptions": "11661.84",
"total": "3562.02",
"gross_sales": "798.11",
"gross_iap": "2947.29",
"gross_subscriptions": "12020.66",
"gross_edu": "0.00",
"gross_returns": "25.10",
"gross_total": "4262.28",
"date": "2017-06-12"
},
...
}
// GET /reports/revenue/?group_by=country&start_date=-30
{
"US": {
"returns": "19.20",
"edu": "0.00",
"ads": "1023.01",
"sales": "511.10",
"iap": "2047.11",
"subscriptions": "11661.84",
"total": "3562.02",
"gross_sales": "798.11",
"gross_iap": "2947.29",
"gross_subscriptions": "12020.66",
"gross_edu": "0.00",
"gross_returns": "25.10",
"gross_total": "4262.28",
"date": "2017-06-12"
},
...
}

Example Response Grouped by Products and Dates

Section titled “Example Response Grouped by Products and Dates”
// GET /reports/revenue/?group_by=product,date&start_date=-30
{
"2017-06-12": {
"5561990": {
"returns": "19.20",
"edu": "0.00",
"ads": "1023.01",
"sales": "511.10",
"iap": "2047.11",
"subscriptions": "11661.84",
"total": "3562.02",
"gross_sales": "798.11",
"gross_iap": "2947.29",
"gross_subscriptions": "12020.66",
"gross_edu": "0.00",
"gross_returns": "25.10",
"gross_total": "4262.28",
"date": "2017-06-12",
"product_id": 5561990
},
...
},
...
}