Skip to main content

The go-to Python package for App Store and Google Play review extraction

Project description

App Reviews

Fetch app reviews from the Apple App Store and Google Play Store with a single Python package.

PyPI Python Downloads License

CI Docs

Documentation · PyPI · Contributing


Why App Reviews?

Apple and Google use completely different APIs, formats, and auth methods. Getting reviews across multiple countries means juggling separate requests, rate limits, and JWT signing.

App Reviews handles all of this behind a single client.fetch() call -- no API keys required.

from app_reviews import AppStoreReviews, Country

client = AppStoreReviews()
result = client.fetch("324684580", countries=[Country.US, Country.GB])

for review in result:
    print(f"[{review.country}] {review.rating}* {review.title}")

Highlights

Both stores Apple App Store + Google Play in one package
No API keys Works out of the box using public endpoints
155 countries Fetch across regions in a single call
Official APIs Optionally use App Store Connect or Google Play Developer API
Interactive TUI Browse reviews in the terminal
Export JSON, JSONL, CSV
Minimal deps Just cryptography for JWT + stdlib urllib

Install

pip install app-reviews

Or with uv:

uv add app-reviews

Quick Start

Apple App Store

from app_reviews import AppStoreReviews, Country

client = AppStoreReviews()
result = client.fetch("324684580", countries=[Country.US, Country.GB])

for review in result:
    print(f"[{review.country}] {review.rating}* {review.title}")

Google Play Store

from app_reviews import GooglePlayReviews, Country

client = GooglePlayReviews()
result = client.fetch("com.instagram.android", countries=[Country.US])

for review in result:
    print(f"[{review.country}] {review.rating}* {review.body[:80]}")

Authentication (Optional)

For higher limits and more data, use the official APIs with your developer credentials.

Apple App Store Connect

Requires an Apple Developer Program membership ($99/year).

from app_reviews import AppStoreReviews, AppStoreAuth, Country

auth = AppStoreAuth(
    key_id="ABC123DEF4",
    issuer_id="12345678-1234-1234-1234-123456789012",
    key_path="/path/to/AuthKey.p8",
)

client = AppStoreReviews(auth=auth)
result = client.fetch("324684580", countries=[Country.US, Country.GB])
Google Play Developer API

Requires a Google Play Developer account ($25 one-time).

from app_reviews import GooglePlayReviews, GooglePlayAuth, Country

auth = GooglePlayAuth(service_account_path="/path/to/service-account.json")

client = GooglePlayReviews(auth=auth)
result = client.fetch("com.instagram.android", countries=[Country.US])

Advanced Usage

Retry and proxy
from app_reviews import AppStoreReviews, RetryConfig

retry = RetryConfig(
    max_retries=5,       # default: 3
    backoff_factor=1.0,  # default: 0.5
    timeout=60.0,        # default: 30.0
    retry_on=[429, 503], # default: [500, 502, 503, 504, 429]
)

client = AppStoreReviews(retry=retry, proxy="http://proxy.example.com:8080")
result = client.fetch("324684580", countries=["us"])
Export results
from app_reviews import GooglePlayReviews
from app_reviews.exporters.json import export_json
from app_reviews.exporters.csv import export_csv
from app_reviews.exporters.jsonl import export_jsonl

client = GooglePlayReviews()
result = client.fetch("com.instagram.android")

export_json(result.reviews)   # JSON array string
export_csv(result.reviews)    # CSV string with headers
export_jsonl(result.reviews)  # one JSON object per line
Interactive TUI

Browse reviews in the terminal with the built-in TUI:

pip install app-reviews[tui]
app-reviews

Limitations

  • Free scrapers have limits:

    • App Store RSS: ~500 most recent reviews.
    • Google Play scraper: rate-limited and may not return all reviews.
  • No historical data:

    • Only the most recent reviews from public endpoints
  • Official APIs require developer accounts:

    • Apple ($99/year), Google ($25 one-time)

Documentation

Read the full docs includes guides on the Python API, TUI, authentication, export formats, and architecture.


Contributing

git clone https://github.com/firattamurcw/app-reviews.git
cd app-reviews
uv sync --group dev
make test

See the Contributing Guide · Code of Conduct · Security Policy


License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

app_reviews-0.3.1.tar.gz (157.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

app_reviews-0.3.1-py3-none-any.whl (53.0 kB view details)

Uploaded Python 3

File details

Details for the file app_reviews-0.3.1.tar.gz.

File metadata

  • Download URL: app_reviews-0.3.1.tar.gz
  • Upload date:
  • Size: 157.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for app_reviews-0.3.1.tar.gz
Algorithm Hash digest
SHA256 337fdef49d2369caf0958ad1afed5a54dd8d3e7c2ed0d68ff00073325def7f16
MD5 839a9dea812bbc67b24b4697a7ed63b3
BLAKE2b-256 114ebbb449c5188e3fc3b8dfbe300e1039d46321f4caa65add955a786e38562f

See more details on using hashes here.

Provenance

The following attestation bundles were made for app_reviews-0.3.1.tar.gz:

Publisher: release.yml on firattamurcw/app-reviews

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file app_reviews-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: app_reviews-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 53.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for app_reviews-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 bb6bd808303dd719e3ef7e2930e9ba819ae5014ee2b194cec4c25b4b452cb1cf
MD5 61094c4f3eb02841b50f458856840868
BLAKE2b-256 1fac84c4e5f88f530ee8215900683fda3dee42a0416ad4768994152b64caa30b

See more details on using hashes here.

Provenance

The following attestation bundles were made for app_reviews-0.3.1-py3-none-any.whl:

Publisher: release.yml on firattamurcw/app-reviews

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page