Shopify App Store Scraper - Ranks, Pricing & Reviews avatar

Shopify App Store Scraper - Ranks, Pricing & Reviews

Pricing

from $1.60 / 1,000 results

Go to Apify Store
Shopify App Store Scraper - Ranks, Pricing & Reviews

Shopify App Store Scraper - Ranks, Pricing & Reviews

Track Shopify App Store category ranks, pricing plans, ratings and reviews. Tags 1-2 star complaints by theme and reports rank moves, new apps and price changes since your last run.

Pricing

from $1.60 / 1,000 results

Rating

0.0

(0)

Developer

Ben

Ben

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

15 hours ago

Last modified

Share

Shopify App Store Scraper: Ranks, Pricing Plans & Review Complaints

Track where every app ranks in a Shopify App Store category, what its pricing plans cost, and what its 1-2 star reviews complain about. Run it again next week and you get the changes as their own rows: rank moves, new entrants, dropped apps, rating and review-count deltas, and pricing plan changes. $3 per 1,000 apps, $1 per 1,000 reviews, change rows free.

  • Category rank tracking. Every app row carries its position (categoryRank) in the category it came from, read from the full paginated list (24 apps per page).
  • Changes since last run. The last snapshot is kept in a named key-value store in your own account. No diffing script on your side.
  • Complaint themes. 1-2 star reviews are tagged by fixed keyword rules (billing, support, bugs, performance, missing feature, uninstall leftovers, theme conflicts, ease of use), and each app gets a theme count. No AI model, so the same review always gets the same tags.
  • Full pricing plans. Plan name, price, currency, interval, trial days and the feature list of every plan, plus the pricing badge shown on the card.
  • Plain HTTP on public pages, no login, no browser. A 24-app category with details runs in about 15 seconds.

What does the Shopify App Store Scraper do?

It reads public pages on apps.shopify.com: category listings, app pages and review pages. You give it category slugs (or URLs) and/or app handles. It returns one row per app, one row per review (when reviews are on), and one row per changed app on every run after the first.

It is for Shopify app developers watching their category, agencies comparing apps for a client, investors and researchers sizing a niche, and anyone looking for weak leaders: apps with many installs and a pile of recent 1-star reviews about the same problem.

How is it different from other Shopify App Store scrapers?

This ActorTypical app store scraper
Rank per category on every rowyes (categoryRank, rankSource)position only in some
Changes since last runbuilt in, free change rowsyou diff two exports yourself, or pay per item
Complaint themes on 1-2 star reviewsyes, keyword rules, per-app countsraw review text only
Reviews sorted newest first, with star filteryes (reviewStars)varies; sorting has been a reported problem
Price$0.003 per app, $0.001 per review$0.002 to $0.05 per item

Input

FieldTypeDefaultWhat it does
categoriesarray["marketing-and-conversion-social-trust-product-reviews"]Category slugs or URLs. A subcategory gives the full ranked list; a top-level category (like store-design) gives its curated picks. Use [] to read only appUrls.
appUrlsarray[]App URLs or handles, e.g. https://apps.shopify.com/judgeme or klaviyo-email-marketing. Read in addition to the categories.
maxAppsinteger24Ranked apps to read per category.
includeDetailsbooleantrueOpen each app page for pricing plans, rating distribution, developer, launch date, languages, works-with and categories.
includeReviewsbooleanfalseRead each app's newest reviews and add complaint themes.
maxReviewsinteger20Reviews per app (10 per page).
reviewStarsarray[]Only these ratings, e.g. ["1","2"]. Empty reads all.
trackChangesbooleantrueSave the snapshot and output change rows on the next run.
stateStoreNamestringshopify-app-store-trackerName of the store that keeps the snapshot. Use one name per project.

Example: weekly watch of a category with complaints

{
"categories": ["marketing-and-conversion-social-trust-product-reviews"],
"maxApps": 48,
"includeReviews": true,
"maxReviews": 20,
"reviewStars": ["1", "2"]
}

Schedule it weekly. The first run saves the baseline; every run after it adds change rows.

Example: a few named apps

{ "categories": [], "appUrls": ["judgeme", "https://apps.shopify.com/klaviyo-email-marketing"] }

Output

Every row has recordType: app, review, change, or status (one unbilled no_results row when nothing was found).

App row (real output, trimmed)

{
"recordType": "app",
"source": "category:marketing-and-conversion-social-trust-product-reviews",
"categoryRank": 2,
"rankSource": "all",
"appSlug": "google-review-plus-by-entangle-1",
"appName": "EC ‑ Google Reviews",
"appUrl": "https://apps.shopify.com/google-review-plus-by-entangle-1",
"rating": 5.0,
"reviewsCount": 602,
"pricingBadge": "Free plan available",
"builtForShopify": true,
"pricingPlans": [
{"name": "Free", "priceLabel": "Free", "price": 0.0, "currency": null, "interval": null, "features": ["..."]},
{"name": "Platinum", "priceLabel": "$4.99/month", "price": 4.99, "currency": "USD", "interval": "month", "features": ["..."]}
],
"freeTrialDays": 7,
"ratingDistribution": {"5": 589, "4": 9, "2": 1, "1": 3},
"developerName": "Entangle Commerce",
"developerUrl": "https://apps.shopify.com/partners/entangle-commerce",
"developerAddress": "Toronto, ON, CA",
"developerEmail": "support@entanglecommerce.com",
"developerWebsite": "https://googlereviewsrocket.com/",
"launchDate": "July 18, 2023",
"categories": ["Product reviews", "Social proof"],
"lowRatingReviewsRead": 4,
"complaintThemes": {"bugs": 1, "billing": 1}
}

App rows also carry tagline, iconUrl, description, languages, worksWith and privacyPolicyUrl.

Review row

appSlug, appUrl, appName, reviewId, reviewUrl, stars, reviewDate (ISO), reviewEdited, reviewBody, merchantStore, country, usageDuration (e.g. "8 months using the app"), developerReply, developerReplyDate, complaintThemes (on 1-2 star reviews).

Change row

{
"recordType": "change",
"source": "category:marketing-and-conversion-social-trust-product-reviews",
"appSlug": "google-reviews-trust-badge",
"changeTypes": ["new_entrant"],
"previousRank": null, "rank": 4, "rankDelta": null,
"previousRating": null, "rating": 5.0,
"previousReviewsCount": null, "reviewsCount": 1567, "reviewsDelta": null,
"comparedWith": "2026-11-01T09:09:06+00:00"
}

changeTypes can hold new_entrant, dropped, rank_move (rankDelta positive = moved up), rating_change, reviews_delta and pricing_change. An app below this run's depth (you lowered maxApps) is not reported as dropped.

How much does it cost?

Pay per event: $0.003 per app row, $0.001 per review row, a $0.00005 start fee. Change rows and the status row are free. A weekly 48-app watch with 20 low-star reviews per app costs about $0.14 + $0.96 = $1.10 a run; without reviews, $0.14. Higher Apify plans get the Store discount automatically.

Complaint themes: how tagging works

Each 1-2 star review is matched against keyword rules, and a review can get several themes:

  • billing: charged, refund, subscription, cancel, overcharged
  • support: support, no response, ticket, on hold
  • bugs: broken, error, crash, stopped working, not showing
  • performance: slow, page speed, load time
  • missing_feature: missing, no option, doesn't support, needs at least
  • uninstall_leftovers: uninstall, leftover code, still in my theme
  • theme_conflicts: theme, conflict, layout, CSS
  • ease_of_use: complicated, confusing, tedious, hard to set up

The rules are English. Reviews in other languages are still returned, they just get no theme.

FAQ

Can it search the App Store by keyword? No. apps.shopify.com's robots.txt disallows search URLs (*q=*) for crawlers, so this Actor stays on category, app and review pages. Pick the subcategory that matches your keyword instead.

Does it need a Shopify account or a proxy? No account. It uses direct requests and moves to the Apify proxy only if the site answers 403 or 429.

How fresh is the data? Live: every run reads the pages at that moment.

Where is the change history kept? In the named key-value store stateStoreName in your own Apify account, one record per category. Delete that record to start a new baseline.

Why does a top-level category return only about 30 apps? Top-level pages like store-design show curated groups, not a ranked list (rankSource: "curated"). Subcategories like store-design-site-optimization-seo have the full paginated list.

Use it from code, Make, Zapier or n8n

Call it through the Apify API, the Python or JavaScript client, or the Apify integrations for Make, Zapier and n8n. Schedule it from the Apify Console to get a weekly change report.

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("benthepythondev/shopify-app-store-scraper").call(run_input={
"categories": ["store-design-site-optimization-seo"], "maxApps": 48,
})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
if row["recordType"] == "change":
print(row["appName"], row["changeTypes"], row.get("rankDelta"))

It reads only public pages that any visitor can open without logging in, follows the site's robots.txt, and collects no personal data beyond what developers publish as business contact details. You are responsible for how you use the data; check Shopify's terms for your use case.