> ## Content Index
> Fetch the complete content index at: https://serpapi.com/blog/llms.txt
> Use this file to discover other available public pages before exploring further.

# Scrape and Summarize App Reviews from the Apple App Store
- URL: https://serpapi.com/blog/scrape-and-summarize-app-reviews-from-the-apple-app-store/
- Published: 2026-04-10T19:56:42.000Z
- Updated: 2026-04-10T20:00:39.000Z
- Description: Combine real-time search data with AI capabilities to find product-market fit
- Author: Catherine Li
- Tags: Apple App Store

AI coding tools have made building a mobile app more accessible than ever, but getting it into the App Store is only half the battle. The real challenge is finding product-market fit before you invest weeks of work and vibe-coding into the wrong idea.

That usually means hours of manual research: digging through App Store listings, scrolling review after review, trying to spot patterns in what users love, hate, and desperately wish existed. What gaps are worth pursuing? What language are real users actually using to describe their pain points?

![](https://storage.ghost.io/c/a5/00/a5004977-0dd2-4bcd-9292-dd0e05d4c59e/content/images/2026/04/Screenshot-2026-04-07-at-2.03.05---PM.png)

Today, I want to show you a way to fetch all the reviews for a mobile app in the Apple App Store with only a few lines of JavaScript code and a couple of API calls to [SerpApi](https://serpapi.com/). Since it’s JSON data that you can use anywhere, we’ll even pass along the reviews to OpenAI's large language model so we can get a summary of the reviews. 

When building AI-powered applications that rely on recent web data as a review aggregator, you need a reliable data scraping solution. [SerpApi](https://serpapi.com/) leads the market in terms of both reliability and accuracy. 

[Scraping Apple App Store Search with PythonThis blog post is a step-by-step tutorial for scraping Apple App Store Search results using Python and SerpApi.![](https://storage.ghost.io/c/a5/00/a5004977-0dd2-4bcd-9292-dd0e05d4c59e/content/images/icon/serpapi-favicon-294.png)SerpApiArtur Chukhrai![](https://storage.ghost.io/c/a5/00/a5004977-0dd2-4bcd-9292-dd0e05d4c59e/content/images/thumbnail/photo_2022-07-28_20-49-00-15.jpg)](https://serpapi.com/blog/scraping-apple-app-store-search-with-python/)

💡

Before we get started, make sure you’ve created a free account on [SerpApi](https://serpapi.com/) so you can get access to 250 free search credits. You may also need to sign up and create a developer account to receive an API key from [OpenAI](https://developers.openai.com/). 

![](https://storage.ghost.io/c/a5/00/a5004977-0dd2-4bcd-9292-dd0e05d4c59e/content/images/2026/03/Screenshot-2026-03-30-at-3.09.36---PM.png)

For this demo, we're also going to use OpenAI's latest large language model – gpt5.4 – to summarize our reviews. 

## Setting up your project

First, set up a basic Node.js project. You can do so by running `npm init -y` in your terminal at the root of your project folder. At the root of the project, create an `index.js` file. 

### Install required packages

For this demo, it's highly recommended you install and import into `index.js` the following packages:

- `dotenv`: [Node package](https://www.npmjs.com/package/dotenv) that loads environment variables from your `.env` file directly into `process.env` so you can access your API keys
- `serpapi`: [SerpApi](https://serpapi.com/)'s open-source [JavaScript SDK](https://github.com/serpapi/serpapi-javascript)
- `openai`: [OpenAI's SDK ](https://developers.openai.com/api/docs)to interface with their AI model

As per the OpenAI [documentation](https://developers.openai.com/api/docs) online, you'll also need to create an instance of the OpenAI client to make the API calls: 

```JavaScript
import OpenAI from "openai";
import dotenv from "dotenv";
import { getJson } from "serpapi"
dotenv.config();

//OpenAI API setup
const openAiKey = process.env.OPEN_AI_KEY;
const client = new OpenAI({ apiKey: openAiKey });

//SerpApi setup
const serpApiKey = process.env.SERP_API_KEY;
```

### Making the API call to SerpApi's Apple App Store API

Now, let’s make a call to [SerpApi](https://serpapi.com/) to get the app information, including its ID. We can just use fetch, but since we’ve imported the SDK, we'll use the `getJson` from the [SerpApi library](https://github.com/serpapi/serpapi-javascript). And just like fetch, `getJson` is an asynchronous function that returns a JavaScript Promise. The API has three required parameters: **API key**, the **search term** which is the app you want to fetch data for, and the **engine** which in this case is `apple_app_store` since app data is what we want to scrape today. 

```JavaScript
const app = await getJson({
        api_key: serpApiKey,
        engine: "apple_app_store",
        term: "instagram",
        num: "5"
    });
```

[Easily scrape Apple App Store and filter results by categories for better insightsApple App Store is one of the most relevant app marketplaces in the world. Staying up to date with which apps are popular can be crucial when making decisions about where the team developing your application should be focusing on so your product can stay relevant in today’s competitive market.![](https://storage.ghost.io/c/a5/00/a5004977-0dd2-4bcd-9292-dd0e05d4c59e/content/images/icon/serpapi-favicon-295.png)SerpApiMichael Moura![](https://storage.ghost.io/c/a5/00/a5004977-0dd2-4bcd-9292-dd0e05d4c59e/content/images/thumbnail/Apple-App-Store-scraper-SerpApi-2-1.jpg)](https://serpapi.com/blog/easily-scrape-apple-app-store-and-filter-results-by-categories-for-better-insights/)

## Testing your API calls

If you `console.log` app, you should see JSON that resembles this in your terminal:

![](https://storage.ghost.io/c/a5/00/a5004977-0dd2-4bcd-9292-dd0e05d4c59e/content/images/2026/03/Screenshot-2026-03-31-at-10.42.04---AM.png)

💡

For the sake of simplicity, we are not implementing validation, error handling or other guardrails that would be highly recommended should you launch this in production

Inside the `organic_results` array is where you'll find the search results for the query "instagram". As expected, the first item in this array pertains to the Instagram app owned by Meta. We simply need to pass in the `id` value into the second API call, which will be to SerpApi's [Apple App Store Reviews API](https://serpapi.com/apple-reviews). 

```JavaScript
const appId = app?.organic_results[0]?.id;
    appReviews = await getJson({
        api_key: serpApiKey,
        engine: "apple_reviews",
        product_id: appId
    });
```

If you `console.log(appId)` and scroll down to the `reviews` array, you'll see the text of the reviews within the array objects' `text` property. Now, we just need to parse out the text reviews and send them to OpenAI to get the summary. 

### Making the API call to OpenAI

```JavaScript
let response;
try {
    response = await client.responses.create({
        model: "gpt-5.4",
        input: `Given the list of comma-separated reviews for a mobile app, give me a summary of the main criticisms: ${textReviews.join(", ")}`,
    });
} catch (err) {
    console.error("Failed to get response from OpenAI:", err.message);
    process.exit(1);
}
```

The above example is a basic API call to OpenAI's [Responses API](https://developers.openai.com/api/reference/resources/responses) to generate text from a prompt, similar to the way you'd generate text from OpenAI's ChatGPT. 

If everything went according to plan, you should be able to see the summary in your terminal:

![](https://storage.ghost.io/c/a5/00/a5004977-0dd2-4bcd-9292-dd0e05d4c59e/content/images/2026/03/Screenshot-2026-03-31-at-11.42.18---AM.png)

## Next Steps

When running this in your local terminal, don't be alarmed if you don't see any response for a few seconds. As you may know, large language models tend to take some time to generate text. While I'm not doing so in this demo, there's a way to [stream](https://developers.openai.com/api/reference/resources/responses/streaming-events) the response, which will allow the text to appear chunks at a time so your users are not left waiting until the entire response is complete. Make sure to give streaming a shot if you're building an AI-powered app that relies on timely responses. I hope you've found this post helpful! If you have any questions at all, leave me a comment below or contact us at [contact@serpapi.com](mailto:contact@serpapi.com). 

[Apple App Store Reviews Scraper API - SerpApiSearch engine scraping tutorials, API updates and other tips.![](https://storage.ghost.io/c/a5/00/a5004977-0dd2-4bcd-9292-dd0e05d4c59e/content/images/icon/serpapi-favicon-297.png)SerpApiEmirhan Akdeniz![](https://storage.ghost.io/c/a5/00/a5004977-0dd2-4bcd-9292-dd0e05d4c59e/content/images/thumbnail/aso-4-1.jpg)](https://serpapi.com/blog/tag/apple-app-store-reviews-scraper-api/)