google_play_scraper

package module
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 1, 2025 License: LGPL-3.0 Imports: 6 Imported by: 0

README

google-play-scraper

GoDoc Go Report Card Coverage Status

Golang scraper to get data from Google Play Store

This project is inspired by the google-play-scraper node.js project

Installation

go get -u github.com/n0madic/google-play-scraper/...

Usage

Get app details

Retrieves the full detail of an application.

package main

import (
    "github.com/davecgh/go-spew/spew"
    "github.com/n0madic/google-play-scraper/pkg/app"
)

func main() {
    a := app.New("com.google.android.googlequicksearchbox", app.Options{
        Country:  "us",
        Language: "us",
    })
    err := a.LoadDetails()
    if err != nil {
        panic(err)
    }
    err = a.LoadPermissions()
    if err != nil {
        panic(err)
    }
    spew.Dump(a)
}
Search apps

Retrieves a list of apps that results of searching by the given term.

package main

import (
    "fmt"

    "github.com/n0madic/google-play-scraper/pkg/search"
)

func main() {
    query := search.NewQuery("game", search.PricePaid,
        search.Options{
            Country:  "ru",
            Language: "us",
            Number:   100,
            Discount: true,
            PriceMax: 100,
            ScoreMin: 4,
        })

    err := query.Run()
    if err != nil {
        panic(err)
    }

    errors := query.LoadMoreDetails(20)
    if len(errors) > 0 {
        panic(errors[0])
    }

    for _, app := range query.Results {
        if !app.IAPOffers {
            fmt.Println(app.Title, app.URL)
        }
    }
}
Get category

Returns a list of clusters for the specified application category.

package main

import (
    "fmt"

    "github.com/n0madic/google-play-scraper/pkg/category"
    "github.com/n0madic/google-play-scraper/pkg/store"
)

func main() {
    clusters, err := category.New(store.Game, store.AgeFiveUnder, category.Options{
        Country:  "us",
        Language: "us",
        Number:   100,
    })
    if err != nil {
        panic(err)
    }

    clusterName := "New & updated games"
    err = clusters[clusterName].Run()
    if err != nil {
        panic(err)
    }

    for _, app := range clusters[clusterName].Results {
        fmt.Println(app.Title, app.URL)
    }
}
Get collection

Retrieve a list of applications from one of the collections at Google Play.

package main

import (
    "fmt"

    "github.com/n0madic/google-play-scraper/pkg/collection"
    "github.com/n0madic/google-play-scraper/pkg/store"
)

func main() {
    c := collection.New(store.TopNewPaid, collection.Options{
        Country: "uk",
        Number:  100,
    })
    err := c.Run()
    if err != nil {
        panic(err)
    }

    for _, app := range c.Results {
        fmt.Println(app.Title, app.Price, app.URL)
    }
}
Get developer applications

Returns the list of applications by the given developer name or ID

package main

import (
    "fmt"

    "github.com/n0madic/google-play-scraper/pkg/developer"
)

func main() {
    dev := developer.New("Google LLC", developer.Options{
        Number: 100,
    })
    err := dev.Run()
    if err != nil {
        panic(err)
    }

    for _, app := range dev.Results {
        fmt.Println(app.Title, "by", app.Developer, app.URL)
    }
}
Get 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.

package main

import (
    "fmt"

    "github.com/n0madic/google-play-scraper/pkg/reviews"
)

func main() {
    r := reviews.New("com.activision.callofduty.shooter", reviews.Options{
        Number: 100,
    })

    err := r.Run()
    if err != nil {
        panic(err)
    }

    for _, review := range r.Results {
        fmt.Println(review.Score, review.Text)
    }
}
Get similar

Returns a list of similar apps to the one specified.

package main

import (
    "fmt"

    "github.com/n0madic/google-play-scraper/pkg/similar"
)

func main() {
    sim := similar.New("com.android.chrome", similar.Options{
        Number: 100,
    })
    err := sim.Run()
    if err != nil {
        panic(err)
    }

    for _, app := range sim.Results {
        fmt.Println(app.Title, app.URL)
    }
}
Get suggest

Given a string returns up to five suggestion to complete a search query term.

package main

import (
    "fmt"

    "github.com/n0madic/google-play-scraper/pkg/suggest"
)

func main() {
    sug, err := suggest.Get("chrome", suggest.Options{
        Country:  "us",
        Language: "us",
    })
    if err != nil {
        panic(err)
    }

    for _, s := range sug {
        fmt.Println(s)
    }
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type App

type App struct {
	AdSupported              bool
	AndroidVersion           string
	AndroidVersionMin        float64
	Available                bool
	ContentRating            string
	ContentRatingDescription string
	Description              string
	DescriptionHTML          string
	Developer                string
	DeveloperAddress         string
	DeveloperEmail           string
	DeveloperID              string
	DeveloperInternalID      string
	DeveloperURL             string
	DeveloperWebsite         string
	FamilyGenre              string
	FamilyGenreID            string
	Free                     bool
	Genre                    string
	GenreID                  string
	HeaderImage              string
	IAPOffers                bool
	IAPRange                 string
	Icon                     string
	ID                       string
	Installs                 string
	InstallsMin              int
	InstallsMax              int
	Permissions              map[string][]string
	Price                    Price
	PriceFull                Price
	PrivacyPolicy            string
	Ratings                  int
	RatingsHistogram         map[int]int
	RecentChanges            string
	RecentChangesHTML        string
	Released                 string
	Score                    float64
	ScoreText                string
	Screenshots              []string
	SimilarURL               string
	Summary                  string
	Title                    string
	Updated                  time.Time
	URL                      string
	Version                  string
	Video                    string
	VideoImage               string
	// contains filtered or unexported fields
}

App of search

func New

func New(id string, options Options) *App

New return App instance

func (*App) LoadDetails

func (app *App) LoadDetails() error

LoadDetails of app

func (*App) LoadPermissions

func (app *App) LoadPermissions() error

LoadPermissions get the list of perms an app has access to

type Options

type Options struct {
	Country  string
	Language string
}

Options of app

type Price

type Price struct {
	Currency string
	Value    float64
}

Price of app

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL