API Reference

This section provides detailed API documentation for all classes and methods.

GPlayScraper

class gplay_scraper.GPlayScraper(http_client: str = None)[source]

Bases: object

Main scraper class providing access to all Google Play Store scraping methods.

This class aggregates 7 method types: - App Methods: Extract 65+ fields from any app - Search Methods: Search for apps by keyword - Reviews Methods: Extract user reviews and ratings - Developer Methods: Get all apps from a developer - List Methods: Get top charts (free, paid, grossing) - Similar Methods: Find similar/competitor apps - Suggest Methods: Get search suggestions

Parameters:

http_client – HTTP client to use (requests, curl_cffi, tls_client, httpx, urllib3, cloudscraper, aiohttp)

__init__(http_client: str = None)[source]

Initialize GPlayScraper with all method types.

Parameters:

http_client – Optional HTTP client name. Defaults to ‘requests’ with automatic fallback.

app_analyze(app_id: str, lang: str = 'en', country: str = 'us') Dict[source]

Get complete app data with 65+ fields.

Parameters:
  • app_id – Google Play app ID (e.g., ‘com.whatsapp’)

  • lang – Language code (default: ‘en’)

  • country – Country code (default: ‘us’)

Returns:

Dictionary containing all app data

app_get_field(app_id: str, field: str, lang: str = 'en', country: str = 'us') Any[source]

Get single field value from app data.

Parameters:
  • app_id – Google Play app ID

  • field – Field name to retrieve

  • lang – Language code

  • country – Country code

Returns:

Value of the requested field

app_get_fields(app_id: str, fields: List[str], lang: str = 'en', country: str = 'us') Dict[str, Any][source]

Get multiple field values from app data.

Parameters:
  • app_id – Google Play app ID

  • fields – List of field names to retrieve

  • lang – Language code

  • country – Country code

Returns:

Dictionary with requested fields and values

app_print_field(app_id: str, field: str, lang: str = 'en', country: str = 'us') None[source]

Print single field value to console.

Parameters:
  • app_id – Google Play app ID

  • field – Field name to print

  • lang – Language code

  • country – Country code

app_print_fields(app_id: str, fields: List[str], lang: str = 'en', country: str = 'us') None[source]

Print multiple field values to console.

Parameters:
  • app_id – Google Play app ID

  • fields – List of field names to print

  • lang – Language code

  • country – Country code

app_print_all(app_id: str, lang: str = 'en', country: str = 'us') None[source]

Print all app data as JSON to console.

Parameters:
  • app_id – Google Play app ID

  • lang – Language code

  • country – Country code

search_analyze(query: str, count: int = 100, lang: str = 'en', country: str = 'us') List[Dict][source]

Search for apps and get complete results.

Parameters:
  • query – Search query string

  • count – Number of results to return

  • lang – Language code

  • country – Country code

Returns:

List of dictionaries containing app data

search_get_field(query: str, field: str, count: int = 100, lang: str = 'en', country: str = 'us') List[Any][source]

Get single field from search results.

Parameters:
  • query – Search query string

  • field – Field name to retrieve

  • count – Number of results

  • lang – Language code

  • country – Country code

Returns:

List of field values

search_get_fields(query: str, fields: List[str], count: int = 100, lang: str = 'en', country: str = 'us') List[Dict[str, Any]][source]

Get multiple fields from search results.

Parameters:
  • query – Search query string

  • fields – List of field names

  • count – Number of results

  • lang – Language code

  • country – Country code

Returns:

List of dictionaries with requested fields

search_print_field(query: str, field: str, count: int = 100, lang: str = 'en', country: str = 'us') None[source]

Print single field from search results.

Parameters:
  • query – Search query string

  • field – Field name to print

  • count – Number of results

  • lang – Language code

  • country – Country code

search_print_fields(query: str, fields: List[str], count: int = 100, lang: str = 'en', country: str = 'us') None[source]

Print multiple fields from search results.

Parameters:
  • query – Search query string

  • fields – List of field names

  • count – Number of results

  • lang – Language code

  • country – Country code

search_print_all(query: str, count: int = 100, lang: str = 'en', country: str = 'us') None[source]

Print all search results as JSON.

Parameters:
  • query – Search query string

  • count – Number of results

  • lang – Language code

  • country – Country code

reviews_analyze(app_id: str, count: int = 100, lang: str = 'en', country: str = 'us', sort: str = 'NEWEST') List[Dict][source]

Get user reviews for an app.

Parameters:
  • app_id – Google Play app ID

  • count – Number of reviews to fetch

  • lang – Language code

  • country – Country code

  • sort – Sort order (NEWEST, RELEVANT, RATING)

Returns:

List of review dictionaries

reviews_get_field(app_id: str, field: str, count: int = 100, lang: str = 'en', country: str = 'us', sort: str = 'NEWEST') List[Any][source]

Get single field from reviews.

Parameters:
  • app_id – Google Play app ID

  • field – Field name to retrieve

  • count – Number of reviews

  • lang – Language code

  • country – Country code

  • sort – Sort order

Returns:

List of field values

reviews_get_fields(app_id: str, fields: List[str], count: int = 100, lang: str = 'en', country: str = 'us', sort: str = 'NEWEST') List[Dict[str, Any]][source]

Get multiple fields from reviews.

Parameters:
  • app_id – Google Play app ID

  • fields – List of field names

  • count – Number of reviews

  • lang – Language code

  • country – Country code

  • sort – Sort order

Returns:

List of dictionaries with requested fields

reviews_print_field(app_id: str, field: str, count: int = 100, lang: str = 'en', country: str = 'us', sort: str = 'NEWEST') None[source]

Print single field from reviews.

Parameters:
  • app_id – Google Play app ID

  • field – Field name to print

  • count – Number of reviews

  • lang – Language code

  • country – Country code

  • sort – Sort order

reviews_print_fields(app_id: str, fields: List[str], count: int = 100, lang: str = 'en', country: str = 'us', sort: str = 'NEWEST') None[source]

Print multiple fields from reviews.

Parameters:
  • app_id – Google Play app ID

  • fields – List of field names

  • count – Number of reviews

  • lang – Language code

  • country – Country code

  • sort – Sort order

reviews_print_all(app_id: str, count: int = 100, lang: str = 'en', country: str = 'us', sort: str = 'NEWEST') None[source]

Print all reviews as JSON.

Parameters:
  • app_id – Google Play app ID

  • count – Number of reviews

  • lang – Language code

  • country – Country code

  • sort – Sort order

developer_analyze(dev_id: str, count: int = 100, lang: str = 'en', country: str = 'us') List[Dict][source]

Get all apps from a developer.

Parameters:
  • dev_id – Developer ID (numeric or string)

  • count – Number of apps to return

  • lang – Language code

  • country – Country code

Returns:

List of app dictionaries

developer_get_field(dev_id: str, field: str, count: int = 100, lang: str = 'en', country: str = 'us') List[Any][source]

Get single field from developer apps.

Parameters:
  • dev_id – Developer ID

  • field – Field name to retrieve

  • count – Number of apps

  • lang – Language code

  • country – Country code

Returns:

List of field values

developer_get_fields(dev_id: str, fields: List[str], count: int = 100, lang: str = 'en', country: str = 'us') List[Dict[str, Any]][source]

Get multiple fields from developer apps.

Parameters:
  • dev_id – Developer ID

  • fields – List of field names

  • count – Number of apps

  • lang – Language code

  • country – Country code

Returns:

List of dictionaries with requested fields

developer_print_field(dev_id: str, field: str, count: int = 100, lang: str = 'en', country: str = 'us') None[source]

Print single field from developer apps.

Parameters:
  • dev_id – Developer ID

  • field – Field name to print

  • count – Number of apps

  • lang – Language code

  • country – Country code

developer_print_fields(dev_id: str, fields: List[str], count: int = 100, lang: str = 'en', country: str = 'us') None[source]

Print multiple fields from developer apps.

Parameters:
  • dev_id – Developer ID

  • fields – List of field names

  • count – Number of apps

  • lang – Language code

  • country – Country code

developer_print_all(dev_id: str, count: int = 100, lang: str = 'en', country: str = 'us') None[source]

Print all developer apps as JSON.

Parameters:
  • dev_id – Developer ID

  • count – Number of apps

  • lang – Language code

  • country – Country code

similar_analyze(app_id: str, count: int = 100, lang: str = 'en', country: str = 'us') List[Dict][source]

Get similar/competitor apps.

Parameters:
  • app_id – Google Play app ID

  • count – Number of similar apps to return

  • lang – Language code

  • country – Country code

Returns:

List of similar app dictionaries

similar_get_field(app_id: str, field: str, count: int = 100, lang: str = 'en', country: str = 'us') List[Any][source]

Get single field from similar apps.

Parameters:
  • app_id – Google Play app ID

  • field – Field name to retrieve

  • count – Number of similar apps

  • lang – Language code

  • country – Country code

Returns:

List of field values

similar_get_fields(app_id: str, fields: List[str], count: int = 100, lang: str = 'en', country: str = 'us') List[Dict[str, Any]][source]

Get multiple fields from similar apps.

Parameters:
  • app_id – Google Play app ID

  • fields – List of field names

  • count – Number of similar apps

  • lang – Language code

  • country – Country code

Returns:

List of dictionaries with requested fields

similar_print_field(app_id: str, field: str, count: int = 100, lang: str = 'en', country: str = 'us') None[source]

Print single field from similar apps.

Parameters:
  • app_id – Google Play app ID

  • field – Field name to print

  • count – Number of similar apps

  • lang – Language code

  • country – Country code

similar_print_fields(app_id: str, fields: List[str], count: int = 100, lang: str = 'en', country: str = 'us') None[source]

Print multiple fields from similar apps.

Parameters:
  • app_id – Google Play app ID

  • fields – List of field names

  • count – Number of similar apps

  • lang – Language code

  • country – Country code

similar_print_all(app_id: str, count: int = 100, lang: str = 'en', country: str = 'us') None[source]

Print all similar apps as JSON.

Parameters:
  • app_id – Google Play app ID

  • count – Number of similar apps

  • lang – Language code

  • country – Country code

list_analyze(collection: str = 'TOP_FREE', category: str = 'APPLICATION', count: int = 100, lang: str = 'en', country: str = 'us') List[Dict][source]

Get top charts (top free, top paid, top grossing).

Parameters:
  • collection – Collection type (TOP_FREE, TOP_PAID, TOP_GROSSING)

  • category – App category

  • count – Number of apps to return

  • lang – Language code

  • country – Country code

Returns:

List of app dictionaries from top charts

list_get_field(collection: str, field: str, category: str = 'APPLICATION', count: int = 100, lang: str = 'en', country: str = 'us') List[Any][source]

Get single field from top charts.

Parameters:
  • collection – Collection type

  • field – Field name to retrieve

  • category – App category

  • count – Number of apps

  • lang – Language code

  • country – Country code

Returns:

List of field values

list_get_fields(collection: str, fields: List[str], category: str = 'APPLICATION', count: int = 100, lang: str = 'en', country: str = 'us') List[Dict[str, Any]][source]

Get multiple fields from top charts.

Parameters:
  • collection – Collection type

  • fields – List of field names

  • category – App category

  • count – Number of apps

  • lang – Language code

  • country – Country code

Returns:

List of dictionaries with requested fields

list_print_field(collection: str, field: str, category: str = 'APPLICATION', count: int = 100, lang: str = 'en', country: str = 'us') None[source]

Print single field from top charts.

Parameters:
  • collection – Collection type

  • field – Field name to print

  • category – App category

  • count – Number of apps

  • lang – Language code

  • country – Country code

list_print_fields(collection: str, fields: List[str], category: str = 'APPLICATION', count: int = 100, lang: str = 'en', country: str = 'us') None[source]

Print multiple fields from top charts.

Parameters:
  • collection – Collection type

  • fields – List of field names

  • category – App category

  • count – Number of apps

  • lang – Language code

  • country – Country code

list_print_all(collection: str = 'TOP_FREE', category: str = 'APPLICATION', count: int = 100, lang: str = 'en', country: str = 'us') None[source]

Print all top charts as JSON.

Parameters:
  • collection – Collection type

  • category – App category

  • count – Number of apps

  • lang – Language code

  • country – Country code

suggest_analyze(term: str, count: int = 5, lang: str = 'en', country: str = 'us') List[str][source]

Get search suggestions for a term.

Parameters:
  • term – Search term

  • count – Number of suggestions to return

  • lang – Language code

  • country – Country code

Returns:

List of suggestion strings

suggest_nested(term: str, count: int = 5, lang: str = 'en', country: str = 'us') Dict[str, List[str]][source]

Get nested suggestions (suggestions for suggestions).

Parameters:
  • term – Search term

  • count – Number of suggestions

  • lang – Language code

  • country – Country code

Returns:

Dictionary mapping terms to their suggestions

suggest_print_all(term: str, count: int = 5, lang: str = 'en', country: str = 'us') None[source]

Print all suggestions as JSON.

Parameters:
  • term – Search term

  • count – Number of suggestions

  • lang – Language code

  • country – Country code

suggest_print_nested(term: str, count: int = 5, lang: str = 'en', country: str = 'us') None[source]

Print nested suggestions as JSON.

Parameters:
  • term – Search term

  • count – Number of suggestions

  • lang – Language code

  • country – Country code

Configuration

class gplay_scraper.Config[source]

Bases: object

Configuration class containing all settings and constants.

DEFAULT_TIMEOUT = 30
RATE_LIMIT_DELAY = 1.0
USER_AGENTS = ['Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36', 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:133.0) Gecko/20100101 Firefox/133.0', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.2 Safari/605.1.15']
PLAY_STORE_BASE_URL = 'https://play.google.com'
APP_DETAILS_ENDPOINT = '/store/apps/details'
BATCHEXECUTE_ENDPOINT = '/_/PlayStoreUi/data/batchexecute'
DEVELOPER_NUMERIC_ENDPOINT = '/store/apps/dev'
DEVELOPER_STRING_ENDPOINT = '/store/apps/developer'
DEFAULT_LANGUAGE = 'en'
DEFAULT_COUNTRY = 'us'
DEFAULT_REVIEWS_SORT = 'NEWEST'
DEFAULT_HTTP_CLIENT = 'requests'
DEFAULT_LIST_COLLECTION = 'TOP_FREE'
DEFAULT_LIST_CATEGORY = 'APPLICATION'
DEFAULT_LIST_COUNT = 100
DEFAULT_REVIEWS_COUNT = 100
DEFAULT_REVIEWS_BATCH_SIZE = 50
DEFAULT_SUGGEST_COUNT = 5
DEFAULT_SIMILAR_COUNT = 100
DEFAULT_DEVELOPER_COUNT = 100
DEFAULT_SEARCH_COUNT = 100
ERROR_MESSAGES = {'APP_FETCH_FAILED': 'Failed to fetch app page for {app_id}: {error}', 'APP_NOT_FOUND': 'App not found: {app_id}', 'CLIENT_FAILED_TRYING_NEXT': '{client_type} failed, trying next client: {error}', 'CLUSTER_FETCH_FAILED': 'Failed to fetch cluster page: {error}', 'CLUSTER_NOT_FOUND': 'Cluster not found: {cluster_url}', 'DEVELOPER_FETCH_FAILED': 'Failed to fetch developer page for {dev_id}: {error}', 'DEVELOPER_NOT_FOUND': 'Developer not found: {dev_id}', 'DS3_JSON_PARSE_FAILED': 'Failed to parse JSON: {error}', 'DS3_NOT_FOUND': 'Could not find data', 'DS5_NOT_FOUND': 'Could not find data', 'HTTP_CLIENT_NOT_AVAILABLE': '{client} not available', 'HTTP_ERROR': 'HTTP {status_code} Error', 'INVALID_APP_ID': 'app_id must be a non-empty string', 'INVALID_DEV_ID': 'dev_id must be a non-empty string', 'INVALID_QUERY': 'query must be a non-empty string', 'JSON_PARSE_FAILED': 'Failed to parse JSON: {error}', 'LIST_FETCH_FAILED': 'Failed to fetch list page: {error}', 'LIST_NOT_FOUND': 'List not found: {collection}/{category}', 'NO_DS3_DATA': 'No data found in dataset', 'NO_DS5_DATA': 'No data found in dataset', 'NO_HTTP_CLIENT': 'No HTTP client libraries found', 'RATE_LIMIT_SLEEP': 'Rate limiting: sleeping for {sleep_time:.2f} seconds', 'REVIEWS_FETCH_FAILED': 'Failed to fetch reviews batch for {app_id}: {error}', 'REVIEWS_NOT_FOUND': 'Reviews not found for app: {app_id}', 'REVIEWS_SCRAPE_FAILED': 'Failed to scrape reviews for {app_id}: {error}', 'SEARCH_FETCH_FAILED': "Failed to fetch search results for '{query}': {error}", 'SEARCH_NOT_FOUND': 'Search not found: {query}', 'SEARCH_PAGINATION_FAILED': 'Failed to fetch paginated search results: {error}', 'SUGGEST_FETCH_FAILED': "Failed to fetch suggestions for '{term}': {error}", 'SUGGEST_NOT_FOUND': 'Suggestions not found for: {term}', 'UNKNOWN_CLIENT_TYPE': 'Unknown client type: {client_type}'}
classmethod get_headers(user_agent: str = None) Dict[str, str][source]

Generate HTTP headers with random or specified user agent.

Parameters:

user_agent – Optional custom user agent string

Returns:

Dictionary containing HTTP headers

Exceptions

Custom exceptions for GPlay Scraper.

This module defines all custom exceptions used throughout the library.

exception gplay_scraper.exceptions.GPlayScraperError[source]

Bases: Exception

Base exception for all GPlay Scraper errors.

exception gplay_scraper.exceptions.InvalidAppIdError[source]

Bases: GPlayScraperError

Raised when an invalid app ID, dev ID, or query is provided.

exception gplay_scraper.exceptions.AppNotFoundError[source]

Bases: GPlayScraperError

Raised when an app, developer, or resource is not found (404 error).

exception gplay_scraper.exceptions.RateLimitError[source]

Bases: GPlayScraperError

Raised when rate limiting is triggered by Google Play Store.

exception gplay_scraper.exceptions.NetworkError[source]

Bases: GPlayScraperError

Raised when network requests fail.

exception gplay_scraper.exceptions.DataParsingError[source]

Bases: GPlayScraperError

Raised when parsing JSON or HTML data fails.

Core Method Classes

AppMethods

class gplay_scraper.core.gplay_methods.AppMethods(http_client: str = None)[source]

Bases: object

Methods for extracting app details with 65+ fields.

__init__(http_client: str = None)[source]

Initialize AppMethods with scraper and parser.

Parameters:

http_client – Optional HTTP client name

app_analyze(app_id: str, lang: str = 'en', country: str = 'us') Dict[source]

Get complete app data with all 65+ fields.

Parameters:
  • app_id – Google Play app ID

  • lang – Language code

  • country – Country code

Returns:

Dictionary with all app data

Raises:

InvalidAppIdError – If app_id is invalid

app_get_field(app_id: str, field: str, lang: str = 'en', country: str = 'us') Any[source]

Get single field value from app data.

Parameters:
  • app_id – Google Play app ID

  • field – Field name to retrieve

  • lang – Language code

  • country – Country code

Returns:

Value of the requested field

app_get_fields(app_id: str, fields: List[str], lang: str = 'en', country: str = 'us') Dict[str, Any][source]

Get multiple field values from app data.

Parameters:
  • app_id – Google Play app ID

  • fields – List of field names to retrieve

  • lang – Language code

  • country – Country code

Returns:

Dictionary with requested fields and values

app_print_field(app_id: str, field: str, lang: str = 'en', country: str = 'us') None[source]

Print single field value to console.

Parameters:
  • app_id – Google Play app ID

  • field – Field name to print

  • lang – Language code

  • country – Country code

app_print_fields(app_id: str, fields: List[str], lang: str = 'en', country: str = 'us') None[source]

Print multiple field values to console.

Parameters:
  • app_id – Google Play app ID

  • fields – List of field names to print

  • lang – Language code

  • country – Country code

app_print_all(app_id: str, lang: str = 'en', country: str = 'us') None[source]

Print all app data as JSON to console.

Parameters:
  • app_id – Google Play app ID

  • lang – Language code

  • country – Country code

SearchMethods

class gplay_scraper.core.gplay_methods.SearchMethods(http_client: str = None)[source]

Bases: object

Methods for searching apps by keyword.

__init__(http_client: str = None)[source]

Initialize SearchMethods with scraper and parser.

Parameters:

http_client – Optional HTTP client name

search_analyze(query: str, count: int = 100, lang: str = 'en', country: str = 'us') List[Dict][source]

Search for apps and get complete results with pagination support.

Parameters:
  • query – Search query string

  • count – Number of results to return

  • lang – Language code

  • country – Country code

Returns:

List of dictionaries containing app data

Raises:

InvalidAppIdError – If query is invalid

search_get_field(query: str, field: str, count: int = 100, lang: str = 'en', country: str = 'us') List[Any][source]

Get single field from all search results.

Parameters:
  • query – Search query string

  • field – Field name to retrieve

  • count – Number of results

  • lang – Language code

  • country – Country code

Returns:

List of field values from all results

search_get_fields(query: str, fields: List[str], count: int = 100, lang: str = 'en', country: str = 'us') List[Dict[str, Any]][source]

Get multiple fields from all search results.

Parameters:
  • query – Search query string

  • fields – List of field names to retrieve

  • count – Number of results

  • lang – Language code

  • country – Country code

Returns:

List of dictionaries with requested fields

search_print_field(query: str, field: str, count: int = 100, lang: str = 'en', country: str = 'us') None[source]

Print single field from all search results.

Parameters:
  • query – Search query string

  • field – Field name to print

  • count – Number of results

  • lang – Language code

  • country – Country code

search_print_fields(query: str, fields: List[str], count: int = 100, lang: str = 'en', country: str = 'us') None[source]

Print multiple fields from all search results.

Parameters:
  • query – Search query string

  • fields – List of field names to print

  • count – Number of results

  • lang – Language code

  • country – Country code

search_print_all(query: str, count: int = 100, lang: str = 'en', country: str = 'us') None[source]

Print all search results as JSON.

Parameters:
  • query – Search query string

  • count – Number of results

  • lang – Language code

  • country – Country code

ReviewsMethods

class gplay_scraper.core.gplay_methods.ReviewsMethods(http_client: str = None)[source]

Bases: object

Methods for extracting user reviews and ratings.

__init__(http_client: str = None)[source]

Initialize ReviewsMethods with scraper and parser.

Parameters:

http_client – Optional HTTP client name

reviews_analyze(app_id: str, count: int = 100, lang: str = 'en', country: str = 'us', sort: str = 'NEWEST') List[Dict][source]

Get user reviews for an app.

Parameters:
  • app_id – Google Play app ID

  • count – Number of reviews to fetch

  • lang – Language code

  • country – Country code

  • sort – Sort order (NEWEST, RELEVANT, RATING)

Returns:

List of review dictionaries

Raises:

InvalidAppIdError – If app_id is invalid

reviews_get_field(app_id: str, field: str, count: int = 100, lang: str = 'en', country: str = 'us', sort: str = 'NEWEST') List[Any][source]

Get single field from all reviews.

Parameters:
  • app_id – Google Play app ID

  • field – Field name to retrieve

  • count – Number of reviews

  • lang – Language code

  • country – Country code

  • sort – Sort order

Returns:

List of field values from all reviews

reviews_get_fields(app_id: str, fields: List[str], count: int = 100, lang: str = 'en', country: str = 'us', sort: str = 'NEWEST') List[Dict[str, Any]][source]

Get multiple fields from all reviews.

Parameters:
  • app_id – Google Play app ID

  • fields – List of field names to retrieve

  • count – Number of reviews

  • lang – Language code

  • country – Country code

  • sort – Sort order

Returns:

List of dictionaries with requested fields

reviews_print_field(app_id: str, field: str, count: int = 100, lang: str = 'en', country: str = 'us', sort: str = 'NEWEST') None[source]

Print single field from all reviews.

Parameters:
  • app_id – Google Play app ID

  • field – Field name to print

  • count – Number of reviews

  • lang – Language code

  • country – Country code

  • sort – Sort order

reviews_print_fields(app_id: str, fields: List[str], count: int = 100, lang: str = 'en', country: str = 'us', sort: str = 'NEWEST') None[source]

Print multiple fields from all reviews.

Parameters:
  • app_id – Google Play app ID

  • fields – List of field names to print

  • count – Number of reviews

  • lang – Language code

  • country – Country code

  • sort – Sort order

reviews_print_all(app_id: str, count: int = 100, lang: str = 'en', country: str = 'us', sort: str = 'NEWEST') None[source]

Print all reviews as JSON.

Parameters:
  • app_id – Google Play app ID

  • count – Number of reviews

  • lang – Language code

  • country – Country code

  • sort – Sort order

DeveloperMethods

class gplay_scraper.core.gplay_methods.DeveloperMethods(http_client: str = None)[source]

Bases: object

Methods for getting all apps from a developer.

__init__(http_client: str = None)[source]

Initialize DeveloperMethods with scraper and parser.

Parameters:

http_client – Optional HTTP client name

developer_analyze(dev_id: str, count: int = 100, lang: str = 'en', country: str = 'us') List[Dict][source]

Get all apps from a developer.

Parameters:
  • dev_id – Developer ID (numeric or string)

  • count – Number of apps to return

  • lang – Language code

  • country – Country code

Returns:

List of app dictionaries

Raises:

InvalidAppIdError – If dev_id is invalid

developer_get_field(dev_id: str, field: str, count: int = 100, lang: str = 'en', country: str = 'us') List[Any][source]

Get single field from all developer apps.

Parameters:
  • dev_id – Developer ID

  • field – Field name to retrieve

  • count – Number of apps

  • lang – Language code

  • country – Country code

Returns:

List of field values from all apps

developer_get_fields(dev_id: str, fields: List[str], count: int = 100, lang: str = 'en', country: str = 'us') List[Dict[str, Any]][source]

Get multiple fields from all developer apps.

Parameters:
  • dev_id – Developer ID

  • fields – List of field names to retrieve

  • count – Number of apps

  • lang – Language code

  • country – Country code

Returns:

List of dictionaries with requested fields

developer_print_field(dev_id: str, field: str, count: int = 100, lang: str = 'en', country: str = 'us') None[source]

Print single field from all developer apps.

Parameters:
  • dev_id – Developer ID

  • field – Field name to print

  • count – Number of apps

  • lang – Language code

  • country – Country code

developer_print_fields(dev_id: str, fields: List[str], count: int = 100, lang: str = 'en', country: str = 'us') None[source]

Print multiple fields from all developer apps.

Parameters:
  • dev_id – Developer ID

  • fields – List of field names to print

  • count – Number of apps

  • lang – Language code

  • country – Country code

developer_print_all(dev_id: str, count: int = 100, lang: str = 'en', country: str = 'us') None[source]

Print all developer apps as JSON.

Parameters:
  • dev_id – Developer ID

  • count – Number of apps

  • lang – Language code

  • country – Country code

SimilarMethods

class gplay_scraper.core.gplay_methods.SimilarMethods(http_client: str = None)[source]

Bases: object

Methods for finding similar/competitor apps.

__init__(http_client: str = None)[source]

Initialize SimilarMethods with scraper and parser.

Parameters:

http_client – Optional HTTP client name

similar_analyze(app_id: str, count: int = 100, lang: str = 'en', country: str = 'us') List[Dict][source]

Get similar/competitor apps.

Parameters:
  • app_id – Google Play app ID

  • count – Number of similar apps to return

  • lang – Language code

  • country – Country code

Returns:

List of similar app dictionaries

Raises:

InvalidAppIdError – If app_id is invalid

similar_get_field(app_id: str, field: str, count: int = 100, lang: str = 'en', country: str = 'us') List[Any][source]

Get single field from all similar apps.

Parameters:
  • app_id – Google Play app ID

  • field – Field name to retrieve

  • count – Number of similar apps

  • lang – Language code

  • country – Country code

Returns:

List of field values from all similar apps

similar_get_fields(app_id: str, fields: List[str], count: int = 100, lang: str = 'en', country: str = 'us') List[Dict[str, Any]][source]

Get multiple fields from all similar apps.

Parameters:
  • app_id – Google Play app ID

  • fields – List of field names to retrieve

  • count – Number of similar apps

  • lang – Language code

  • country – Country code

Returns:

List of dictionaries with requested fields

similar_print_field(app_id: str, field: str, count: int = 100, lang: str = 'en', country: str = 'us') None[source]

Print single field from all similar apps.

Parameters:
  • app_id – Google Play app ID

  • field – Field name to print

  • count – Number of similar apps

  • lang – Language code

  • country – Country code

similar_print_fields(app_id: str, fields: List[str], count: int = 100, lang: str = 'en', country: str = 'us') None[source]

Print multiple fields from all similar apps.

Parameters:
  • app_id – Google Play app ID

  • fields – List of field names to print

  • count – Number of similar apps

  • lang – Language code

  • country – Country code

similar_print_all(app_id: str, count: int = 100, lang: str = 'en', country: str = 'us') None[source]

Print all similar apps as JSON.

Parameters:
  • app_id – Google Play app ID

  • count – Number of similar apps

  • lang – Language code

  • country – Country code

ListMethods

class gplay_scraper.core.gplay_methods.ListMethods(http_client: str = None)[source]

Bases: object

Methods for getting top charts (free, paid, grossing).

__init__(http_client: str = None)[source]

Initialize ListMethods with scraper and parser.

Parameters:

http_client – Optional HTTP client name

list_analyze(collection: str = 'TOP_FREE', category: str = 'APPLICATION', count: int = 100, lang: str = 'en', country: str = 'us') List[Dict][source]

Get top charts (top free, top paid, top grossing).

Parameters:
  • collection – Collection type (TOP_FREE, TOP_PAID, TOP_GROSSING)

  • category – App category

  • count – Number of apps to return

  • lang – Language code

  • country – Country code

Returns:

List of app dictionaries from top charts

list_get_field(collection: str, field: str, category: str = 'APPLICATION', count: int = 100, lang: str = 'en', country: str = 'us') List[Any][source]

Get single field from all list apps.

Parameters:
  • collection – Collection type

  • field – Field name to retrieve

  • category – App category

  • count – Number of apps

  • lang – Language code

  • country – Country code

Returns:

List of field values from all apps

list_get_fields(collection: str, fields: List[str], category: str = 'APPLICATION', count: int = 100, lang: str = 'en', country: str = 'us') List[Dict[str, Any]][source]

Get multiple fields from all list apps.

Parameters:
  • collection – Collection type

  • fields – List of field names to retrieve

  • category – App category

  • count – Number of apps

  • lang – Language code

  • country – Country code

Returns:

List of dictionaries with requested fields

list_print_field(collection: str, field: str, category: str = 'APPLICATION', count: int = 100, lang: str = 'en', country: str = 'us') None[source]

Print single field from all list apps.

Parameters:
  • collection – Collection type

  • field – Field name to print

  • category – App category

  • count – Number of apps

  • lang – Language code

  • country – Country code

list_print_fields(collection: str, fields: List[str], category: str = 'APPLICATION', count: int = 100, lang: str = 'en', country: str = 'us') None[source]

Print multiple fields from all list apps.

Parameters:
  • collection – Collection type

  • fields – List of field names to print

  • category – App category

  • count – Number of apps

  • lang – Language code

  • country – Country code

list_print_all(collection: str = 'TOP_FREE', category: str = 'APPLICATION', count: int = 100, lang: str = 'en', country: str = 'us') None[source]

Print all list apps as JSON.

Parameters:
  • collection – Collection type

  • category – App category

  • count – Number of apps

  • lang – Language code

  • country – Country code

SuggestMethods

class gplay_scraper.core.gplay_methods.SuggestMethods(http_client: str = None)[source]

Bases: object

Methods for getting search suggestions and autocomplete.

__init__(http_client: str = None)[source]

Initialize SuggestMethods with scraper and parser.

Parameters:

http_client – Optional HTTP client name

suggest_analyze(term: str, count: int = 5, lang: str = 'en', country: str = 'us') List[str][source]

Get search suggestions for a term.

Parameters:
  • term – Search term

  • count – Number of suggestions to return

  • lang – Language code

  • country – Country code

Returns:

List of suggestion strings

Raises:

InvalidAppIdError – If term is invalid

suggest_nested(term: str, count: int = 5, lang: str = 'en', country: str = 'us') Dict[str, List[str]][source]

Get nested suggestions (suggestions for suggestions).

Parameters:
  • term – Search term

  • count – Number of suggestions per level

  • lang – Language code

  • country – Country code

Returns:

Dictionary mapping suggestions to their nested suggestions

Raises:

InvalidAppIdError – If term is invalid

suggest_print_all(term: str, count: int = 5, lang: str = 'en', country: str = 'us') None[source]

Print all suggestions as JSON.

Parameters:
  • term – Search term

  • count – Number of suggestions

  • lang – Language code

  • country – Country code

suggest_print_nested(term: str, count: int = 5, lang: str = 'en', country: str = 'us') None[source]

Print nested suggestions as JSON.

Parameters:
  • term – Search term

  • count – Number of suggestions per level

  • lang – Language code

  • country – Country code

Core Scraper Classes

class gplay_scraper.core.gplay_scraper.AppScraper(rate_limit_delay: float = None, http_client: str = None)[source]

Bases: object

Scraper for fetching app details from Google Play Store.

__init__(rate_limit_delay: float = None, http_client: str = None)[source]

Initialize AppScraper with HTTP client.

Parameters:
  • rate_limit_delay – Delay between requests

  • http_client – HTTP client name

fetch_playstore_page(app_id: str, lang: str = 'en', country: str = 'us') str[source]

Fetch app page HTML from Google Play Store.

Parameters:
  • app_id – Google Play app ID

  • lang – Language code

  • country – Country code

Returns:

HTML content of app page

scrape_play_store_data(app_id: str, lang: str = 'en', country: str = 'us') Dict[source]

Extract dataset from app page HTML.

Parameters:
  • app_id – Google Play app ID

  • lang – Language code

  • country – Country code

Returns:

5 dataset

Return type:

Dictionary containing ds

Raises:

DataParsingError – If dataset not found

class gplay_scraper.core.gplay_scraper.SearchScraper(rate_limit_delay: float = None, http_client: str = None)[source]

Bases: object

Scraper for fetching search results from Google Play Store.

__init__(rate_limit_delay: float = None, http_client: str = None)[source]

Initialize SearchScraper with HTTP client.

Fetch search page HTML from Google Play Store.

Parameters:
  • query – Search query string

  • count – Number of results needed

  • lang – Language code

  • country – Country code

Returns:

HTML content of search page

Raises:

InvalidAppIdError – If query is invalid

scrape_play_store_data(query: str, count: int = 100, lang: str = 'en', country: str = 'us') Dict[source]

Scrape search results with automatic pagination support.

Parameters:
  • query – Search query string

  • count – Total number of results to fetch

  • lang – Language code

  • country – Country code

Returns:

Dictionary containing all search results

Raises:

DataParsingError – If parsing fails

class gplay_scraper.core.gplay_scraper.ReviewsScraper(rate_limit_delay: float = None, http_client: str = None)[source]

Bases: object

Scraper for fetching user reviews from Google Play Store.

SORT_NAMES = {'NEWEST': 2, 'RATING': 3, 'RELEVANT': 1}
__init__(rate_limit_delay: float = None, http_client: str = None)[source]

Initialize ReviewsScraper with HTTP client.

fetch_reviews_batch(app_id: str, lang: str = 'en', country: str = 'us', sort: int = 'NEWEST', batch_count: int = 50, token: str = None) str[source]

Fetch single batch of reviews from API.

Parameters:
  • app_id – Google Play app ID

  • lang – Language code

  • country – Country code

  • sort – Sort order (NEWEST, RELEVANT, RATING)

  • batch_count – Number of reviews per batch

  • token – Pagination token for next batch

Returns:

Raw API response content

scrape_reviews_data(app_id: str, count: int = 100, lang: str = 'en', country: str = 'us', sort: int = 'NEWEST') Dict[source]

Scrape multiple batches of reviews.

Parameters:
  • app_id – Google Play app ID

  • count – Total number of reviews to fetch

  • lang – Language code

  • country – Country code

  • sort – Sort order

Returns:

Dictionary containing all review responses

class gplay_scraper.core.gplay_scraper.DeveloperScraper(rate_limit_delay: float = None, http_client: str = None)[source]

Bases: object

Scraper for fetching developer portfolio from Google Play Store.

__init__(rate_limit_delay: float = None, http_client: str = None)[source]

Initialize DeveloperScraper with HTTP client.

fetch_developer_page(dev_id: str, lang: str = 'en', country: str = 'us') str[source]

Fetch developer page HTML from Google Play Store.

Parameters:
  • dev_id – Developer ID (numeric or string)

  • lang – Language code

  • country – Country code

Returns:

HTML content of developer page

scrape_play_store_data(dev_id: str, lang: str = 'en', country: str = 'us') Dict[source]

Extract dataset from developer page HTML.

Parameters:
  • dev_id – Developer ID

  • lang – Language code

  • country – Country code

Returns:

3 dataset and dev_id

Return type:

Dictionary containing ds

Raises:

DataParsingError – If dataset not found

class gplay_scraper.core.gplay_scraper.SimilarScraper(rate_limit_delay: float = None, http_client: str = None)[source]

Bases: object

Scraper for fetching similar apps from Google Play Store.

__init__(rate_limit_delay: float = None, http_client: str = None)[source]

Initialize SimilarScraper with HTTP client.

fetch_similar_page(app_id: str, lang: str = 'en', country: str = 'us') str[source]

Fetch app page HTML to extract similar apps cluster URL.

Parameters:
  • app_id – Google Play app ID

  • lang – Language code

  • country – Country code

Returns:

HTML content of app page

scrape_play_store_data(app_id: str, lang: str = 'en', country: str = 'us') Dict[source]

Extract similar apps dataset from cluster page.

Parameters:
  • app_id – Google Play app ID

  • lang – Language code

  • country – Country code

Returns:

3 dataset

Return type:

Dictionary containing ds

Raises:

DataParsingError – If dataset not found

class gplay_scraper.core.gplay_scraper.ListScraper(rate_limit_delay: float = None, http_client: str = None)[source]

Bases: object

Scraper for fetching top charts from Google Play Store.

CLUSTER_NAMES = {'TOP_FREE': 'topselling_free', 'TOP_GROSSING': 'topgrossing', 'TOP_PAID': 'topselling_paid'}
__init__(rate_limit_delay: float = None, http_client: str = None)[source]

Initialize ListScraper with HTTP client.

scrape_play_store_data(collection: str, category: str = 'APPLICATION', count: int = 100, lang: str = 'en', country: str = 'us') Dict[source]

Scrape top charts data from Google Play Store.

Parameters:
  • collection – Collection type (TOP_FREE, TOP_PAID, TOP_GROSSING)

  • category – App category (e.g., GAME, SOCIAL)

  • count – Number of apps to fetch

  • lang – Language code

  • country – Country code

Returns:

Dictionary containing collection data

Raises:

DataParsingError – If JSON parsing fails

class gplay_scraper.core.gplay_scraper.SuggestScraper(rate_limit_delay: float = None, http_client: str = None)[source]

Bases: object

Scraper for fetching search suggestions from Google Play Store.

__init__(rate_limit_delay: float = None, http_client: str = None)[source]

Initialize SuggestScraper with HTTP client.

scrape_suggestions(term: str, lang: str = 'en', country: str = 'us') Dict[source]

Scrape search suggestions from Google Play Store.

Parameters:
  • term – Search term for suggestions

  • lang – Language code

  • country – Country code

Returns:

Dictionary containing list of suggestions

Raises:

DataParsingError – If JSON parsing fails

Core Parser Classes

Parser classes for extracting and formatting data from raw responses.

This module contains 7 parser classes that handle JSON/HTML parsing and data formatting for all scraping methods.

class gplay_scraper.core.gplay_parser.AppParser[source]

Bases: object

Parser for extracting and formatting app data.

parse_app_data(dataset: Dict, app_id: str) Dict[str, Any][source]

Parse raw app data from dataset.

Parameters:
  • dataset – Raw dataset from scraper

  • app_id – Google Play app ID

Returns:

Dictionary with parsed app details

Raises:

DataParsingError – If parsing fails

format_app_data(details: dict) dict[source]

Format parsed app data into final structure.

Parameters:

details – Parsed app details

Returns:

Formatted dictionary with all app fields

class gplay_scraper.core.gplay_parser.SearchParser[source]

Bases: object

Parser for extracting and formatting search results.

parse_search_results(dataset: Dict, count: int) List[Dict][source]

Parse search results from dataset.

Parameters:
  • dataset – Raw dataset from scraper

  • count – Maximum number of results to parse

Returns:

List of parsed search result dictionaries

extract_search_result(data) Dict[source]

Extract single search result from raw data.

Parameters:

data – Raw search result data

Returns:

Dictionary with extracted search result or None if extraction fails

format_search_result(result: dict) dict[source]

Format parsed search result into final structure.

Parameters:

result – Parsed search result

Returns:

Formatted dictionary with search result fields

extract_pagination_token(dataset: Dict) str[source]

Extract pagination token from search dataset.

Parameters:

dataset – Search dataset

Returns:

Pagination token or None

parse_html_content(html_content: str) Dict[source]

Extract datasets from search page HTML.

Parameters:

html_content – HTML content of search page

Returns:

Dictionary containing all datasets

Raises:

DataParsingError – If no datasets found

class gplay_scraper.core.gplay_parser.ReviewsParser[source]

Bases: object

Parser for extracting and formatting user reviews.

parse_reviews_response(content: str) Tuple[List[Dict], str | None][source]

Parse reviews from API response content.

Parameters:

content – Raw API response content

Returns:

Tuple of (list of review dictionaries, next page token)

extract_review_data(review_raw) Dict | None[source]

Extract single review from raw data.

Parameters:

review_raw – Raw review data array

Returns:

Dictionary with extracted review data or None if extraction fails

parse_multiple_responses(dataset: Dict) List[Dict][source]

Parse multiple review responses.

Parameters:

dataset – Dataset containing multiple review responses

Returns:

List of all parsed reviews

format_reviews_data(reviews_data: List[Dict]) List[Dict][source]

Format parsed reviews into final structure.

Parameters:

reviews_data – List of parsed reviews

Returns:

List of formatted review dictionaries

class gplay_scraper.core.gplay_parser.DeveloperParser[source]

Bases: object

Parser for extracting and formatting developer apps.

parse_developer_data(dataset: Dict, dev_id: str) List[Dict][source]

Parse developer apps from dataset.

Parameters:
  • dataset – Raw dataset from scraper

  • dev_id – Developer ID (numeric or string)

Returns:

List of parsed app dictionaries

Raises:

DataParsingError – If parsing fails

format_developer_data(apps_data: List[Dict]) List[Dict][source]

Format parsed developer apps into final structure.

Parameters:

apps_data – List of parsed apps

Returns:

List of formatted app dictionaries

class gplay_scraper.core.gplay_parser.SimilarParser[source]

Bases: object

Parser for extracting and formatting similar apps.

parse_similar_data(dataset: Dict) List[Dict][source]

Parse similar apps from dataset.

Parameters:

dataset – Raw dataset from scraper

Returns:

List of parsed similar app dictionaries

format_similar_data(apps_data: List[Dict]) List[Dict][source]

Format parsed similar apps into final structure.

Parameters:

apps_data – List of parsed apps

Returns:

List of formatted app dictionaries

class gplay_scraper.core.gplay_parser.ListParser[source]

Bases: object

Parser for extracting and formatting top chart apps.

parse_list_data(dataset: Dict, count: int) List[Dict][source]

Parse top chart apps from dataset.

Parameters:
  • dataset – Raw dataset from scraper

  • count – Maximum number of apps to parse

Returns:

List of parsed app dictionaries

format_list_data(apps_data: List[Dict]) List[Dict][source]

Format parsed list apps into final structure.

Parameters:

apps_data – List of parsed apps

Returns:

List of formatted app dictionaries

class gplay_scraper.core.gplay_parser.SuggestParser[source]

Bases: object

Parser for extracting and formatting search suggestions.

parse_suggestions(dataset: Dict) List[str][source]

Parse suggestions from dataset.

Parameters:

dataset – Raw dataset from scraper

Returns:

List of suggestion strings

format_suggestions(suggestions: List[str]) List[str][source]

Format suggestions (pass-through for strings).

Parameters:

suggestions – List of suggestion strings

Returns:

Same list of suggestion strings

HTTP Client

class gplay_scraper.utils.http_client.HttpClient(rate_limit_delay: float = None, client_type: str = None)[source]

Bases: object

HTTP client with automatic fallback support for 7 libraries.

__init__(rate_limit_delay: float = None, client_type: str = None)[source]

Initialize HTTP client with specified or default client type.

Parameters:
  • rate_limit_delay – Delay between requests in seconds

  • client_type – HTTP client to use (requests, curl_cffi, tls_client, etc.)

fetch_app_page(app_id: str, lang: str = 'en', country: str = 'us') str[source]

Fetch app details page from Google Play Store.

Parameters:
  • app_id – Google Play app ID

  • lang – Language code

  • country – Country code

Returns:

HTML content of app page

Raises:
fetch_search_page(query: str = None, token: str = None, needed: int = None, lang: str = 'en', country: str = 'us') str[source]

Fetch search results from Google Play Store (initial or paginated).

Parameters:
  • query – Search query string (for initial search)

  • token – Pagination token (for paginated search)

  • needed – Number of results needed (for pagination)

  • lang – Language code

  • country – Country code

Returns:

HTML content (initial) or raw API response (pagination)

Raises:
fetch_reviews_batch(app_id: str, lang: str = 'en', country: str = 'us', sort: int = 'NEWEST', batch_count: int = 50, token: str = None) str[source]

Fetch single batch of reviews from Google Play Store API.

Parameters:
  • app_id – Google Play app ID

  • lang – Language code

  • country – Country code

  • sort – Sort order (1=RELEVANT, 2=NEWEST, 3=RATING)

  • batch_count – Number of reviews per batch

  • token – Pagination token for next batch

Returns:

Raw API response text

Raises:
fetch_developer_page(dev_id: str, lang: str = 'en', country: str = 'us') str[source]

Fetch developer portfolio page from Google Play Store.

Parameters:
  • dev_id – Developer ID (numeric or string)

  • lang – Language code

  • country – Country code

Returns:

HTML content of developer page

Raises:
fetch_cluster_page(cluster_url: str, lang: str = 'en', country: str = 'us') str[source]

Fetch cluster page (similar apps collection) from Google Play Store.

Parameters:
  • cluster_url – Cluster URL path

  • lang – Language code

  • country – Country code

Returns:

HTML content of cluster page

Raises:
fetch_list_page(collection: str, category: str = 'APPLICATION', count: int = 100, lang: str = 'en', country: str = 'us') str[source]

Fetch top charts list page from Google Play Store.

Parameters:
  • collection – Collection type (topselling_free, topselling_paid, topgrossing)

  • category – App category

  • count – Number of apps to fetch

  • lang – Language code

  • country – Country code

Returns:

Raw API response text

Raises:
fetch_suggest_page(term: str, lang: str = 'en', country: str = 'us') str[source]

Fetch search suggestions from Google Play Store.

Parameters:
  • term – Search term for suggestions

  • lang – Language code

  • country – Country code

Returns:

Raw API response text

Raises:
rate_limit()[source]

Apply rate limiting delay between requests.

Utility Functions

Helper functions for data processing and manipulation.

This module contains utility functions for: - Text unescaping and cleaning - JSON string cleaning - Date parsing and calculations - Install metrics calculations

gplay_scraper.utils.helpers.unescape_text(s: str | None) str | None[source]

Unescape HTML entities and remove HTML tags from text.

Parameters:

s – Input string with HTML

Returns:

Cleaned text without HTML tags

gplay_scraper.utils.helpers.clean_json_string(json_str: str) str[source]

Clean malformed JSON string from Google Play Store.

Parameters:

json_str – Raw JSON string

Returns:

Cleaned JSON string

gplay_scraper.utils.helpers.alternative_json_clean(json_str: str) str[source]

Alternative JSON cleaning method using bracket matching.

Parameters:

json_str – Raw JSON string

Returns:

Cleaned JSON string

gplay_scraper.utils.helpers.parse_release_date(release_date_str: str | None) datetime | None[source]

Parse release date string to datetime object.

Parameters:

release_date_str – Date string in format ‘Mon DD, YYYY’

Returns:

Datetime object or None if parsing fails

gplay_scraper.utils.helpers.calculate_app_age(release_date_str: str | None, current_date: datetime) int | None[source]

Calculate app age in days since release.

Parameters:
  • release_date_str – Release date string

  • current_date – Current date for calculation

Returns:

Number of days since release or None

gplay_scraper.utils.helpers.parse_installs_string(installs_str: str) int | None[source]

Parse install count string to integer.

Parameters:

installs_str – Install count string (e.g., ‘1,000,000+’)

Returns:

Integer install count or None

gplay_scraper.utils.helpers.calculate_daily_installs(install_count, release_date_str: str | None, current_date: datetime) int | None[source]

Calculate average daily installs since release.

Parameters:
  • install_count – Total install count

  • release_date_str – Release date string

  • current_date – Current date for calculation

Returns:

Average daily installs or None

gplay_scraper.utils.helpers.calculate_monthly_installs(install_count, release_date_str: str | None, current_date: datetime) int | None[source]

Calculate average monthly installs since release.

Parameters:
  • install_count – Total install count

  • release_date_str – Release date string

  • current_date – Current date for calculation

Returns:

Average monthly installs or None

Element Specifications

Element specifications for data extraction from Google Play Store.

This module defines ElementSpec class and ElementSpecs for all 7 method types. Each spec defines how to extract specific fields from raw JSON data.

gplay_scraper.models.element_specs.nested_lookup(obj: Any, key_list: List[int]) Any[source]

Safely navigate nested dictionary/list structure.

Parameters:
  • obj – Object to navigate

  • key_list – List of keys/indices to follow

Returns:

Value at the nested location or None

class gplay_scraper.models.element_specs.ElementSpec(ds_num: int | None, data_map: List[int], post_processor: Callable = None, fallback_value: Any = None)[source]

Bases: object

Specification for extracting a single field from raw data.

ds_num

Dataset number (not used, kept for compatibility)

data_map

List of keys/indices to navigate to the field

post_processor

Optional function to process extracted value

fallback_value

Value to return if extraction fails

__init__(ds_num: int | None, data_map: List[int], post_processor: Callable = None, fallback_value: Any = None)[source]

Initialize ElementSpec with extraction parameters.

extract_content(source: dict) Any[source]

Extract content from source using data_map.

Parameters:

source – Source dictionary/list

Returns:

Extracted and processed value

class gplay_scraper.models.element_specs.ElementSpecs[source]

Bases: object

Collection of element specifications for all method types.

Contains specs for: - App: 65+ fields for app details - Search: Fields for search results - Review: Fields for user reviews - Developer: Fields for developer apps - Similar: Fields for similar apps - List: Fields for top chart apps

App = {'adSupported': <gplay_scraper.models.element_specs.ElementSpec object>, 'androidVersion': <gplay_scraper.models.element_specs.ElementSpec object>, 'appBundle': <gplay_scraper.models.element_specs.ElementSpec object>, 'appId': <gplay_scraper.models.element_specs.ElementSpec object>, 'available': <gplay_scraper.models.element_specs.ElementSpec object>, 'categories': <gplay_scraper.models.element_specs.ElementSpec object>, 'containsAds': <gplay_scraper.models.element_specs.ElementSpec object>, 'contentRating': <gplay_scraper.models.element_specs.ElementSpec object>, 'contentRatingDescription': <gplay_scraper.models.element_specs.ElementSpec object>, 'currency': <gplay_scraper.models.element_specs.ElementSpec object>, 'dataSafety': <gplay_scraper.models.element_specs.ElementSpec object>, 'description': <gplay_scraper.models.element_specs.ElementSpec object>, 'developer': <gplay_scraper.models.element_specs.ElementSpec object>, 'developerAddress': <gplay_scraper.models.element_specs.ElementSpec object>, 'developerEmail': <gplay_scraper.models.element_specs.ElementSpec object>, 'developerId': <gplay_scraper.models.element_specs.ElementSpec object>, 'developerPhone': <gplay_scraper.models.element_specs.ElementSpec object>, 'developerWebsite': <gplay_scraper.models.element_specs.ElementSpec object>, 'free': <gplay_scraper.models.element_specs.ElementSpec object>, 'genre': <gplay_scraper.models.element_specs.ElementSpec object>, 'genreId': <gplay_scraper.models.element_specs.ElementSpec object>, 'headerImage': <gplay_scraper.models.element_specs.ElementSpec object>, 'histogram': <gplay_scraper.models.element_specs.ElementSpec object>, 'icon': <gplay_scraper.models.element_specs.ElementSpec object>, 'inAppProductPrice': <gplay_scraper.models.element_specs.ElementSpec object>, 'installs': <gplay_scraper.models.element_specs.ElementSpec object>, 'lastUpdatedOn': <gplay_scraper.models.element_specs.ElementSpec object>, 'maxandroidapi': <gplay_scraper.models.element_specs.ElementSpec object>, 'minInstalls': <gplay_scraper.models.element_specs.ElementSpec object>, 'minandroidapi': <gplay_scraper.models.element_specs.ElementSpec object>, 'offersIAP': <gplay_scraper.models.element_specs.ElementSpec object>, 'originalPrice': <gplay_scraper.models.element_specs.ElementSpec object>, 'permissions': <gplay_scraper.models.element_specs.ElementSpec object>, 'price': <gplay_scraper.models.element_specs.ElementSpec object>, 'privacyPolicy': <gplay_scraper.models.element_specs.ElementSpec object>, 'ratings': <gplay_scraper.models.element_specs.ElementSpec object>, 'realInstalls': <gplay_scraper.models.element_specs.ElementSpec object>, 'released': <gplay_scraper.models.element_specs.ElementSpec object>, 'reviews': <gplay_scraper.models.element_specs.ElementSpec object>, 'sale': <gplay_scraper.models.element_specs.ElementSpec object>, 'score': <gplay_scraper.models.element_specs.ElementSpec object>, 'screenshots': <gplay_scraper.models.element_specs.ElementSpec object>, 'summary': <gplay_scraper.models.element_specs.ElementSpec object>, 'title': <gplay_scraper.models.element_specs.ElementSpec object>, 'updated': <gplay_scraper.models.element_specs.ElementSpec object>, 'url': <gplay_scraper.models.element_specs.ElementSpec object>, 'version': <gplay_scraper.models.element_specs.ElementSpec object>, 'video': <gplay_scraper.models.element_specs.ElementSpec object>, 'videoImage': <gplay_scraper.models.element_specs.ElementSpec object>, 'whatsNew': <gplay_scraper.models.element_specs.ElementSpec object>}
Search = {'appId': <gplay_scraper.models.element_specs.ElementSpec object>, 'currency': <gplay_scraper.models.element_specs.ElementSpec object>, 'developer': <gplay_scraper.models.element_specs.ElementSpec object>, 'free': <gplay_scraper.models.element_specs.ElementSpec object>, 'icon': <gplay_scraper.models.element_specs.ElementSpec object>, 'price': <gplay_scraper.models.element_specs.ElementSpec object>, 'score': <gplay_scraper.models.element_specs.ElementSpec object>, 'scoreText': <gplay_scraper.models.element_specs.ElementSpec object>, 'summary': <gplay_scraper.models.element_specs.ElementSpec object>, 'title': <gplay_scraper.models.element_specs.ElementSpec object>, 'url': <gplay_scraper.models.element_specs.ElementSpec object>}
Review = {'appVersion': <gplay_scraper.models.element_specs.ElementSpec object>, 'at': <gplay_scraper.models.element_specs.ElementSpec object>, 'content': <gplay_scraper.models.element_specs.ElementSpec object>, 'reviewId': <gplay_scraper.models.element_specs.ElementSpec object>, 'score': <gplay_scraper.models.element_specs.ElementSpec object>, 'thumbsUpCount': <gplay_scraper.models.element_specs.ElementSpec object>, 'userImage': <gplay_scraper.models.element_specs.ElementSpec object>, 'userName': <gplay_scraper.models.element_specs.ElementSpec object>}
Developer = {'appId': <gplay_scraper.models.element_specs.ElementSpec object>, 'currency': <gplay_scraper.models.element_specs.ElementSpec object>, 'description': <gplay_scraper.models.element_specs.ElementSpec object>, 'developer': <gplay_scraper.models.element_specs.ElementSpec object>, 'free': <gplay_scraper.models.element_specs.ElementSpec object>, 'icon': <gplay_scraper.models.element_specs.ElementSpec object>, 'price': <gplay_scraper.models.element_specs.ElementSpec object>, 'score': <gplay_scraper.models.element_specs.ElementSpec object>, 'scoreText': <gplay_scraper.models.element_specs.ElementSpec object>, 'title': <gplay_scraper.models.element_specs.ElementSpec object>, 'url': <gplay_scraper.models.element_specs.ElementSpec object>}
Similar = {'appId': <gplay_scraper.models.element_specs.ElementSpec object>, 'currency': <gplay_scraper.models.element_specs.ElementSpec object>, 'description': <gplay_scraper.models.element_specs.ElementSpec object>, 'developer': <gplay_scraper.models.element_specs.ElementSpec object>, 'free': <gplay_scraper.models.element_specs.ElementSpec object>, 'icon': <gplay_scraper.models.element_specs.ElementSpec object>, 'price': <gplay_scraper.models.element_specs.ElementSpec object>, 'score': <gplay_scraper.models.element_specs.ElementSpec object>, 'scoreText': <gplay_scraper.models.element_specs.ElementSpec object>, 'title': <gplay_scraper.models.element_specs.ElementSpec object>, 'url': <gplay_scraper.models.element_specs.ElementSpec object>}
List = {'appId': <gplay_scraper.models.element_specs.ElementSpec object>, 'currency': <gplay_scraper.models.element_specs.ElementSpec object>, 'description': <gplay_scraper.models.element_specs.ElementSpec object>, 'developer': <gplay_scraper.models.element_specs.ElementSpec object>, 'free': <gplay_scraper.models.element_specs.ElementSpec object>, 'genre': <gplay_scraper.models.element_specs.ElementSpec object>, 'icon': <gplay_scraper.models.element_specs.ElementSpec object>, 'installs': <gplay_scraper.models.element_specs.ElementSpec object>, 'price': <gplay_scraper.models.element_specs.ElementSpec object>, 'score': <gplay_scraper.models.element_specs.ElementSpec object>, 'scoreText': <gplay_scraper.models.element_specs.ElementSpec object>, 'screenshots': <gplay_scraper.models.element_specs.ElementSpec object>, 'title': <gplay_scraper.models.element_specs.ElementSpec object>, 'url': <gplay_scraper.models.element_specs.ElementSpec object>}