Installations
npm install google-play-scraper
Developer
facundoolano
Developer Guide
Module System
ESM
Min. Node Version
Typescript Support
Yes
Node Version
22.2.0
NPM Version
10.7.0
Statistics
2,348 Stars
480 Commits
634 Forks
98 Watching
1 Branches
71 Contributors
Updated on 27 Nov 2024
Languages
JavaScript (100%)
Total Downloads
Cumulative downloads
Total Downloads
5,043,478
Last day
-27.6%
2,322
Compared to previous day
Last week
4.9%
14,861
Compared to previous week
Last month
-6.2%
57,732
Compared to previous month
Last year
27.6%
1,111,282
Compared to previous year
Daily Downloads
Weekly Downloads
Monthly Downloads
Yearly Downloads
google-play-scraper
Node.js module to scrape application data from the Google Play store.
Related projects
- app-store-scraper: a scraper with a similar interface for the iTunes app store.
- aso: an App Store Optimization module built on top of this library.
- google-play-api: a RESTful API to consume the data produced by this library.
Installation
npm install google-play-scraper
Usage
Available methods:
- app: Retrieves the full detail of an application.
- list: Retrieves a list of applications from one of the collections at Google Play.
- search: Retrieves a list of apps that results of searching by the given term.
- developer: Returns the list of applications by the given developer name.
- suggest: Given a string returns up to five suggestion to complete a search query term.
- reviews: Retrieves a page of reviews for a specific application.
- similar: Returns a list of similar apps to the one specified.
- permissions: Returns the list of permissions an app has access to.
- datasafety: Returns the data safety information of an app.
- categories: Retrieve a full list of categories present from dropdown menu on Google Play.
app
Retrieves the full detail of an application. Options:
appId
: the Google Play id of the application (the?id=
parameter on the url).lang
(optional, defaults to'en'
): the two letter language code in which to fetch the app page.country
(optional, defaults to'us'
): the two letter country code used to retrieve the applications. Needed when the app is available only in some countries.
Example:
1import gplay from "google-play-scraper"; 2 3gplay.app({appId: 'com.google.android.apps.translate'}) 4 .then(console.log, console.log);
Results:
1{ 2 title: 'Google Translate', 3 description: 'Translate between 103 languages by typing\r\n...' , 4 descriptionHTML: 'Translate between 103 languages by typing<br>...', 5 summary: 'The world is closer than ever with over 100 languages', 6 installs: '500,000,000+', 7 minInstalls: 500000000, 8 maxInstalls: 898626813, 9 score: 4.482483, 10 scoreText: '4.5', 11 ratings: 6811669, 12 reviews: 1614618, 13 histogram: { '1': 370042, '2': 145558, '3': 375720, '4': 856865, '5': 5063481 }, 14 price: 0, 15 free: true, 16 currency: 'USD', 17 priceText: 'Free', 18 offersIAP: false, 19 IAPRange: undefined, 20 androidVersion: 'VARY', 21 androidVersionText: 'Varies with device', 22 androidMaxVersion: 'VARY', 23 developer: 'Google LLC', 24 developerId: '5700313618786177705', 25 developerEmail: 'translate-android-support@google.com', 26 developerWebsite: 'http://support.google.com/translate', 27 developerAddress: '1600 Amphitheatre Parkway, Mountain View 94043', 28 developerLegalName: undefined, 29 developerLegalEmail: undefined, 30 developerLegalAddress: undefined, 31 developerLegalPhoneNumber: undefined, 32 privacyPolicy: 'http://www.google.com/policies/privacy/', 33 developerInternalID: '5700313618786177705', 34 genre: 'Tools', 35 genreId: 'TOOLS', 36 categories: [ 37 { name: 'Tools', id: 'TOOLS' }, 38 { name: 'Another category without id', id: null } 39 ], 40 icon: 'https://lh3.googleusercontent.com/ZrNeuKthBirZN7rrXPN1JmUbaG8ICy3kZSHt-WgSnREsJzo2txzCzjIoChlevMIQEA', 41 headerImage: 'https://lh3.googleusercontent.com/e4Sfy0cOmqpike76V6N6n-tDVbtbmt6MxbnbkKBZ_7hPHZRfsCeZhMBZK8eFDoDa1Vf-', 42 screenshots: [ 43 'https://lh3.googleusercontent.com/dar060xShkqnJjWC2j_EazWBpLo28X4IUWCYXZgS2iXes7W99LkpnrvIak6vz88xFQ', 44 'https://lh3.googleusercontent.com/VnzidUTSWK_yhpNK0uqTSfpVgow5CsZOnBdN3hIpTxODdlZg1VH1K4fEiCrdUQEZCV0', 45 ], 46 video: undefined, 47 videoImage: undefined, 48 previewVideo: undefined, 49 contentRating: 'Everyone', 50 contentRatingDescription: undefined, 51 adSupported: false, 52 released: undefined, 53 updated: 1576868577000, 54 version: 'Varies with device', 55 recentChanges: 'Improved offline translations with upgraded language downloads', 56 comments: [], 57 preregister: false, 58 earlyAccessEnabled: false, 59 isAvailableInPlayPass: false, 60 editorsChoice: true, 61 features: [ 62 { 63 title: 'Uses Google Play Games', 64 description: 'For automatic sign-in, leaderboards, achievements, and more.' 65 }, 66 { 67 title: 'Achievements', 68 description: 'Grants you achievements for completing goals and skill-based challenges.' 69 } 70 ], 71 appId: 'com.google.android.apps.translate', 72 url: 'https://play.google.com/store/apps/details?id=com.google.android.apps.translate&hl=en&gl=us', 73 isAvailableInPlayPass: false 74}
list
Retrieve a list of applications from one of the collections at Google Play. Options:
collection
(optional, defaults tocollection.TOP_FREE
): the Google Play collection that will be retrieved. Available options can bee found here.category
(optional, defaults to no category): the app category to filter by. Available options can bee found here.age
(optional, defaults to no age filter): the age range to filter the apps (only for FAMILY and its subcategories). Available options areage.FIVE_UNDER
,age.SIX_EIGHT
,age.NINE_UP
.num
(optional, defaults to 500): the amount of apps to retrieve.lang
(optional, defaults to'en'
): the two letter language code used to retrieve the applications.country
(optional, defaults to'us'
): the two letter country code used to retrieve the applications.fullDetail
(optional, defaults tofalse
): iftrue
, an extra request will be made for every resulting app to fetch its full detail.
Example:
1import gplay from "google-play-scraper"; 2 3gplay.list({ 4 category: gplay.category.GAME_ACTION, 5 collection: gplay.collection.TOP_FREE, 6 num: 2 7 }) 8 .then(console.log, console.log);
Results:
1 [ { url: 'https://play.google.com/store/apps/details?id=com.playappking.busrush', 2 appId: 'com.playappking.busrush', 3 summary: 'Bus Rush is an amazing running game for Android! Start running now!', 4 developer: 'Play App King', 5 developerId: '6375024885749937863', 6 title: 'Bus Rush', 7 icon: 'https://lh3.googleusercontent.com/R6hmyJ6ls6wskk5hHFoW02yEyJpSG36il4JBkVf-Aojb1q4ZJ9nrGsx6lwsRtnTqfA=w340', 8 score: 3.9, 9 scoreText: '3.9', 10 priceText: 'Free', 11 free: false }, 12 { url: 'https://play.google.com/store/apps/details?id=com.yodo1.crossyroad', 13 appId: 'com.yodo1.crossyroad', 14 title: 'Crossy Road', 15 summary: 'Embark on an action arcade, endless runner journey!', 16 developer: 'Yodo1 Games', 17 developerId: 'Yodo1+Games', 18 icon: 'https://lh3.googleusercontent.com/doHqbSPNekdR694M-4rAu9P2B3V6ivff76fqItheZGJiN4NBw6TrxhIxCEpqgO3jKVg=w340', 19 score: 4.5, 20 scoreText: '4.5', 21 priceText: 'Free', 22 free: false } ]
search
Retrieves a list of apps that results of searching by the given term. Options:
term
: the term to search by.num
(optional, defaults to 20, max is 250): the amount of apps to retrieve.lang
(optional, defaults to'en'
): the two letter language code used to retrieve the applications.country
(optional, defaults to'us'
): the two letter country code used to retrieve the applications.fullDetail
(optional, defaults tofalse
): iftrue
, an extra request will be made for every resulting app to fetch its full detail.price
(optional, defaults toall
): allows to control if the results apps are free, paid or both.all
: Free and paidfree
: Free apps onlypaid
: Paid apps only
Example:
1import gplay from "google-play-scraper"; 2 3gplay.search({ 4 term: "panda", 5 num: 2 6 }).then(console.log, console.log);
Results:
1[ { url: 'https://play.google.com/store/apps/details?id=com.snailgameusa.tp', 2 appId: 'com.snailgameusa.tp', 3 summary: 'An exciting action adventure RPG of Panda proportions!', 4 title: 'Taichi Panda', 5 developer: 'Snail Games USA', 6 developerId: 'Snail+Games+USA+Inc', 7 icon: 'https://lh3.googleusercontent.com/g8RMjpRk9yetsui4g5lxnioAFwtgoKUJDBnb2knJMrOaLOtHrwU1qYkb-PadbL0Zmg=w340', 8 score: 4.1, 9 scoreText: '4.1', 10 priceText: 'Free', 11 free: true }, 12 { url: 'https://play.google.com/store/apps/details?id=com.sgn.pandapop.gp', 13 appId: 'com.sgn.pandapop.gp', 14 summary: 'Plan your every pop to rescue baby pandas from the evil Baboon!', 15 title: 'Panda Pop', 16 developer: 'SGN', 17 developerId: '5509190841173705883', 18 icon: 'https://lh5.ggpht.com/uAAUBzEHtD_-mTxomL2wFxb5VSdtNllk9M4wjVdTGMD8pH79RtWGYQYrrtfVTjq7PV7M=w340', 19 score: 4.2, 20 scoreText: '4.2', 21 priceText: 'Free', 22 free: true } ]
developer
Returns the list of applications by the given developer name. Options:
devId
: the name of the developer.lang
(optional, defaults to'en'
): the two letter language code in which to fetch the app list.country
(optional, defaults to'us'
): the two letter country code used to retrieve the applications. Needed when the app is available only in some countries.num
(optional, defaults to 60): the amount of apps to retrieve.fullDetail
(optional, defaults tofalse
): iftrue
, an extra request will be made for every resulting app to fetch its full detail.
Example:
1import gplay from "google-play-scraper"; 2 3gplay.developer({devId: "DxCo Games"}).then(console.log);
Results:
1[ { url: 'https://play.google.com/store/apps/details?id=com.dxco.pandavszombies2', 2 appId: 'com.dxco.pandavszombies2', 3 title: 'Panda vs Zombie 2 Panda\'s back', 4 summary: 'Help Rocky the Panda warrior to fight zombies again!', 5 developer: 'DxCo Games', 6 developerId: 'DxCo+Games', 7 icon: 'https://lh3.googleusercontent.com/kFco0LtC7ICP0QrtpkF-QQahU-iwuDgEsH0AClQcHwtzsO5-8BGTf8QgR6dlCLxqBLc=w340', 8 score: 3.9, 9 scoreText: '3.9', 10 priceText: 'Free', 11 free: true }, 12 { url: 'https://play.google.com/store/apps/details?id=com.dxco.pandavszombies', 13 appId: 'com.dxco.pandavszombies', 14 title: 'Panda vs Zombie: panda ftw', 15 summary: 'Help Rocky the Panda warrior to fight zombie games and save the Panda kind.', 16 developer: 'DxCo Games', 17 developerId: 'DxCo+Games', 18 icon: 'https://lh6.ggpht.com/5mI27oolnooL__S3ns9qAf_6TsFNExMtUAwTKz6prWCxEmVkmZZZwe3lI-ZLbMawEJh3=w340', 19 score: 4.5, 20 scoreText: '4.5', 21 priceText: 'Free', 22 free: true } ]
suggest
Given a string returns up to five suggestion to complete a search query term. Options:
term
: the term to get suggestions for.lang
(optional, defaults to'en'
): the two letter language code used to retrieve the suggestions.country
(optional, defaults to'us'
): the two letter country code used to retrieve the suggestions.
Example:
1import gplay from "google-play-scraper"; 2 3gplay.suggest({term: 'panda'}).then(console.log);
Results:
1[ 'panda pop', 2 'panda', 3 'panda games', 4 'panda run', 5 'panda pop for free' ]
reviews
Retrieves a page of reviews for a specific application.
Note that this method returns reviews in a specific language (english by default), so you need to try different languages to get more reviews. Also, the counter displayed in the Google Play page refers to the total number of 1-5 stars ratings the application has, not the written reviews count. So if the app has 100k ratings, don't expect to get 100k reviews by using this method.
You can get all reviews at once, by sending the num
parameter (i.g. 5000), or paginated reviews (with 150 per page), by setting the pagination
parameter to true;
You`ll have to choose wich method is better for your use case.
By setting num
+ paginate
, the num parameter will be ignored and you will receive a paginated response instead.
Options:
appId
: Unique application id for Google Play. (e.g. id=com.mojang.minecraftpe maps to Minecraft: Pocket Edition game).lang
(optional, defaults to'en'
): the two letter language code in which to fetch the reviews.country
(optional, defaults to'us'
): the two letter country code in which to fetch the reviews.sort
(optional, defaults tosort.NEWEST
): The way the reviews are going to be sorted. Accepted values are:sort.NEWEST
,sort.RATING
andsort.HELPFULNESS
.num
(optional, defaults to100
): Quantity of reviews to be captured.paginate
(optional, defaults tofalse
): Defines if the result will be paginatednextPaginationToken
(optional, defaults tonull
): The next token to paginate
Example:
1import gplay from "google-play-scraper"; 2 3// This example will return 3000 reviews 4// on a single call 5gplay.reviews({ 6 appId: 'com.dxco.pandavszombies', 7 sort: gplay.sort.RATING, 8 num: 3000 9}).then(console.log, console.log); 10 11// This example will return the first page with 150 reviews paginated 12// just send an empty nexPaginationToken 13// you will receive a nextPaginationToken parameter in your response 14gplay.reviews({ 15 appId: 'com.dxco.pandavszombies', 16 sort: gplay.sort.RATING, 17 paginate: true, 18 nextPaginationToken: null // you can omit this parameter 19}).then(console.log, console.log); 20 21// This example will return 150 reviews paginated 22// for the next page (next page is the token return by the previous call) 23// you will receive a nextPaginationToken parameter in your response 24gplay.reviews({ 25 appId: 'com.dxco.pandavszombies', 26 sort: gplay.sort.RATING, 27 paginate: true, 28 nextPaginationToken: 'TOKEN_FROM_THE_PREVIOUS_REQUEST' // you can omit this parameter 29}).then(console.log, console.log);
Results:
1{ 2 data: [ 3 { 4 id: 'gp:AOqpTOFmAVORqfWGcaqfF39ftwFjGkjecjvjXnC3g_uL0NtVGlrrqm8X2XUWx0WydH3C9afZlPUizYVZAfARLuk', 5 userName: 'Inga El-Ansary', 6 userImage: 'https://lh3.googleusercontent.com/-hBGvzn3XlhQ/AAAAAAAAAAI/AAAAAAAAOw0/L4GY9KrQ-DU/w96-c-h96/photo.jpg', 7 date: '2013-11-10T18:31:42.174Z', 8 score: 5, 9 scoreText: '5', 10 url: 'https://play.google.com/store/apps/details?id=com.dxco.pandavszombies&reviewId=Z3A6QU9xcFRPRWZaVHVZZ081NlNsRW9TV0hJeklGSTBvYTBTUlFQUUJIZThBSGJDX2s1Y1o0ZXRCbUtLZmgzTE1PMUttRmpRSS1YcFgxRmx1ZXNtVzlVS0Zz' 11 title: 'I LOVE IT', 12 text: 'It has skins and snowballs everything I wanted its so cool I love it!!!!!!!!', 13 replyDate: '2013-11-10T18:31:42.174Z', 14 replyText: 'thanks for playing Panda vs Zombies!', 15 version: '1.0.2', 16 thumbsUp: 29, 17 criterias: [ 18 { 19 criteria: 'vaf_games_simple', 20 rating: 1 21 }, 22 { 23 criteria: 'vaf_games_realistic', 24 rating: 1 25 }, 26 { 27 criteria: 'vaf_games_complex', 28 rating: 1 29 } 30 ] 31 }, 32 { 33 id: 'gp:AOqpTOF39mpW-6gurlkCCTV_8qnKne7O5wcFsLc6iGVot5hHpplqPCqIiVL2fjximXNujuMjwQ4pkizxGrn13x0', 34 userName: 'Millie Hawthorne', 35 userImage: 'https://lh5.googleusercontent.com/-Q_FTAEBH2Qg/AAAAAAAAAAI/AAAAAAAAAZk/W5dTdaHCUE4/w96-c-h96/photo.jpg', 36 date: '2013-11-10T18:31:42.174Z', 37 url: 'https://play.google.com/store/apps/details?id=com.dxco.pandavszombies&reviewId=Z3A6QU9xcFRPRmFHdlBFS2pGS2JVYW5Dd3kxTm1qUzRxQlYyc3Z4ZE9CYXRuc0hkclV3a09hbEFkOVdoWmw3eFN5VjF4cDJPLTg5TW5ZUjl1Zm9HOWc5NGtr', 38 score: 5, 39 scoreText: '5', 40 title: 'CAN NEVER WAIT TILL NEW UPDATE', 41 text: 'Love it but needs to pay more attention to pocket edition', 42 replyDate: null, 43 replyText: null, 44 version: null, 45 thumbsUp: 29 46 criterias: [] 47 } 48 ], 49 nextPaginationToken: 'NEXT_PAGINATION_TOKEN' 50}
similar
Returns a list of similar apps to the one specified. Options:
appId
: the Google Play id of the application to get similar apps for.lang
(optional, defaults to'en'
): the two letter language code used to retrieve the applications.country
(optional, defaults to'us'
): the two letter country code used to retrieve the applications.fullDetail
(optional, defaults tofalse
): iftrue
, an extra request will be made for every resulting app to fetch its full detail.
Example:
1import gplay from "google-play-scraper"; 2 3gplay.similar({appId: "com.dxco.pandavszombies"}).then(console.log);
Results:
1[ { url: 'https://play.google.com/store/apps/details?id=com.creative.rambo', 2 appId: 'com.creative.rambo', 3 summary: 'Rambo - The Mobile Game', 4 developer: 'Creative Distribution Ltd', 5 developerId: '8812103738509382093', 6 icon: '//lh3.googleusercontent.com/QDRAv7v4LSCfZgz3GIbOSz8Zj8rWqeeYuqqYiqyQXkxRJwG7vvUltzsFaWK5D7-JMnIZ=w340', 7 score: 3.3, 8 scoreText: '3.3', 9 priceText: '$2.16', 10 free: false } ]
permissions
Returns the list of permissions an app has access to.
appId
: the Google Play id of the application to get permissions for.lang
(optional, defaults to'en'
): the two letter language code in which to fetch the permissions.country
(optional, defaults to'us'
): the two letter country code in which to fetch the permissions.short
(optional, defaults tofalse
): iftrue
, the permission names will be returned instead of permission/description objects.
Example:
1import gplay from "google-play-scraper"; 2 3gplay.permissions({appId: "com.dxco.pandavszombies"}).then(console.log);
Results:
1[ { permission: 'modify or delete the contents of your USB storage', 2 type: 'Storage' }, 3 { permission: 'read the contents of your USB storage', 4 type: 'Storage' }, 5 { permission: 'full network access', 6 type: 'Photos/Media/Files' }, 7 { permission: 'view network connections', 8 type: '' } ]
datasafety
Returns the data safety information of an application. The data safety is categorized into lists of "data shared", "data collected" and "security practices". Addtionally, the URL to the privacy policy is returned.
appId
: the Google Play id of the application to get permissions for.lang
(optional, defaults to'en'
): the two letter language code in which to fetch the permissions.
Example:
1import gplay from "google-play-scraper"; 2 3gplay.datasafety({appId: "com.dxco.pandavszombies"}).then(console.log);
Results:
1{ dataShared: [ 2 { 3 data: 'User IDs', 4 optional: false, 5 purpose: 'Advertising or marketing, Account management', 6 type: 'Personal info' 7 }, 8 { 9 data: 'Crash logs', 10 optional: false, 11 purpose: 'Analytics', 12 type: 'App info and performance' 13 } 14 ], 15 dataCollected: [ 16 { 17 data: 'Name', 18 optional: true, 19 purpose: 'App functionality, Developer communications, Advertising or marketing', 20 type: 'Personal info' 21 }, 22 { 23 data: 'Email address', 24 optional: true, 25 purpose: 'App functionality, Advertising or marketing, Account management', 26 type: 'Personal info' 27 }, 28 { 29 data: 'User IDs', 30 optional: false, 31 purpose: 'App functionality, Analytics, Developer communications, Advertising or marketing, Fraud prevention, security, and compliance, Personalization, Account management', 32 type: 'Personal info' 33 }, 34 { 35 data: 'Purchase history', 36 optional: true, 37 purpose: 'Account management', 38 type: 'Financial info' 39 }, 40 { 41 data: 'Other in-app messages', 42 optional: false, 43 purpose: 'Developer communications, Fraud prevention, security, and compliance', 44 type: 'Messages' 45 }, 46 { 47 data: 'Contacts', 48 optional: true, 49 purpose: 'App functionality', 50 type: 'Contacts' 51 }, 52 { 53 data: 'Other actions', 54 optional: false, 55 purpose: 'App functionality, Analytics, Fraud prevention, security, and compliance', 56 type: 'App activity' 57 }, 58 { 59 data: 'Crash logs', 60 optional: true, 61 purpose: 'App functionality, Analytics', 62 type: 'App info and performance' 63 }, 64 { 65 data: 'Other app performance data', 66 optional: false, 67 purpose: 'Analytics', 68 type: 'App info and performance' 69 }, 70 { 71 data: 'Device or other IDs', 72 optional: false, 73 purpose: 'App functionality, Analytics, Advertising or marketing, Fraud prevention, security, and compliance, Personalization, Account management', 74 type: 'Device or other IDs' 75 } 76 ], 77 securityPractices: [ 78 { 79 practice: 'Data isn’t encrypted', 80 description: 'Your data isn’t transferred over a secure connection' 81 }, 82 { 83 practice: 'You can request that data be deleted', 84 description: 'The developer provides a way for you to request that your data be deleted' 85 } 86 ], 87 privacyPolicyUrl: 'http://www.jamcity.com/privacy' }
categories
Retrieve a full list of categories present from dropdown menu on Google Play.
- this method has no options
Example:
1import gplay from "google-play-scraper"; 2 3gplay.categories().then(console.log);
Results:
1[ 'AUTO_AND_VEHICLES', 2 'LIBRARIES_AND_DEMO', 3 'LIFESTYLE', 4 'MAPS_AND_NAVIGATION', 5 'BEAUTY', 6 'BOOKS_AND_REFERENCE', 7 ...< 51 more items> ]
Memoization
Since every library call performs one or multiple requests to
an Google Play API or web page, sometimes it can be useful to cache the results
to avoid requesting the same data twice. The memoized
function returns a
store object that caches its results:
1import {memoized as m} from "google-play-scraper"; // cache with default options 2const memoized = m();// cache with customized options 3const memoizedCustom = m({ maxAge: 1000 * 60 });// cache with customized options 4 5// first call will hit google play and cache the results 6memoized.developer({devId: "DxCo Games"}).then(console.log); 7 8// second call will return cached results 9memoized.developer({devId: "DxCo Games"}).then(console.log);
The options available are those supported by the memoizee module. By default up to 1000 values are cached by each method and they expire after 5 minutes.
Throttling
All methods on the scraper have to access the Google Play server in one
form or another. When making too many requests in a short period of time
(specially when using the fullDetail
option), it is common to hit Google Play's
throttling limit. That means requests start getting status 503 responses with
a captcha to verify if the requesting entity is a human (which is not :P).
In those cases the requesting IP can be banned from making further requests for a
while (usually around an hour).
To avoid this situation, all methods now support a throttle
property, which
defines an upper bound to the amount of requests that will be attempted per second.
Once that limit is reached, further requests will be held until the second passes.
1import gplay from "google-play-scraper"; 2 3// the following method will perform batches of 10 requests per second 4gplay.search({term: 'panda', throttle: 10}).then(console.log);
By default, no throttling is applied.
No vulnerabilities found.
Reason
6 commit(s) and 6 issue activity found in the last 90 days -- score normalized to 10
Reason
no binaries found in the repo
Reason
no dangerous workflow patterns detected
Reason
license file detected
Details
- Info: project has a license file: LICENSE:0
- Info: FSF or OSI recognized license: MIT License: LICENSE:0
Reason
Found 22/28 approved changesets -- score normalized to 7
Reason
3 existing vulnerabilities detected
Details
- Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275
- Warn: Project is vulnerable to: GHSA-4q6p-r6v2-jvc5
- Warn: Project is vulnerable to: GHSA-9wv6-86v2-598j
Reason
dependency not pinned by hash detected -- score normalized to 3
Details
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/facundoolano/google-play-scraper/tests.yml/main?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/facundoolano/google-play-scraper/tests.yml/main?enable=pin
- Info: 0 out of 2 GitHub-owned GitHubAction dependencies pinned
- Info: 1 out of 1 npmCommand dependencies pinned
Reason
detected GitHub workflow tokens with excessive permissions
Details
- Warn: no topLevel permission defined: .github/workflows/tests.yml:1
- Info: no jobLevel write permissions found
Reason
no effort to earn an OpenSSF best practices badge detected
Reason
security policy file not detected
Details
- Warn: no security policy file detected
- Warn: no security file to analyze
- Warn: no security file to analyze
- Warn: no security file to analyze
Reason
project is not fuzzed
Details
- Warn: no fuzzer integrations found
Reason
SAST tool is not run on all commits -- score normalized to 0
Details
- Warn: 0 commits out of 24 are checked with a SAST tool
Score
5.4
/10
Last Scanned on 2024-11-25
The Open Source Security Foundation is a cross-industry collaboration to improve the security of open source software (OSS). The Scorecard provides security health metrics for open source projects.
Learn MoreOther packages similar to google-play-scraper
@netsocks/googleplay_scraper
scrapes app data from google play store. Forked from facundoolano/google-play-scraper
@capgo/google-play-scraper
scrapes app data from google play store
google-play-api
turn google play scraper into a RESTful API
apt-google-play-scraper
scrapes app data from google play store