Skip to main content

Single API ☝ App Store Review Scraper 🧹

Project description

Build PRs Welcome Code style: black

   ___                _____ _                   _____
  / _ \              /  ___| |                 /  ___|
 / /_\ \_ __  _ __   \ `--.| |_ ___  _ __ ___  \ `--.  ___ _ __ __ _ _ __   ___ _ __
 |  _  | '_ \| '_ \   `--. \ __/ _ \| '__/ _ \  `--. \/ __| '__/ _` | '_ \ / _ \ '__|
 | | | | |_) | |_) | /\__/ / || (_) | | |  __/ /\__/ / (__| | | (_| | |_) |  __/ |
 \_| |_/ .__/| .__/  \____/ \__\___/|_|  \___| \____/ \___|_|  \__,_| .__/ \___|_|
       | |   | |                                                    | |
       |_|   |_|                                                    |_|

Quickstart

pip3 install app-store-scraper
from app_store_scraper import AppStore
from pprint import pprint

fortnite = AppStore(country="nz", app_name="fortnite", app_id=1261357853)
fortnite.review(how_many=20)

pprint(fortnite.reviews)
pprint(fortnite.reviews_count)

Extra Details

Let's continue from the code example used in Quickstart.

Instantiation

There are three required arguments, country, app_name, app_id.

>>> fortnite
AppStore(country=nz, app_name=fortnite, app_id=1261357853)

These are required to create a URL for the App Store landing page, which can be displayed by the private field, landing_url like below:

>>> fortnite.landing_url
'https://apps.apple.com/nz/app/fortnite/id1261357853'

There are optional arguments used to override log settings:

  • log_format
    • passed directly to logging.basicConfig(format=log_format)
    • default is "%(asctime)s [%(levelname)s] %(name)s - %(message)s"
  • log_level
    • passed directly to logging.basicConfig(level=log_level)
    • default is "INFO"
  • log_interval
    • log is produced every 10 seconds (by default) as a "heartbeat" (useful for a long scraping session)
    • default is 10

Fetching Review

The maximum number of reviews fetched per request is 20. To minimise the number of calls, the limit of 20 is hardcoded. This means the review() method will always grab more than the how_many argument supplied with an increment of 20.

>>> fortnite.review(how_many=33)
>>> fortnite.reviews_count
40

If how_many is not provided, review() will terminate after all reviews are fetched.

NOTE the review count seen on the landing page differs from the actual number of reviews fetched. This is simply because only some users who rated the app also leave reviews.

Review Data

The fetched review data are loaded in memory and live inside reviews attribute as a list of dict.

>>> fortnite.reviews
[{'userName': 'someone', 'rating': 5, 'date': datetime.datetime(...

Each review dictionary has the following schema:

{
    "date": datetime.datetime,
    "isEdited": bool,
    "rating": int,
    "review": str,
    "title": str,
    "userName": str
 }

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-store-scraper-0.1.1.tar.gz (5.4 kB view hashes)

Uploaded Source

Built Distribution

app_store_scraper-0.1.1-py3-none-any.whl (6.8 kB view hashes)

Uploaded Python 3

Supported by

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