Introduction
This is the documentation for the MightySignal and AppMonsta APIs. Although the documentation is merged, as of January 2021 the v1 APIs are still on separate domains and require different API keys and authentication. The next version of the API, v2, will merge the APIs under a single authentication system.
In the v1 documentation we will present which endpoints are hosted on mightysignal.com and which are hosted on appmonsta.com.
For access, please contact us to get your API tokens.
Usage
MightySignal runs two APIs, each with unique capabilities and endpoints. In this documentation they are differentiated by the AppMonsta and MightySignal logos. The next version of our API will have a single API host and merged functionality with fewer endpoints.
The MightySignal API gives you access to:
- SDKs: Counts and metadata for every SDK that we track
- Apps: Basic data about each app and the the SDKs it has installed.
- Publishers: App and SDK data rolled up to the publisher level.
The AppMonsta API gives you access to:
- Apps: Detailed data about each app including hardware compatibility and permissions requested.
- Reviews: User reviews associated with each app.
- Rankings: Apps that show up on ranking lists (ie. Overall, Top Grossing, etc).
- Publishers: App and SDK data rolled up to the publisher level.
Product Endpoints
While our API endpoints are separate, we’ll use these icons to help differentiate between MightySignal and AppMonsta endpoints:
Icon | Meaning |
---|---|
![]() |
Uses the AppMonsta endpoint |
![]() |
Uses the MightySignal endpoint |
MightySignal Authentication
To authenticate:
# You should pass the header with each request
curl "https://api.mightysignal.com/<your-endpoint-of-interest>"
-H "MIGHTYSIGNAL-TOKEN: <your-api-token>"
Make sure to replace
<your-api-token>
with your API token.
Authentication is done via HTTP Headers on each request with your MightySignal API token:
MIGHTYSIGNAL-TOKEN: <your-api-token>
AppMonsta Authentication
Requests to the AppMonsta API are protected with HTTP Basic authentication. You must provide your API key to each request made against our API.
Please contact support@mightysignal.com to begin a free trial. If you lost your key you can just enter your email again and we will retrieve it for you.
Details
A few quick details about the APIs:
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. |
AppMonsta 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. |
AppMonsta 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
AppMonsta 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
. AppMonsta API will compress the response if this header is specified. For more
information on how to add this header refer to code examples below.
Platform Specific Fields
Some of the fields are limited to only a particular platform (either Google Play or iTunes App Store). In that case we tag the field description with the appropriate icon:
Icon | Meaning | AppMonsta API | MightySignal API |
---|---|---|---|
![]() |
Field available only for Android apps. | ‘android’ | ‘android’ |
![]() |
Field available only for iOS apps. | ‘itunes’ | ‘ios’ |
Rate limiting
Every MightySignal API token has a limited number of requests it can make in a certain timeframe. Use the rate limit route to see what your token’s limits are.
Example: See your token’s limits
curl "https://api.mightysignal.com/rate-limit"
-H "MIGHTYSIGNAL-TOKEN: <your-api-token>"
{
"count": 1,
"limit": 2500,
"period": 3600
}
HTTP Request Format
GET /rate-limit
Rate limit information
Key | Description |
---|---|
count | The number of requests made using the given token during the current window |
limit | The maximum number of requests allowable in the window for the current token |
period | The length of the request window (in seconds) |
This token has a limit of 2500 requests per hour (hour = 3600 seconds) and only 1 request has been made against it.
Notes
- This rate limit hopes to minimize the damage caused by abusive or misconfigured scripting clients, not to restrict legitimate use cases. Please let us know if this limit restricts your workflow, and we can work with you to increase your limit.
Pagination
Example: Alamofire is a ubiquitous iOS SDK. To get all apps using Alamofire, you will need to page through the results.
The first set of results will tell you the total number of results and pages.
curl "https://api.mightysignal.com/ios/app?installed_sdk_id=153"
-H "MIGHTYSIGNAL-TOKEN: <your-api-token>"
{
"apps": ["..."],
"page": 1,
"page_size": 25,
"results_count": 25,
"total_page_count": 3859,
"total_results_count": 96454
}
You have the 25 results on the first page. There are 96,454 total apps and 3,859 pages of the current page size. To get the next set of results, pass the
page
query param.
curl "https://api.mightysignal.com/ios/app?installed_sdk_id=153&page=2"
-H "MIGHTYSIGNAL-TOKEN: <your-api-token>"
{
"apps": ["..."],
"page": 2,
"page_size": 25,
"results_count": 25,
"total_page_count": 3859,
"total_results_count": 96454
}
Routes with a large number of results will be paged and API clients will have to iterate through each page to get all results. Routes that support paging will return page meta information along with the results. Using the query parameters page
and page_size
, you can iterate through all pages.
Query Parameters
Parameter | Default | Description |
---|---|---|
page | 1 | The page number to return (1-indexed). Unless specified, will always return the first page |
page_size | 25 | The number of results to return per page. (max: 50) |
Page Meta Information
Key | Description |
---|---|
page | The current page of results (configurable by query param) |
page_size | The maximum number of results that was returned per page (configurable by query param) |
results_count | The number of results on the current page |
total_page_count | The total number of pages for all results given the current page size |
total_results_count | The total number of results that meet the given query |
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."
}
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. |
403 | You’re requesting something your subscription doesn’t cover. |
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. |
500 | Something went wrong on our end. |
503 | The service went out. |
Apps
The Apps API endpoints are the most common way to interact with MightySignal and AppMonsta data. While much of the data is similar there are two important distinctions:
- MightySignal endpoints may include SDKs and allows you to filter by SDKs
- AppMonsta endpoints may stream complete daily snapshots of an entire App Store
The next version of our API will have a single API host and consolidated endpoints for easier use.
Get partial app detail with full SDK details
Example: Retrieve the latest information about Airbnb’s iOS app
curl "https://api.mightysignal.com/ios/app/401626263"
-H "MIGHTYSIGNAL-TOKEN: <your-api-token>"
curl "https://api.mightysignal.com/ios/app/id/258389"
-H "MIGHTYSIGNAL-TOKEN: <your-api-token>"
{
"price" : 0,
"support_url" : "https://airbnb.com/help",
"id" : 258389,
"app_store_id" : 401626263,
"first_seen_ads_date" : "2016-06-04T07:07:27.000Z",
"platform" : "ios",
"current_version_ratings_count" : 4765,
"categories" : [
{
"platform" : "ios",
"type" : "primary",
"id" : 6003,
"name" : "Travel"
},
{
"platform" : "ios",
"id" : 6012,
"type" : "secondary",
"name" : "Lifestyle"
}
],
"installed_sdks" : [
{
"id" : 3,
"name" : "1PasswordExtension",
"categories" : [
"Authentication"
],
"first_seen_date" : "2015-12-10T18:29:06.000-08:00",
"last_seen_date" : "2018-05-30T17:44:31.000-07:00"
},
...
],
"bundle_identifier" : "com.airbnb.app",
"current_version" : "18.24",
"seller" : "Airbnb, Inc.",
"description" : "Unforgettable travel experiences start with Airbnb. Find travel adventures and new places to go faraway or near to you, and access vacation home rentals, new experiences, and places to visit all around the world. Book everything for your trip, or start earning money as a host. \n\nBOOK TRAVEL EXPERIENCES\nGo on local experiences led by native experts, whether it’s for multiple days or just an afternoon. Explore Seoul's underground music scene, hunt for truffles in a Tuscan forest, or give back to the community with a social impact experience.\n\nBOOK VACATION HOMES\nChoose from over 4 million vacation home rentals across 191+ countries. Search by price, neighborhood, amenities, and more.\n\nPOPULAR DESTINATIONS\nExperience the beautiful sights & find local guides for the perfect vacation:\n• Rio – Explore the birth place of Samba or Hand Glide over the sights\n• Paris – Find your fill in some of the best culinary tours and museums\n• Barcelona – Discover the cities beauty with guided walking tours\n\nFor travelers: \n• Book vacation home rentals and travel experiences for your next solo journey, family vacation, or business trip\n• Search for last minute travel accommodations or long term rentals\n• Save your favorite rental homes, experiences, and places—and invite friends and family to plan the trip with you\n• Add experiences and events to your itinerary\n• Message your host and get directions to your home\n\nFor hosts:\n• Share your extra space or lead experiences that showcase what makes your city great\n• Update your listing and calendar availability\n• Share what’s special about your neighborhood with a host guidebook\n• Message guests and manage their reservations",
"taken_down" : false,
"name" : "Airbnb",
"first_scanned_date" : "2015-12-11T02:29:06.000Z",
"has_ad_spend" : true,
"current_version_rating" : "5.0",
"original_release_date" : "2010-11-10",
"last_seen_ads_date" : "2018-02-08T16:52:49.000Z",
"publisher" : {
"platform" : "ios",
"id" : 110570,
"app_store_id" : 401626266,
"name" : "Airbnb, Inc."
},
"last_updated" : "2018-06-13",
"user_base" : "elite",
"all_version_rating" : "4.5",
"has_in_app_purchases" : false,
"mobile_priority" : "high",
"uninstalled_sdks" : [
{
"id" : 5,
"categories" : [
"Ad Attribution"
],
"name" : "Adjust",
"first_seen_date" : "2015-12-10T18:29:06.000-08:00",
"last_seen_date" : "2016-03-22T22:25:04.000-07:00"
},
...
],
"all_version_ratings_count" : 181528,
"last_scanned_date" : "2018-05-31T00:44:31.000Z",
"icon_url" : "https://robohash.org/Sub-Ex Keylex1350.png?size=350x350\u0026set=set1"
}
HTTP Request Format
GET /<platform>/app/<app_store_id>
where <platform>
is the store platform and <app_store_id>
is the universal bundle ID from the store. For example, Airbnb’s Apple App Store ID is 401626263
, which you can find by looking at its iTunes URL: (https://itunes.apple.com/us/app/airbnb/id401626263). If you don’t already know the iTunes URL of an app, you can find it on the app’s MightySignal page.
The same ID system applies for looking up Android apps. For example, Snapchat’s App Store ID is com.snapchat.android
, which you can find by looking at its Google Play URL: (https://play.google.com/store/apps/details?id=com.snapchat.android). If you don’t alreay know the Google Play URL of an app, you can find it on the app’s MightySignal page.
If you have the MightySignal App ID, you can instead do
GET /<platform>/app/id/<mightysignal_id>
where <platform>
is the store platform and <mightysignal_id>
is the ID from the MightySignal web portal, data feeds, or Salesforce integration.
Some resources have properties which are computationally intensive to calculate (eg. apps and their SDK install histories). Fetching a list of those resources puts a significant strain on our ability to support all API clients simultaneously.
For that reason, certain routes show summary representation of responses, which means it includes a subset of the entire information about the resource. This is often enough information, but making another request to the basic GET request for that resource will return the full information.
Response
Key | Description |
---|---|
id | The MightySignal ID of the app |
name | Name of the app |
mobile_priority | How much the company cares about the app. Currently, the rank is a function of how recently the app has been updated, and whether they advertise on Facebook. high : Updated within the past 2 months or advertised on Facebook. medium : Updated within last 2-4 months. low : Last update more than 4 months ago. |
user_base | How large the user base is. Can be elite , moderate , strong , or weak . |
support_url | The support URL |
current_version_rating | Average rating (out of 5) for the current version |
current_version_ratings_count | Number of ratings for the current version |
all_version_rating | Average rating (out of 5) for all versions |
all_version_ratings_count | Number of ratings for all versions |
has_ad_spend | We have detected this app advertising on Facebook. Note: If this value is not true, that doesn’t mean that it’s not advertising; it just means we haven’t detected an advertisement. |
icon_url | The URL of the app store icon |
last_updated | The last date the app was updated |
first_seen_ads_date | The date we first saw Facebook ads for this app |
last_seen_ads_date | The date we last saw Facebook ads for this app |
first_scanned_date | The date we first scanned this app for SDKs |
last_scanned_date | The date we last scanned this app for SDKs |
has_in_app_purchases | Whether the app has in-app purchases |
seller | Seller name |
categories.name | The name of the category |
catgories.type | The type of the category for this app (primary or secondary ) |
original_release_date | Release date of the first version of the app |
current_version | The current version of the app |
price | The price (in $) |
description | App description |
installed_sdks.id | MightySignal ID of the installed SDK. It’s recommended you store this so you can reference the SDK easily. |
installed_sdks.name | Name of the installed SDK |
installed_sdks.first_seen_date | The first date the SDK was seen in the app. |
installed_sdks.last_seen_date | The last date the SDK was seen in the app |
installed_sdks.categories | The categories of this SDK. |
uninstalled_sdks.id | The MightySignal ID of the uninstalled SDK. It’s recommended you store this so you can reference the SDK easily. |
uninstalled_sdks.name | Name of the uninstalled SDK |
uninstalled_sdks.first_seen_date | The first date the SDK was seen in the app. |
uninstalled_sdks.last_seen_date | The last date the SDK was seen in the app |
uninstalled_sdks.categories | The categories of this SDK. |
publisher.id | The MightySignal ID of the publisher |
publisher.name | Name of the publisher |
publisher.platform | ios |
publisher.app_store_id | The App Store ID of the publisher |
platform | ios |
app_store_id | The App Store ID of the app |
Get full app details
Don’t forget to replace
{API_KEY}
with your actual API key.
curl --compressed -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
platform = "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/#{platform}/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
platform = "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
request_url = "https://api.appmonsta.com/v1/stores/%s/details/%s.json" % (platform, 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(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
platform = "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/" + platform + "/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
$platform = "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/$platform/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,
"publisher_id_num": "5629993546372213086",
"requires_os": "Varies with device",
"related": {
"related_apps": [
"net.zedge.android",
"com.dewmobile.kuaiya.play",
"com.playit.videoplayer",
"com.tencent.mm",
"...",
"sms.mms.messages.text.free",
"com.linkedin.android",
"com.smscolorful.formessenger.messages",
"com.ufotosoft.justshot",
"tv.twitch.android.app"
],
"more_from_developer": [
"com.facebook.katana",
"com.facebook.mlite",
"com.facebook.lite",
"com.facebook.talk",
"...",
"cloud.thesymphony"
]
},
"video_urls": [],
"file_size": "Varies with device",
"publisher_name": "Facebook",
"id": "com.facebook.orca",
"price_currency": "USD",
"genres": [
"Communication"
],
"app_type": "APPLICATION",
"icon_url": "https://play-lh.googleusercontent.com/ldcQMpP7OaVmglCF6kGas9cY_K0PsJzSSosx2saw9KF1m3RHaEXpH_9mwBWaYnkmctk",
"content_rating_info": "",
"interactive_elements": "Users Interact, Shares Location, In-App Purchases",
"version": "297.0.0.6.119",
"publisher_url": "https://www.facebook.com/games/fbmessenger_android/",
"contains_ads": false,
"whats_new": "",
"publisher_id": "Facebook",
"price": "Free",
"screenshot_urls": [
"https://play-lh.googleusercontent.com/bJnl4YLxLmECHVgH3t2jmeCCADomRgOyB1SPHcRtSilBcNbUkbgv8ONdYOm-yfxuhSA",
"...",
"https://play-lh.googleusercontent.com/Aw5aVl_x_YBo9YHWGOwd5hguaOggNmT7Iv1U_F4XB6Vc5A4BcWNlSAaoseJvGxdh0A"
],
"status": "updated",
"publisher_email": "android-support@fb.com",
"description": "Be together whenever, with our free* all-in-one communication app, complete with unlimited text, voice, video calling and group video chat features. Easily sync your messages and contacts to your Android phone and connect with anyone, anywhere.<br><br>CROSS-APP MESSAGING AND CALLING<br>Connect with your Instagram friends right from Messenger. Simply search for them by name or username to message or call.<br><br>VANISH MODE<br>Send messages that only last for a moment. Opt in to use vanish mode where seen messages disappear after you exit the chat.<br><br>PRIVACY SETTINGS<br>New privacy settings let you choose who can reach you, and where your messages are delivered.<br><br>CUSTOM REACTIONS<br>Lost for words? You can customize your reactions, with lots more emojis to choose from, including 🎉 and 🔥.<br><br>CHAT THEMES<br>Choose from fun themes and colors, like Tie-Dye or Love, to make your chats more personal.<br><br>WATCH TOGETHER<br>Watch videos, tv shows, and movies with your friends over Messenger Video Chat and Rooms when you can't be together. Capture every moment and reaction in real-time.<br><br>GET THE GROUP TOGETHER WITH ROOMS<br>Send a link to group video chat with anyone, even if they don't have Messenger. Host up to 50 people with no time limits.<br><br>FREE* VIDEO CALLS TO STAY CONNECTED<br>Keep your friends and family close with unlimited live video chatting. Host group video calls with up to 8 people, with high-quality audio, high definition video, and interactive video features like face filters.<br><br>UNLIMITED FREE* TEXT & PHONE CALLS<br>Skip exchanging phone numbers and simply send a message to your Facebook friends, even if they’re across the world. Enjoy high-quality voice and text messaging on mobile, tablet, and desktop.<br><br>TURN OFF THE LIGHTS IN DARK MODE<br>Give your eyes some rest with a sleek new look that darkens the colors of the chat interface.<br><br>*RECORD AND SEND VOICE AND VIDEO MESSAGES<br>When text just won't cut it, just hit record and send. Say, sing, show, or shout it out loud.*<br><br>EXPRESS YOURSELF WITH STICKERS, GIFS, AND EMOJIS<br>Use custom stickers to show your creative side. You can even add effects and filters to video calls.<br><br>*SEND FILES, PHOTOS, AND VIDEOS<br>There’s no limit to the number of files you want to share with your friends.*<br><br>PLAN AND MAKE IT HAPPEN<br>Make plans to get together with polls and more. Suggest a meeting spot or tell friends where you are by sharing your location with just a few taps.<br><br>*SEND MONEY SECURELY AND EASILY (within US only)<br>Send and receive money securely and easily with friends and family right in the app by adding your debit card, PayPal account or reloadable prepaid card (single-source cards eligible for sending money only).*<br><br>CHAT WITH BUSINESSES<br>Easily connect with your favorite businesses to make reservations, get customer support, find deals and more.<br><br>BRING SMS INTO MESSENGER<br>No need to open multiple apps to stay in touch. Use one app for SMS and Messenger.<br><br>COMPATIBLE ACROSS PLATFORMS<br>Chat with friends across an array of devices, like desktop, Portal, and others.<br><br>Privacy Policy: https://www.facebook.com/about/privacy/<br><br>LEARN MORE about Messenger texting and group video chat at: http://messenger.com (http://messenger.com/)<br><br>* Data rates apply<br><br>Some Messenger features may not be available in your country or region.",
"price_value": 0,
"all_rating": 4.2,
"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": 1612198990,
"genre": "Communication",
"privacy_url": "https://m.facebook.com/policy.php",
"editors_choice": true,
"genre_ids": [
"COMMUNICATION"
],
"iap_price_range": "$0.99 - $399.99 per item",
"all_histogram": {
"1": 8869546,
"2": 2470149,
"3": 4552442,
"4": 7647126,
"5": 52853420
},
"release_date": "2014-01-30",
"all_rating_count": 76392685,
"bundle_id": "com.facebook.orca",
"permissions": [
"receive text messages (SMS)",
"change your audio settings",
"record audio",
"read your text messages (SMS or MMS)",
"read calendar events plus confidential information",
"read your contacts",
"...",
"read Google service configuration",
"receive data from Internet",
"run at startup",
"read the contents of your USB storage",
"control vibration"
],
"status_date": "February 1, 2021",
"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 |
---|---|---|
platform | Yes | Required platform indicating which store to check (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. ![]() |
app_name | The name of the app. |
app_type | Whether the app is categorized as GAME or APPLICATION . ![]() |
bundle_id | The internal bundle identifier of the app binary. |
contains_ads | Whether the app is marked on the store as containing ads or not. ![]() |
content_rating | The age-appropriate content rating of the app. |
content_rating_info | Additional info on content rating of the app if present. ![]() |
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. ![]() |
current_rating | The average rating for the current version of this app. ![]() |
current_rating_count | The number of ratings for the current version of this app. ![]() |
current_reviews | The number of reviews for the current version of this app, if available as a summarized number. ![]() |
description | The text of the description of the app. |
downloads | The number of downloads this app has, if available. ![]() |
editors_choice | Whether the app is marked on the store as an editor’s choice or not. ![]() |
file_size | The file size of the downloadable app as a human readable string, if present. Value is displayed as shown in each store. |
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. ![]() |
iap_price_range | Price range of all in-app products available for the app. ![]() |
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. ![]() |
"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. ![]() |
is_universal | Whether the app is universal, meaning it’s optimized for both iPhone and iPad. ![]() |
languages | Languages that the app supports, as they’re defined on the store side. ![]() |
permissions | List of permissions required by this app. ![]() |
"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. |
privacy_url | Privacy policy URL provided by the publisher, if present. ![]() |
publisher_address | Physical address of the publisher if listed in the app store. ![]() |
publisher_email | The email address of the publisher of this app, if present. ![]() |
publisher_id | The ID of the publisher of this app as assigned by the store. |
publisher_id_num | The numeric 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 list indicating which hardware is required to run this app. ![]() |
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. ![]() |
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 . ![]() |
translated_description | Translated app description, when in other language than expected. ![]() |
version | The current version of the app. |
video_urls | An array of urls of demo videos for this app, if present. ![]() |
whats_new | The text of the “What’s new in this version” writeup, if present. |
Filter apps by publisher or SDK
Using query parameters, you can do basic filtering to find apps that meet your criteria
Example: Get all iOS apps published by Uber Technologies, Inc.
curl "https://api.mightysignal.com/ios/app?publisher_id=200033"
-H "MIGHTYSIGNAL-TOKEN: <your-api-token>"
{
"results_count" : 3,
"total_results_count" : 3,
"page" : 1,
"total_page_count" : 1,
"page_size" : 25,
"apps" : [
{
"original_release_date" : "2010-05-20",
"has_in_app_purchases" : false,
"platform" : "ios",
"rating" : "4.0",
"has_ad_spend" : true,
"publisher" : {
"platform" : "ios",
"name" : "Uber Technologies, Inc.",
"id" : 200033
},
"mobile_priority" : "high",
"app_store_id" : 368677368,
"current_version" : "2.134.3",
"last_updated" : "2016-05-18",
"first_seen_ads_date" : "2016-01-15",
"last_seen_ads_date" : "2016-02-30",
"first_scanned_date" : "2016-05-15",
"last_scanned_date" : "2016-07-08",
"price" : 0,
"support_url" : "https://support.uber.com/home",
"seller" : "Uber Technologies, Inc.",
"current_version_rating" : "3.5",
"current_version_ratings_count" : 174,
"all_versions_rating" : "3.5",
"all_versions_ratings_count" : 8275,
"user_base" : "elite",
"categories" : [
"..."
],
"id" : 596273,
"name" : "Uber"
},
"..."
]
}
Example: See a set of apps using the Parse iOS SDK.
curl "https://api.mightysignal.com/ios/app?installed_sdk_id=2362"
-H "MIGHTYSIGNAL-TOKEN: <your-api-token>"
{
"apps" : [
"...",
{
"rating" : "4.5",
"seller" : "Tapps Tecnologia da Informacao LTDA.",
"last_updated" : "2016-02-10",
"first_seen_ads_date" : "2016-01-15",
"last_seen_ads_date" : "2016-02-30",
"first_scanned_date" : "2016-05-15",
"last_scanned_date" : "2016-07-08",
"user_base" : "moderate",
"support_url" : "http://tappsgames.com/contact/",
"publisher" : {
"platform" : "ios",
"id" : 10795,
"name" : "Tapps Tecnologia da Informacao LTDA."
},
"has_in_app_purchases" : true,
"original_release_date" : "2011-07-18",
"name" : "Snake ~ Best Free Classic Worm and Serpent Game",
"mobile_priority" : "medium",
"app_store_id" : 446768343,
"platform" : "ios",
"has_ad_spend" : false,
"current_version_rating" : "4.0",
"current_version_ratings_count" : 200,
"all_version_rating" : "4.0",
"all_version_ratings_count" : 2000,
"id" : 1001590,
"price" : 0,
"categories" : [
"..."
],
"current_version" : "1.6.5"
},
"..."
],
"total_results_count" : 25849,
"results_count" : 25,
"total_page_count" : 1034,
"page_size" : 25,
"page" : 1
}
HTTP Request Format
GET /<platform>/app?<key1>=<value1>,<value2>&<key2>=<value1>,<value2>&...
Query Parameters
Key | Description |
---|---|
platform | string Required platform indicating which store to check ( android or ios ) |
publisher_id | integer If set, the result will only include apps released by this publisher |
installed_sdk_id | integer If set, the result will only include apps that have the SDK installed |
has_ad_spend | boolean If true, the result will only include apps that we know are advertising on Facebook |
order_by | string Order results by field. Must be one of: first_seen_ads_date last_seen_ads_date first_scanned_date last_scanned_date last_updated original_release_date .By default, results are in ascending order. Include - in front of the value to order results in descending order e.g. -last_seen_ads_date |
You can use the MightySignal web portal to find the ids for the query parameters.
For example, the publisher_id
would be 200033
for Uber Technlogies, Inc. since its MightySignal link is http://mightysignal.com/app/app#/publisher/ios/200033, and the installed_sdk_id
for Mixpanel would be 1896
since its MightySignal link is http://mightysignal.com/app/app#/sdk/ios/1896.
Response
Key | Description |
---|---|
platform | string Required platform indicating which store to check ( android or ios ) |
results_count | See Pagination |
total_results_count | See Pagination |
page | See Pagination |
total_page_count | See Pagination |
page_size | See Pagination |
apps | An array of iOS apps. You can look at the response format here |
Notes
- Your query results will often return a large number of apps and you will be required to page through all the responses. See the Pagination section for more information.
Check app availability
Don’t forget to replace
{API_KEY}
with your actual API key.
curl --compressed -u "{API_KEY}:X" "https://api.appmonsta.com/v1/stores/android/availability.json"
require 'net/https'
require 'json'
# Request Parameters
platform = "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/#{platform}/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
platform = "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
request_url = 'https://api.appmonsta.com/v1/stores/%s/availability.json' % platform
# 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
platform = "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/" + platform + "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
$platform = "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/$platform/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. The following countries are supported:
AO
, AI
, AL
, AE
, AR
, AM
, AG
, AU
, AT
, AZ
, BE
,
BJ
, BF
, BG
, BH
, BS
, BY
, BZ
, BM
, BO
, BR
, BB
,
BN
, BT
, BW
, CA
, CH
, CL
, CN
, CG
, CO
, CV
, CR
,
KY
, CY
, CZ
, DE
, DM
, DK
, DO
, DZ
, EC
, EG
, ES
,
EE
, FI
, FJ
, FR
, FM
, GB
, GH
, GM
, GW
, GR
, GD
,
GT
, GY
, HK
, HN
, HR
, HU
, ID
, IN
, IE
, IS
, IL
,
IT
, JM
, JO
, JP
, KZ
, KE
, KG
, KH
, KN
, KR
, KW
,
LA
, LB
, LR
, LC
, LK
, LT
, LU
, LV
, MO
, MD
, MG
,
MX
, MK
, ML
, MT
, MN
, MZ
, MR
, MS
, MU
, MW
, MY
,
NA
, NE
, NG
, NI
, NL
, NO
, NP
, NZ
, OM
, PK
, PA
,
PE
, PH
, PW
, PG
, PL
, PT
, PY
, QA
, RO
, RU
, SA
,
SN
, SG
, SB
, SL
, SV
, ST
, SR
, SK
, SI
, SE
, SZ
,
SC
, TC
, TD
, TH
, TJ
, TM
, TT
, TN
, TR
, TW
, TZ
,
UG
, UA
, UY
, US
, UZ
, VC
, VE
, VG
, VN
, YE
, ZA
,
ZW
HTTPS Request
GET https://api.appmonsta.com/v1/stores/<platform>/availability.json
Request Parameters
Parameter | Required | Value |
---|---|---|
platform | Yes | Required platform indicating which store to check (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. |
Get details for all apps
Don’t forget to replace
{API_KEY}
with your AppMonsta API key.
curl --compressed -u "{API_KEY}:X" \
"https://api.appmonsta.com/v1/stores/android/details.json?date=2021-01-01&country=US"
require 'net/https'
require 'json'
# Request Parameters
platform = "android" # Could be either "android" or "itunes".
country_code = "US" # Two letter country code.
date = "2021-01-01" # 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/#{platform}/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
platform = "android" # Could be either "android" or "itunes".
country_code = "US" # Two letter country code.
date = "2021-01-01" # 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
request_url = "https://api.appmonsta.com/v1/stores/%s/details.json" % platform
# 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
platform = "android"; // Could be either "android" or "itunes".
countryCode = "US"; // Two letter country code.
date = 2021-01-01; // 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/" + platform + "/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
$platform = "android"; // Could be either "android" or "itunes".
$countryCode = "US"; // Two letter country code.
$date = "2021-01-01"; // 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/$platform/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",
"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/<platform>/details.json?country=<country_code>&date=<date>
Request Parameters
Parameter | Required | Value |
---|---|---|
platform | Yes | Required platform indicating which store to check (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. |
Get universal app bundle IDs for all apps
Don’t forget to replace
{API_KEY}
with your AppMonsta API key.
curl --compressed -u "{API_KEY}:X" "https://api.appmonsta.com/v1/stores/android/ids"
require 'net/https'
require 'json'
# Request Parameters
platform = "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/#{platform}/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
platform = "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
request_url = 'https://api.appmonsta.com/v1/stores/%s/ids' % platform
# 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),
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
platform = "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/" + platform + "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
$platform = "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/$platform/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/<platform>/ids
Request Parameters
Parameter | Required | Value |
---|---|---|
platform | 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. |
Add a new app to AppMonsta
Don’t forget to replace
{API_KEY}
with your AppMonsta 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/<platform>/details/<app_id>.json
Request Parameters
Parameter | Required | Value |
---|---|---|
platform | Yes | Required platform indicating which store to check (android or itunes ) |
app_id | Yes | The ID of the app to add, e.g. com.rovio.angrybirds . |
Response Code
202
if successfully added.
SDKs
SDKs are specific to a given platform. Each app has many SDKs, and each SDK can have many apps. Currently there is no relationship between the iOS and Android versions of SDKs.
Get information about an SDK
Example: Get information about the Alamofire iOS SDK
curl "https://api.mightysignal.com/ios/sdk/153"
-H "MIGHTYSIGNAL-TOKEN: <your-api-token>"
{
"id": 153,
"platform": "ios",
"name": "Alamofire",
"website": "https://github.com/Alamofire/Alamofire",
"categories": [
"Networking"
],
"apps_count": 34253
}
HTTP Request Format
GET /<platform>/sdk/<sdk_id>
where <platform>
is either ios
or android
and <sdk_id>
is the MightySignal id of the SDK.
One way to find the <sdk_id>
is by using the MightySignal web portal. For example, the <sdk_id>
for the Mixpanel iOS SDK would be 1896
since its MightySignal link is http://mightysignal.com/app/app#/sdk/ios/1896.
You can also use the responses from the iOS or Android app routes to find the <sdk_id>
.
Response
Key | Description |
---|---|
id | The MightySignal ID of the SDK. It’s recommended you store this so you can reference the SDK easily. |
apps_count | The number of apps that contain this SDK for the given platform (iOS or Android) |
platform | ios or android |
summary | Brief description of the SDK |
website | Website of the SDK |
categories | The categories of this SDK. |
Get your SDK timeline
Example: Retrieve your timeline based on your email address.
curl "https://api.mightysignal.com/user/timeline?email=you@yourcompany.com&weeks=1"
-H "MIGHTYSIGNAL-TOKEN: <your-api-token>"
[
{
"sdk_id": 114,
"sdk_name": "Braze",
"platform": "ios",
"activity": "uninstall",
"week": "2020-08-10",
"apps_count": 1
},
{
"sdk_id": 232,
"sdk_name": "Branch",
"platform": "android",
"activity": "install",
"week": "2020-08-10",
"apps_count": 5
},
{
"sdk_id": 6374,
"sdk_name": "Amplitude",
"platform": "android",
"activity": "install",
"week": "2020-08-10",
"apps_count": 3
},
{
"sdk_id": 72,
"sdk_name": "Airship",
"platform": "android",
"activity": "uninstall",
"week": "2020-08-10",
"apps_count": 3
},
{
"sdk_id": 118,
"sdk_name": "Braze",
"platform": "android",
"activity": "uninstall",
"week": "2020-08-10",
"apps_count": 1
},
{
"sdk_id": 2042,
"sdk_name": "Leanplum",
"platform": "android",
"activity": "uninstall",
"week": "2020-08-10",
"apps_count": 1
},
{
"sdk_id": 46,
"sdk_name": "Mixpanel",
"platform": "android",
"activity": "uninstall",
"week": "2020-08-10",
"apps_count": 2
},
{
"sdk_id": 55803,
"sdk_name": "OneSignal",
"platform": "android",
"activity": "uninstall",
"week": "2020-08-10",
"apps_count": 15
},
{
"sdk_id": 55803,
"sdk_name": "OneSignal",
"platform": "android",
"activity": "install",
"week": "2020-08-10",
"apps_count": 16
}
]
MightySignal timeline produces an array of SDK events that can be useful for polling to get real-time, specific events.
HTTP Request Format (iOS)
GET /user/timeline?email=you@yourcompany.com&weeks=1
where you@yourcompany.com
is the email address associated with the MightySignal account for the desired timeline and weeks
is the number of weeks ago the events occurred.
Response
Key | Description |
---|---|
sdk_id | The MightySignal SDK ID |
sdk_name | The name of the SDK |
platform | ios or android |
activity | install or uninstall |
week | The week when the activity happened |
apps_count | The number of apps that had the activity during the week |
Get your SDK feed
Example: Retrieve your feed based on your email address.
curl "https://api.mightysignal.com/user/feed?email=you@yourcompany.com&minutes=15"
-H "MIGHTYSIGNAL-TOKEN: <your-api-token>"
[
{
"id": 80070650,
"sdk_id": 55931,
"sdk_name": "Google AdMob",
"sdk_icon": "https://www.google.com/s2/favicons?domain=developers.google.com",
"platform": "android",
"activity": "install",
"app_id": 7255904,
"app_name": "maruco purene",
"app_icon": "https://play-lh.googleusercontent.com/NGgB082moY77nG_iOkH80hBtWbOKnuOrT5gyH-rFkZ7o1GGcPoiKWs6LZW5dbKzoNg",
"time": "2021-01-26T13:59:24.000-08:00"
},
{
"id": 80070513,
"sdk_id": 55931,
"sdk_name": "Google AdMob",
"sdk_icon": "https://www.google.com/s2/favicons?domain=developers.google.com",
"platform": "android",
"activity": "uninstall",
"app_id": 7246345,
"app_name": "Bravo!",
"app_icon": "https://play-lh.googleusercontent.com/Re6z3j5iOVOt1RPBeZ2zoMhT0J-7Y0PQXK-DIWyRNMyxTsm7lq_HPuOU-bfjI_3deG4",
"time": "2021-01-26T13:50:49.000-08:00"
},
{
"id": 80070560,
"sdk_id": 4485,
"sdk_name": "Gson",
"sdk_icon": "https://www.google.com/s2/favicons?domain=search.maven.org",
"platform": "android",
"activity": "install",
"app_id": 7251900,
"app_name": "SIGMAG SIGTV.FR",
"app_icon": "https://play-lh.googleusercontent.com/YM_AJ0eR9OpZpbN0JvgnsF7ARoiLUqr-nYgCefUDoIquObeagrXRQe47KvMbMp1daM4",
"time": "2021-01-26T13:54:34.000-08:00"
},
{
"id": 80070636,
"sdk_id": 4485,
"sdk_name": "Gson",
"sdk_icon": "https://www.google.com/s2/favicons?domain=search.maven.org",
"platform": "android",
"activity": "install",
"app_id": 7255904,
"app_name": "maruco purene",
"app_icon": "https://play-lh.googleusercontent.com/NGgB082moY77nG_iOkH80hBtWbOKnuOrT5gyH-rFkZ7o1GGcPoiKWs6LZW5dbKzoNg",
"time": "2021-01-26T13:59:24.000-08:00"
},
{
"id": 80070633,
"sdk_id": 57973,
"sdk_name": "TransistorSoft",
"sdk_icon": "https://www.google.com/s2/favicons?domain=www.transistorsoft.com",
"platform": "android",
"activity": "install",
"app_id": 7255490,
"app_name": "Ich Liebe Dich Bilder",
"app_icon": "https://play-lh.googleusercontent.com/tT-SHgFDaMU4erc9dASvNj7oGAQfG1wPU6cD57zC-TEMJm5A7aCiYZctDM7PaLJKyA",
"time": "2021-01-26T13:58:48.000-08:00"
}
]
MightySignal SDK feed produces an array of weekly batches with SDK install and uninstall summaries that can be useful for high-level alerts. It’s the API behind the web portal feed.
HTTP Request Format
GET /user/timeline?email=you@yourcompany.com&minutes=60
where you@yourcompany.com
is the email address associated with the MightySignal account for the desired timeline and minutes
is the number of minutes ago the event occurred.
Response
Key | Description |
---|---|
id | Unique identifier for the event |
sdk_id | The MightySignal SDK ID |
sdk_name | The name of the SDK |
sdk_icon | The URL for the SDK icon |
platform | ios or android |
activity | install or uninstall |
app_id | The MightySignal App ID |
app_name | The name of the App |
app_icon | The URL for the App icon |
time | The time that the event was recorded |
Publishers
Publishers are specific to a given platform (iOS or Android). Each iOS app has an iOS publisher, and that iOS publisher can have many iOS apps. Each Android app has an Android publisher, and that Android publisher can have many Android apps.
Get information about a specific publisher
Example: Retrieve the latest information about Shazam (for iOS)
curl "https://api.mightysignal.com/ios/publisher/207911"
-H "MIGHTYSIGNAL-TOKEN: <your-api-token>"
{
"app_store_id" : 284993479,
"websites" : [
"http://www.shazam.com/iphone",
"http://www.shazam.com",
"http://www.shazam.com/music/web/faqs.html?platform=iPhone"
],
"apps" : [
{ "id" : "234", "bundle_id" : "com.bundle.id1" },
{ "id" : "567", "bundle_id" : "com.bundle.id2" }
],
"name" : "Shazam Entertainment Limited",
"platform" : "ios",
"id" : 207911,
"details" : [
{
"linkedin_handle" : "company/shazam-entertainment",
"street_number" : "26",
"crunchbase_handle" : "organization/shazam-entertainment",
"country_code" : "GB",
"ticker" : null,
"state" : "England",
"industry_group" : "Technology Hardware & Equipment",
"postal_code" : "W6 7HA",
"sub_industry" : "Technology Hardware, Storage & Peripherals",
"facebook_handle" : "shazam",
"lng" : "-0.226008",
"google_rank" : null,
"name" : "Shazam",
"sector" : "Information Technology",
"description" : "Identify the media playing around you, explore the music and TV you love. Discover song lyrics from your favourite artists and albums on Shazam!",
"twitter_handle" : "Shazam",
"market_cap" : null,
"sub_premise" : null,
"employees" : 321,
"lat" : "51.494715",
"twitter_id" : "14772687",
"alexa_global_rank" : 5944,
"domain" : "shazam.com",
"city" : "London",
"utc_offset" : 1,
"founded_year" : 1999,
"company_type" : "private",
"employees_range" : "251-1000",
"country" : "United Kingdom",
"alexa_us_rank" : 5993,
"street_name" : "Hammersmith Grove",
"raised" : 136000000,
"phone" : null,
"industry" : "Communications Equipment",
"logo_url" : "https://logo.clearbit.com/shazam.com",
"annual_revenue" : null,
"tags" : [
"Mobile",
"B2C",
"Music",
"Entertainment & Recreation",
"Entertainment"
],
"email_provider" : false,
"time_zone" : "Europe/London",
"state_code" : "England",
"tech_used" : [
"facebook_connect",
"wordpress",
"mailgun",
"android",
"google_apps",
"youtube",
"aws_route_53",
"nginx",
"ios"
],
"legal_name" : "Shazam Entertainment Ltd."
}
]
}
HTTP Request Format (iOS)
GET /ios/publisher/<publisher_id>
where <publisher_id>
is the MightySignal ID of the iOS publisher. You can get it from the MightySignal publisher page (eg. http://mightysignal.com/app/app#/publisher/ios/207911) or from the publisher.id
field from the JSON for an iOS app.
HTTP Request Format (Android)
GET /android/publisher/<publisher_id>
where <publisher_id>
is the MightySignal ID of the Android publisher. You can get it from the MightySignal publisher page (eg. http://mightysignal.com/app/app#/publisher/android/1162) or from the publisher.id
field from the JSON for an Android app.
Response
Key | Description |
---|---|
app_store_id or google_play_id | The App Store ID or Google Google Play ID of the publisher |
websites | An array of all websites of all apps of the publisher |
name | The name of the publisher |
platform | ios or android |
id | The MightySignal ID of the publisher |
details.linkedin_handle | LinkedIn handle |
details.street_number | Street number |
details.crunchbase_handle | Crunchbase handle |
details.country_code | Country code of the country where the publisher is located |
details.ticker | Stock symbol |
details.state | State where the publisher is located |
details.industry_group | Industry |
details.postal_code | Postal code of the publisher’s location |
details.sub_industry | Sub-industry |
details.facebook_handle | Facebook handle |
details.lng | Longitude of the publisher’s location |
details.google_rank | Rank on Google |
details.name | Name |
details.sector | Sector |
details.description | Description |
details.twitter_handle | Twitter handle |
details.market_cap | Market cap |
details.sub_premise | Location suite number |
details.employees | Number of employees |
details.alexa_global_rank | Global Alexa rank |
details.domain | Domain |
details.city | City where the publisher is located |
details.utc_offset | UTC offset of the publisher’s location |
details.founded_year | Year the publisher was founded |
details.company_type | Type of company |
details.employees_range | Range of employees , eg. 251-1000 |
details.country | Country where the publisher is located |
details.alexa_us_rank | US Alexa rank |
details.street_name | Street name |
details.raised | Money raised ($) |
details.phone | Phone number |
details.industry | Industry |
details.logo_url | URL of logo |
details.annual_revenue | Annual revenue ($) |
details.tags | Array of tags describing the publisher’s business |
details.email_provider | Whether the domain is an email provider |
details.time_zone | Time zone of the location |
details.state_code | The state code of the location |
details.tech_used | Array of web technologies on the developer’s website |
details.legal_name | Legal name |
Lookup a publisher by domain
Example: Retrieve the publisher who owns the domain
snapchat.com
curl "https://api.mightysignal.com/ios/publisher?domain=snapchat.com"
-H "MIGHTYSIGNAL-TOKEN: <your-api-token>"
[
{
"id" : 249735,
"name" : "Snapchat, Inc.",
"platform" : "ios",
"app_store_id" : 446889612
}
]
HTTP Request Format (iOS)
GET /ios/publisher?domain=<domain>
where <domain>
is the domain in question. Make sure to use only the domain, and not the scheme (i.e http/s
), subdomains, or path
HTTP Request Format (Android)
GET /android/publisher?domain=<domain>
where <domain>
is the domain in question. Make sure to use only the domain, and not the scheme (i.e http/s
), subdomains, or path
Lookup publisher contacts
Example: Retrieve the contacts of the Android publisher with ID 360
curl "https://api.mightysignal.com/ios/publisher/360/contacts"
-H "MIGHTYSIGNAL-TOKEN: <your-api-token>"
[
{
"clearbitId":"e_d6d2f126-a158-4eee-b44a-de7105867179",
"givenName":"katherine",
"familyName":"tassi",
"fullName":"Katherine Tassi",
"title":"Managing Counsel, Privacy",
"email":"katherine.tassi@uber.com",
"linkedin":"https://www.linkedin.com/in/katherinetassi"
},
{
"clearbitId":"e_a88f586d-74f1-4d49-85b0-7763f11d3804",
"givenName":"mary",
"familyName":"demyanritti",
"fullName":"Mary Ritti",
"title":"VP Communications",
"email":"mary@snap.com",
"linkedin":"in/maryritti"
}
]
HTTP Request Format (iOS)
GET /ios/publisher/<publisher_id>/contacts
where <publisher_id>
is the MightySignal ID of the iOS publisher. You can get it from the MightySignal publisher page (eg. http://mightysignal.com/app/app#/publisher/ios/207911) or from the publisher.id
field from the JSON for an iOS app.
HTTP Request Format (Android)
GET /android/publisher/<publisher_id>/contacts
where <publisher_id>
is the MightySignal ID of the Android publisher. You can get it from the MightySignal publisher page (eg. http://mightysignal.com/app/app#/publisher/android/1162) or from the publisher.id
field from the JSON for an Android app.
Get details for all app publishers
Don’t forget to replace
{API_KEY}
with your AppMonsta API key.
curl --compressed -u "{API_KEY}:X" "https://api.appmonsta.com/v1/stores/android/publishers.json?date=2021-01-01"
require 'net/https'
require 'json'
# Request Parameters
platform = "android" # Could be either "android" or "itunes".
date = "2021-01-01" # 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/#{platform}/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
platform = "android" # Could be either "android" or "itunes".
date = "2021-01-01" # 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
request_url = 'https://api.appmonsta.com/v1/stores/%s/publishers.json' % platform
# 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():
# Print one app ID per line
print line
// This example uses java Unirest library http://unirest.io/java.html
// Request Parameters
platform = "android"; // Could be either "android" or "itunes".
date = "2021-01-01"; // 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/" + platform + "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
$platform = "android"; // Could be either "android" or "itunes".
$date = "2021-01-01"; // 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/$platform/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/<platform>/publishers.json?date=<date>
Request Parameters
Parameter | Required | Value |
---|---|---|
platform | Yes | Required platform indicating which store to check (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. ![]() |
The email address of the publisher of this app, if present. ![]() |
Response Headers
Header | Description |
---|---|
X-Request-ID | The ID of the request to validate via Request Status API. |
Rankings
Rankings are an AppMonsta specialty.Every day we grab the complete worldwide rankings snapshot of every category in every country. Enjoy!
General app rankings
Don’t forget to replace
{API_KEY}
with your AppMonsta API key.
curl --compressed -u "{API_KEY}:X" \
"https://api.appmonsta.com/v1/stores/android/rankings.json?date=2021-01-01&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 = "2021-01-01" # 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 = "2021-01-01" # 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 = "2021-01-01"; // 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 = "2021-01-01"; // 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. The following countries are supported:
AO
, AI
, AL
, AE
, AR
, AM
, AG
, AU
, AT
, AZ
, BE
,
BJ
, BF
, BG
, BH
, BS
, BY
, BZ
, BM
, BO
, BR
, BB
,
BN
, BT
, BW
, CA
, CH
, CL
, CN
, CG
, CO
, CV
, CR
,
KY
, CY
, CZ
, DE
, DM
, DK
, DO
, DZ
, EC
, EG
, ES
,
EE
, FI
, FJ
, FR
, FM
, GB
, GH
, GM
, GW
, GR
, GD
,
GT
, GY
, HK
, HN
, HR
, HU
, ID
, IN
, IE
, IS
, IL
,
IT
, JM
, JO
, JP
, KZ
, KE
, KG
, KH
, KN
, KR
, KW
,
LA
, LB
, LR
, LC
, LK
, LT
, LU
, LV
, MO
, MD
, MG
,
MX
, MK
, ML
, MT
, MN
, MZ
, MR
, MS
, MU
, MW
, MY
,
NA
, NE
, NG
, NI
, NL
, NO
, NP
, NZ
, OM
, PK
, PA
,
PE
, PH
, PW
, PG
, PL
, PT
, PY
, QA
, RO
, RU
, SA
,
SN
, SG
, SB
, SL
, SV
, ST
, SR
, SK
, SI
, SE
, SZ
,
SC
, TC
, TD
, TH
, TJ
, TM
, TT
, TN
, TR
, TW
, TZ
,
UG
, UA
, UY
, US
, UZ
, VC
, VE
, VG
, VN
, YE
, ZA
,
ZW
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. ![]() |
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 app rankings
Don’t forget to replace
{API_KEY}
with your AppMonsta API key.
curl --compressed -u "{API_KEY}:X" \
"https://api.appmonsta.com/v1/stores/android/rankings/aggregate.json?date=2021-01-01&country=US"
require 'net/https'
require 'json'
# Request Parameters
platform = "android" # Could be either "android" or "itunes".
country_code = "US" # Two letter country code.
date = "2021-01-01" # 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/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
platform = "android" # Could be either "android" or "itunes".
country_code = "US" # Two letter country code.
date = "2021-01-01" # 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" % platform
# 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
platform = "android"; // Could be either "android" or "itunes".
countryCode = "US"; // Two letter country code.
date = "2021-01-01"; // 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/" + platform + "/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
$platform = "android"; // Could be either "android" or "itunes".
$countryCode = "US"; // Two letter country code.
$date = "2021-01-01"; // 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/$platform/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/<platform>/rankings/aggregate.json?country=<country_code>&date=<date>
Request Parameters
Parameter | Required | Value |
---|---|---|
platform | Yes | Required platform indicating which store to check (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 AppMonsta API key.
curl --compressed -u "{API_KEY}:X" \
"https://api.appmonsta.com/v1/stores/<platform>/rankings/genres.json?date=2021-01-01"
require 'net/https'
require 'json'
# Request Parameters
platform = "android" # Could be either "android" or "itunes".
date = "2021-01-01" # 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/#{platform}/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
platform = "android" # Could be either "android" or "itunes".
date = "2021-01-01" # 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" % platform
# 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
platform = "android"; // Could be either "android" or "itunes".
date = "2021-01-01"; // 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/" + platform + "/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
$platform = "android"; // Could be either "android" or "itunes".
$date = "2021-01-01"; // 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/$platform/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/<platform>/rankings/genres.json?date=<date>
Request Parameters
Parameter | Required | Value |
---|---|---|
platform | Yes | Required platform indicating which store to check (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 AppMonsta API key.
curl --compressed -u "{API_KEY}:X" \
"https://api.appmonsta.com/v1/stores/<platform>/rankings/types.json?date=2021-01-01"
require 'net/https'
require 'json'
# Request Parameters
platform = "android" # Could be either "android" or "itunes".
date = "2021-01-01" # 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/#{platform}/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
platform = "android" # Could be either "android" or "itunes".
date = "2021-01-01" # 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" % platform
# 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
platform = "android"; // Could be either "android" or "itunes".
date = "2021-01-01"; // 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/" + platform + "/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
$platform = "android"; // Could be either "android" or "itunes".
$date = "2021-01-01"; // 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/$platform/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/<platform>/rankings/types.json?date=<date>
Request Parameters
Parameter | Required | Value |
---|---|---|
platform | Yes | Required platform indicating which store to check (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. |
Ranking genres metadata
Don’t forget to replace
{API_KEY}
with your AppMonsta API key.
curl --compressed -u "{API_KEY}:X" \
"https://api.appmonsta.com/v1/stores/<platform>/rankings/genres.json?date=2021-01-01"
require 'net/https'
require 'json'
# Request Parameters
platform = "android" # Could be either "android" or "itunes".
date = "2021-01-01" # 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/#{platform}/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
platform = "android" # Could be either "android" or "itunes".
date = "2021-01-01" # 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" % platform
# 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
platform = "android"; // Could be either "android" or "itunes".
date = "2021-01-01"; // 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/" + platform + "/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
$platform = "android"; // Could be either "android" or "itunes".
$date = "2021-01-01"; // 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/$platform/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 ranking genres/categories by date.
HTTPS Request
GET https://api.appmonsta.com/v1/stores/<platform>/rankings/genres.json?date=<date>
Request Parameters
Parameter | Required | Value |
---|---|---|
platform | Yes | Required platform indicating which store to check (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 types metadata
Don’t forget to replace
{API_KEY}
with your AppMonsta API key.
curl --compressed -u "{API_KEY}:X" \
"https://api.appmonsta.com/v1/stores/<platform>/rankings/types.json?date=2021-01-01"
require 'net/https'
require 'json'
# Request Parameters
platform = "android" # Could be either "android" or "itunes".
date = "2021-01-01" # 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/#{platform}/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
platform = "android" # Could be either "android" or "itunes".
date = "2021-01-01" # 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" % platform
# 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
platform = "android"; // Could be either "android" or "itunes".
date = "2021-01-01"; // 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/" + platform + "/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
$platform = "android"; // Could be either "android" or "itunes".
$date = "2021-01-01"; // 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/$platform/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 metadata by date.
HTTPS Request
GET https://api.appmonsta.com/v1/stores/<platform>/rankings/types.json?date=<date>
Request Parameters
Parameter | Required | Value |
---|---|---|
platform | Yes | Required platform indicating which store to check (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. |
Reviews
Reviews are an AppMonsta feature that provides the full text and sentiment analysis of every review submitted on an app. This is a feed; single app queries are not supported.
General app reviews
Don’t forget to replace
{API_KEY}
with your AppMonsta API key.
curl --compressed -u "{API_KEY}:X" \
"https://api.appmonsta.com/v1/stores/android/reviews.json?language=en"
require 'net/https'
require 'json'
# Request Parameters
platform = "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/#{platform}/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
platform = "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
request_url = "https://api.appmonsta.com/v1/stores/%s/reviews.json" % platform
# This header turns on compression to reduce the bandwidth usage and transfer time.
headers = {'Accept-Encoding': 'deflate, gzip'}
response = requests.get(request_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
platform = "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/" + platform + "/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
$platform = "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/$platform/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,
"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/<platform>/reviews.json?language=<language>
Request Parameters
Parameter | Required | Value |
---|---|---|
platform | Yes | Required platform indicating which store to check (android or itunes ). |
language | Yes | Specify language with two letter language code (EN , FR , IT , etc.). |
start_date | No | 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. ![]() |
id | The globally unique reviews ID. For iTunes apps, we use ID provided by App Store. For Android apps we generate them by calculating MD5 hash from: app_id , review_text , user_name , rating , title , language . |
language | The language the review was written in. ![]() |
rating | The star rating the user gave with this review. 1-5. |
review_id | The reviews 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_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. |
App-Ads.txt
The App-Ads.txt endpoint returns the App-Ads.txt dataset for a given platform.
App-ads.txt feed
Don’t forget to replace
{API_KEY}
with your AppMonsta API key.
curl --compressed -u "{API_KEY}:X" \
"https://api.appmonsta.com/v1/stores/android/app-ads.json?date=2021-01-01"
require 'net/https'
require 'json'
# Request Parameters
platform = "android" # Could be either "android" or "itunes".
date = "2021-01-01" # If not given then the latest dataset will be downloaded.
# 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/#{platform}/app-ads.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
platform = "android" # Could be either "android" or "itunes".
date = "2021-01-01" # If not given then the latest dataset will be downloaded
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
request_url = "https://api.appmonsta.com/v1/stores/%s/app-ads.json?date=%s" % (platform, date)
# This header turns on compression to reduce the bandwidth usage and transfer time.
headers = {'Accept-Encoding': 'deflate, gzip'}
response = requests.get(request_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
platform = "android"; // Could be either "android" or "itunes".
date = "2021-01-01"; // If not given then the latest dataset will be downloaded.
// 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/" + platform + "/app-ads.json?date="+ date
// 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
$platform = "android"; // Could be either "android" or "itunes".
$date = "2021-01-01"; // If not given then the latest dataset will be downloaded.
// 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/$platform/app-ads.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 returns a streaming response with one record per line:
{
"bundle_ids": [
"com.audionowdigital.player.esat"
],
"app_ids": [
"com.audionowdigital.player.esat"
],
"publisher_id_num": "4672801629623044337",
"publisher_url": "http://www.audionow.com",
"publisher_id": "Radio ESAT",
"app_ads_records": {
"variables": [
{
"name": "CONTACT",
"value": "foo@bar.com"
}
],
"data": [
{
"domain": "inmobi.com",
"publisher_id": "089d8fdb13bd4f958417b38abf5a91b9",
"ca_id": "83e75a7ae333ca9d",
"relationship": "DIRECT"
},
{
"domain": "inmobi.com",
"publisher_id": "7436",
"ca_id": "83e75a7ae333ca9d",
"relationship": "DIRECT"
}
]
}
}
Request most recent app-ads.txt 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/<platform>/app-ads.json?date=<date>
Request Parameters
Parameter | Required | Value |
---|---|---|
platform | Yes | Required platform indicating which store to check (android or itunes ). |
date | No | In the following format: YYYY-MM-DD . If not given then the latest dataset will be downloaded. (Optional). |
Response Fields
Field | Description |
---|---|
bundle_ids | A list of bundle IDs (internal bundle identifiers of app binaries). |
app_ids | A list of app IDs (The unique identifier for the app as assigned by the store). |
publisher_id | Publisher ID in the app store. |
publisher_id_num | (New) Numeric publisher ID in the app store. (Android only, not set for all publishers) |
publisher_url | Publisher’s URL (used for fetching app-ads.txt records). |
app_ads_records | app-ads.txt records dict, which has two keys, variables and data |
variables | A list of variables, if present. Each record in the list has the fields below. |
data | A list of data records. Each record in the list consists of the fields below. |
Variables Field | Description |
---|---|
name | Variable name. Officially supported are currently CONTACT (email, phone number, link to a form, etc.) and SUBDOMAIN. |
value | Variable value. |
Data Field | Description |
---|---|
domain | Domain name of the advertising system. |
publisher_id | Publisher’s account ID. |
relationship | Type of account / relationship. |
ca_id | Certification Authority ID, if present. |
Response Headers
Header | Description |
---|---|
X-Request-ID | The ID of the request to validate via Request Status API. |
Content-Disposition | The app-ads snapshot filename. |
X-Content-Date | The app-ads snapshot date in YYYY/MM/DD format. |
IAB
Get Content Taxonomy v2.1 categories for the Google Play and the App Store apps.
IAB categories feed
Don’t forget to replace
{API_KEY}
with your AppMonsta API key.
curl --compressed -u "{API_KEY}:X" \
"https://apidev.appmonsta.com/v1/stores/android/iab_taxonomy/categories.json?date=2021-01-01"
require 'net/https'
require 'json'
# Request Parameters
platform = "android" # Could be either "android" or "itunes".
date = "2021-01-01" # If not given then the latest dataset will be downloaded.
# 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/#{platform}/iab_taxonomy/categories.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
platform = "android" # Could be either "android" or "itunes".
date = "2021-01-01" # If not given then the latest dataset will be downloaded
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
request_url = "https://api.appmonsta.com/v1/stores/%s/iab_taxonomy/categories.json?date=%s" % (platform, date)
# This header turns on compression to reduce the bandwidth usage and transfer time.
headers = {'Accept-Encoding': 'deflate, gzip'}
response = requests.get(request_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
platform = "android"; // Could be either "android" or "itunes".
date = "2021-01-01"; // If not given then the latest dataset will be downloaded.
// 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/" + platform + "/iab_taxonomy/categories.json?date="+ date
// 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
$platform = "android"; // Could be either "android" or "itunes".
$date = "2021-01-01"; // If not given then the latest dataset will be downloaded.
// 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/$platform/iab_taxonomy/categories.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 returns a streaming response with one record per line:
{
"app_id": "br.com.brasiltracksat.brasiltracksat",
"genre_id": "AUTO_AND_VEHICLES",
"iab_taxonomy": {
[
"id": "41",
"name": "Auto Rentals",
"tier_1": "Automotive",
"tier_2": "Auto Rentals",
"tier_3": "",
"parent": "1",
]
}
}
Request most recent IAB categories 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/<platform>/app-ads.json?date=<date>
Request Parameters
Parameter | Required | Value |
---|---|---|
platform | Yes | Required platform indicating which store to check (android or itunes ). |
date | No | In the following format: YYYY-MM-DD . If not given then the latest dataset will be downloaded. (Optional). |
Response Fields
Field | Description |
---|---|
app_id | A list of app IDs (The unique identifier for the app as assigned by the store). |
genre_id | The ID of the primary category of an app, as returned by the store. |
iab_taxonomy | A list of objects containing Content Taxonomy v2.1 with Tiered Categories. |
IAB Taxonomy Field | Description |
---|---|
id | Unique IAB category ID. |
name | Unique IAB category ID. |
tier_1 | Tier 1 category. |
tier_2 | Tier 2 category. |
tier_3 | Tier 3 category. |
parent | Parent category ID. |
APKs
The APK downloader endpoint requests a decrypted Android app APK file for a given app id. If the app is not available in the default country (“US”) then the country
parameter is needed with the relevant country code. Once a request is issued, the response JSON will have a download_url
field where the downloaded APK file (and its split files) is going to be available for download.
Decrypted APK file downloader
Don’t forget to replace
{API_KEY}
with your AppMonsta API key.
curl --compressed -u "{API_KEY}:X" \
"https://apidev.appmonsta.com/v1/stores/<platform>/bin/<app_id>.json?country=<country>&version_code=<version_code>"
The above code returns a streaming response with one record per line:
{
"app_id": "com.americanexpress.android.acctsvcs.de",
"download_url": "https://appmonsta-apk-downloads.s3.amazonaws.com/v1/com.americanexpress.de/<code_version>/com.americanexpress.de.zip",
"status": "Processing",
}
HTTPS Request
GET https://apidev.appmonsta.com/v1/stores/<platform>/bin/<app_id>.json?country=<country>&version_code=<version_code>
Request Parameters
Parameter | Required | Value |
---|---|---|
platform | Yes | Required platform indicating which store to check (android or itunes ). |
app_id | Yes | The unique app identifier (bundle ID) for the correct store. |
country | Yes | The two-letter country code, to download in a given country. (Default: US) |
version_vode | No | APK’s version code to download. If not set, the latest will be downloaded. (Optional) |
Response Fields
Field | Description |
---|---|
app_id | The unique app identifier (bundle ID) for the correct store. |
download_url | Direct file location on S3. The file path is constructed using the following schema: |
<s3_prefix>/<app_id>/<build_number>/<app_id>.zip
status | Status of the request. It can be Processing
or Error
.
Support
Email us if you have any questions or encounter any bugs.
If reporting a bug, please include the following information to help us diagnose the problem:
- The request(s) called (ex.
https://api.mightysignal.com/ios/app/1
) - The received response
- The expected response or a description of what went wrong