dhruv.godvani 159c00762d feat: enhance CSV handling with backup snapshots and last updated date parsing
- Added support for parsing multiple date formats for the "lastUpdatedOn" field from Google Play.
- Implemented a backup mechanism in CsvSink to create snapshots of the CSV file every N rows, with a configurable number of backups to keep.
- Updated the CsvSink class to handle file flushing and backup creation safely.
- Modified the run function to allow configuration of backup settings via command-line arguments.
2026-06-17 19:25:06 +05:30

App Store Scraper (Google Play + Apple App Store)

For a specific list of apps (defined in apps.json) this produces one combined CSV with core metadata, the last-updated date, and the final rating (average + total number of ratings). Python, free libraries only.

What it uses

Store Source
Google Play google-play-scraper (scrapes public pages)
Apple App Store iTunes Lookup API (official, free)

No paid services, no API keys.

Setup

python -m pip install -r requirements.txt

Configure — apps.json

{
  "settings": {
    "country": "us",        // store country code
    "lang": "en",           // language (Play only)
    "delay_seconds": 1.0    // pause between requests (avoid blocks)
  },
  "google_play": [
    { "app_id": "com.whatsapp" }        // the "id=" value in the Play URL
  ],
  "app_store": [
    { "app_id": 310633997, "name": "WhatsApp" }   // the numeric "id" in the App Store URL ("name" is just a label)
  ]
}

Finding IDs

  • Play Store: play.google.com/store/apps/details?id=com.whatsapp → use com.whatsapp
  • App Store: apps.apple.com/us/app/whatsapp-messenger/id310633997 → use 310633997

Run

python scraper.py

Output — output/app_data.csv (one row per app, both stores together)

Column Meaning
store google_play or app_store
app_id, title, developer, category identity
price, currency, free pricing
avg_rating final average star rating
total_ratings total number of ratings
text_review_count number of text reviews (Play only)
last_updated date the app was last updated
version latest version
url store listing URL

UTF-8 with BOM — opens cleanly in Excel.

Limitations (important)

  • No "all apps" list exists. Neither store exposes a full catalog; you scrape only the apps you list here. Use discover.py to auto-fill apps.json from top charts.
  • Rate limits / blocking — keep delay_seconds > 0; heavy use may need proxies.
  • Terms of Service — both stores restrict automated scraping. Fine for internal research at small scale; get legal sign-off before commercial redistribution.
  • Per-country data — results differ by country.
S
Description
No description provided
Readme 5.1 MiB
Languages
Python 54.5%
HTML 45.5%