Get App Detail
curl --request GET \
--url https://scrapebadger.com/v1/google-play/apps/{app_id} \
--header 'X-API-Key: <x-api-key>'import requests
url = "https://scrapebadger.com/v1/google-play/apps/{app_id}"
headers = {"X-API-Key": "<x-api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<x-api-key>'}};
fetch('https://scrapebadger.com/v1/google-play/apps/{app_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://scrapebadger.com/v1/google-play/apps/{app_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://scrapebadger.com/v1/google-play/apps/{app_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<x-api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://scrapebadger.com/v1/google-play/apps/{app_id}")
.header("X-API-Key", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://scrapebadger.com/v1/google-play/apps/{app_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<x-api-key>'
response = http.request(request)
puts response.read_body{
"app_id": "<string>",
"title": "<string>",
"url": "<string>",
"description": "<string>",
"summary": "<string>",
"developer": {
"name": "<string>",
"developer_id": "<string>",
"url": "<string>",
"email": "<string>",
"website": "<string>",
"address": "<string>",
"phone": "<string>",
"legal_name": "<string>",
"legal_email": "<string>"
},
"score": 123,
"score_text": "<string>",
"ratings": 123,
"reviews": 123,
"histogram": {},
"installs": "<string>",
"installs_short": "<string>",
"min_installs": 123,
"max_installs": 123,
"chart_rank": {},
"price": {},
"offers_iap": true,
"iap_range": "<string>",
"contains_ads": true,
"ad_supported": true,
"genre": "<string>",
"genre_id": "<string>",
"genre_url": "<string>",
"content_rating": "<string>",
"content_rating_description": "<string>",
"icon": "<string>",
"header_image": "<string>",
"screenshots": [
"<string>"
],
"video": "<string>",
"video_image": "<string>",
"released": "<string>",
"released_utc": 123,
"released_at": "<string>",
"updated_utc": 123,
"updated_at": "<string>",
"version": "<string>",
"android_version": "<string>",
"android_version_text": "<string>",
"recent_changes": "<string>",
"privacy_policy": "<string>",
"data_safety": [
{}
],
"permissions": [
{}
],
"similar_apps_url": "<string>",
"similar_apps": [
{}
]
}Endpoints
Get App Detail
Full Google Play app detail — ratings histogram, install bands, pricing and IAP range, developer legal entity, media, version metadata, Data Safety and the permission tree.
GET
/
v1
/
google-play
/
apps
/
{app_id}
Get App Detail
curl --request GET \
--url https://scrapebadger.com/v1/google-play/apps/{app_id} \
--header 'X-API-Key: <x-api-key>'import requests
url = "https://scrapebadger.com/v1/google-play/apps/{app_id}"
headers = {"X-API-Key": "<x-api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<x-api-key>'}};
fetch('https://scrapebadger.com/v1/google-play/apps/{app_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://scrapebadger.com/v1/google-play/apps/{app_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://scrapebadger.com/v1/google-play/apps/{app_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<x-api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://scrapebadger.com/v1/google-play/apps/{app_id}")
.header("X-API-Key", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://scrapebadger.com/v1/google-play/apps/{app_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<x-api-key>'
response = http.request(request)
puts response.read_body{
"app_id": "<string>",
"title": "<string>",
"url": "<string>",
"description": "<string>",
"summary": "<string>",
"developer": {
"name": "<string>",
"developer_id": "<string>",
"url": "<string>",
"email": "<string>",
"website": "<string>",
"address": "<string>",
"phone": "<string>",
"legal_name": "<string>",
"legal_email": "<string>"
},
"score": 123,
"score_text": "<string>",
"ratings": 123,
"reviews": 123,
"histogram": {},
"installs": "<string>",
"installs_short": "<string>",
"min_installs": 123,
"max_installs": 123,
"chart_rank": {},
"price": {},
"offers_iap": true,
"iap_range": "<string>",
"contains_ads": true,
"ad_supported": true,
"genre": "<string>",
"genre_id": "<string>",
"genre_url": "<string>",
"content_rating": "<string>",
"content_rating_description": "<string>",
"icon": "<string>",
"header_image": "<string>",
"screenshots": [
"<string>"
],
"video": "<string>",
"video_image": "<string>",
"released": "<string>",
"released_utc": 123,
"released_at": "<string>",
"updated_utc": 123,
"updated_at": "<string>",
"version": "<string>",
"android_version": "<string>",
"android_version_text": "<string>",
"recent_changes": "<string>",
"privacy_policy": "<string>",
"data_safety": [
{}
],
"permissions": [
{}
],
"similar_apps_url": "<string>",
"similar_apps": [
{}
]
}Everything Play’s product page carries, in one fetch: the description, the 1–5
star histogram, install bands, price and in-app-purchase range, the developer’s
contact and legal entity, media, release and update timestamps, the Data Safety
declaration, the permission tree and the similar-apps rail.
Credits: 5
Authorization
string
required
Your ScrapeBadger API key.
Path Parameters
string
required
Android package id, e.g.
com.whatsapp. It is the id query parameter of a
play.google.com/store/apps/details?id=... URL.Query Parameters
string
default:"US"
Play storefront (
gl) — sets pricing and availability.string
default:"en"
Play content language (
hl), e.g. en or pt-BR.Response
string
Android package id.
string
string
string
Full store description.
string
One-line pitch.
Developer
number
Average rating.
string
integer
Total ratings.
integer
Total written reviews.
RatingHistogram
one_star … five_star — the bar chart Play renders.string
Install band, e.g.
5,000,000,000+.string
e.g.
5B+.integer
integer
ChartRank
The “#1 top free communication” badge when the app carries one —
rank, chart.Price
price, currency, price_text, is_free.boolean
string
e.g.
$0.99 - $99.99 per item.boolean
boolean
string
string
Category id, e.g.
COMMUNICATION.string
string
string
string
string
string[]
string
string
string
Release date as displayed.
number
Unix seconds.
string
ISO 8601 UTC.
number
string
string
string
string
string
What’s new in this version.
string
DataSafetySection[]
Play’s Data Safety card —
title, description per row.PermissionGroup[]
group, icon_url, permissions[] — the same tree
/permissions returns.string
Link to the full similar-apps cluster.
AppCard[]
The detail page’s similar-apps rail.
Example
curl "https://scrapebadger.com/v1/google-play/apps/com.whatsapp?country=US&lang=en" \
-H "X-API-Key: YOUR_API_KEY"
const res = await fetch(
"https://scrapebadger.com/v1/google-play/apps/com.whatsapp?" +
new URLSearchParams({ country: "US", lang: "en" }),
{ headers: { "X-API-Key": process.env.SCRAPEBADGER_API_KEY } },
);
const app = await res.json();
import requests
res = requests.get(
"https://scrapebadger.com/v1/google-play/apps/com.whatsapp",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"country": "US", "lang": "en"},
)
app = res.json()
Response
{
"app_id": "com.whatsapp",
"title": "WhatsApp Messenger",
"url": "https://play.google.com/store/apps/details?id=com.whatsapp&hl=en&gl=US",
"summary": "Simple. Reliable. Private.",
"description": "WhatsApp from Meta is a FREE messaging and video calling app...",
"developer": {
"name": "WhatsApp LLC",
"developer_id": "5700313618786177705",
"url": "https://play.google.com/store/apps/dev?id=5700313618786177705",
"email": "androidsupport@support.whatsapp.com",
"website": "https://www.whatsapp.com/",
"address": "1601 Willow Road Menlo Park, CA 94025 United States",
"legal_name": "WhatsApp LLC",
"legal_email": "androidsupport@support.whatsapp.com"
},
"score": 4.3,
"score_text": "4.3",
"ratings": 195204118,
"reviews": 5820113,
"histogram": {
"one_star": 17842011,
"two_star": 4210338,
"three_star": 8930442,
"four_star": 20114876,
"five_star": 144106451
},
"installs": "10,000,000,000+",
"installs_short": "10B+",
"min_installs": 10000000000,
"max_installs": 20000000000,
"chart_rank": { "rank": "#3", "chart": "top free communication" },
"price": { "price": 0.0, "currency": "USD", "price_text": "Free", "is_free": true },
"offers_iap": false,
"contains_ads": false,
"ad_supported": false,
"genre": "Communication",
"genre_id": "COMMUNICATION",
"content_rating": "Everyone",
"icon": "https://play-lh.googleusercontent.com/example=w240-h480-rw",
"screenshots": ["https://play-lh.googleusercontent.com/shot1=w720"],
"released": "Jan 1, 2010",
"released_utc": 1262304000.0,
"released_at": "2010-01-01T00:00:00Z",
"updated_utc": 1754870400.0,
"updated_at": "2026-08-11T00:00:00Z",
"version": "2.26.16.72",
"android_version": "5.0",
"android_version_text": "5.0 and up",
"recent_changes": "• Bug fixes and performance improvements.",
"privacy_policy": "https://www.whatsapp.com/legal/privacy-policy",
"data_safety": [
{
"title": "This app may share these data types with third parties",
"description": "Location, Personal info and 5 others"
},
{ "title": "Data is encrypted in transit", "description": null }
],
"permissions": [
{ "group": "Camera", "icon_url": "https://play-lh.googleusercontent.com/cam", "permissions": ["take pictures and videos"] }
],
"similar_apps_url": "https://play.google.com/store/apps/collection/cluster?clp=example",
"similar_apps": [
{
"app_id": "org.telegram.messenger",
"title": "Telegram",
"developer": "Telegram FZ-LLC",
"score": 4.3,
"installs": "1,000,000,000+",
"price": { "price": 0.0, "currency": "USD", "price_text": "Free", "is_free": true }
}
]
}
A field Play does not render for that app or storefront comes back
null (or
an empty list) rather than being omitted — chart_rank and iap_range are
the usual absentees.
