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.0.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.0-py3-none-any.whl (37.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: app_reviews-0.3.0.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.0.tar.gz
Algorithm Hash digest
SHA256 17258ddf86986cbf83d3fe09e013f1b8229cb8c6eb39dfd53a2376ec2ab946f4
MD5 061d577a8ec2b8dd6dc8c76f8eff5391
BLAKE2b-256 c1c54c307cdb7dcec063a0c221834108c4d7411b1597a9578c4b828ea73f4f3c

See more details on using hashes here.

Provenance

The following attestation bundles were made for app_reviews-0.3.0.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.0-py3-none-any.whl.

File metadata

  • Download URL: app_reviews-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 37.7 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8ddfb168fa196d0f326f2f4963407b4463d55a277d249a62eeac650d206a2c62
MD5 612f254aca449ae0643db739363a81ae
BLAKE2b-256 c4d6937b0e2963ab1a2c6284bf18dfc96805dccc02f41ae1701f5d3c1efb66c8

See more details on using hashes here.

Provenance

The following attestation bundles were made for app_reviews-0.3.0-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