NAV Navbar
shell ruby python java php

Introduction

AppEverything API gives you access to:

Quick Overview

A few quick details about our REST API:

Type Description
SSL only We require that all requests are done over SSL.
UTF-8 encoding We use UTF-8 everywhere.
Method GET for all read calls, PUT to submit a new app.
Version number The current version of our API is v1.
Multi-records format JSON dictionaries separated by newlines also known as JSON Lines (JSONL).
Date format All dates in the API are strings in the following format: YYYY-MM-DD.
Error handling Errors are returned using listed HTTP error codes.
Bulk API requests Bulk API requests return request ID to validate request:
Request ID is sent via X-Request-ID HTTP Header. You may get the status of request using Request Status API.

Compression

Our REST API allows the use of compression on the request and the response, using the standards defined by the HTTP 1.1 specification. Some clients will automatically use compression but for some it has to be turned on manually.

To use compression make sure your requests to our API include the following header Accept-Encoding: gzip. Our API will compress the response if this header is specified. For more information on how to add this header refer to code examples below.

Authentication

Requests to the REST API are protected with HTTP Basic authentication. You must provide your API key to each request made against our API. You can always get a new one here . If you lost your key you can just enter your email again and we will retrieve it for you.

Errors

The API uses the following error codes:

Error Code Meaning
400 Bad input parameter or malformed request. The error message should indicate what is specifically wrong.
401 Missing or bad API key (email datageeks[at]appmonsta.com if you need a new API key).
403 You're requesting something your subscription doesn't cover (email datageeks[at]appmonsta.com if you'd like to change your subscription).
404 The data isn't available yet. This may be because we're still collecting it.
429 You've exceeded the rate limit for the API you're trying to access. Wait a little or contact datageeks[at]appmonsta.com.
500 Something went wrong on our end. Email us at datageeks[at]appmonsta.com with the details of your API request, and we'll troubleshoot it ASAP.

Platform Specific Fields

Some of the fields are limited to only a particular platform (either Google Play or App Store). In that case we tag the field description with the appropriate icon:

Icon Meaning
android_only Field available only for Android apps.
itunes_only Field available only for iOS apps.

App rankings

General rankings

Don't forget to replace {API_KEY} with your actual API key.

curl --compress -u "{API_KEY}:X" \
     "https://api.appmonsta.com/v1/stores/android/rankings.json?date=2018-12-11&country=US"
require 'net/https'
require 'json'

# Request Parameters
store = "android"       # Could be either "android" or "itunes".
country_code = "US"     # Two letter country code.
date = "2018-12-11"     # Date in YYYY-MM-DD format.

# Auth Parameters
username = "{API_KEY}"  # Replace {API_KEY} with your API own key.
password = "X"          # Password can be anything.

# Request URL
uri = URI("https://api.appmonsta.com/v1/stores/android/rankings.json?date=#{date}&country=#{country_code}")

# Ruby Main Code Sample
Net::HTTP.start(uri.host, uri.port,
  :use_ssl => uri.scheme == 'https') do |http|
  request = Net::HTTP::Get.new uri
  request.basic_auth username, password

  http.request request do |response|
      response.read_body do |chunk|
        # Load json object and print it out
        begin
          chunk.each_line do |line|
          json_record = JSON.parse(line)
          print json_record
          end
        rescue JSON::ParserError
        end
    end
  end
end
# This example uses Python Requests library http://docs.python-requests.org/en/master/
import requests
import json

# Request Parameters
store = "android"       # Could be either "android" or "itunes".
country_code = "US"     # Two letter country code.
date = "2018-12-11"     # Date in YYYY-MM-DD format.

req_params = {"date": date,
              "country": country_code}

# Auth Parameters
username = "{API_KEY}"  # Replace {API_KEY} with your own API key.
password = "X"          # Password can be anything.

# Request URL
request_url = "https://api.appmonsta.com/v1/stores/%s/rankings.json" % store

# This header turns on compression to reduce the bandwidth usage and transfer time.
headers = {'Accept-Encoding': 'deflate, gzip'}

# Python Main Code Sample
response = requests.get(request_url,
                        auth=(username, password),
                        params=req_params,
                        headers=headers,
                        stream=True)

print response.status_code
for line in response.iter_lines():
  # Load json object and print it out
  json_record = json.loads(line)
  print json_record
// This example uses java Unirest library http://unirest.io/java.html

// Request Parameters
store = "android";      // Could be either "android" or "itunes".
countryCode = "US";     // Two letter country code.
date = "2018-12-11";    // Date in YYYY-MM-DD format.

// Auth Parameters
username = "{API_KEY}"; // Replace {API_KEY} with your own API key.
password = "X";         // Password can be anything.

// Request URL
requestUrl = "https://api.appmonsta.com/v1/stores/" + store + "/rankings.json";

// Java Main Code Sample
HttpResponse response = Unirest.get(requestUrl)
  // This header turns on compression to reduce the bandwidth usage and transfer time.
  .header("Accept-Encoding", "deflate, gzip")
  .basicAuth(username, password)  
  .queryString("country", $countryCode),
  .queryString("date", $date),
  .asString();

int status = response.getStatus();

BufferedReader in = new BufferedReader(new InputStreamReader(response.getRawBody()));
String line = null;
while((line = in.readLine()) != null) {
  System.out.println(line);
}
<?php
// Request Parameters
$store = "android";      // Could be either "android" or "itunes".
$countryCode = "US";     // Two letter country code.
$date = "2018-12-11";    // Date in YYYY-MM-DD format.

// Auth Parameters
$username = "{API_KEY}"; // Replace {API_KEY} with your own API key.
$password = "X";         // Password can be anything.

// Request URL
$url = "https://api.appmonsta.com/v1/stores/$store/rankings.json?country=$countryCode&date=$date";

// PHP Main Code Sample
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 500);
curl_setopt($ch, CURLOPT_WRITEFUNCTION, function($curl, $data) {
    // Load json object and print it out
    $json_record = json_decode((string)$data, true);
    echo json_encode($json_record);
    return strlen($data);
});
curl_exec($ch);
curl_close($ch);
?>

The above code loads one JSON per line and prints it out:

{
  "rank_list": "apps_movers_shakers-ANDROID_WEAR",
  "app_name": "Robinhood: Invest in Stock, Crypto, ETF & Coin",
  "timestamp": "2018-10-01 17:13:59",
  "country": "US",
  "price": "Free",
  "app_id": "com.robinhood.android",
  "rank": 1,
  "publisher_id": "Robinhood",
  "icon_url": "https://lh3.googleusercontent.com/LvWOyUYOe8xovqUdbIoMCIUnqoW2gInudnwzczSFsCAvP20BqKTFZHWBdTl_j9WdPBPW=w170-rw",
  "publisher_name": "Robinhood",
  "avg_rating": "4.6"
}

Request all rankings by date and by country. This call returns ranking records with all the available meta-data from the store's ranking list page.

HTTPS Request

GET https://api.appmonsta.com/v1/stores/<store>/rankings.json?country=<country_code>&date=<date>

Request Parameters

Parameter Required Value
store Yes android or itunes.
country_code Yes The two letter country code of any country you've subscribed to.
E.g.: US, DE, AU, FR, GB, HK, etc.
date Yes In the following format: YYYY-MM-DD.

Response Fields

Field Description
app_id The app ID of the app.
app_name The name of the app.
avg_rating An average of the individual ratings, based on a 1-5 scale. android_only
country The country this ranking list is for; 2 letter country code.
icon_url The url of the app icon.
price The price of the app, if it can be scraped from the ranking list.
publisher_id The ID of the publisher of this app as assigned by the store.
publisher_name The display name of the publisher of this app.
rank The numerical rank of this app in the given ranking list. Ie, the first app in the list would have 1 for this field, second app would have 2, etc.
rank_list The identifier of which ranking list this is for. We try and use whatever identifier the store uses when possible. If not, we use the display name of the ranking list from the store.
timestamp Date/hour when ranking was last updated.

Response Headers

Header Description
X-Request-ID The ID of the request to validate via Request Status API.

Aggregated rankings

Don't forget to replace {API_KEY} with your actual API key.

curl --compress -u "{API_KEY}:X" \
     "https://api.appmonsta.com/v1/stores/android/aggregate.json?date=2018-12-11&country=US"
require 'net/https'
require 'json'

# Request Parameters
store = "android"       # Could be either "android" or "itunes".
country_code = "US"     # Two letter country code.
date = "2018-12-11"     # Date in YYYY-MM-DD format.

# Auth Parameters
username = "{API_KEY}"  # Replace {API_KEY} with your API own key.
password = "X"          # Password can be anything.

# Request URL
uri = URI("https://api.appmonsta.com/v1/stores/android/aggregate.json?date=#{date}&country=#{country_code}")

# Ruby Main Code Sample
Net::HTTP.start(uri.host, uri.port,
  :use_ssl => uri.scheme == 'https') do |http|
  request = Net::HTTP::Get.new uri
  request.basic_auth username, password

  http.request request do |response|
      response.read_body do |chunk|
        # Load json object and print it out
        begin
          chunk.each_line do |line|
          json_record = JSON.parse(line)
          print json_record
          end
        rescue JSON::ParserError
        end
    end
  end
end
# This example uses Python Requests library http://docs.python-requests.org/en/master/
import requests
import json

# Request Parameters
store = "android"       # Could be either "android" or "itunes".
country_code = "US"     # Two letter country code.
date = "2018-12-11"     # Date in YYYY-MM-DD format.

req_params = {"date": date,
              "country": country_code}

# Auth Parameters
username = "{API_KEY}"  # Replace {API_KEY} with your own API key.
password = "X"          # Password can be anything.

# Request URL
request_url = "https://api.appmonsta.com/v1/stores/%s/rankings/aggregate.json" % store

# This header turns on compression to reduce the bandwidth usage and transfer time.
headers = {'Accept-Encoding': 'deflate, gzip'}

# Python Main Code Sample
response = requests.get(request_url,
                        auth=(username, password),
                        params=req_params,
                        headers=headers,
                        stream=True)

print response.status_code
for line in response.iter_lines():
  # Load json object and print it out
  json_record = json.loads(line)
  print json_record
// This example uses java Unirest library http://unirest.io/java.html

// Request Parameters
store = "android";      // Could be either "android" or "itunes".
countryCode = "US";     // Two letter country code.
date = "2018-12-11";    // Date in YYYY-MM-DD format.

// Auth Parameters
username = "{API_KEY}"; // Replace {API_KEY} with your own API key.
password = "X";         // Password can be anything.

// Request URL
requestUrl = "https://api.appmonsta.com/v1/stores/" + store + "/rankings/aggregate.json";

// Java Main Code Sample
HttpResponse response = Unirest.get(requestUrl)
  // This header turns on compression to reduce the bandwidth usage and transfer time.
  .header("Accept-Encoding", "deflate, gzip")
  .basicAuth(username, password)
  .queryString("country", $countryCode),
  .queryString("date", $date),
  .asString();

int status = response.getStatus();

BufferedReader in = new BufferedReader(new InputStreamReader(response.getRawBody()));
String line = null;
while((line = in.readLine()) != null) {
  System.out.println(line);
}
<?php
// Request Parameters
$store = "android";      // Could be either "android" or "itunes".
$countryCode = "US";     // Two letter country code.
$date = "2018-12-11";    // Date in YYYY-MM-DD format.

// Auth Parameters
$username = "{API_KEY}"; // Replace {API_KEY} with your own API key.
$password = "X";         // Password can be anything.

// Request URL
$url = "https://api.appmonsta.com/v1/stores/$store/rankings/aggregate.json?country=$countryCode&date=$date";

// PHP Main Code Sample
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 500);
curl_setopt($ch, CURLOPT_WRITEFUNCTION, function($curl, $data) {
    // Load json object and print it out
    $json_record = json_decode((string)$data, true);
    echo json_encode($json_record);
    return strlen($data);
});
curl_exec($ch);
curl_close($ch);
?>

The above code loads one JSON per line and prints it out:

{"ranks":["com.free.daily.horoscope.zodiac.secret","com.valpak.android",
          "com.srpinfosoft.Claptoflashlightonoff","com.tuya.smart",...],
 "country":"US",
 "rank_id":"apps_movers_shakers",
 "genre_id":"LIFESTYLE"}

Request aggregated rankings by date and by country. This call returns records with ranked app IDs per country and per genre/category. It's ideal if you're only interested in app rank positions.

HTTPS Request

GET https://api.appmonsta.com/v1/stores/<store>/rankings/aggregate.json?country=<country_code>&date=<date>

Request Parameters

Parameter Required Value
store Yes android or itunes.
country_code Yes The two letter country code of any country you've subscribed to.
E.g.: US, DE, AU, FR, GB, HK, etc.
date Yes In the following format: YYYY-MM-DD.

Response Fields

Field Description
country The country this ranking list is for; 2 letter country code.
genre_id String representing ranking list genre/category, as returned by the store. We force "overall" ID value for top level ranking lists.
rank_id Ranking list type (string), which serves as identifier and it's set by stores.
ranks A list of ordered app IDs. (array of strings for consistency between iTunes and Google Play stores).

Response Headers

Header Description
X-Request-ID The ID of the request to validate via Request Status API.

Ranking genres

Don't forget to replace {API_KEY} with your actual API key.

curl --compress -u "{API_KEY}:X" \
     "https://api.appmonsta.com/v1/stores/<store>/rankings/genres.json?date=2018-12-11"
require 'net/https'
require 'json'

# Request Parameters
store = "android"       # Could be either "android" or "itunes".
date = "2018-12-11"     # Date in YYYY-MM-DD format.

# Auth Parameters
username = "{API_KEY}"  # Replace {API_KEY} with your API own key.
password = "X"          # Password can be anything.

# Request URL
uri = URI("https://api.appmonsta.com/v1/stores/#{store}/rankings/genres.json?date=#{date}")

# Ruby Main Code Sample
Net::HTTP.start(uri.host, uri.port,
  :use_ssl => uri.scheme == 'https') do |http|
  request = Net::HTTP::Get.new uri
  request.basic_auth username, password

  http.request request do |response|
      response.read_body do |chunk|
        # Load json object and print it out
        begin
          chunk.each_line do |line|
          json_record = JSON.parse(line)
          print json_record
          end
        rescue JSON::ParserError
        end
    end
  end
end
# This example uses Python Requests library http://docs.python-requests.org/en/master/
import requests
import json

# Request Parameters
store = "android"       # Could be either "android" or "itunes".
date = "2018-12-11"     # Date in YYYY-MM-DD format.

req_params = {"date": date}

# Auth Parameters
username = "{API_KEY}"  # Replace {API_KEY} with your own API key.
password = "X"          # Password can be anything.

# Request URL
request_url = "https://api.appmonsta.com/v1/stores/%s/rankings/genres.json" % store

# This header turns on compression to reduce the bandwidth usage and transfer time.
headers = {'Accept-Encoding': 'deflate, gzip'}

# Python Main Code Sample
response = requests.get(request_url,
                        auth=(username, password),
                        params=req_params,
                        headers=headers,
                        stream=True)

print response.status_code
for line in response.iter_lines():
  # Load json object and print it out
  json_record = json.loads(line)
  print json_record
// This example uses java Unirest library http://unirest.io/java.html

// Request Parameters
store = "android";      // Could be either "android" or "itunes".
date = "2018-12-11";    // Date in YYYY-MM-DD format.

// Auth Parameters
username = "{API_KEY}"; // Replace {API_KEY} with your own API key.
password = "X";         // Password can be anything.

// Request URL
requestUrl = "https://api.appmonsta.com/v1/stores/" + store + "/rankings/genres.json";

// Java Main Code Sample
HttpResponse response = Unirest.get(requestUrl)
  // This header turns on compression to reduce the bandwidth usage and transfer time.
  .header("Accept-Encoding", "deflate, gzip")
  .basicAuth(username, password)
  .queryString("country", $countryCode),
  .queryString("date", $date),
  .asString();

int status = response.getStatus();

BufferedReader in = new BufferedReader(new InputStreamReader(response.getRawBody()));
String line = null;
while((line = in.readLine()) != null) {
  System.out.println(line);
}
<?php
// Request Parameters
$store = "android";      // Could be either "android" or "itunes".
$date = "2018-12-11";    // Date in YYYY-MM-DD format.

// Auth Parameters
$username = "{API_KEY}"; // Replace {API_KEY} with your own API key.
$password = "X";         // Password can be anything.

// Request URL
$url = "https://api.appmonsta.com/v1/stores/$store/rankings/genres.json?date=$date";

// PHP Main Code Sample
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 500);
curl_setopt($ch, CURLOPT_WRITEFUNCTION, function($curl, $data) {
    // Load json object and print it out
    $json_record = json_decode((string)$data, true);
    echo json_encode($json_record);
    return strlen($data);
});
curl_exec($ch);
curl_close($ch);
?>

The above code loads one JSON per line and prints it out:

{"name":"Music & Audio","genre_id":"MUSIC_AND_AUDIO"}
{"name":"Auto & Vehicles","genre_id":"AUTO_AND_VEHICLES"}
{"parent_id":"FAMILY","name":"Family Brain Games","genre_id":"FAMILY_BRAINGAMES"}

Request all available ranking genres (also known as categories) by date. If you use aggregated API call, then this call will map genre IDs to human-readable genre names.

HTTPS Request

GET https://api.appmonsta.com/v1/stores/<store>/rankings/genres.json?date=<date>

Request Parameters

Parameter Required Value
store Yes android or itunes.
date Yes In the following format: YYYY-MM-DD.

Response Fields

Field Description
genre_id Genre ID of an app present in rankings.
name The name of the app.
parent_id Parent genre ID (optional).

Response Headers

Header Description
X-Request-ID The ID of the request to validate via Request Status API.

Ranking list types

Don't forget to replace {API_KEY} with your actual API key.

curl --compress -u "{API_KEY}:X" \
     "https://api.appmonsta.com/v1/stores/<store>/rankings/types.json?date=2018-12-11"
require 'net/https'
require 'json'

# Request Parameters
store = "android"       # Could be either "android" or "itunes".
date = "2018-12-11"     # Date in YYYY-MM-DD format.

# Auth Parameters
username = "{API_KEY}"  # Replace {API_KEY} with your API own key.
password = "X"          # Password can be anything.

# Request URL
uri = URI("https://api.appmonsta.com/v1/stores/#{store}/rankings/types.json?date=#{date}")

# Ruby Main Code Sample
Net::HTTP.start(uri.host, uri.port,
  :use_ssl => uri.scheme == 'https') do |http|
  request = Net::HTTP::Get.new uri
  request.basic_auth username, password

  http.request request do |response|
      response.read_body do |chunk|
        # Load json object and print it out
        begin
          chunk.each_line do |line|
          json_record = JSON.parse(line)
          print json_record
          end
        rescue JSON::ParserError
        end
    end
  end
end
# This example uses Python Requests library http://docs.python-requests.org/en/master/
import requests
import json

# Request Parameters
store = "android"       # Could be either "android" or "itunes".
date = "2018-12-11"     # Date in YYYY-MM-DD format.

req_params = {"date": date}

# Auth Parameters
username = "{API_KEY}"  # Replace {API_KEY} with your own API key.
password = "X"          # Password can be anything.

# Request URL
request_url = "https://api.appmonsta.com/v1/stores/%s/rankings/types.json" % store

# This header turns on compression to reduce the bandwidth usage and transfer time.
headers = {'Accept-Encoding': 'deflate, gzip'}

# Python Main Code Sample
response = requests.get(request_url,
                        auth=(username, password),
                        params=req_params,
                        headers=headers,
                        stream=True)

print response.status_code
for line in response.iter_lines():
  # Load json object and print it out
  json_record = json.loads(line)
  print json_record
// This example uses java Unirest library http://unirest.io/java.html

// Request Parameters
store = "android";      // Could be either "android" or "itunes".
date = "2018-12-11";    // Date in YYYY-MM-DD format.

// Auth Parameters
username = "{API_KEY}"; // Replace {API_KEY} with your own API key.
password = "X";         // Password can be anything.

// Request URL
requestUrl = "https://api.appmonsta.com/v1/stores/" + store + "/rankings/types.json";

// Java Main Code Sample
HttpResponse response = Unirest.get(requestUrl)
  // This header turns on compression to reduce the bandwidth usage and transfer time.
  .header("Accept-Encoding", "deflate, gzip")
  .basicAuth(username, password)
  .queryString("country", $countryCode),
  .queryString("date", $date),
  .asString();

int status = response.getStatus();

BufferedReader in = new BufferedReader(new InputStreamReader(response.getRawBody()));
String line = null;
while((line = in.readLine()) != null) {
  System.out.println(line);
}
<?php
// Request Parameters
$store = "android";      // Could be either "android" or "itunes".
$date = "2018-12-11";    // Date in YYYY-MM-DD format.

// Auth Parameters
$username = "{API_KEY}"; // Replace {API_KEY} with your own API key.
$password = "X";         // Password can be anything.

// Request URL
$url = "https://api.appmonsta.com/v1/stores/$store/rankings/types.json?date=$date";

// PHP Main Code Sample
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 500);
curl_setopt($ch, CURLOPT_WRITEFUNCTION, function($curl, $data) {
    // Load json object and print it out
    $json_record = json_decode((string)$data, true);
    echo json_encode($json_record);
    return strlen($data);
});
curl_exec($ch);
curl_close($ch);
?>

The above code loads one JSON per line and prints it out:

{"rank_id":"topfreeapplications","name":"Top Free"}
{"rank_id":"newapplications","name":"New Applications"}
{"rank_id":"newgameswelove","name":"New Games We Love RSS"}

Request all ranking list types by date. These are ranking list types (names) as defined by the Google Play or iTunes store. If you use aggregated ranks API call, then this call will map ranking types to their human-readable names.

HTTPS Request

GET https://api.appmonsta.com/v1/stores/<store>/rankings/types.json?date=<date>

Request Parameters

Parameter Required Value
store Yes android or itunes.
date Yes In the following format: YYYY-MM-DD.

Response Fields

Field Description
rank _id Rank ID of an app present in rankings.
name The name of the app.

Response Headers

Header Description
X-Request-ID The ID of the request to validate via Request Status API.

App IDs for all apps

Don't forget to replace {API_KEY} with your actual API key.

curl --compress -u "{API_KEY}:X" "https://api.appmonsta.com/v1/stores/android/ids"
require 'net/https'
require 'json'

# Request Parameters
store = "android"       # Could be either "android" or "itunes".

# Auth Parameters
username = "{API_KEY}"  # Replace {API_KEY} with your API own key.
password = "X"          # Password can be anything.

# Request URL
uri = URI("https://api.appmonsta.com/v1/stores/#{store}/ids")

# Ruby Main Code Sample
Net::HTTP.start(uri.host, uri.port,
  :use_ssl => uri.scheme == 'https') do |http|
  request = Net::HTTP::Get.new uri
  request.basic_auth username, password

  http.request request do |response|
      response.read_body do |chunk|
        # Print one app ID per line
        begin
          chunk.each_line do |line|
          print line
          end
        rescue JSON::ParserError
        end
    end
  end
end
# This example uses Python Requests library http://docs.python-requests.org/en/master/
import requests
import json

# Request Parameters
store = "android"       # Could be either "android" or "itunes".

# Auth Parameters
username = "{API_KEY}"  # Replace {API_KEY} with your API own key.
password = "X"          # Password can be anything.

# Request URL
url = 'https://api.appmonsta.com/v1/stores/%s/ids' % store

# This header turns on compression to reduce the bandwidth usage and transfer time.
headers = {'Accept-Encoding': 'deflate, gzip'}

# Python Main Code Sample
response = requests.get(url,
                        auth=(username, password),
                        headers=headers,
                        stream=True)

print response.status_code
for line in response.iter_lines():
  # Print one app ID per line
  print line
// This example uses java Unirest library http://unirest.io/java.html

// Request Parameters
store = "android";      // Could be either "android" or "itunes".

// Auth Parameters
username = "{API_KEY}"; // Replace {API_KEY} with your own API key.
password = "X";         // Password can be anything.

// Request URL
requestUrl = "https://api.appmonsta.com/v1/stores/" + store + "android/ids"

// Java Main Code Sample
HttpResponse response = Unirest.get(requestUrl)
  // This header turns on compression to reduce the bandwidth usage and transfer time.
  .header("Accept-Encoding", "deflate, gzip")
  .basicAuth(username, password)
  .asString();

int status = response.getStatus();

BufferedReader in = new BufferedReader(new InputStreamReader(response.getRawBody()));
String line = null;
while((line = in.readLine()) != null) {
  System.out.println(line);
}
<?php
// Request Parameters
$store = "android";      // Could be either "android" or "itunes".

// Auth Parameters
$username = "{API_KEY}"; // Replace {API_KEY} with your own API key.
$password = "X";         // Password can be anything.

// Request URL
$url = "https://api.appmonsta.com/v1/stores/$store/ids";

// PHP Main Code Sample
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 500);
curl_setopt($ch, CURLOPT_WRITEFUNCTION, function($curl, $data) {
    // Print one app ID per line
    echo ($data);
    return strlen($data);
});
curl_exec($ch);
curl_close($ch);
?>

The above code outputs one app ID per line:

air.com.escapegamesmobi.CuckooBirdRescue
air.elisashopingdressupgames
appinventor.ai_antonello_f_caterino.PoLet500
appinventor.ai_nyanskyaw.Alpha_SVM
ar.com.hermesonline.autoya
ar3plus.siudase.baju
bigdx.adw.slick.purple
biz.buildapps.ahucabs
cm.williamsofttech.gallerylockphotoandvideohideapplock
co.vpsoft.kiribati_newspapers

Get a list of all the app IDs AppMonsta knows about.

HTTPS Request

GET https://api.appmonsta.com/v1/stores/<store>/ids

Request Parameters

Parameter Required Value
store Yes android or itunes.

Response Fields

One app ID per line.

Response Headers

Header Description
X-Request-ID The ID of the request to validate via Request Status API.

Details for a single app

Don't forget to replace {API_KEY} with your actual API key.

curl --compress -u "{API_KEY}:X" \
     "https://api.appmonsta.com/v1/stores/android/details/com.facebook.orca.json?country=US"
require 'net/https'
require 'json'

# Request Parameters
store = "android"       # Could be either "android" or "itunes".
country_code = "US"     # Two letter country code.
app_id = "com.facebook.orca" # Unique app identifier (bundle ID).

# Auth Parameters
username = "{API_KEY}"  # Replace {API_KEY} with your API own key.
password = "X"          # Password can be anything.

# Request URL
uri = URI("https://api.appmonsta.com/v1/stores/#{store}/details/#{app_id}.json?country=#{country_code}")

# Ruby Main Code Sample
Net::HTTP.start(uri.host, uri.port,
  :use_ssl => uri.scheme == 'https') do |http|
  request = Net::HTTP::Get.new uri
  request.basic_auth username, password

  http.request request do |response|
      response.read_body do |chunk|
        # Load json object and print it out
        begin
          chunk.each_line do |line|
          json_record = JSON.parse(line)
          print json_record
          end
        rescue JSON::ParserError
        end
    end
  end
end
# This example uses Python Requests library http://docs.python-requests.org/en/master/
import requests
import json

# Request Parameters
store = "android"       # Could be either "android" or "itunes".
country_code = "US"     # Two letter country code.
app_id = "com.facebook.orca" # Unique app identifier (bundle ID).

req_params = {"country": country_code}

# Auth Parameters
username = "{API_KEY}"  # Replace {API_KEY} with your own API key.
password = "X"          # Password can be anything.

# Request URL
url = "https://api.appmonsta.com/v1/stores/%s/details/%s.json" % (store, app_id)

# This header turns on compression to reduce the bandwidth usage and transfer time.
headers = {'Accept-Encoding': 'deflate, gzip'}

# Python Main Code Sample
response = requests.get(url,
                        auth=(username, password),
                        params=req_params,
                        headers=headers,
                        stream=True)

print response.status_code
for line in response.iter_lines():
  # Load json object and print it out
  json_record = json.loads(line)
  print json_record
// This example uses java Unirest library http://unirest.io/java.html

// Request Parameters
store = "android";      // Could be either "android" or "itunes".
countryCode = "US";     // Two letter country code.
appId = "com.facebook.orca";    // Unique app identifier (bundle ID).

// Auth Parameters
username = "{API_KEY}"; // Replace {API_KEY} with your own API key.
password = "X";         // Password can be anything.

// Request URL
requestUrl = "https://api.appmonsta.com/v1/stores/" + store + "/details/" + appId + ".json"

// Java Main Code Sample
HttpResponse response = Unirest.get(requestUrl)
  // This header turns on compression to reduce the bandwidth usage and transfer time.
  .header("Accept-Encoding", "deflate, gzip")
  .basicAuth(username, password)
  .queryString("country", countryCode)
  .asString();

int status = response.getStatus();

BufferedReader in = new BufferedReader(new InputStreamReader(response.getRawBody()));
String line = null;
while((line = in.readLine()) != null) {
  System.out.println(line);
}
<?php
// Request Parameters
$store = "android";      // Could be either "android" or "itunes".
$countryCode = "US";     // Two letter country code.
$appId = "com.facebook.orca";    // Unique app identifier (bundle ID).

// Auth Parameters
$username = "{API_KEY}"; // Replace {API_KEY} with your own API key.
$password = "X";         // Password can be anything.

// Request URL
$url = "https://api.appmonsta.com/v1/stores/$store/details/$appId.json?country=US";

// PHP Main Code Sample
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 500);
curl_setopt($ch, CURLOPT_WRITEFUNCTION, function($curl, $data) {
    // Load json object and print it out
    $json_record = json_decode((string)$data, true);
    echo json_encode($json_record);
    return strlen($data);
});
curl_exec($ch);
curl_close($ch);
?>

The above code loads one app record and prints it out:

{
  "content_rating": "Everyone",
  "app_name": "Messenger – Text and Video Chat for Free",
  "top_developer": false,
  "requires_os": "Varies with device",
  "related": {
    "related_apps": [
      "com.zing.zalo",
      "com.snapchat.android",
      "com.facebook.talk",
      "com.skype.m2",
      "com.android.chrome",
      "com.truecaller",
      "com.beint.zangi"
    ],
    "more_from_developer": [
      "com.facebook.katana",
      "com.facebook.mlite",
      "com.facebook.lite",
      "com.facebook.talk",
      "com.facebook.Socal",
      "com.facebook.pages.app",
      "com.facebook.moments"
    ]
  },
  "video_urls": [ ],
  "iap_price_range": "$0.99 - $399.99 per item",
  "publisher_name": "Facebook",
  "id": "com.facebook.orca",
  "price_currency": "USD",
  "genres": [
    "Communication"
  ],
  "app_type": "APPLICATION",
  "icon_url": "https://lh5.ggpht.com/0VYAvZLR9YhosF-thqm8xl8EWsCfrEY_uk2og2f59K8IOx5TfPsXjFVwxaHVnUbuEjc",
  "content_rating_info": "",
  "interactive_elements": "Users Interact, Shares Location, Digital Purchases",
  "version": "Varies with device",
  "publisher_url": "https://www.facebook.com/games/fbmessenger_android/",
  "whats_new": "Now you can see your call history and missed calls—all in one place.",
  "publisher_id": "Facebook",
  "price": "Free",
  "screenshot_urls": [
    "https://lh3.googleusercontent.com/Akz7U1QW4I1KKNiig-uum5an_P4JBnKyVPXda5LozfcZUgnG3g2amnLn2Oili42b0wM",
    "https://lh3.googleusercontent.com/mD90pAw4RL6tv5gFmarSsUuPtTqO2WEBagbFGXEw-5qdBzA-giCd5f_wwjQvNF2V0g",
    "https://lh3.googleusercontent.com/ThIwGgGqT-cMX_8nICixYSwN8NRruUr0io4HsUQkOqwjRSw0rcSJdapE-WAomPjaJ34",
    "https://lh3.googleusercontent.com/idgO2Vxw3e107SRc3YM5CE2p0a7B1vaKNnCHx6IIqrTUa_08fXp2Tu8OdHOQmG_KVjB_",
    "https://lh3.googleusercontent.com/L0MHXxoPUJqLY3ANVTATSv26EKDiyN_ZlXLaHWtIo5zKgIySJ7u34BIpEfK9emVpXQ"
  ],
  "status": "updated",
  "publisher_email": "android-support@fb.com",
  "description": "Instantly connect with the people in your life. Messenger is free, fast, and secure. ...",
  "price_value": 0,
  "all_rating": 4,
  "store_url": "https://play.google.com/store/apps/details?id=com.facebook.orca",
  "downloads": "1,000,000,000+",
  "publisher_address": "1 Hacker Way\nMenlo Park, CA 94025",
  "status_unix_timestamp": 1538443703,
  "genre": "Communication",
  "bundle_id": "com.facebook.orca",
  "genre_ids": [
    "COMMUNICATION"
  ],
  "all_histogram": {
    "1": 7266140,
    "2": 2320959,
    "3": 5434492,
    "4": 8418707,
    "5": 34682503
  },
  "release_date": "2011-11-07",
  "all_rating_count": 58122801,
  "permissions": [
    "receive text messages (SMS)",
    "change your audio settings",
    "record audio",
    "read your text messages (SMS or MMS)",
    "read calendar events plus confidential information",
    "reroute outgoing calls",
    "read your contacts",
    "send sticky broadcast",
    "take pictures and videos",
  ],
  "status_date": "October 2, 2018",
  "genre_id": "COMMUNICATION"
}

Request the most recent app details with the app's unique ID.

HTTPS Request

GET https://api.appmonsta.com/v1/stores/<store>/details/<app_id>.json?country=<country_code>

Request Parameters

Parameter Required Value
store Yes android or itunes.
country_code Yes The two letter country code of the country to fetch this app's details for, or ALL if you don't care which country.
app_id Yes The unique app identifier (bundle ID) for the correct store.
show_dead No If show_dead=1 is present, show apps that aren't currently available in the store.

Response Fields

Field Description
all_histogram The histogram breakdown of ratings for all versions of this app. A dictionary with the keys 1-5 (as strings) mapped onto number of reviews with that number of stars.
all_rating The average rating for all versions of this app.
all_rating_count The number of ratings for all versions of this app.
all_reviews The number of reviews for all versions of this app, if available as a summarized number. itunes_only
app_name The name of the app.
app_type Whether the app is categorized as GAME or APPLICATION. android_only
bundle_id The internal bundle identifier of the app binary.
content_rating The age-appropriate content rating of the app.
content_rating_info Additional info on content rating of the app if present. android_only
current_histogram The histogram breakdown of ratings for the current version of this app. Should be a dictionary with the keys 1-5 (as strings) mapped onto number of reviews with that number of stars. itunes_only
current_rating The average rating for the current version of this app. itunes_only
current_rating_count The number of ratings for the current version of this app. itunes_only
current_reviews The number of reviews for the current version of this app, if available as a summarized number. itunes_only
description The text of the description of the app.
downloads The number of downloads this app has, if available. android_only
file_size The file size of the downloadable app as a human readable string, if present.
file_size_bytes The size of the app binary in bytes, if present.
genre The primary category of an app, as it appears on the store side.
genre_id The ID of the primary category of an app, as returned by the store.
genres All categories of an app, as they are returned from the store side.
genre_ids List of category IDs of an app, as returned by the store.
has_game_center A boolean (0 or 1) indicating whether this app supports Game Center. itunes_only
iap_price_range Price range of all in-app products available for the app. android_only
icon_url The url of the app icon.
id The unique identifier for the app as assigned by the store.
in_app_purchases In the iTunes store a list containing all available in-app products. itunes_only
"in_app_purchases": [
  {
    "rank": "1",
    "name": "Town Folk - Skin Pack",
    "price": "$0.99"
  },
  {
    "rank": "2",
    "name": "City Folk - Skin Pack",
    "price": "$0.99"
  }
],
   
interactive_elements A string containing interactive elements as listed on the app page. android_only
is_universal Whether the app is universal, meaning it's optimized for both iPhone and iPad. itunes_only
languages Languages that the app supports, as they're defined on the store side. itunes_only
permissions List of permissions required by this app. android_only
"permissions": [
  "prevent device from sleeping",
  "view network connections",
  "find accounts on the device",
  "full network access",
  "receive data from Internet",
  "access extra location provider commands",
  "read phone status and identity",
  "precise location (GPS and network-based)",
  "approximate location (network-based)"
]
   
price The price of the app, as displayed on the store side.
price_currency Price currency, according to ISO 4271 standard.
price_value Price value, expressed as digits only.
publisher_address Physical address of the publisher if listed in the app store. android_only
publisher_email The email address of the publisher of this app, if present. android_only
publisher_id The ID of the publisher of this app as assigned by the store.
publisher_name The display name of the publisher of this app.
publisher_url The website of the publisher of this app.
related A dictionary of related apps as presented by the source system. The keys are an identifier for the section of related apps, such as also_installed. The values are lists of app IDs.
release_date String containing app release date in ISO format.
requires_hardware A string indicating which hardware is required to run this app. itunes_only
requires_os A string indicating the minimum OS/platform version this app requires, if present.
screenshot_urls An array of screenshot urls.
seller App seller name as it appears on Apple’s App Store. itunes_only
status Indicates an app status, in relationship to its status_date. If it is either "updated" or "released", the app is available for download. If it is "dead", the app is no longer present in the store.
status_date The date the app was updated or released, as a string in whatever format it's displayed on the store.
status_unix_timestamp The parsed unix timestamp of the status_date field.
store_url App store URL.
support_url A support url for this app, if it differs from publisher_url. itunes_only
top_developer A boolean whether this apps developer is marked as a top developer. android_only
translated_description Translated app description, when in other language than expected. android_only
version The current version of the app.
video_urls An array of urls of demo videos for this app, if present. android_only
whats_new The text of the "What's new in this version" writeup, if present.

Details for all apps

Don't forget to replace {API_KEY} with your actual API key.

curl --compress -u "{API_KEY}:X" \
     "https://api.appmonsta.com/v1/stores/android/details.json?date=2018-12-11&country=US"
require 'net/https'
require 'json'

# Request Parameters
store = "android"       # Could be either "android" or "itunes".
country_code = "US"     # Two letter country code.
date = "2018-12-11"     # Date to check app details against (YYYY-MM-DD).

# Auth Parameters
username = "{API_KEY}"  # Replace {API_KEY} with your API own key.
password = "X"          # Password can be anything.

# Request URL
uri = URI("https://api.appmonsta.com/v1/stores/#{store}/details.json?date=#{date}&country=#{country_code}")

# Ruby Main Code Sample
Net::HTTP.start(uri.host, uri.port,
  :use_ssl => uri.scheme == 'https') do |http|
  request = Net::HTTP::Get.new uri
  request.basic_auth username, password

  http.request request do |response|
      response.read_body do |chunk|
        # Load json object and print it out
        begin
          chunk.each_line do |line|
          json_record = JSON.parse(line)
          print json_record
          end
        rescue JSON::ParserError
        end
    end
  end
end
# This example uses Python Requests library http://docs.python-requests.org/en/master/
import requests
import json

# Request Parameters
store = "android"       # Could be either "android" or "itunes".
country_code = "US"     # Two letter country code.
date = "2018-12-11"     # Date to check app details against (YYYY-MM-DD).

req_params = {"date": date,
              "country": "US"}

# Auth Parameters
username = "{API_KEY}"  # Replace {API_KEY} with your own API key.
password = "X"          # Password can be anything.

# Request URL
url = "https://api.appmonsta.com/v1/stores/%s/details.json" % store

# This header turns on compression to reduce the bandwidth usage and transfer time.
headers = {'Accept-Encoding': 'deflate, gzip'}

# Python Main Code Sample
response = requests.get(url,
                        auth=(username, password),
                        params=req_params,
                        headers=headers,
                        stream=True)

print response.status_code
for line in response.iter_lines():
  # Load json object and print it out
  json_record = json.loads(line)
  print json_record
// This example uses java Unirest library http://unirest.io/java.html

// Request Parameters
store = "android";      // Could be either "android" or "itunes".
countryCode = "US";     // Two letter country code.
date = 2018-12-11;      // Unique app identifier (bundle ID).

// Auth Parameters
username = "{API_KEY}"; // Replace {API_KEY} with your own API key.
password = "X";         // Password can be anything.

// Request URL
requestUrl = "https://api.appmonsta.com/v1/stores/" + store + "/details.json"

// Java Main Code Sample
HttpResponse response = Unirest.get(requestUrl)
  // This header turns on compression to reduce the bandwidth usage and transfer time.
  .header("Accept-Encoding", "deflate, gzip")
  .basicAuth(username, password)
  .queryString("date", date)
  .queryString("country", countryCode)
  .asString();

int status = response.getStatus();

BufferedReader in = new BufferedReader(new InputStreamReader(response.getRawBody()));
String line = null;
while((line = in.readLine()) != null) {
  System.out.println(line);
}
<?php
// Request Parameters
$store = "android";      // Could be either "android" or "itunes".
$countryCode = "US";     // Two letter country code.
$date = "2018-12-11";    // Date in YYYY-MM-DD format.

// Auth Parameters
$username = "{API_KEY}"; // Replace {API_KEY} with your own API key.
$password = "X";         // Password can be anything.

// Request URL
$url = "https://api.appmonsta.com/v1/stores/$store/details.json?country=$countryCode&date=$date";

// PHP Main Code Sample
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 500);
curl_setopt($ch, CURLOPT_WRITEFUNCTION, function($curl, $data) {
    // Load json object and print it out
    $json_record = json_decode((string)$data, true);
    echo json_encode($json_record);
    return strlen($data);
});
curl_exec($ch);
curl_close($ch);
?>

The above code loads one app record per line and prints them out:

{
  "content_rating": "Everyone",
  "app_name": "Churchbridge Credit Union",
  "top_developer": false,
  "requires_os": "4.4 and up",
  "related": {
    "related_apps": [
      "com.grppl.android.shell.halifax",
      "com.bbva.compassBuzz",
      "com.popular.android.mibanco",
      "nz.co.kiwibank.mobile",
    ],
    "more_from_developer": []
  },
  "video_urls": [],
  "iap_price_range": "",
  "publisher_name": "Churchbridge Credit Union",
  "id": "md.classic.sk.churchbridge.mobileapp",
  "price_currency": "USD",
  "genres": [
    "Finance"
  ],
  "app_type": "APPLICATION",
  "icon_url": "https://lh3.googleusercontent.com/K-Dvu373lxa1c4KjfZO1reaFmNguzMs7CMDRK-jpUXeXXRfHUjNK2Te275KFrcBnIw",
  "content_rating_info": "",
  "interactive_elements": "",
  "version": "13.5.1",
  "publisher_url": "http://www.churchbridgecu.ca",
  "whats_new": "Lock'N'Block",
  "publisher_id": "Churchbridge Credit Union",
  "price": "Free",
  "screenshot_urls": [
    "https://lh3.googleusercontent.com/IUBvJbfBd6jwkWvoq2RCqBcMkGd2UUt9DNihJDTw8X-Flcxmdhy9Ol5uuaQueAM9JgY",
    "https://lh3.googleusercontent.com/BAfxyHOFru8mwP8FdviOQNymqqztb9NNH9kB_-qqqn7DhStJ_N-wqStYqc4n5Zx3tg"
  ],
  "status": "updated",
  "publisher_email": "info@churchbridgecu.ca",
  "description": "Shopping, on vacation, or from the comfort of your home – get instant and secure access to your accounts, ...",
  "price_value": 0,
  "all_rating": 5,
  "store_url": "https://play.google.com/store/apps/details?id=md.classic.sk.churchbridge.mobileapp",
  "downloads": "100+",
  "publisher_address": "",
  "status_unix_timestamp": 1529367053,
  "genre": "Finance",
  "bundle_id": "md.classic.sk.churchbridge.mobileapp",
  "genre_ids": [
    "FINANCE"
  ],
  "all_histogram": {
    "1": 0,
    "3": 0,
    "2": 0,
    "5": 7,
    "4": 0
  },
  "release_date": "2016-03-09",
  "all_rating_count": 7,
  "permissions": [
    "prevent device from sleeping",
    "install shortcuts",
    "view network connections",
    "approximate location (network-based)"
  ],
  "status_date": "June 19, 2018",
  "genre_id": "FINANCE"
}

Request the most recent app details for all apps.

HTTPS Request

GET https://api.appmonsta.com/v1/stores/<store>/details.json?country=<country_code>&date=<date>

Request Parameters

Parameter Required Value
store Yes android or itunes.
country_code Yes The two letter country code of the country to fetch app details for, or ALL to fetch details for every app, regardless of country.
date Yes In the following format: YYYY-MM-DD.
show_dead No If show_dead=1 is present, show apps that aren't currently available in the store.
only_changed No If only_changed=1 is present, only show apps that have changed (in any field) since the previous date.
old_values No If old_values=1 then each returned record will have _old_values key holding a dictionary of previous key:value entries. It can be only used in combination with only_changed=1.

Response Fields

See previous call, Details for a single app.

Response Headers

Header Description
X-Request-ID The ID of the request to validate via Request Status API.

App publishers

Don't forget to replace {API_KEY} with your actual API key.

curl --compress -u "{API_KEY}:X" "https://api.appmonsta.com/v1/stores/android/publishers.json"
require 'net/https'
require 'json'

# Request Parameters
store = "android"       # Could be either "android" or "itunes".
date = "2018-12-11"     # Date to check app details against (YYYY-MM-DD).

# Auth Parameters
username = "{API_KEY}"  # Replace {API_KEY} with your API own key.
password = "X"          # Password can be anything.

# Request URL
uri = URI("https://api.appmonsta.com/v1/stores/#{store}/publishers.json?date=#{date}")

# Ruby Main Code Sample
Net::HTTP.start(uri.host, uri.port,
  :use_ssl => uri.scheme == 'https') do |http|
  request = Net::HTTP::Get.new uri
  request.basic_auth username, password

  http.request request do |response|
      response.read_body do |chunk|
        # Print one app ID per line
        begin
          chunk.each_line do |line|
          print line
          end
        rescue JSON::ParserError
        end
    end
  end
end
# This example uses Python Requests library http://docs.python-requests.org/en/master/
import requests
import json

# Request Parameters
store = "android"       # Could be either "android" or "itunes".
date = "2018-12-11"     # Date in YYYY-MM-DD format.

req_params = {"date": date}

# Auth Parameters
username = "{API_KEY}"  # Replace {API_KEY} with your API own key.
password = "X"          # Password can be anything.

# Request URL
url = 'https://api.appmonsta.com/v1/stores/%s/publishers.json' % store

# This header turns on compression to reduce the bandwidth usage and transfer time.
headers = {'Accept-Encoding': 'deflate, gzip'}

# Python Main Code Sample
response = requests.get(url,
                        auth=(username, password),
                        params=req_params,
                        headers=headers,
                        stream=True)

print response.status_code
for line in response.iter_lines():
  # Print one app ID per line
  print line
// This example uses java Unirest library http://unirest.io/java.html

// Request Parameters
store = "android";      // Could be either "android" or "itunes".
date = "2018-12-11";    // Date in YYYY-MM-DD format.

// Auth Parameters
username = "{API_KEY}"; // Replace {API_KEY} with your own API key.
password = "X";         // Password can be anything.

// Request URL
requestUrl = "https://api.appmonsta.com/v1/stores/" + store + "android/publishers.json"

// Java Main Code Sample
HttpResponse response = Unirest.get(requestUrl)
  // This header turns on compression to reduce the bandwidth usage and transfer time.
  .header("Accept-Encoding", "deflate, gzip")
  .basicAuth(username, password)
  .queryString("date", $date),
  .asString();

int status = response.getStatus();

BufferedReader in = new BufferedReader(new InputStreamReader(response.getRawBody()));
String line = null;
while((line = in.readLine()) != null) {
  System.out.println(line);
}
<?php
// Request Parameters
$store = "android";      // Could be either "android" or "itunes".
$date = "2018-12-11";    // Date in YYYY-MM-DD format.

// Auth Parameters
$username = "{API_KEY}"; // Replace {API_KEY} with your own API key.
$password = "X";         // Password can be anything.

// Request URL
$url = "https://api.appmonsta.com/v1/stores/$store/publishers.json?date=$date";

// PHP Main Code Sample
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 500);
curl_setopt($ch, CURLOPT_WRITEFUNCTION, function($curl, $data) {
    // Print one app ID per line
    echo ($data);
    return strlen($data);
});
curl_exec($ch);
curl_close($ch);
?>

The above code loads one JSON per line and prints it out:

{"name":"andavis","url":"http:\/\/www.andavis.de","id":"andavis","address":"","email":"apps@andavis.de"}
{"name":"Air Cab Ltd","url":"http:\/\/aircab.vn","id":"Air Cab Ltd","address":"","email":"aircab.vn@gmail.com"}
{"name":"Right Pulse Works","url":"","id":"Right Pulse Works","address":"","email":"rightpulseapps@gmail.com"}

Get a list of all publishers and their information that AppMonsta knows about.

HTTPS Request

GET https://api.appmonsta.com/v1/stores/<store>/publishers.json

Request Parameters

Parameter Required Value
store Yes android or itunes.
date Yes In the following format: YYYY-MM-DD.

Response Fields

Parameter Description
name The display name of the publisher.
id The ID of the publisher as assigned by the store.
url The website of the publisher.
address Physical address of the publisher if listed in the app store. android_only
email The email address of the publisher of this app, if present. android_only

Response Headers

Header Description
X-Request-ID The ID of the request to validate via Request Status API.

App availability

Don't forget to replace {API_KEY} with your actual API key.

curl --compress -u "{API_KEY}:X" "https://api.appmonsta.com/v1/stores/android/availability.json"
require 'net/https'
require 'json'

# Request Parameters
store = "android"       # Could be either "android" or "itunes".

# Auth Parameters
username = "{API_KEY}"  # Replace {API_KEY} with your API own key.
password = "X"          # Password can be anything.

# Request URL
uri = URI("https://api.appmonsta.com/v1/stores/#{store}/availability.json")

# Ruby Main Code Sample
Net::HTTP.start(uri.host, uri.port,
  :use_ssl => uri.scheme == 'https') do |http|
  request = Net::HTTP::Get.new uri
  request.basic_auth username, password

  http.request request do |response|
      response.read_body do |chunk|
        # Load json object and print it out
        begin
          chunk.each_line do |line|
          json_record = JSON.parse(line)
          print json_record
          end
        rescue JSON::ParserError
        end
    end
  end
end
# This example uses Python Requests library http://docs.python-requests.org/en/master/
import requests
import json

# Request Parameters
store = "android"       # Could be either "android" or "itunes".

# Auth Parameters
username = "{API_KEY}"  # Replace {API_KEY} with your API own key.
password = "X"          # Password can be anything.

# Request URL
url = 'https://api.appmonsta.com/v1/stores/%s/availability.json' % store

# This header turns on compression to reduce the bandwidth usage and transfer time.
headers = {'Accept-Encoding': 'deflate, gzip'}

# Python Main Code Sample
response = requests.get(request_url,
                        auth=(username, password),
                        params=req_params,
                        headers=headers,
                        stream=True)

print response.status_code
for line in response.iter_lines():
  # Load json object and print it out
  json_record = json.loads(line)
  print json_record
// This example uses java Unirest library http://unirest.io/java.html

// Request Parameters
store = "android";      // Could be either "android" or "itunes".

// Auth Parameters
username = "{API_KEY}"; // Replace {API_KEY} with your own API key.
password = "X";         // Password can be anything.

// Request URL
requestUrl = "https://api.appmonsta.com/v1/stores/" + store + "android/availability.json"

// Java Main Code Sample
HttpResponse response = Unirest.get(requestUrl)
  // This header turns on compression to reduce the bandwidth usage and transfer time.
  .header("Accept-Encoding", "deflate, gzip")
  .basicAuth(username, password)
  .asString();

int status = response.getStatus();

BufferedReader in = new BufferedReader(new InputStreamReader(response.getRawBody()));
String line = null;
while((line = in.readLine()) != null) {
  System.out.println(line);
}
<?php
// Request Parameters
$store = "android";      // Could be either "android" or "itunes".

// Auth Parameters
$username = "{API_KEY}"; // Replace {API_KEY} with your own API key.
$password = "X";         // Password can be anything.

// Request URL
$url = "https://api.appmonsta.com/v1/stores/$store/availability.json";

// PHP Main Code Sample
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 500);
curl_setopt($ch, CURLOPT_WRITEFUNCTION, function($curl, $data) {
    // Load json object and print it out
    $json_record = json_decode((string)$data, true);
    echo json_encode($json_record);
    return strlen($data);
});
curl_exec($ch);
curl_close($ch);
?>

The above code loads one JSON per line and prints it out:

{"app_id":"com.wikia.singlewikia.dragonvale","countries":["FR","DE","JP","US"]}
{"app_id":"com.BLI.CrossTheRoad","countries":["FR","JP","US"]}
{"app_id":"com.singlecase.app","countries":["FR","DE","JP","US"]}

Get a list of all the countries where the app is available.

HTTPS Request

GET https://api.appmonsta.com/v1/stores/<store>/availability.json

Request Parameters

Parameter Required Value
store Yes android or itunes.

Response Fields

Parameter Description
app_id The app ID of the app.
countries List of country codes where the app is available.

Response Headers

Header Description
X-Request-ID The ID of the request to validate via Request Status API.

Reviews for all apps

Don't forget to replace {API_KEY} with your actual API key.

curl --compress -u "{API_KEY}:X" \
     "https://api.appmonsta.com/v1/stores/android/reviews.json?language=en"
require 'net/https'
require 'json'

# Request Parameters
store = "android"       # Could be either "android" or "itunes".
language = "en"         # Two letter language code.

# Auth Parameters
username = "{API_KEY}"  # Replace {API_KEY} with your API own key.
password = "X"          # Password can be anything.

# Request URL
uri = URI("https://api.appmonsta.com/v1/stores/#{store}/reviews.json?language=#{language}")

# Ruby Main Code Sample
Net::HTTP.start(uri.host, uri.port,
  :use_ssl => uri.scheme == 'https') do |http|
  request = Net::HTTP::Get.new uri
  request.basic_auth username, password

  http.request request do |response|
      response.read_body do |chunk|
        # Load json object and print it out
        begin
          chunk.each_line do |line|
          json_record = JSON.parse(line)
          print json_record
          end
        rescue JSON::ParserError
        end
    end
  end
end
# This example uses Python Requests library http://docs.python-requests.org/en/master/
import requests
import json

# Request Parameters
store = "android"       # Could be either "android" or "itunes".
language = "en"         # Two letter language code.

req_params = {"language": language}

# Auth Parameters
username = "{API_KEY}"  # Replace {API_KEY} with your own API key.
password = "X"          # Password can be anything.

# Request URL
url = "https://api.appmonsta.com/v1/stores/%s/reviews.json" % store

# This header turns on compression to reduce the bandwidth usage and transfer time.
headers = {'Accept-Encoding': 'deflate, gzip'}

response = requests.get(url,
                        auth=(username, password),
                        headers=headers,
                        params=req_params,
                        stream=True)

print response.status_code
for line in response.iter_lines():
  # Load json object and print it out
  json_record = json.loads(line)
  print json_record
// This example uses java Unirest library http://unirest.io/java.html

// Request Parameters
store = "android";      // Could be either "android" or "itunes".
language "US";          // Two letter language code.

// Auth Parameters
username = "{API_KEY}"; // Replace {API_KEY} with your own API key.
password = "X";         // Password can be anything.

// Request URL
requestUrl = "https://api.appmonsta.com/v1/stores/" + store + "/reviews.json"

// Java Main Code Sample
HttpResponse response = Unirest.get(requestUrl)
  // This header turns on compression to reduce the bandwidth usage and transfer time.
  .header("Accept-Encoding", "deflate, gzip")
  .basicAuth(username, password)
  .queryString("language", language)
  .asString();

int status = response.getStatus();

BufferedReader in = new BufferedReader(new InputStreamReader(response.getRawBody()));
String line = null;
while((line = in.readLine()) != null) {
  System.out.println(line);
}
<?php
// Request Parameters
$store = "android";      // Could be either "android" or "itunes".
$language = "en";        // Two letter language code.

// Auth Parameters
$username = "{API_KEY}"; // Replace {API_KEY} with your own API key.
$password = "X";         // Password can be anything.

// Request URL
$url = "https://api.appmonsta.com/v1/stores/$store/reviews.json?language=$language";

// PHP Main Code Sample
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 500);
curl_setopt($ch, CURLOPT_WRITEFUNCTION, function($curl, $data) {
    // Load json object and print it out
    $json_record = json_decode((string)$data, true);
    echo json_encode($json_record);
    return strlen($data);
});
curl_exec($ch);
curl_close($ch);
?>

The above code returns a streaming response with one record per line:

{
  "rating":5,
  "user_id":"103142985936483271758",
  "review_id":"Z3A6QU9xcFRPSDNlbTBHR0dTdy1GSkhrWFJjYnl4dThZamhKNm4zTUwtYzBkZW9Ud0owWDBLUDBlRWJZSVFNbUdnbEViNlJRclRCMzZCbXh6eENZUm9hVXc",
  "language":"en",
  "title":"Heartbleed Detector",
  "user_name":"Ken Mosburg",
  "app_id":"com.trendmicro.tool.heartbleeddetector",
  "review_text":"So far so good, fast, Said Weather Channel & Tune-In Radio apps vulnerable.  4 other weather apps not affected?",
  "date":"2014-04-19",
  "date_str":"April 19, 2014"
}

Request most recent app reviews dump. This is a bulk API call, returning a streaming response with one record per line.

HTTPS Request

GET https://api.appmonsta.com/v1/stores/<store>/reviews.json?language=<language>

Request Parameters

Parameter Required Value
store Yes android or itunes.
language Yes Specify language with two letter language code (EN, FR, IT, etc.).
start_date Yes Only returns reviews we have collected after this date. This can sometimes include few days older records than start_date, since it can take some time for us to scrape the reviews. It can also include even older reviews if they have changed in any way since the first time we have collected them.
end_date No Used with start_date parameter to get reviews we have collected within a particular time frame. If not specified we default this parameter to current date.

Response Fields

Field Description
app_id The app ID of the app this review is for.
app_version The app version this review is for, if present.
date Review date as a string in ISO format: YYYY-MM-DD.
date_str The original review date format, a string. android_only
language The language the review was written in. android_only
rating The star rating the user gave with this review. 1-5.
review_id The ID assigned by the store. May be non-unique across apps.
review_text The text of the body of the review.
title The title/subject line of the review, as written by the user, if there is one.
user_id The unique identifier for the user as assigned by the store ( deprecated for iTunes since August 2016 ). android_only
user_name The display name of the user writing the review.

Response Headers

Header Description
X-Request-ID The ID of the request to validate via Request Status API.

Add a new app

Don't forget to replace {API_KEY} with your actual API key.

curl -i -s -u "{API_KEY}:X" \
     "https://api.appmonsta.com/v1/stores/android/details/com.rovio.json -X PUT"

HTTP/1.1 202 ACCEPTED
Date: Thu, 26 Sep 2013 22:18:38 GMT
Server: Apache/2.2.20 (Ubuntu)
Set-Cookie: client_id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx; expires=Fri, 26-Sep-2014 22:18:38 GMT; Path=/
Vary: Accept-Encoding
Content-Length: 0
Content-Type: text/html; charset=utf-8

Tell us about an app we don't know about yet. We do our best to find all apps, but occasionally we miss one (there isn't a complete list for Google Play).

HTTPS Request

PUT https://api.appmonsta.com/v1/stores/<store>/details/<app_id>.json

Request Parameters

Parameter Required Value
store Yes android or itunes.
app_id Yes The ID of the app to add, e.g. com.rovio.angrybirds.

Response Code

202 if successfully added.

Get Request Status

Validate a bulk API request to see if it is successfully completed or had any errors.

HTTPS Request

https://api.appmonsta.com/v1/request/<request_id>

Request Method: GET

Request Parameters

Parameter Required Value
request_id Yes The ID that's sent via X-Request-ID.

Response Fields

Field Description
status Can be SUCCESS, ERROR, or ABORTED, if the request completed successfully, there are server side errors or the client aborted the request, respectively.
request_id Equals to the request ID given as parameter.
records Number of records sent as response. Only available on SUCCESS.
md5 md5 sum of the response data. This does not include headers, but only the HTTP body sent. Only available on SUCCESS.

Examples

For a successfully completed request:

{
  "status": "SUCCESS",
  "records": 10,
  "md5": "2909acb51bdb441b1f29f703ae6831e2",
  "request_id": "874995c4d75b4cb6bb8bbf6d3ef1d2da"
}

For requests that failed because of server error:

{
  "status": "ERROR"
  "request_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}

For an aborted request:

{
  "status": "ABORTED"
  "request_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}

For an unknown request:

{
"message": "Unknown request id request_id."
}