Google Play Audiobooks Product
Google Play audiobooks product endpoint with SerpApi-compatible product_id, localization, platform, rating, sort_by, and num parameters.
Run this endpoint
Endpoint
https://scrappa.co/api/google/play/audiobooks/product?product_id=com.hair_flutter&store=apps
https://scrappa.co/api/google/play/audiobooks/product?product_id=com.hair_flutter&store=apps
x-api-key
product_id
= com.hair_flutter
{
"search_parameters": {
"engine": "google_play_details",
"product_id": "com.hair_flutter",
"id": "com.hair_flutter",
"store": "apps",
"hl": "en",
"gl": "US"
},
"app": {
"app_id": "com.hair_flutter",
"title": "Hairstyle Try On - AI Haircut",
"developer": "JYCoder",
"url": "https://play.google.com/store/apps/details?id=com.hair_flutter&hl=en&gl=US"
...
Parameters
Start with the required fields, then add optional filters only when your use case needs them.
Runnable path
1 required parameter needed before sending a request.
9 optional filters available.
string
Required
Google Play product id. For apps this is the package name.
com.hair_flutter
string
Optional
Legacy alias for product_id.
1234567890
string
Optional
Google Play store vertical: apps, movies, tv, books, or audiobooks.
apps
string
Optional
TV season id for Google Play TV products.
1234567890
boolean
Optional
Request Google Play review-expanded product pages when available.
true
string
Optional
Review platform filter, such as phone, tablet, tv, chromebook, watch, or car.
example
integer
Optional
Review rating filter from 1 to 5.
10
string
Optional
Review sort mode, such as 1, 2, 3, most_relevant, newest, or rating.
example
integer
Optional
Requested review result count for clients that need SerpApi-compatible parameters.
10
string
Optional
Review pagination token for clients that need SerpApi-compatible parameters.
example
Request Examples
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://scrappa.co/api/google/play/audiobooks/product?product_id=com.hair_flutter&store=apps",
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: YOUR_API_KEY_HERE"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
<?php
use Illuminate\Support\Facades\Http;
$response = Http::timeout(30)
->withHeaders(['x-api-key' => 'YOUR_API_KEY_HERE'])
->get('https://scrappa.co/api/google/play/audiobooks/product?product_id=com.hair_flutter&store=apps');
if ($response->successful()) {
echo $response->body();
} else {
echo "Error: " . $response->status();
}
const options = {
method: 'GET',
headers: {
'x-api-key': 'YOUR_API_KEY_HERE'
}
};
fetch('https://scrappa.co/api/google/play/audiobooks/product?product_id=com.hair_flutter&store=apps', options)
.then(response => {
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return response.text();
})
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
const axios = require('axios');
const options = {
method: 'GET',
url: 'https://scrappa.co/api/google/play/audiobooks/product?product_id=com.hair_flutter&store=apps',
headers: {
x-api-key: 'YOUR_API_KEY_HERE',
}
};
try {
const response = await axios(options);
console.log(response.data);
} catch (error) {
console.error('Error:', error.message);
}
require 'net/http'
require 'uri'
uri = URI.parse("https://scrappa.co/api/google/play/audiobooks/product?product_id=com.hair_flutter&store=apps")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == 'https'
request = Net::HTTP::Get.new(uri.request_uri)
request['x-api-key'] = 'YOUR_API_KEY_HERE'
begin
response = http.request(request)
puts response.body
rescue => e
puts "Error: #{e.message}"
end
import http.client
import json
conn = http.client.HTTPSConnection("scrappa.co")
headers = {
'x-api-key': 'YOUR_API_KEY_HERE',
}
try:
conn.request("GET", "/api/google/play/audiobooks/product?product_id=com.hair_flutter&store=apps", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
except Exception as e:
print(f"Error: {e}")
finally:
conn.close()
import requests
headers = {
'x-api-key': 'YOUR_API_KEY_HERE',
}
try:
response = requests.get('https://scrappa.co/api/google/play/audiobooks/product?product_id=com.hair_flutter&store=apps', headers=headers)
response.raise_for_status()
print(response.text)
except requests.exceptions.RequestException as e:
print(f"Error: {e}")
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import java.io.IOException;
public class ApiExample {
public static void main(String[] args) {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://scrappa.co/api/google/play/audiobooks/product?product_id=com.hair_flutter&store=apps")
.addHeader("x-api-key", "YOUR_API_KEY_HERE")
.build();
try (Response response = client.newCall(request).execute()) {
if (response.isSuccessful()) {
System.out.println(response.body().string());
} else {
System.out.println("Error: " + response.code());
}
} catch (IOException e) {
System.out.println("Error: " + e.getMessage());
}
}
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://scrappa.co/api/google/play/audiobooks/product?product_id=com.hair_flutter&store=apps", nil)
if err != nil {
fmt.Println("Error creating request:", err)
return
}
req.Header.Set("x-api-key", "YOUR_API_KEY_HERE")
resp, err := client.Do(req)
if err != nil {
fmt.Println("Error making request:", err)
return
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("Error reading response:", err)
return
}
fmt.Println(string(body))
}
#!/bin/bash
curl -X GET \
-H "x-api-key: YOUR_API_KEY_HERE" \
"https://scrappa.co/api/google/play/audiobooks/product?product_id=com.hair_flutter&store=apps"
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("x-api-key", "YOUR_API_KEY_HERE");
try
{
var response = await client.SendAsync(new HttpRequestMessage(HttpMethod.Get, "https://scrappa.co/api/google/play/audiobooks/product?product_id=com.hair_flutter&store=apps"));
var content = await response.Content.ReadAsStringAsync();
Console.WriteLine(content);
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
}
import axios from 'axios';
async function run(): Promise<void> {
try {
const response = await axios({
method: 'GET',
url: 'https://scrappa.co/api/google/play/audiobooks/product?product_id=com.hair_flutter&store=apps',
headers: {
'x-api-key': 'YOUR_API_KEY_HERE',
},
});
console.log(response.data);
} catch (error) {
console.error('Error:', error);
}
}
void run();
use reqwest::Client;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = Client::new();
let response = client
.get("https://scrappa.co/api/google/play/audiobooks/product?product_id=com.hair_flutter&store=apps")
.header("x-api-key", "YOUR_API_KEY_HERE")
.send()
.await?;
println!("{}", response.text().await?);
Ok(())
}
Response Schema
Example response fields are illustrative; inspect the JSON before integrating.
Example response fields
Scan these fields before integrating.
search_parameters
app
product_info
media
about_this_app
categories
data_safety
ratings
+4 more
Common categories fields
name
link
category_id
{
"search_parameters": {
"engine": "google_play_details",
"product_id": "com.hair_flutter",
"id": "com.hair_flutter",
"store": "apps",
"hl": "en",
"gl": "US"
},
"app": {
"app_id": "com.hair_flutter",
"title": "Hairstyle Try On - AI Haircut",
"developer": "JYCoder",
"url": "https://play.google.com/store/apps/details?id=com.hair_flutter&hl=en&gl=US"
},
"product_info": {
"title": "Hairstyle Try On - AI Haircut",
"authors": [
{
"name": "JYCoder",
"link": "https://play.google.com/store/apps/developer?id=JYCoder"
}
],
"extensions": [
"Contains ads",
"In-app purchases"
],
"rating": 3.9,
"reviews": 130971,
"downloads": "1M+",
"thumbnail": "https://play-lh.googleusercontent.com/9h_tFkTEDjJ_xJm_Q3esLk2UKJxI4pZNHHbUg1JBJOyfJWb7Fh4isLlc8KeC5BmBYUGBlnvOnFEhcqJBWQik"
},
"media": {
"images": [
"https://play-lh.googleusercontent.com/3W68JpIQJRZbIitj6YHlfOSCrGW0w2aoF0rd041n4gA7BL31yStxbEZCgBzW706fhW_4XfC51cbW0_QOErlcKMo=w526-h296-rw"
]
},
"about_this_app": {
"version": "338.0.0",
"requires_android": "6.0",
"in_app_purchases": "$9.99 - $49.00 per item",
"released_on": "Jun 2, 2021",
"updated_on": "Jun 25, 2026",
"downloads": "1,000,000+",
"content_rating": "Everyone",
"offered_by": "JYCoder"
},
"categories": [
{
"name": "Beauty",
"link": "https://play.google.com/store/apps/category/BEAUTY",
"category_id": "BEAUTY"
}
],
"data_safety": [
{
"text": "No data collected",
"subtext": "Learn more about how developers declare collection"
},
{
"text": "Data is encrypted in transit"
}
],
"ratings": [
{
"stars": 5,
"count": 88416
}
],
"reviews": [
{
"id": "57bfa1c4-d7ec-4c10-b6b4-5c01c888804f",
"title": "Amanda Christian",
"rating": 1,
"snippet": "Summary - definitely not worth the 50 for subscription...",
"likes": 5,
"date": "June 13, 2026",
"iso_date": "2026-06-13T00:07:15Z"
}
],
"app_support": {
"support_email": "jycoder@gmail.com",
"privacy_policy": "https://doc-hosting.flycricket.io/hairstyle-try-on-privacy-policy/75714506-5e43-441d-8d62-852687598dd2/privacy"
},
"about_the_developer": {
"name": "\u5b63\u5b87\u7eaf",
"email": "myt890515@gmail.com",
"address": "\u5357\u516d\u516c\u8def399\u5f04 \u6d66\u4e1c\u65b0\u533a, \u4e0a\u6d77\u5e02 China 201399"
},
"developer_contact": {
"website": "https://z91650577.app-ads-txt.com",
"support_email": "jycoder@gmail.com",
"privacy_policy": "https://doc-hosting.flycricket.io/hairstyle-try-on-privacy-policy/75714506-5e43-441d-8d62-852687598dd2/privacy",
"name": "\u5b63\u5b87\u7eaf",
"alternative_email": "myt890515@gmail.com",
"address": "\u5357\u516d\u516c\u8def399\u5f04 \u6d66\u4e1c\u65b0\u533a, \u4e0a\u6d77\u5e02 China 201399"
}
}
Errors
Handle these documented responses before retrying or showing customer-facing failures.
Validation Error
The id or url parameter failed validation.
Google Play Upstream Unavailable
Google Play could not be fetched through the configured server-status cookie session and curl_cffi sidecar path.
{
"error": "Google Play upstream is temporarily unavailable.",
"error_code": "google_play_upstream_unavailable",
"retryable": true
}
Generate Code with AI
Copy a ready-made prompt with all the endpoint details, parameters, and example responses. Paste it into ChatGPT, Claude, or any AI assistant to instantly generate working code.