# Shopify App Store Scraper - Reviews, Replies, Opportunity Intel (`philzx/shopify-app-intelligence`) Actor

Scrape Shopify App Store reviews, developer replies, complaints, feature requests, and opportunity scores. HTTP-only. $0.002/app. 7-day trial.

- **URL**: https://apify.com/philzx/shopify-app-intelligence.md
- **Developed by:** [Filipe Alves](https://apify.com/philzx) (community)
- **Categories:** Lead generation, Developer tools, E-commerce
- **Features:** Limited permissions
- **Stats:** 13 total users, 3 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Shopify App Store Scraper — Reviews, Replies & Opportunity Intelligence

Scrape the **Shopify App Store** for app metadata, reviews, developer replies, and competitive intelligence. Discover what apps are failing their users — and where the opportunities are.

Find apps by **direct URL**, **keyword search**, or the **full 22,000+ catalog** via Shopify's official sitemap. Every result includes structured app data, complete reviews with store details, and automatic opportunity analysis.

No login. No API key. No browser automation — just clean, structured JSON.

***

### Why this scraper

- **App metadata** — name, developer, rating, review count, pricing summary, screenshots
- **Complete reviews** — full text, star rating, store name, country, how long they've used the app
- **Developer replies** — captured when the developer responds to reviews
- **Structured pricing plans** — individual pricing tiers extracted from the listing
- **Complaint tagging** — reviews automatically categorized: bugs, pricing complaints, UX issues, missing features, support problems, performance, integration issues
- **Feature requests** — extracted from review text ("I wish it had...", "it needs...")
- **Sentiment analysis** — per-review sentiment scoring
- **Opportunity score** — 0–100 rating of how viable it is to build a competing app
- **Opportunity summary** — human-readable analysis of what's wrong and what's missing

***

### Input example

Scrape a single app:

```json
{
  "mode": "urls",
  "startUrls": ["https://apps.shopify.com/klaviyo-email-marketing"]
}
```

Search by keyword:

```json
{
  "mode": "search",
  "search": ["email marketing", "inventory management"],
  "maxApps": 10
}
```

Discover from the full catalog:

```json
{
  "mode": "sitemap",
  "maxApps": 25,
  "maxReviewsPerApp": 50
}
```

### Input fields

| Field | Type | Description |
|---|---|---|
| `startUrls` | string\[] | Direct Shopify App Store URLs |
| `mode` | string | `urls`, `search`, or `sitemap` |
| `search` | string\[] | Keywords to search (mode=`search`) |
| `maxApps` | integer | Max apps to scrape (0 = all) |
| `maxReviewsPerApp` | integer | Max reviews per app (0 = none) |
| `includeReviews` | boolean | Scrape reviews (default: true) |
| `enrichWebsite` | boolean | Visit developer website for extra info |

### Output

Each dataset item is one app with embedded reviews:

```json
{
  "slug": "klaviyo-email-marketing",
  "title": "Klaviyo: Email Marketing & SMS",
  "developer": "Klaviyo",
  "rating": 4.7,
  "reviewCount": 2962,
  "pricingSummary": "Free to install",
  "pricingPlans": [
    { "name": "Free", "price": "Free to install" },
    { "price": "$20/month" },
    { "price": "$45/month" }
  ],
  "reviews": [
    {
      "rating": 5,
      "date": "June 10, 2026",
      "storeName": "Acme Store",
      "country": "United States",
      "usedAppFor": "Over 3 years using the app",
      "body": "Excellent app, seamless integration with Shopify...",
      "developerReply": {
        "date": "Klaviyo replied June 12, 2026",
        "body": "Thank you for the kind words..."
      }
    }
  ],
  "featureRequests": [
    "more customizable email templates",
    "better analytics dashboard"
  ],
  "opportunity": {
    "score": 32,
    "summary": "26 positive reviews (87%), 4 negative (13%). Top complaint: UX (50% of negative reviews). Developer replied to 18 reviews. LOW opportunity — market well-served.",
    "complaints": { "ux": 2, "support": 2, "bug": 1 }
  }
}
```

### Use cases

- **Competitive research** — find apps with high installs but low ratings and specific complaints
- **Product discovery** — extract feature requests across an entire category to find gaps in the market
- **Lead generation** — build lists of Shopify developers with app metadata and website enrichment
- **Market monitoring** — track rating changes, review volume, and developer responsiveness over time
- **Investment research** — evaluate the Shopify App Store ecosystem for acquisition or investment targets

### Pricing

**$0.002 per app** — includes metadata, reviews, developer replies, and all intelligence features. 7-day free trial.

# Actor input Schema

## `startUrls` (type: `array`):

Direct Shopify App Store URLs to scrape. Supports app pages (apps.shopify.com/{slug}). When provided, mode/search are ignored.

## `mode` (type: `string`):

'urls' = use startUrls only. 'search' = search by keyword. 'sitemap' = discover from Shopify's official sitemap (full catalog).

## `search` (type: `array`):

Keywords to search on the Shopify App Store (e.g. 'email marketing'). One result page per keyword. Only used when mode='search'.

## `maxApps` (type: `integer`):

Maximum number of apps to extract (0 = all found). Useful to control time and cost.

## `maxReviewsPerApp` (type: `integer`):

Maximum number of reviews to extract per app (0 = none). Reviews include full text, rating, store name, country, usage duration, and developer replies.

## `includeReviews` (type: `boolean`):

Scrape reviews from the app's /reviews page. Includes developer replies when present.

## `enrichWebsite` (type: `boolean`):

Visit the developer's website and extract title, description, and visible text snippet. Useful for lead generation.

## `proxyConfiguration` (type: `object`):

Proxy settings for the scraper.

## Actor input object example

```json
{
  "startUrls": [],
  "mode": "urls",
  "search": [],
  "maxApps": 0,
  "maxReviewsPerApp": 50,
  "includeReviews": true,
  "enrichWebsite": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [],
    "search": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("philzx/shopify-app-intelligence").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": [],
    "search": [],
}

# Run the Actor and wait for it to finish
run = client.actor("philzx/shopify-app-intelligence").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [],
  "search": []
}' |
apify call philzx/shopify-app-intelligence --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,philzx/shopify-app-intelligence"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/THnXxLl3s7Bh2ihNb/builds/zRUdg0cwWZ3sewxez/openapi.json
