In this project, I will analyze data to provide insights on the kind of apps our developers should be writing for more users and hence more profits since our main revenue come from in-app ads.
from csv import reader
### Google data set ###
opened_file = open('googleplaystore.csv')
read_file = reader(opened_file)
android = list(read_file)
android_header = android[0]
android = android[1:]
### Apple data set ###
opened_file = open('AppleStore.csv')
read_file = reader(opened_file)
ios = list(read_file)
ios_header = ios[0]
ios = ios[1:]
def explore_data(dataset, start, end, rows_and_columns=False):
dataset_slice = dataset[start:end]
for row in dataset_slice:
print(row)
print('\n') # adds a new (empty) line after each row
if rows_and_columns:
print('Number of rows:', len(dataset))
print('Number of columns:', len(dataset[0]))
explore_data(ios,0,3,True)
['284882215', 'Facebook', '389879808', 'USD', '0.0', '2974676', '212', '3.5', '3.5', '95.0', '4+', 'Social Networking', '37', '1', '29', '1'] ['389801252', 'Instagram', '113954816', 'USD', '0.0', '2161558', '1289', '4.5', '4.0', '10.23', '12+', 'Photo & Video', '37', '0', '29', '1'] ['529479190', 'Clash of Clans', '116476928', 'USD', '0.0', '2130805', '579', '4.5', '4.5', '9.24.12', '9+', 'Games', '38', '5', '18', '1'] Number of rows: 7197 Number of columns: 16
There are 16 columns in the app store dataset. Price, user_rating, prime_genre.rating_count_ver seems to be useful for our analysis.
Now Lets look at the android dataset.
explore_data (android,0,3,True)
['Photo Editor & Candy Camera & Grid & ScrapBook', 'ART_AND_DESIGN', '4.1', '159', '19M', '10,000+', 'Free', '0', 'Everyone', 'Art & Design', 'January 7, 2018', '1.0.0', '4.0.3 and up'] ['Coloring book moana', 'ART_AND_DESIGN', '3.9', '967', '14M', '500,000+', 'Free', '0', 'Everyone', 'Art & Design;Pretend Play', 'January 15, 2018', '2.0.0', '4.0.3 and up'] ['U Launcher Lite – FREE Live Cool Themes, Hide Apps', 'ART_AND_DESIGN', '4.7', '87510', '8.7M', '5,000,000+', 'Free', '0', 'Everyone', 'Art & Design', 'August 1, 2018', '1.2.4', '4.0.3 and up'] Number of rows: 10841 Number of columns: 13
There are 13 columns in the andoid dataset, the 'Price', 'Type', 'Category' seems useful for the analysis.
print(android[10472]) # incorrect row
print('\n')
print(android_header) # header
print('\n')
print(android[0]) # correct row
['Life Made WI-Fi Touchscreen Photo Frame', '1.9', '19', '3.0M', '1,000+', 'Free', '0', 'Everyone', '', 'February 11, 2018', '1.0.19', '4.0 and up'] ['App', 'Category', 'Rating', 'Reviews', 'Size', 'Installs', 'Type', 'Price', 'Content Rating', 'Genres', 'Last Updated', 'Current Ver', 'Android Ver'] ['Photo Editor & Candy Camera & Grid & ScrapBook', 'ART_AND_DESIGN', '4.1', '159', '19M', '10,000+', 'Free', '0', 'Everyone', 'Art & Design', 'January 7, 2018', '1.0.0', '4.0.3 and up']
print(len(android))
del android[10472] # don't run this more than once
print(len(android))
10841 10840
for app in android:
name = app[0]
if name == 'Instagram':
print(app)
['Instagram', 'SOCIAL', '4.5', '66577313', 'Varies with device', '1,000,000,000+', 'Free', '0', 'Teen', 'Social', 'July 31, 2018', 'Varies with device', 'Varies with device'] ['Instagram', 'SOCIAL', '4.5', '66577446', 'Varies with device', '1,000,000,000+', 'Free', '0', 'Teen', 'Social', 'July 31, 2018', 'Varies with device', 'Varies with device'] ['Instagram', 'SOCIAL', '4.5', '66577313', 'Varies with device', '1,000,000,000+', 'Free', '0', 'Teen', 'Social', 'July 31, 2018', 'Varies with device', 'Varies with device'] ['Instagram', 'SOCIAL', '4.5', '66509917', 'Varies with device', '1,000,000,000+', 'Free', '0', 'Teen', 'Social', 'July 31, 2018', 'Varies with device', 'Varies with device']
We can see that there are some duplicate apps and we do not want to count them more than once, so we need to delete the duplicate ones. We can also see that the main difference for each entry come from the number of reviews which means the data were fetched at a different time, we want to keep the one with the most numbers as it will be the latest.
duplicate_apps = []
unique_apps = []
for app in android:
name = app[0]
if name in unique_apps:
duplicate_apps.append(name)
else:
unique_apps.append(name)
print('Number of duplicate apps:', len(duplicate_apps))
print('\n')
print('Examples of duplicate apps:', duplicate_apps[:5])
Number of duplicate apps: 1181 Examples of duplicate apps: ['Quick PDF Scanner + OCR FREE', 'Box', 'Google My Business', 'ZOOM Cloud Meetings', 'join.me - Simple Meetings']
See, a stunning 1181 duplicate entries!
To clean these up for our analysis, we will:
Create a dictionary where each key is a unique app name, and the value is the highest number of reviews of that app
Use the dictionary to create a new data set, which will have only one entry per app (and we only select the apps with the highest number of reviews)
reviews_max = {}
for app in android:
name = app[0]
n_reviews = float(app[3])
if name in reviews_max and reviews_max[name] < n_reviews:
reviews_max[name] = n_reviews
elif name not in reviews_max:
reviews_max[name] = n_reviews
print('Expected length:', len(android) - 1181)
print('Actual length:', len(reviews_max))
Expected length: 9659 Actual length: 9659
android_clean = []
already_added = []
for app in android:
name = app[0]
n_reviews = float(app[3])
if (reviews_max[name] == n_reviews) and (name not in already_added):
android_clean.append(app)
already_added.append(name)
explore_data(android_clean, 0, 4, True)
['Photo Editor & Candy Camera & Grid & ScrapBook', 'ART_AND_DESIGN', '4.1', '159', '19M', '10,000+', 'Free', '0', 'Everyone', 'Art & Design', 'January 7, 2018', '1.0.0', '4.0.3 and up'] ['U Launcher Lite – FREE Live Cool Themes, Hide Apps', 'ART_AND_DESIGN', '4.7', '87510', '8.7M', '5,000,000+', 'Free', '0', 'Everyone', 'Art & Design', 'August 1, 2018', '1.2.4', '4.0.3 and up'] ['Sketch - Draw & Paint', 'ART_AND_DESIGN', '4.5', '215644', '25M', '50,000,000+', 'Free', '0', 'Teen', 'Art & Design', 'June 8, 2018', 'Varies with device', '4.2 and up'] ['Pixel Draw - Number Art Coloring Book', 'ART_AND_DESIGN', '4.3', '967', '2.8M', '100,000+', 'Free', '0', 'Everyone', 'Art & Design;Creativity', 'June 20, 2018', '1.1', '4.4 and up'] Number of rows: 9659 Number of columns: 13
print(ios[813][1])
print(ios[6731][1])
print(android_clean[4412][0])
print(android_clean[7940][0])
爱奇艺PPS -《欢乐颂2》电视剧热播 【脱出ゲーム】絶対に最後までプレイしないで 〜謎解き&ブロックパズル〜 中国語 AQリスニング لعبة تقدر تربح DZ
We are not interested in non-english apps and hence we have to figure out a way to remove them from our dataset
def is_english(string):
for character in string:
if ord(character) > 127:
return False
return True
print(is_english('Instagram'))
print(is_english('【脱出ゲーム】絶対に最後までプレイしないで 〜謎解き&ブロックパズル'))
True False
print(is_english('Docs To Go™ Free Office Suite'))
print(is_english('Instachat 😜'))
print(ord('™'))
print(ord('😜'))
False False 8482 128540
If we use the function above, we might remove english apps that uses special characters. Therefore we have to refine our little detective
def is_english(string):
non_ascii = 0
for character in string:
if ord(character) > 127:
non_ascii += 1
if non_ascii > 3:
return False
else:
return True
print(is_english('Docs To Go™ Free Office Suite'))
print(is_english('Instachat 😜'))
True True
android_english = []
ios_english = []
for app in android_clean:
name = app[0]
if is_english(name):
android_english.append(app)
for app in ios:
name = app[1]
if is_english(name):
ios_english.append(app)
explore_data(android_english, 0, 3, True)
print('\n')
explore_data(ios_english, 0, 3, True)
['Photo Editor & Candy Camera & Grid & ScrapBook', 'ART_AND_DESIGN', '4.1', '159', '19M', '10,000+', 'Free', '0', 'Everyone', 'Art & Design', 'January 7, 2018', '1.0.0', '4.0.3 and up'] ['U Launcher Lite – FREE Live Cool Themes, Hide Apps', 'ART_AND_DESIGN', '4.7', '87510', '8.7M', '5,000,000+', 'Free', '0', 'Everyone', 'Art & Design', 'August 1, 2018', '1.2.4', '4.0.3 and up'] ['Sketch - Draw & Paint', 'ART_AND_DESIGN', '4.5', '215644', '25M', '50,000,000+', 'Free', '0', 'Teen', 'Art & Design', 'June 8, 2018', 'Varies with device', '4.2 and up'] Number of rows: 9614 Number of columns: 13 ['284882215', 'Facebook', '389879808', 'USD', '0.0', '2974676', '212', '3.5', '3.5', '95.0', '4+', 'Social Networking', '37', '1', '29', '1'] ['389801252', 'Instagram', '113954816', 'USD', '0.0', '2161558', '1289', '4.5', '4.0', '10.23', '12+', 'Photo & Video', '37', '0', '29', '1'] ['529479190', 'Clash of Clans', '116476928', 'USD', '0.0', '2130805', '579', '4.5', '4.5', '9.24.12', '9+', 'Games', '38', '5', '18', '1'] Number of rows: 6183 Number of columns: 16
android_final = []
ios_final = []
for app in android_english:
price = app[7]
if price == '0':
android_final.append(app)
for app in ios_english:
price = app[4]
if price == '0.0':
ios_final.append(app)
print(len(android_final))
print(len(ios_final))
8864 3222
As we mentioned in the introduction, our aim is to determine the kinds of apps that are likely to attract more users because our revenue is highly influenced by the number of people using our apps.
To minimize risks and overhead, our validation strategy for an app idea is comprised of three steps:
Build a minimal Android version of the app, and add it to Google Play. If the app has a good response from users, we then develop it further. If the app is profitable after six months, we also build an iOS version of the app and add it to the App Store. Because our end goal is to add the app on both the App Store and Google Play, we need to find app profiles that are successful on both markets. For instance, a profile that might work well for both markets might be a productivity app that makes use of gamification.
Let's begin the analysis by getting a sense of the most common genres for each market. For this, we'll build a frequency table for the prime_genre column of the App Store data set, and the Genres and Category columns of the Google Play data set.
def freq_table(dataset, index):
table = {}
total = 0
for row in dataset:
total += 1
value = row[index]
if value in table:
table[value] += 1
else:
table[value] = 1
table_percentages = {}
for key in table:
percentage = (table[key] / total) * 100
table_percentages[key] = percentage
return table_percentages
def display_table(dataset, index):
table = freq_table(dataset, index)
table_display = []
for key in table:
key_val_as_tuple = (table[key], key)
table_display.append(key_val_as_tuple)
table_sorted = sorted(table_display, reverse = True)
for entry in table_sorted:
print(entry[1], ':', entry[0])
display_table(ios_final, -5)
Games : 58.16263190564867 Entertainment : 7.883302296710118 Photo & Video : 4.9658597144630665 Education : 3.662321539416512 Social Networking : 3.2898820608317814 Shopping : 2.60707635009311 Utilities : 2.5139664804469275 Sports : 2.1415270018621975 Music : 2.0484171322160147 Health & Fitness : 2.0173805090006205 Productivity : 1.7380509000620732 Lifestyle : 1.5828677839851024 News : 1.3345747982619491 Travel : 1.2414649286157666 Finance : 1.1173184357541899 Weather : 0.8690254500310366 Food & Drink : 0.8069522036002483 Reference : 0.5586592178770949 Business : 0.5276225946617008 Book : 0.4345127250155183 Navigation : 0.186219739292365 Medical : 0.186219739292365 Catalogs : 0.12414649286157665
display_table(android_final, 1)
FAMILY : 18.907942238267147 GAME : 9.724729241877256 TOOLS : 8.461191335740072 BUSINESS : 4.591606498194946 LIFESTYLE : 3.9034296028880866 PRODUCTIVITY : 3.892148014440433 FINANCE : 3.7003610108303246 MEDICAL : 3.531137184115524 SPORTS : 3.395758122743682 PERSONALIZATION : 3.3167870036101084 COMMUNICATION : 3.2378158844765346 HEALTH_AND_FITNESS : 3.0798736462093865 PHOTOGRAPHY : 2.944494584837545 NEWS_AND_MAGAZINES : 2.7978339350180503 SOCIAL : 2.6624548736462095 TRAVEL_AND_LOCAL : 2.33528880866426 SHOPPING : 2.2450361010830324 BOOKS_AND_REFERENCE : 2.1435018050541514 DATING : 1.861462093862816 VIDEO_PLAYERS : 1.7937725631768955 MAPS_AND_NAVIGATION : 1.3989169675090252 FOOD_AND_DRINK : 1.2409747292418771 EDUCATION : 1.1620036101083033 ENTERTAINMENT : 0.9589350180505415 LIBRARIES_AND_DEMO : 0.9363718411552346 AUTO_AND_VEHICLES : 0.9250902527075812 HOUSE_AND_HOME : 0.8235559566787004 WEATHER : 0.8009927797833934 EVENTS : 0.7107400722021661 PARENTING : 0.6543321299638989 ART_AND_DESIGN : 0.6430505415162455 COMICS : 0.6204873646209386 BEAUTY : 0.5979241877256317
We can see that the habitat of play store and app store is quite different as app store has games for more than half of its english free apps while the play store have a lot more practical free apps. It could be that app store offers their practical apps for a price while the play store offer them for free but for now we would just conclude that their offerings are quite different.
genres_ios = freq_table(ios_final, -5)
for genre in genres_ios:
total = 0
len_genre = 0
for app in ios_final:
genre_app = app[-5]
if genre_app == genre:
n_ratings = float(app[5])
total += n_ratings
len_genre += 1
avg_n_ratings = total / len_genre
print(genre, ':', avg_n_ratings)
Food & Drink : 33333.92307692308 Health & Fitness : 23298.015384615384 Navigation : 86090.33333333333 News : 21248.023255813954 Lifestyle : 16485.764705882353 Medical : 612.0 Games : 22788.6696905016 Shopping : 26919.690476190477 Reference : 74942.11111111111 Education : 7003.983050847458 Social Networking : 71548.34905660378 Productivity : 21028.410714285714 Weather : 52279.892857142855 Photo & Video : 28441.54375 Music : 57326.530303030304 Finance : 31467.944444444445 Travel : 28243.8 Book : 39758.5 Catalogs : 4004.0 Utilities : 18684.456790123455 Entertainment : 14029.830708661417 Sports : 23008.898550724636 Business : 7491.117647058823
On average, navigation apps have the highest number of user reviews.
for app in ios_final:
if app[-5] == 'Navigation':
print(app[1], ':', app[5])
Waze - GPS Navigation, Maps & Real-time Traffic : 345046 Google Maps - Navigation & Transit : 154911 Geocaching® : 12811 CoPilot GPS – Car Navigation & Offline Maps : 3582 ImmobilienScout24: Real Estate Search in Germany : 187 Railway Route Search : 5
We can see that a lot of people provided user reviews for Waze and Google maps which means navigation could potentially be a popular genre. However, with the 2 giants already present in the market, it's pretty hard for people to switch as navigation apps takes quite some time to get use to and people tend to stick with one app once they are used to the interface of that app and a lot of resources are required to be able to provide navigation (satelites). Therefore, natvigation should not be the genre we want to mess with.
for app in ios_final:
if app[-5] == 'Travel':
print(app[1], ':', app[5])
Google Earth : 446185 Yelp - Nearby Restaurants, Shopping & Services : 223885 GasBuddy : 145549 TripAdvisor Hotels Flights Restaurants : 56194 Uber : 49466 Lyft : 46922 HotelTonight - Great Deals on Last Minute Hotels : 32341 Hotels & Vacation Rentals by Booking.com : 31261 Southwest Airlines : 30552 Airbnb : 22302 Expedia Hotels, Flights & Vacation Package Deals : 10278 Fly Delta : 8094 Hopper - Predict, Watch & Book Flights : 6944 United Airlines : 5748 Skiplagged — Actually Cheap Flights & Hotels : 1851 Viator Tours & Activities : 1839 iExit Interstate Exit Guide : 1798 Gogo Entertainment : 1482 Google Street View : 1450 Webcams – EarthCam : 912 HISTORY Here : 685 DB Navigator : 512 Mobike - Dockless Bike Share : 494 MiFlight™ – Airport security line wait times at checkpoints for domestic and international travelers : 493 BlaBlaCar - Trusted Carpooling : 397 Six Flags : 353 Google Trips – Travel planner : 329 Voyages-sncf.com : book train and bus tickets : 268 Trainline UK: Live Train Times, Tickets & Planner : 248 Urlaubspiraten : 188 铁路12306 : 177 Ryanair - Cheapest Fares : 175 飞猪 : 154 Fleet Air Travel Guide & Airport Directory : 105 FlixBus - bus travel in Europe : 92 Ab in den Urlaub – Pauschalreisen günstig buchen : 22 SNCF : 7 skyticket - Reserve Best Valued Air Tickets : 0 Fluege.de - Finde den billigsten Flug : 0 VoiceTra(Voice Translator) : 0
This provides spome insights here. We can see similar number of user reviews for hotels/flight reservation apps. This means that not a single app could dominate this market and people simply do not have a strong preference on a particular company. If we could write an app that fetch reservation pricing from apps like expedia or airlines, we might be able to attract users who want to travel as they do not have to go through the hassle of browsing every app to compare pricing
Now lets move on to the play store
display_table(android_final, 5)
1,000,000+ : 15.726534296028879 100,000+ : 11.552346570397113 10,000,000+ : 10.548285198555957 10,000+ : 10.198555956678701 1,000+ : 8.393501805054152 100+ : 6.915613718411552 5,000,000+ : 6.825361010830325 500,000+ : 5.561823104693141 50,000+ : 4.7721119133574 5,000+ : 4.512635379061372 10+ : 3.5424187725631766 500+ : 3.2490974729241873 50,000,000+ : 2.3014440433213 100,000,000+ : 2.1322202166064983 50+ : 1.917870036101083 5+ : 0.78971119133574 1+ : 0.5076714801444043 500,000,000+ : 0.2707581227436823 1,000,000,000+ : 0.22563176895306858 0+ : 0.04512635379061372 0 : 0.01128158844765343
One problem with this data is that is not precise. For instance, we don't know whether an app with 100,000+ installs has 100,000 installs, 200,000, or 350,000. However, we don't need very precise data for our purposes — we only want to get an idea which app genres attract the most users, and we don't need perfect precision with respect to the number of users.
We're going to leave the numbers as they are, which means that we'll consider that an app with 100,000+ installs has 100,000 installs, and an app with 1,000,000+ installs has 1,000,000 installs, and so on.
To perform computations, however, we'll need to convert each install number to float — this means that we need to remove the commas and the plus characters, otherwise the conversion will fail and raise an error. We'll do this directly in the loop below, where we also compute the average number of installs for each genre (category).
categories_android = freq_table(android_final, 1)
for category in categories_android:
total = 0
len_category = 0
for app in android_final:
category_app = app[1]
if category_app == category:
n_installs = app[5]
n_installs = n_installs.replace(',', '')
n_installs = n_installs.replace('+', '')
total += float(n_installs)
len_category += 1
avg_n_installs = total / len_category
print(category, ':', avg_n_installs)
ART_AND_DESIGN : 1986335.0877192982 TRAVEL_AND_LOCAL : 13984077.710144928 ENTERTAINMENT : 11640705.88235294 NEWS_AND_MAGAZINES : 9549178.467741935 DATING : 854028.8303030303 MAPS_AND_NAVIGATION : 4056941.7741935486 BUSINESS : 1712290.1474201474 FAMILY : 3695641.8198090694 EDUCATION : 1833495.145631068 BEAUTY : 513151.88679245283 COMICS : 817657.2727272727 AUTO_AND_VEHICLES : 647317.8170731707 EVENTS : 253542.22222222222 PHOTOGRAPHY : 17840110.40229885 TOOLS : 10801391.298666667 FINANCE : 1387692.475609756 PARENTING : 542603.6206896552 SPORTS : 3638640.1428571427 COMMUNICATION : 38456119.167247385 FOOD_AND_DRINK : 1924897.7363636363 PERSONALIZATION : 5201482.6122448975 MEDICAL : 120550.61980830671 GAME : 15588015.603248259 BOOKS_AND_REFERENCE : 8767811.894736841 WEATHER : 5074486.197183099 LIFESTYLE : 1437816.2687861272 PRODUCTIVITY : 16787331.344927534 SOCIAL : 23253652.127118643 HEALTH_AND_FITNESS : 4188821.9853479853 HOUSE_AND_HOME : 1331540.5616438356 LIBRARIES_AND_DEMO : 638503.734939759 SHOPPING : 7036877.311557789 VIDEO_PLAYERS : 24727872.452830188
On average, communication apps have the most installs: 38,456,119. This number is heavily skewed up by a few apps that have over one billion installs (WhatsApp, Facebook Messenger, Skype, Google Chrome, Gmail, and Hangouts), and a few others with over 100 and 500 million installs:
for app in android_final:
if app[1] == 'COMMUNICATION' and (app[5] == '1,000,000,000+'
or app[5] == '500,000,000+'
or app[5] == '100,000,000+'):
print(app[0], ':', app[5])
WhatsApp Messenger : 1,000,000,000+ imo beta free calls and text : 100,000,000+ Android Messages : 100,000,000+ Google Duo - High Quality Video Calls : 500,000,000+ Messenger – Text and Video Chat for Free : 1,000,000,000+ imo free video calls and chat : 500,000,000+ Skype - free IM & video calls : 1,000,000,000+ Who : 100,000,000+ GO SMS Pro - Messenger, Free Themes, Emoji : 100,000,000+ LINE: Free Calls & Messages : 500,000,000+ Google Chrome: Fast & Secure : 1,000,000,000+ Firefox Browser fast & private : 100,000,000+ UC Browser - Fast Download Private & Secure : 500,000,000+ Gmail : 1,000,000,000+ Hangouts : 1,000,000,000+ Messenger Lite: Free Calls & Messages : 100,000,000+ Kik : 100,000,000+ KakaoTalk: Free Calls & Text : 100,000,000+ Opera Mini - fast web browser : 100,000,000+ Opera Browser: Fast and Secure : 100,000,000+ Telegram : 100,000,000+ Truecaller: Caller ID, SMS spam blocking & Dialer : 100,000,000+ UC Browser Mini -Tiny Fast Private & Secure : 100,000,000+ Viber Messenger : 500,000,000+ WeChat : 100,000,000+ Yahoo Mail – Stay Organized : 100,000,000+ BBM - Free Calls & Messages : 100,000,000+
under_100_m = []
for app in android_final:
n_installs = app[5]
n_installs = n_installs.replace(',', '')
n_installs = n_installs.replace('+', '')
if (app[1] == 'COMMUNICATION') and (float(n_installs) < 100000000):
under_100_m.append(float(n_installs))
sum(under_100_m) / len(under_100_m)
3603485.3884615386
We see the same pattern for the video players category, which is the runner-up with 24,727,872 installs. The market is dominated by apps like Youtube, Google Play Movies & TV, or MX Player. The pattern is repeated for social apps (where we have giants like Facebook, Instagram, Google+, etc.), photography apps (Google Photos and other popular photo editors), or productivity apps (Microsoft Word, Dropbox, Google Calendar, Evernote, etc.).
Again, the main concern is that these app genres might seem more popular than they really are. Moreover, these niches seem to be dominated by a few giants who are hard to compete against.
The game genre seems pretty popular, but previously we found out this part of the market seems a bit saturated, so we'd like to come up with a different app recommendation if possible.
Travel and local seems to have a pretty good number of users and we deemed it suitable in the habitat of app store therefore we will explore this genre as well here.
for app in android_final:
if app[1] == 'TRAVEL_AND_LOCAL':
print(app[0], ':', app[5])
trivago: Hotels & Travel : 50,000,000+ Hopper - Watch & Book Flights : 5,000,000+ TripIt: Travel Organizer : 1,000,000+ Trip by Skyscanner - City & Travel Guide : 500,000+ CityMaps2Go Plan Trips Travel Guide Offline Maps : 1,000,000+ KAYAK Flights, Hotels & Cars : 10,000,000+ World Travel Guide by Triposo : 500,000+ Booking.com Travel Deals : 100,000,000+ Hostelworld: Hostels & Cheap Hotels Travel App : 1,000,000+ Google Trips - Travel Planner : 5,000,000+ GPS Map Free : 5,000,000+ GasBuddy: Find Cheap Gas : 10,000,000+ Southwest Airlines : 5,000,000+ AT&T Navigator: Maps, Traffic : 10,000,000+ VZ Navigator : 50,000,000+ KakaoMap - Map / Navigation : 10,000,000+ AirAsia : 10,000,000+ Expedia Hotels, Flights & Car Rental Travel Deals : 10,000,000+ Goibibo - Flight Hotel Bus Car IRCTC Booking App : 10,000,000+ Allegiant : 1,000,000+ Amtrak : 1,000,000+ JAL (Domestic and international flights) : 1,000,000+ Flight & Hotel Booking App - ixigo : 5,000,000+ VZ Navigator for Tablets : 500,000+ TripAdvisor Hotels Flights Restaurants Attractions : 100,000,000+ HSL - Tickets, route planner and information : 100,000+ Wisepilot for XPERIA™ : 5,000,000+ VZ Navigator for Galaxy S4 : 5,000,000+ MAIN : 1,000,000+ Yoriza Pension - travel, lodging, pension, camping, caravan, pool villas accommodation discount : 1,000,000+ Foursquare Swarm: Check In : 10,000,000+ PagesJaunes - local search : 10,000,000+ Flightradar24 Flight Tracker : 10,000,000+ Yatra - Flights, Hotels, Bus, Trains & Cabs : 10,000,000+ SNCF : 5,000,000+ Fly Delta : 5,000,000+ Skyscanner : 10,000,000+ Despegar.com Hotels and Flights : 10,000,000+ Navigation Plus : 1,000,000+ 2GIS: directory & navigator : 50,000,000+ Poynt : 5,000,000+ Gaode Map : 1,000,000+ Priceline Hotel Deals, Rental Cars & Flights : 5,000,000+ TravelPirates : 1,000,000+ Free Radar Detector : 1,000,000+ American Airlines : 5,000,000+ Where to travel - ticket. hotel. train ticket. car ticket. travel. tickets : 1,000,000+ United Airlines : 5,000,000+ NTES : 10,000,000+ Where is my Train : Indian Railway & PNR Status : 10,000,000+ MakeMyTrip-Flight Hotel Bus Cab IRCTC Rail Booking : 10,000,000+ Restaurant Finder : 1,000,000+ Zagat : 100,000+ Gormey: Find Best Restaurants : 1,000+ Find Dining Restaurant Finder : 100,000+ Urbanspoon Restaurant Reviews : 5,000,000+ Yelp: Food, Shopping, Services Nearby : 10,000,000+ Qatar Airways : 1,000,000+ Hipmunk Hotels & Flights : 1,000,000+ Skiplagged — Exclusive Flights & Hotels : 1,000,000+ CWT To Go : 100,000+ British Airways : 1,000,000+ Cheap Flights & Hotels momondo : 5,000,000+ CheapTickets – Hotels, Flights & Travel Deals : 1,000,000+ JetBlue : 1,000,000+ Flights : 1,000,000+ Cheapflights – Flight Search : 5,000,000+ KLM - Royal Dutch Airlines : 1,000,000+ Orbitz - Hotels, Flights & Package Deals : 1,000,000+ Lufthansa : 1,000,000+ easyJet: Travel App : 10,000,000+ IndiGo : 5,000,000+ LateRooms: Find Hotel Deals : 1,000,000+ Choice Hotels : 1,000,000+ Couchsurfing Travel App : 1,000,000+ Hotwire Hotel & Car Rental App : 1,000,000+ HOTEL DEALS : 100,000+ HomeAway Vacation Rentals : 5,000,000+ IHG®: Hotel Deals & Rewards : 1,000,000+ SPG: Starwood Hotels & Resorts : 1,000,000+ Hotels.com: Book Hotel Rooms & Find Vacation Deals : 10,000,000+ HotelTonight: Book amazing deals at great hotels : 5,000,000+ Airbnb : 10,000,000+ Hotels Combined - Cheap deals : 5,000,000+ Agoda – Hotel Booking Deals : 10,000,000+ Turo - Better Than Car Rental : 1,000,000+ Ascape VR: 360° Virtual Travel : 100,000+ Cheap hotel deals and discounts — Hotellook : 1,000,000+ Maps - Navigate & Explore : 1,000,000,000+ GPS Status & Toolbox : 10,000,000+ Airport + Flight Tracker Radar : 1,000,000+ Scout GPS Navigation & Meet Up : 5,000,000+ Street Panorama View : 1,000,000+ Geo Tracker - GPS tracker : 1,000,000+ DreamTrips : 500,000+ Navmii GPS USA (Navfree) : 500,000+ Sygic Truck GPS Navigation : 1,000,000+ Google Street View : 1,000,000,000+ Air Transat CinePlus B : 50,000+ U-Haul : 100,000+ Octo U: Your driving companion : 50,000+ Flexiroam X : 100,000+ Connect.ae - Local Search UAE : 10,000+ Toppen af Danmark : 5,000+ Alabama Road Trips : 10,000+ Official AL Fishing & Hunting : 50,000+ Where Am I At? : 10,000+ Where Am I? GPS Loc : 10,000+ Live Camera Viewer ★ World Webcam & IP Cam Streams : 10,000,000+ Portal AR - Step Into Scotland : 5,000+ Casino AZ/Talking Stick Resort : 10,000+ Explore Sedona & Northern AZ : 10,000+ Arizona Trail : 5,000+ Phoenix and Arizona Cameras : 10,000+ Experience BA : 100+ BA Status : 100+ Avios for Android : 100,000+ Explore British Columbia - BC Travel Guide : 500+ BC Highways - Road Conditions : 10,000+ Victoria, BC | Tour City : 1,000+ British Columbia Tourist Places (Guide) : 100+ BG Metro - Red voznje : 1,000+ BG Guide : 100+ trip.bg : 1,000+ Belo Horizonte Map offline : 1,000+ BH Mission Playbook : 100+ BH Rocking : 100+ Digital Tourist BH Itinerary : 500+ BL info : 5,000+ BPme - Mobile Fuel Payment & BP Driver Rewards app : 10,000+ Wherever BQ : 50+ BU Dental GoGoldman : 100+ BU Questrom Launch : 100+ BU School of Public Health : 10+ BV Aventure : 100+ BV Rando : 100+ Best Western To Go : 100,000+ BW Map mobile : 10,000+ Best Western e-Concierge Hotel : 10,000+ 24/7 BZ Reis : 100,000+ BZ Vesper-App : 1,000+ Restaurantführer Südbaden : 1,000+ BZ Straußenführer : 10,000+ California Cameras - Traffic : 10,000+ Kiosque CD : 5+ US 115th CD : 5+ CE AH VLJ : 1,000+ search.ch : 500,000+ CJ's Coffee Cafe : 500+ Camping and Co - Camping in Europe : 1,000+ CQ Hotels : 10,000+ SHUTTLLS CQ - Connect Ride Go : 5+ Cathay Pacific : 1,000,000+ Map of Cyprus offline : 10,000+ DB BAHN : 500+ DB FahrtProfi : 1,000+ DC Metro Transit - Free : 500,000+ DC Trails-Hop On Hop Off Tours : 5,000+ Can I pack that? - DG App : 10,000+ DG Cars : 10,000+ DK Eyewitness Audio Walks : 1,000+ DM Transfers Dalaman Transfers : 10,000+ US DV Lottery 2020 Apply : 10,000+ US DV Lottery 2019 : 1,000+ DW Maps : 10,000+ junainfo.dy.fi : 100+ Siyaha Dz : 10,000+ IRIS : Customer Service - DZ Algeria : 1,000+ DZ Fly Algérie Horaire Vols : 10,000+ EA Plus : 1,000+ EB Events : 10,000+ Audiowalk EB : 10+ EF Go Ahead Tour Companion : 1,000+ EF Summits : 100+ EG SIM CARD (EGSIMCARD) : 10,000+ The Emirates App : 1,000,000+ Ek-yatri: Travel where you Belong : 1+ EL AL Flights : 100,000+ DreamStream By EL AL : 100,000+ El Dorado App : 10,000+ EO Hotels : 100+ Fill 'er Up : 5,000+ MAPS.ME – Offline Map and Travel Navigation : 50,000,000+ Google Earth : 100,000,000+ Offline Maps & Navigation : 5,000,000+ myLPG.eu : 50,000+ Passenger rights : 50,000+ taxi.eu : 100,000+ To-U - free EV public charging : 1,000+ Bird - Enjoy The Ride : 500,000+ eCooltra: scooter sharing. Share electric scooters : 100,000+ XE Currency : 10,000,000+ Etihad Airways : 500,000+ EZ TAG Express : 10,000+ Santa Fe Map and Walks : 1,000+ Santa Fe VIP Tours : 100+ Toyota Cruisers & Trucks Mag : 500+ FL State Parks Guide : 100,000+ Florida Travel Guide : 1,000+ The Florida Trail Guide : 5,000+ Florida Keys : 10,000+ Florida Travel Guide - TOURIAS : 10,000+ Florida map : 5,000+ Florida Beach Wallpapers HD : 100+ ORLANDO FLORIDA MAP : 1,000+ Florida Offline Road Map : 10,000+ Florida Map offline : 1,000+
Again, similar trend is seen here that not a single super popular giant company stands out from the crowd therefore the market still have room and potentials. An app that can gather reservation pricing from airlines, travel agencies can fill in the current gap in the market.
In this project, we analyzed data about the App Store and Google Play mobile apps with the goal of recommending an app profile that can be profitable for both markets.
We concluded that an app gathering reservation details and pricing from different airlines and travel agencies can attract a lot of users since it can do the manual comparasion for users.