# Shopify App Reviews Scraper — Ratings & Monitor (`zenomastro/shopify-app-reviews-intelligence`) Actor

Shopify App Store reviews scraper plus competitor ranking intelligence. Export reviews, merchant usage, ratings and developer replies; discover apps by keyword, category or developer profile, capture app rankings and metadata, filter feedback, and monitor only newly appearing reviews.

- **URL**: https://apify.com/zenomastro/shopify-app-reviews-intelligence.md
- **Developed by:** [Rosario Vitale](https://apify.com/zenomastro) (community)
- **Categories:** Business, Marketing, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.10 / 1,000 shopify app reviews

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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 Reviews Scraper API — Rankings & Monitor

### Why use this Actor?

Shopify App Store reviews scraper plus competitor ranking intelligence. Export reviews, merchant usage, ratings and developer replies; discover apps by keyword, category or developer profile, capture app rankings and metadata, filter feedback, and monitor only newly appearing reviews.

### Features

- **App handles or Shopify App Store URLs** — Direct app handles or Shopify App Store URLs. Optional when using keyword/category/developer discovery.
- **Maximum reviews per app** — Maximum reviews per app. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.
- **Maximum pages per app** — Maximum pages per app. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.
- **Ratings to keep (1-5)** — Ratings to keep (1-5). Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.
- **Review text keywords** — Review text keywords. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.
- **Merchant countries** — Merchant countries. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.
- **Include developer replies** — Include developer replies. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.
- **Persistent monitor key** — Persistent monitor key. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.
- **Emit only unseen reviews** — Emit only unseen reviews. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.
- **Stop paging once a page has no unseen reviews** — Stop paging once a page has no unseen reviews. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.
- **Request timeout** — Request timeout. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.
- **Retries** — Retries. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.

### Use cases

- Shopify app competitor research.
- Support benchmarking.
- Merchant feedback monitoring.
- Review trend analysis.

### Example input

```json
{
  "apps": [
    "klaviyo-email-marketing"
  ],
  "maxReviewsPerApp": 500,
  "maxPagesPerApp": 50,
  "includeDeveloperReplies": true,
  "onlyNew": false,
  "stopWhenSeen": true
}
```

### Pricing & cost control

Use the bounded input limits and filters to keep runs predictable. Pay-per-result Actors only charge primary result rows; summary, status and monitoring metadata are designed to add context without inflating result volume.

### FAQ

**What is this Actor for?**\
It is designed for Shopify app competitor research, support benchmarking, merchant feedback monitoring.

**Can I run it on a schedule?**\
Yes. You can schedule Actor runs on Apify and send the resulting dataset into automations, webhooks, storage, or downstream APIs.

**How do I control cost and run size?**\
Use the input limits and filters shown in the Actor input form. The Actor applies bounded defaults and hard caps so large jobs remain predictable.

### Search keywords

shopify app reviews scraper, shopify app store reviews, shopify app store review page, shopify app store review time, shopify app store review guidelines, shopify app store review process, shopify app store fake reviews, what is shopify app store, how long does shopify app review take, shopify app examples, shopify app store statistics, app, shopify, reviews

Export public Shopify App Store reviews for competitor intelligence, product research, support benchmarking, sentiment workflows and recurring market monitoring.

The Actor parses Shopify's server-rendered public review pages directly. It does not require a Shopify login, browser session, API key or residential proxy.

### Output

Each review can include:

- Stable Shopify review ID and direct review URL.
- Star rating and public review date.
- Full public merchant review text.
- Merchant/store name, country and visible usage duration.
- Developer reply text and reply date.
- App name, aggregate rating and review-count label.
- Page number and scrape timestamp.
- `isNew` when scheduled monitoring is enabled.

### Filters

Filter before billing by star rating, review-text keyword and merchant country. Use a small page/review limit for quick competitive snapshots or increase the caps for deeper exports.

### Monitoring gap solved

A normal review scraper makes you repeatedly export the same history. Set a stable `monitorKey` and schedule this Actor. It remembers seen review IDs and can emit only unseen reviews. With `stopWhenSeen=true`, it stops paging when a complete page contains no new review IDs, reducing repeated network work and cost.

### Example

```json
{
  "apps":["klaviyo-email-marketing","judgeme"],
  "ratings":[1,2],
  "keywords":["support"],
  "maxReviewsPerApp":250,
  "monitorKey":"shopify-competitors",
  "onlyNew":true
}
```

### Reliability

The parser uses Shopify's current semantic review attributes such as stable `review-<id>` containers, rating `aria-label` values, `data-merchant-review`, `data-truncate-review`, and `data-merchant-review-reply`. Requests have bounded retries and timeouts; duplicate IDs are removed; failures are isolated per app/page.

Shopify can change public markup in the future, so cloud smoke tests are part of this Actor's deployment gate.

Only public review information is collected. Use the data responsibly and comply with Shopify's terms and applicable privacy law.

### Extended capabilities

- Filter Shopify App Store reviews by stars, text, merchant country, review date, usage duration, and developer reply.
- Monitor unseen reviews and stop early when scheduled runs reach already-seen pages.
- Enrich app summaries with public app metadata and per-star counts when the page exposes them.

# Actor input Schema

## `apps` (type: `array`):

Direct app handles or Shopify App Store URLs. Optional when using keyword/category/developer discovery.

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

Maximum reviews per app. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.

## `maxPagesPerApp` (type: `integer`):

Maximum pages per app. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.

## `ratings` (type: `array`):

Ratings to keep (1-5). Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.

## `keywords` (type: `array`):

Review text keywords. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.

## `countries` (type: `array`):

Merchant countries. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.

## `includeDeveloperReplies` (type: `boolean`):

Include developer replies. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.

## `monitorKey` (type: `string`):

Persistent monitor key. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.

## `onlyNew` (type: `boolean`):

Emit only unseen reviews. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.

## `stopWhenSeen` (type: `boolean`):

Stop paging once a page has no unseen reviews. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.

## `requestTimeoutSecs` (type: `integer`):

Request timeout. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.

## `retries` (type: `integer`):

Retries. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.

## `dateFrom` (type: `string`):

Keep reviews on or after this date.

## `dateTo` (type: `string`):

Keep reviews before this date.

## `minUsageDays` (type: `integer`):

Keep reviews where visible app-usage duration is at least this many approximate days.

## `maxUsageDays` (type: `integer`):

Optional upper bound for visible merchant app-usage duration.

## `developerReplyMode` (type: `string`):

Filter reviews by whether a public developer reply is present.

## `includeAppDetails` (type: `boolean`):

Fetch each app's public App Store page once and add description, developer, category, icon, pricing and aggregate rating metadata when exposed.

## `searchQueries` (type: `array`):

Discover ranked apps from Shopify App Store search results. Ranking rows are emitted separately from review rows.

## `categoryUrls` (type: `array`):

Shopify App Store category URLs to capture ranked app listings.

## `developerUrls` (type: `array`):

Shopify App Store partner/developer URLs. Emits a developer summary plus the apps found on the profile.

## `maxDiscoveryPages` (type: `integer`):

Bound pagination for keyword/category discovery.

## `maxDiscoveredApps` (type: `integer`):

Hard cap for unique app ranking rows discovered across sources.

## `scrapeDiscoveredApps` (type: `boolean`):

When enabled, add discovered app handles to the review queue. Disabled by default so discovery does not unexpectedly increase charged review volume.

## Actor input object example

```json
{
  "apps": [
    "klaviyo-email-marketing"
  ],
  "maxReviewsPerApp": 500,
  "maxPagesPerApp": 50,
  "ratings": [],
  "keywords": [],
  "countries": [],
  "includeDeveloperReplies": true,
  "onlyNew": false,
  "stopWhenSeen": true,
  "requestTimeoutSecs": 25,
  "retries": 2,
  "minUsageDays": 0,
  "developerReplyMode": "all",
  "includeAppDetails": true,
  "searchQueries": [],
  "categoryUrls": [],
  "developerUrls": [],
  "maxDiscoveryPages": 3,
  "maxDiscoveredApps": 200,
  "scrapeDiscoveredApps": false
}
```

# Actor output Schema

## `results` (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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("zenomastro/shopify-app-reviews-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("zenomastro/shopify-app-reviews-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 '{}' |
apify call zenomastro/shopify-app-reviews-intelligence --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,zenomastro/shopify-app-reviews-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/I7NfHf3Ktzde9ca3r/builds/rahwTiTOOtigco4Gf/openapi.json
