Skip to content

AppDetails

Izzy edited this page May 18, 2023 · 4 revisions

Listing app details

As usual, you first need to make the class available to your code. Then you can lookup details on a given app (e.g. obtained by one of the Search methods) by passing it to the parseApplication() method. Here's an example call:

require "google-play.php";
$google = new GooglePlay();
$app = $google->parseApplication("com.bezapps.flowdiademo");
print_r($app);

The output then would look like this:

Array
(
    [packageName] => com.bezapps.flowdiademo
    [name] => Flowdia Diagrams Lite
    [developer] => BEZAPPS
    [summary] => Create professional quality Flowcharts, BPMN, Mind Maps, Network & UML diagrams.
    [description] => Flowdia is an easy to use flow diagram tool that can be used to quickly create professional quality flowcharts, mind maps, BPMN, network and server layouts, Cisco network, Rack diagram, UML activity, business process
    [icon] => https://play-lh.googleusercontent.com/Ad85EXrQ1CwPA7Nyf9j_jYtgD4V8Tk7AM9iLRF0lMTG6fRgakgemmYy547o9nDlt5SUU
    [featureGraphic] => https://play-lh.googleusercontent.com/0e4-k6ZowpO-3h_OKjBz51sBTquPj6idtx2RdZPSbMtVr0dCW7amf2AJVG2Twsztreg
    [images] => Array
        (
            [0] => https://play-lh.googleusercontent.com/RkVjOh57u_kPzq5WRzor2PIshrbGEuwogWjXgbZ2t2LWATu4yoNpctNaCWw8uLbd6A8=w1052-h592
            [1] => https://play-lh.googleusercontent.com/DZ9NBc0fxBR-oCpKVD1nlzYOhv20n0KKsqbmDvxVPnzMGqvH0sGcmUhjilercu0GIxw=w1052-h592
            [2] => https://play-lh.googleusercontent.com/kdkqpPaJinUCOFKLzDiNS31FTEqXoHgTaeF29ZoDclUW3BFzbOZiL1oYF7Z3F7AgIrKu=w1052-h592
            [3] => https://play-lh.googleusercontent.com/KRs-4QUj7ehA_b0tCjR4CLhrciJF3vdfSDasXRLm7RlYPH_nziLNoRoM1ZsBRNWPajk=w1052-h592
            [4] => https://play-lh.googleusercontent.com/j-YgtRA1U6Pm88cJqjz4rn_WCPAprveqf-ti4lqqnCrtMjmpkldRgh8T-UDSYBCUBko=w1052-h592
            [5] => https://play-lh.googleusercontent.com/Sl8V1J_DYPfkq9QOdFKGlon4debOEHfvLK2FpGmaPi0nenQUF3XbJ88H49shlsINKF4=w1052-h592
            [6] => https://play-lh.googleusercontent.com/2G2MRdimo5m17xMB5V9lQ_3j2BH_jA-y5T8vEx3oktosVXlbUp6FiQ32B3DKG_-_x94=w1052-h592
            [7] => https://play-lh.googleusercontent.com/eiauYcpKC8RwmjfPKhDzlXqmRA_N-wikj1VMf2a3ce_dmGSdUhNOpPN2pJ7fukZE6YV8=w1052-h592
            [8] => https://play-lh.googleusercontent.com/VslU20e8ZUVWM5ac5t9etc7d0I7GFqVQpoMu6zfxcruSAkYLXwDIYpvP2u3vGBoCoP0=w1052-h592
            [9] => https://play-lh.googleusercontent.com/K14ntx3VnpjfvEUlxkW9Q7DxCalbw3_bAP-t3b0jS4gzsI_WqKo6m6w2eR2vCvG3ygo=w1052-h592
            [10] => https://play-lh.googleusercontent.com/pqbjnQHoHsYDYicHJgw0GzO-6B4wyc8Xn39zl9LyarNBQad4FBpz6GYJCfLFrEurkUo=w1052-h592
            [11] => https://play-lh.googleusercontent.com/dz9uh9kwCb8Ul_opZSyaZwO6JYy5IEesY6Fx43b-I1mKJnUq7zxLf_M3bXArMDSpZ5ya=w1052-h592
            [12] => https://play-lh.googleusercontent.com/vZ7flh0e4ep7DuVcnJWmzZJcGWzzv1C4Dbm5XKFnittGL16FM71zLx6_QQ54OXn8eg=w1052-h592
            [13] => https://play-lh.googleusercontent.com/E-v927YsFTavPwOPoQlX3ghrgtwBDs2og-BlkR-uJVjln3zPZn42BQf66DUk3RgLjHQ=w1052-h592
            [14] => https://play-lh.googleusercontent.com/DdUSr7Q3Hn1d6bu9WHRWT3pxRu-kQ08toOUrteVM0PEqq21DL0_bocr2Dkp-V36Ogts=w1052-h592
            [15] => https://play-lh.googleusercontent.com/Zme-HjUlmoiTXsDfuirj6uAnXw4ynuTCKg_VIVFjLZvd6M7RtQ2iwTpddKEBRzaDkw=w1052-h592
            [16] => https://play-lh.googleusercontent.com/ksZiKVJ5xLO1vyY7J8wGiO1jmte8BeGnTvkm1ztZfktVHM4U91nJ5OXiqI5Ns1dajLex=w1052-h592
            [17] => https://play-lh.googleusercontent.com/EOjIutnWGalSQqJXkCzhZ6o4DnhiJZZm58Ai32K99nYooe4aWWpe1HB5PM9MVjM5gsk=w1052-h592
        )

    [lastUpdated] => Jul 23, 2022
    [versionName] => 1.14.5
    [minimumSDKVersion] => 9 and up
    [installs] => 1M+
    [age] => Everyone
    [size] => 6.5M
    [video] =>
    [whatsnew] => - new language options
    [ads] => 0
    [iap] => 0
    [rating] => 3.765625
    [votes] => 128
    [price] => 0
    [category] => Productivity
    [type] => app
    [contentRating] => Everyone
    [developerEmail] => flowdia.help@gmail.com
    [developerWebsite] => http://www.bezapps.com/
    [reviews] => Array
        (
            [0] => Array
                (
                    [review_id] => c5dccb5c-9736-4e94-a032-d8f2b720a3e8
                    [reviewed_version] => 1.6.9
                    [review_date] => 1555698277
                    [review_text] => This is useful. It is a bit clunky to use on a Galaxy S7. The way items appear on screen requires me to close the items menu in order to move them. The zooming functions are not super useful. If the De
                    [stars] => 5
                    [like_count] => 38
                    [reviewer] => Array
                        (
                            [reviewer_id] => 105549747262127332311
                            [name] => A Google user
                            [avatar] => https://play-lh.googleusercontent.com/EGemoI2NTXmTsBVtJqk8jxF9rh8ApRWfsIMQSt2uE4OcpQqbFu7f7NbTK05lx80nuSijCz7sc3a277R67g
                            [bg_image] => https://play-lh.googleusercontent.com/Yq7oyNIvAAkuc69fG51sbAQS4otJxbObbt3xdr8tXxXyUdq4tVGtfgeKuptveGdP1srxaHVrNPzOYcfaEQ
                        )
                        
                    [response] => Array
                        (
                            [responder_name] => BEZAPPS
                            [response_text] => Thank you for the feedback and suggestions.
                            [response_date] => 1555741633
                        )
                        
                )       
                
            [1] => Array
                (
…
                )
    [review_token] =>
    [success] => 1
    [message] =>
)

Had you e.g. misspelled the package name, or specified an app not listed at Google Play, Results would look slightly different:

Array
(
    [success] => 0
    [message] => HTTP/1.0 404 Not Found
)

The result array

Most fields of the array should be rather self-explaining, so let's keep it short:

  • packageName: the package name (ID) of the app. You've specified that with your call.
  • name: the „human readable“ name of the app
  • developer: name of the developer
  • developerEmail: email address of the developer
  • developerWebsite: website of the developer
  • category: how this app was categorized (human-readable form)
  • type: something like an over-category. This is either 'game', 'family' or 'app'
  • summary: a short description of the app
  • description: a (hopefully) more detailed description of the app
  • icon: URL to the app's icon
  • featureGraphic: the app's featureGraphic image
  • images: an array of URLs to screenshots
  • video: URL to a "promo video" (not always available)
  • whatsnew: changelog for the latest release (if provided)
  • lastUpdated: date of the last published version of this app
  • versionName: last published version of this app
  • minimumSDKVersion: minimal required Android version (if available)¹
  • installs: raw install count (how often the app has been downloaded)
  • age: for what age group the app is suitable
  • price: 0 for „free“ apps – else a price including the currency, e.g. '$2.99'
  • rating: a (float) rating value (something between 0 and 5)
  • contentRating: for what audience the app is deemed suitable
  • votes: how many users have rated this app
  • size: size of the APK file (if available)¹
  • ads: whether the app is known to contain/show ads (1) or not (0)
  • iap: whether the app is known to use in-app payment (1) or not (0)
  • reviewToken: token needed to retrieve additional reviews (not yet implemented)
  • success: if you've seen the previous details, this is 1 – data was successfully retrieved. If retrieval failed, it is 0, and message gives you details on what went wrong.
  • message: empty if success==1, but giving details on what went wrong otherwise.

¹ This seems not always to be reliable

Obtaining language specific content

The parseApplication() method knows of 2 additional, optional parameters: to specify the language, and the region/location. The first is applied to content (if translations are available), the latter to values like the price (including currency). Note that not all content is translated, as that would make scraping complicated.

Example: Get details in German with prices for Austria:

$app = $google->parseApplication("com.bezapps.flowdiademo", "de", "AT");