How to retrieve the list of top 1000 games in the iOS App Store in real-time - ios

I'd like to retrieve the list of top 1000 apps (specifically games) in the iOS App Store in real-time. This information is public (at least the top 300), but Apple doesn't offer any API or automated way to fetch these lists. Does anyone know a good service for this?
I've listed similar topics in forums below, as well as different useful resources. Most of these help you track your own applications, but I'm interested in following trends for ALL apps in the App Store.
Thanks!
Similar topics:
How can I use Appstore API to get top100 list? What is the common architecture to build a appstore application website?
https://stackoverflow.com/questions/2689711/itunes-app-store-api
http://www.cocos2d-iphone.org/forum/topic/13167
Solutions:
http://www.appfigures.com
http://majicjungle.com
http://itunes.apple.com/rss/generator

There appears to be no documented public API, but you can (currently) still get at the data.
You can use wireshark (or similar) to figure out the URL sequences and the user agent that iTunes on a Mac or PC uses to get all the popularity sorted pages that it displays when manually clicking through the pages. It's all (currently) done in plain HTTP. You can get 100's of pages for many 1000's of apps this way. Then parse and decode the XML returned for these URLs to get the app names displayed on each page. A bunch of perl scripts driving wget or curl might work.
Note that the URLs, user agent and the format of the XML returned often changes when Apple updates iTunes. So you will need to periodically re-adapt your retrieval mechanism.

Related

Building an IOS app just using a Webpage

I'm new to IOS development and wanted to make an app for learning purposes. My idea is that I have a Single Webpage that has a live count of how many people are in the gyms on my University's Campus.
How can I pull data from that webpage and show it on my app with a little bit of arithmetic such as :
Database how many people are usually in the gym at a particular time and then give predictions.
let users chose a preferential gym and give them notifications based on their regular check in times
if the rate of entry in the gym is high, then notify users to avoid going then. and vice-versa.
I don't want answer to all the above, but if you could give me a heading, that would be awesome!
EDIT 1:
The webpage looks like this : https://studentaffairs.psu.edu/CurrentFitnessAttendance/
Your question is too vague for a specific answer.
You need a back-end API into your web page. It could be as simples as a PHP or Python script that responds to http get requests and returns JSON data with the statistics you want. You'd then write your app to issue the appropriate query, parse the response, and display the results to your users.
Notifications would be more complicated. You'd probably need to set up remote notifications, which would require support on the server side and registering with Apple' remote notification service.

Why does iTunes Store Reviews RSS feed sometimes return no results?

I'm trying to import reviews for certain apps on the iTunes App Store via the public reviews RSS feed. Most of the time the feed returns a list of 50 reviews per page, and gives me links for up to 10 pages. But in the case of some apps, some or all of those pages have 0 reviews, and I can't tell why.
At the time of this writing, the feed for Instagram (link below) returns no reviews, despite reporting that there's 10 pages of reviews available.
https://itunes.apple.com/us/rss/customerreviews/page=1/id=389801252/sortBy=mostrecent/xml
Even more confusing, I noticed last night that page 2 had 50 reviews but none of the other pages had any. This morning, page 2 is empty again.
If I remove the sortBy=mostrecent portion of the URL above, I actually do get 50 results back, but none of the other pages have any results.
Finally, it appears as if the JSON version of this page (link below) actually returns results better than the XML version. Unfortunately, the JSON version leaves off the date of the review in the data so I can't use it.
https://itunes.apple.com/us/rss/customerreviews/page=1/id=389801252/sortBy=mostrecent/json
Can anyone explain this? Is Apple's XML feed API just extremely unreliable? Am I forming a bad URL?
While this answer isn't very satisfying, it's the best I could work out after many trials. It appears as if the XML feed is really fallible and shouldn't be used for real-world usage. Furthermore, when using the public JSON feed, certain fields such as review date are missing. Neither feed reports developer response.
It's also clear that Apple doesn't use these feeds for iTunes (desktop) or App Store (iOS). I ultimately reverse-engineered the way iTunes requests review data and figured out that making a request the same way, making sure to match their User Agent and version, would return the data I needed. These requests seem to be rate-limited to a certain extent and the data comes as a mix of HTML and JSON that requires a lot of parsing. Furthermore, because they're private calls, Apple could easily shut the door at any moment.

What is a good strategy for staying up-to-date with external API's?

My project is reliant on several API's, like Twitter and Youtube for example. Recently, Youtube deprecated their old API, and it caused issues with my team's iPad app.
We could have stayed ahead of the change if we were paying attention to Youtube's announcements of the upcoming deprecation. But alas, we were not and the idea of staying up to date with all of our dependencies manually(browsing the web) seems exhausting and inefficient.
I have found the following tool to help notify when changes occur with external library dependencies, https://libraries.io. However, this does not help with API dependencies.
Besides checking the API source webpages every so often, I was wondering if anyone had suggestions on how to stay notified and up-to-date with news regarding updates to a specified list of external API's?
After some time looking at different options, I have found a solution that is not perfect, but seems to work best at fitting this need.
Solution Description
This solution uses a combination of Twitter, Google Scripts, and website blogtrottr.com. I am creating a twitter list of reliable dev handles that often post updates on new API. For example I made a list that contained #twitterapi and #YouTubeDev. Used Google Scripts to create an online feed out of the twitter list. Then used blogtrottr to email me every time that feed gets a new posting.
Steps to Implement
Create a twitter list of reliable handles that often post about updates to their API
Create an RSS Feed from that Twitter list. The details for how to do this can be found here.
Plug that url that you get from Google Script into blogtrotter.
I did find some other ways to do this, but so far this is the only solution that was 100% free!

App Store price drops and updates info

I found a couple of websites which somehow collect App store price changes, updates, etc.
My question is - where does websites like:
148apps.com
appdropp.com
etc.
get their info? I signed up as Apple affiliate and found that I can request apps info using the search or lookup APIs. But I can't send thousands of requests to check all apps day by day, it seems to be a huge task.
Is there any other available option to get this info?
They may be using this, Enterprise Partner Feed
It looks like it would provide what you're looking.
They are using EPF feed, provided by Apple.
You can check their Python tool to import feed to database.
You can also take a look on websites like:
http://www.apptweak.com, or http://www.appsocean.com
If you know PHP (for example), you can write a simple spider to grab price drops and updates.
Just read more about PHP CURL library.

iOS app without API, alternatives?

Im thinking about learn to develop app for iOS. I had a lot of ideas, but most of them i would need the API of that website. For example: http://www.filmaffinity.com/en/main.html
The point is: is there any other possibility of collect/use information of a site without the API, anything else without the typical parsing or scraping?
Thanks you
To get the most up to date information to your users, you would need to use the API. If you want to store the data locally, you could do some initial scraping and build up your own database and distribute it within your app. This approach is not ideal because your data may become out of date quickly (unless you have a database update mechanism) and the owners of the sites you are scraping may not take too kindly on the matter

Resources