Shopify App Store Scraper avatar

Shopify App Store Scraper

Pricing

from $2.50 / 1,000 apps

Go to Apify Store
Shopify App Store Scraper

Shopify App Store Scraper

Scrape the Shopify App Store for app metadata, pricing tiers, ratings, reviews, and Built-for-Shopify badges. Designed for delta-tracking — daily price drops, rating shifts, and badge wins.

Pricing

from $2.50 / 1,000 apps

Rating

0.0

(0)

Developer

Always Prime

Always Prime

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

🛍️ Shopify App Store Scraper — App Intelligence + Reviews + Pricing Tracker

⚡️ Structured app, pricing-tier and review data from apps.shopify.com — fast, complete, ready for delta-tracking.

Built for Apify Python 3.11

Pull every public field from the Shopify App Store at scale: app name, developer, rating, full review history, every pricing tier, "Built for Shopify" badge status, screenshots, supported languages, integrations, and launch date. Daily delta-runs catch price drops, rating shifts, and new badge wins the moment they happen.


🚀 Why this scraper

  • 📦 All 19,000+ apps discoverable via the public sitemap — full coverage, not just the curated browse pages
  • 💰 Every pricing tier parsed individually (name, price, billing, features) — not just the headline price label
  • Full review history with merchant store name, country, usage duration, and developer reply
  • 🏷️ "Built for Shopify" badge flagged on each app — track which apps qualified this week
  • 🤖 Incremental mode — pass a since date and only re-scrape apps that changed (sitemap lastmod)
  • 🧱 Stable selectors built on Shopify's own data-app-card-* and data-merchant-review attributes
  • 🛡️ Polite by default — concurrency 5, jittered backoff, fingerprint rotation, never overruns the site

⏱️ Quick start

  1. Click Try for free above ▶️
  2. Pick a discovery mode (full sitemap, by category, or specific URLs)
  3. Hit Start 🟢
  4. Download the dataset as JSON, CSV, or Excel — or query it via Apify API

That's it. No API key, no proxy setup, no scraper tuning.


🧰 Input

FieldDefaultWhat it does
discoveryModecategoriessitemap (all 19k+ apps) / categories (curated subset per Shopify category) / startUrls (your own list)
categories["finding-products"]One or more of the 7 top-level Shopify categories — only used for categories mode
startUrlsSpecific app URLs to monitor — only used for startUrls mode
scrapeReviewsfalseAlso scrape every review on every app (paginated)
sinceIncremental: only scrape apps whose sitemap lastmod ≥ this date
maxItems50Total cap (apps + reviews counted together). Set 0 for unlimited
maxReviewsPerApp100Per-app cap on reviews. Set 0 to scrape full review history per app
concurrency5Parallel page fetches. Hard cap 25

📊 Sample output

App record

{
"type": "app",
"url": "https://apps.shopify.com/klaviyo-email-marketing",
"handle": "klaviyo-email-marketing",
"id": "klaviyo-email-marketing",
"name": "Klaviyo: Email Marketing & SMS",
"tagline": "AI marketing and customer service automation for email marketing, SMS, and WhatsApp to grow faster.",
"description": "Klaviyo is a leading email and sms marketing app for Shopify. Improve your marketing ROI with our templates to deliver personalized email and sms campaigns.",
"developer": "Klaviyo",
"developer_url": "https://apps.shopify.com/partners/klaviyo",
"developer_email": "support@klaviyo.com",
"icon_url": "https://cdn.shopify.com/app-store/listing_images/5edd9000b933a8fa88c152d1e498531f/icon/CP6B2OOv3PYCEAE=.png",
"screenshots": [
"https://cdn.shopify.com/app-store/listing_images/5edd9000b933a8fa88c152d1e498531f/desktop_screenshot/CJa736LdpJEDEAE=.png",
"https://cdn.shopify.com/app-store/listing_images/5edd9000b933a8fa88c152d1e498531f/desktop_screenshot/CNGT_KLdpJEDEAE=.png",
"https://cdn.shopify.com/app-store/listing_images/5edd9000b933a8fa88c152d1e498531f/desktop_screenshot/CNHU6KLdpJEDEAE=.png"
],
"rating": 4.6,
"reviews_count": 2700,
"price_label": "Free to install",
"pricing_tiers": [
{
"name": "Free",
"price_label": "Free to install",
"additional_charges": "Free forever for up to 250 contacts.",
"features": ["Sync Shopify data", "Templates for Email/SMS", "Forms & push notifications", "Segmentation & personalization", "A/B testing"]
},
{
"name": "SMS",
"price_label": "$15/month",
"additional_charges": null,
"features": ["1,250 SMS/MMS credits", "Two-way conversations", "Quiet hours"]
}
],
"languages": ["English", "French", "Spanish", "German", "Portuguese (Brazil)", "Korean", "Italian", "Polish", "Swedish", "Dutch"],
"works_with": ["Checkout", "Shopify Flow", "Loyalty programs"],
"launched_at": "2014-12-09",
"built_for_shopify": false,
"featured_in": ["Best email marketing apps", "Top SMS marketing"],
"scraped_at": "2026-05-10T17:30:00+00:00"
}

Review record

{
"type": "review",
"id": "2186957",
"app_handle": "klaviyo-email-marketing",
"url": "https://apps.shopify.com/klaviyo-email-marketing/reviews?#review-2186957",
"rating": 5,
"posted_at": "2026-05-02",
"body": "We use Klaviyo for more than 5 years and it did help us recover the carts left by sending a series of abandoned cart emails…",
"store_name": "iSmart Home Gadgets",
"store_country": "Hong Kong SAR",
"usage_duration": "Over 5 years using the app",
"developer_reply": null,
"scraped_at": "2026-05-10T17:30:00+00:00"
}

🎯 Use cases

WhoWhat for
🛠️ Shopify app developers (~30K active)Competitive intelligence — rivals' pricing changes, rating shifts, "Built for Shopify" wins
🏢 E-commerce agenciesBuild curated app shortlists for clients filtered by rating, language support, integrations
📈 Vendor-intelligence platforms (BuiltWith, Similarweb-style)Continuous Shopify ecosystem dataset for your product
💼 VC / M&A analystsDiligence on app businesses — pricing model, install base proxy via reviews_count, growth via lastmod
🧪 ML / data teamsTraining corpora for pricing models, review sentiment, app-categorization classifiers
📰 Market researchers & journalists"Top 100 apps by rating", "Average price/month per category", trend pieces

💡 Tips & tricks

  • 🔁 Daily delta runs: schedule with discoveryMode = sitemap and since = yesterday. Only refreshes apps that changed.
  • 🧮 Pricing-only runs: keep scrapeReviews = false to keep cost minimal — pricing tiers are part of every app record.
  • 🔍 Watchlist mode: use discoveryMode = startUrls with a list of competitor app URLs for a focused intel run.
  • 📅 Full review history: set maxReviewsPerApp = 0 and maxItems = 0 (caution — Klaviyo alone has 2,700 reviews / 270 pages).
  • 🧹 Filter in dataset views: the dataset has two views ("Apps" and "Reviews") that pre-filter the unified stream by record type.

❓ FAQ

How fresh is the data? Every run is live. The Shopify sitemap publishes daily lastmod dates per app — pair it with the since input for true incremental tracking.

Does this work without an Apify proxy? Yes. Datacenter IPs work out of the box. The actor uses TLS fingerprint rotation and never triggers Cloudflare challenges.

Can it scrape search results by query? No — that endpoint is Disallow-ed in the public robots.txt. Use category browsing or the full sitemap instead.

What about apps with multi-language listings? The actor follows the canonical apps.shopify.com/{handle} path which serves English; the languages field still lists every language the app itself supports.

How do I track "Built for Shopify" badge changes? Run daily with discoveryMode = sitemap, store the built_for_shopify field, and diff against yesterday's snapshot. New trues = badge wins this week.

Pricing model? Pay-per-event: a small charge per scraped app, per scraped review, and per pricing-tier snapshot. Free actor starts give you ~50 records to test before any spend.


📦 What's inside each record

App records (type: "app"): url, handle, name, tagline, description, developer, developer_url, developer_email, icon_url, screenshots[], rating, reviews_count, price_label, pricing_tiers[{name, price_label, additional_charges, features[]}], languages[], works_with[], launched_at, built_for_shopify, featured_in[], scraped_at.

Review records (type: "review"): id, app_handle, url, rating, posted_at, body, store_name, store_country, usage_duration, developer_reply{replied_at, body}, scraped_at.