Crunching Apple App Sales Data – Show Me The Money

Want More Detail about Your Daily App Sales?

So you are an app developer or publisher. You published your app on the Apple App Store. You logged into iTunes Connect to view your downloads and sales. The iTunes Connect web app and mobile app give you some great information about sales, but if you are like me you might have an appetite for more detailed sales and download reporting statistics.

So what can you do?

I am a number crunching junkie. I love to slice and dice data to try to get a better understanding of what is happening. After using iTunes connect to monitor free/paid app downloads, in app purchases and app updates for a while I started to get a craving for more detail and more perspective. As the number of apps I had in the app store increased and the number of downloads climbed into the millions, the call to action was clear and loud.

The following are various solutions I have tried out to analyze my Apple App Store sales data.

Microsoft Exel Import and Auto Filter

Microsoft Excel is a capable tool for parsing, filtering, and analyzing structured/delimited data. Luckily the iTunes Connect sales reports and financial reports are tab delimited, making importing into Excel very easy.

After importing, I would then do the following to analyze the data.

1) Select the Normal view from the view menu to enable the Freeze Panes option.

2) Select the second row by clicking on the number two on the left side of the second row.

3)From the Windows menu select Freeze Panes to lock the column headings in place so that they stay visible when scrolling down.

4) Select the top row that includes all of the column titles by clicking on the number one on the left of the first row and then from the Data menu select Data -> Filter -> Auto Filter.

After doing this, I could then click on the small arrows next to the column titles to filter and drill down on certain details.

I could also create charts and graphs with the data and lots of other things, but this a manual process, I needed something better.

Php – Apache – MySQL Business Intelligence Solution

Rather than trying to automate Excel, my next idea was to roll my own solution to parse sales and financial reports with PHP and put them in a MySQL database. I then was able to get the foreign exchange rates from iTunes connect at the time of each monthly payment and added that to a table in the MySQL database so that dollar earnings could be calculated from the daily sales reports.

Now I could feed my sales and financial reports to a web app that would enable me to dream up any report views that a MySQL query could supply data to… but was it the best use of my time?

App Annie App Sales and Ranking Reports

After seeing the reporting available from AppAnnie.com I decided it would not be worth my time to make all the reports that App Annie was already providing.

App Annie is a free service that provides a lot of detail and insight into how sales are coming along. There are other similar services available that I have not tried, so it might be worth comparing others such as AppFigures to see which best meets your needs. But I recommend starting with App Annie.

One note on signing up for any service that requires iTunes Connect user credentials. I recommend creating a user in iTunes connect that only has the Sales role for security reasons and provide that account to the service. That way you minimize the damage that could occur if the service is hacked and your credentials are compromised.

Get Your Raw Data From Apple

Creating good business intelligence starts with having access to data. Without the data, you cannot do much. That is why it is a good idea to get your raw sales data from apple; even if you do not currently have a need to analyze it, you might in the future.

Apple retains your financial reports but does not retain your free download and update stats longer than 26 weeks in iTunes Connect mobile and only 13 weeks for the ability to download. So if you don’t download them, you might lose access to your historical free download and app update statistics.

While a service like App Annie can be one location for retention of your sales data, I recommend also getting the tab delimited sales reports downloaded to your place of business and backed up to your backup solutions. Down the road you never know who will be interested in obtaining those figures and they can be quite valuable to have.

Details for Getting Raw Sales Data from Apple

You could manually click on the sales reports in iTunes Connect to download the tab delimited reports, but I am sure you have better things to do with your time.

It is possible to automate the retrieval of the daily and weekly sales reports from Apple. You will need to do several things to accomplish this.

1) Apple created a Java program called AutoIngestion. This tool can be downloaded from Apple here. It allows the downloading of daily and weekly sales reports. I automated this tool with a bash script and cron job to automatically grab the daily and weekly reports so that in the future I have access to the raw data.

2) Shark Intelligence, s.r.o created a great bash script under MIT license that can be downloaded here. I configured this script to retrieve the daily and weekly sales reports. Both scripts are included in the zip. You will need to finish configuring the script by adding your details for the following:

USER_NAME – An iTunes connect userID. I recommend creating a user in iTunes connect that only has the Sales role for security reasons.

USER_PASSWD – The password for the above userID.

VENDER_ID – Your Apple Vendor ID. I got this from the top left corner of the iTC Sales and Trends report.

DIR_DEST -. The directory where you want the downloaded sales reports to be stored.

MD5 for getReportsBashScripts.zip:

a9be600bac8a5bafdddb86be1eced268

SHA1 for gerReportsBashScripts.zip:

fb7ad5fe1ae89d24e7ca1f579f9efb981bdbb60a

3) After downloading the Autoingestion Java program and the zip with the two scripts, add these to your Linux or Mac computer together in the same folder. Unzip the Autoingestion.class.zip tool and getReportsBashScripts.zip. Make note of this folder.

4) Change the execution access setting on the file so that the user that will be executing the scripts via cron tab can execute the file. The following will do the trick but may be overkill since it makes it executable to anybody on the system.

chmod a+x getWeeklyPreviousSunday.sh

chomd a+x getDailyReports.sh

5) Launch a shell and type crontab -e

Add the following two entries to your cron tab, using the directory folder you noted above.

# Get the daily report every day at 13:00 and 21:00. The script will only request it if it did not already get it.

0 13,21 * * * /path/noted/above/getDailyReports.sh

# Get the weekly report every Monday at 21:00 for the date of the previous Sunday.

15 21 * * 1 /path/noted/above/getWeeklyPreviousSunday.sh

These cron tab entries will run the reports daily and weekly to get your daily and weekly sales reports. For Apple’s last fiscal year the weekly ended on Sunday and I think this fiscal year for Apple the week ends on Saturday. Not positive about this, but the every Monday night schedule set in this cron tab has been getting my reports reliably.

6) Manually test the two scripts by launching the scripts in a shell by typing in the folder that contains the scripts:

./getDailyReports.sh

./getWeeklyPreviousSunday.sh

Let me know what you think,
Jim

About the author

Jim Range

Jim Range has over a decade of experience architecting and implementing software based solutions for numerous fortune 500 companies in industries such as financial services, retail, and insurance, as well as small businesses. Jim has an excellent understanding of the software development lifecycle, agile development, and how to manage the development of an app. Over the past six years Jim has been focused on mobile software development. He has created over 138 apps that have been downloaded more than 9 million times from the Apple App Store, Google Play, Amazon.com and Windows Phone Store. Jim also has experience as an information security consultant where he has provided numerous network and web application security assessments for Fortune 500 companies in the financial services, retail and insurance industries.