DEV Community

Cover image for How to export Google Play and App Store reviews to CSV (both stores, one format)
sblabs
sblabs

Posted on

How to export Google Play and App Store reviews to CSV (both stores, one format)

App reviews are the cheapest user research you'll ever get: thousands of people telling you exactly what's broken and what they want. The problem is getting them out.

  • App Store Connect and Google Play Console only show reviews for your own apps, in two different formats, with clunky exports.
  • Apple's old RSS review feed that many tutorials still point to now returns nothing.
  • Most scraping tools handle one store, so comparing your iOS and Android feedback means stitching two datasets together.

This post shows how to pull reviews for any app (yours or a competitor's) from both stores in one run, with the same fields, ready for a spreadsheet or an LLM.

Disclosure: I built the tool used below. It's pay-per-use on Apify (you pay per review delivered, a fraction of a cent each).

The tool

App Reviews Scraper on Apify. Give it Google Play package names/links and App Store links/IDs, mixed in one list. Each review comes back with:

store, appId, country, rating, title, text, date, appVersion, thumbsUp (helpful votes), developerReply, developerReplyDate, userName, url

It doesn't need a browser or a proxy, so it's fast. In my release test it pulled 4,200 reviews from 7 apps in 2 countries in under 11 seconds.

Want to see the output before writing any code? This one-click example is pre-filled to get the 500 newest Duolingo reviews from both stores. Open it, click Start, and look at the results.

Export reviews from Python

pip install apify-client pandas
Enter fullscreen mode Exit fullscreen mode
from apify_client import ApifyClient
import pandas as pd

client = ApifyClient("YOUR_APIFY_TOKEN")

run = client.actor("sblabs/app-reviews-scraper").call(run_input={
    "apps": [
        "com.duolingo",                                                      # Google Play
        "https://apps.apple.com/us/app/duolingo-language-lessons/id570060128",  # App Store
    ],
    "countries": ["us", "gb"],
    "maxReviewsPerApp": 1000,   # per app, per country
    "sort": "newest",
})

rows = [r for r in client.dataset(run["defaultDatasetId"]).iterate_items() if r["status"] == "ok"]
df = pd.DataFrame(rows)
df.to_csv("duolingo_reviews.csv", index=False)

print(df.groupby("store")["rating"].mean())
Enter fullscreen mode Exit fullscreen mode

You get one CSV with both stores side by side.

Monitor new reviews cheaply

Set sort to newest and pass a date. The tool stops paging as soon as it reaches older reviews, so a daily run only fetches (and charges for) what's new:

run_input = {"apps": ["com.duolingo", "id570060128"], "sort": "newest", "since": "2026-10-01"}
Enter fullscreen mode Exit fullscreen mode

Schedule that daily in Apify (or from cron, n8n, Make) and post the 1-2 star ones to Slack.

Turn reviews into a feature request list with an LLM

low = df[df["rating"] <= 2]["text"].dropna().head(300).tolist()
prompt = (
    "Here are app reviews. Group them into the top 10 recurring problems, "
    "with a count and two short quotes each:\n\n" + "\n---\n".join(low)
)
# send `prompt` to Claude / GPT / your model of choice
Enter fullscreen mode Exit fullscreen mode

Filter by appVersion to see whether a release made things better or worse, and use developerReply to find negative reviews nobody has answered yet.

Notes

  • The App Store keeps a separate review list per country, so add the countries you care about.
  • Apple's feed doesn't include the app version; Google Play's does.
  • Reviewer names are personal data: aggregate and analyse, don't republish.

Questions or a store/country that doesn't work? Open an issue on the Actor page.

Top comments (0)