🛒 Shopify App Store Scraper avatar

🛒 Shopify App Store Scraper

Pricing

from $7.00 / 1,000 shopify app records

Go to Apify Store
🛒 Shopify App Store Scraper

🛒 Shopify App Store Scraper

Scrape Shopify App Store listings: name, tagline, description, rating, review count, pricing tiers, BFS badge, categories, developer info. Watchlist mode tracks rating/review changes day-over-day. Export, run via API, schedule, or integrate with other tools.

Pricing

from $7.00 / 1,000 shopify app records

Rating

0.0

(0)

Developer

Skootle

Skootle

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 hours ago

Last modified

Share

Shopify App Store hero

TL;DR

Scrape any Shopify App Store listing for full app metadata: name, tagline, description, icon, rating, review count, pricing model, pricing tiers, Built for Shopify badge, categories, languages, developer info. Watchlist mode emits only apps where rating or review count changed since the previous run, so daily diffs surface competitor momentum signals. Built on Shopify's public listing pages with JSON-LD parsing and HTML fallback.


Try it on a small dataset, then let us know what you think in a review.


What does Shopify App Store Scraper do?

Shopify App Store Scraper extracts everything visible on a Shopify App Store listing page. You give it a list of app handles (the slug after apps.shopify.com/); it returns one record per app with: name, tagline, description, icon URL, rating value, review count, pricing model (free, free_to_install, free_plan_available, paid, one_time, unknown), pricing tier breakdown with prices and billing periods, Built for Shopify badge presence, categories, languages supported, "works with" integrations, and developer info.

The actor reads each listing's embedded JSON-LD (Schema.org SoftwareApplication) for the canonical name + rating + description, and parses the surrounding HTML for everything not in the JSON-LD: pricing tier cards, BFS badge, categories, developer link, languages, "works with" list.

Watchlist mode (watchlistMode: true) tracks ratingValue and ratingCount per app across runs and emits only the apps where either changed. Schedule daily and you get a diff feed of which apps are gaining or losing reviews.

Why scrape the Shopify App Store?

The Shopify App Store is the largest e-commerce SaaS marketplace on the planet, with 8,000+ apps spanning every Shopify merchant workflow. Tracking competitor reviews, pricing changes, BFS badge gains/losses, and category-wide momentum is high-signal for app developers, M&A scouts, market researchers, and AI-powered competitive intelligence.

Shopify doesn't expose a public API for app discovery or app metadata, and the listing pages are partly client-rendered. This actor handles the JSON-LD extraction + HTML parsing so you get clean structured records instead of HTML strings.

Who needs this?

  • Shopify app developers monitoring competitor apps for pricing changes, rating shifts, and BFS badge events
  • M&A scouts screening for fast-growing acquisition targets in the Shopify ecosystem
  • Market researchers measuring category-wide momentum (top 50 reviews/marketing/fulfillment apps)
  • App-marketing consultants benchmarking pricing tier structures across competitors
  • VC analysts sourcing Shopify-native startups for early-stage investment
  • AI agents building "recommend Shopify apps for this stack" features
  • Acquisition operators building portfolio dashboards across multiple Shopify apps

How to use Shopify App Store Scraper

  1. Open the Input tab on the actor page
  2. Add app handles (the slug after apps.shopify.com/) to the appHandles field. Full URLs work too — the actor strips the prefix.
  3. Set maxItems (default 50)
  4. Optionally enable watchlistMode for daily scheduled runs that only return apps where rating/reviews changed
  5. Click Start or call via the Apify REST API or CLI

You can find app handles by browsing the Shopify App Store and copying the URL slug (e.g., apps.shopify.com/looxloox).

How much will scraping the Shopify App Store cost?

This actor is priced per event:

  • Actor Start: $0.01 once per run
  • Shopify app record: tiered, charged per record written
Apify plan$/1000 records
FREE$40.00
BRONZE$34.00
SILVER$28.00
GOLD$22.00
PLATINUM$22.00
DIAMOND$19.80

A typical daily competitor watchlist of 25 apps in your category returns ~25 records on day 1, then 0-5 per day in watchlist mode (only apps that gained/lost reviews). Roughly $0.55-$0.65 per daily run on the GOLD plan after the first.

Yes, listing pages are publicly accessible to anyone in a browser without logging in. This actor reads the same data Google's crawler reads, with proper rate limiting (1.1 second delay between requests) and a respectful User-Agent. It does not log in to merchant Shopify admins, does not access merchant private data, and does not bypass any technical access control.

The data scraped (app metadata, ratings, prices) is published by Shopify as marketing material specifically intended to be discoverable. Use it freely for research, competitive analysis, AI training, or commercial intelligence products. Reselling raw datasets verbatim may run afoul of Shopify's terms — consult your legal counsel for commercial redistribution.

Examples

Example 1: Track top 5 review apps daily

{
"appHandles": ["loox", "judgeme-product-reviews", "yotpo-social-reviews", "stamped", "vitals"],
"watchlistMode": true,
"maxItems": 5
}

Example 2: Snapshot a single app

{
"appHandles": ["loox"],
"maxItems": 1
}

Example 3: BFS-badge tracker on email-marketing apps

{
"appHandles": ["klaviyo-email-marketing-sms", "shopify-email", "omnisend-email-marketing-sms", "privy", "smile-rewards-program"],
"watchlistMode": true,
"maxItems": 5
}

Filter the output downstream for builtForShopify: true.

Example 4: Pricing benchmark across the Reviews category

{
"appHandles": ["loox", "judgeme-product-reviews", "yotpo-social-reviews", "stamped", "okendo", "ali-reviews", "rivo-reviews", "vitals"],
"maxItems": 10
}

Aggregate pricingTiers[] downstream to compute median entry price, free-plan availability rate, and tier-count distribution.

Example 5: Acquisition-target watchlist

{
"appHandles": ["app-1", "app-2", "app-3", "...", "app-200"],
"watchlistMode": true,
"maxItems": 200
}

Run weekly. Sort the diff output by ratingCount delta to find apps gaining reviews (and presumably revenue) fast.

Example 6: Developer-portfolio audit

Pull every app from a single developer (find their handles by browsing their developer page on Apps Shopify):

{
"appHandles": ["app-by-loox-1", "app-by-loox-2", "app-by-loox-3"],
"maxItems": 5
}

Example 7: Single-app fast snapshot for an AI agent

{
"appHandles": ["klaviyo-email-marketing-sms"],
"useApifyProxy": false,
"maxItems": 1
}

The agent can call the actor synchronously and consume the agentMarkdown directly for chat-context grounding.

Input parameters

FieldTypeDefaultDescription
appHandlesstring[]sample appsSlugs (e.g., loox) or full URLs (the prefix is stripped).
watchlistModeboolfalseDiff against KV-stored rating/review snapshots.
maxItemsint50Hard cap on apps saved.
useApifyProxybooltrueApify residential proxy. Recommended.
apifyProxyGroupsstring[]["RESIDENTIAL"]

Pricing model enum

ValueMeaning
freeApp is free, no upgrade path
free_to_installApp installs free, may charge per-event
free_plan_availableHas free tier + paid plans
paidAll plans paid, no free tier
one_timeSingle one-time payment
unknownCouldn't classify from listing

Shopify App Store output format

shopify_app

FieldTypeDescription
outputSchemaVersionstringVersioned literal ('2026-05-08')
recordTypeliteral'shopify_app'
recordIdstringshopify:app:<handle>
appHandle, urlstringSlug + canonical URL
name, tagline, descriptionstringMarketing copy
iconUrlstringApp icon (Shopify CDN URL)
ratingValuefloat0.0-5.0
ratingCountintNumber of reviews
pricingModelenumSee enum table above
pricingHeadlinestringPricing summary string ("Free plan available", "From $19/month", etc.)
hasFreePlan, hasFreeTrialboolPricing flags
pricingTiersarray[{ name, priceUsd, billingPeriod, description }]
categoriesstring[]Shopify-assigned category names
builtForShopifyboolBFS badge presence
worksWithstring[]Listed integrations
languagesSupportedstring[]UI/admin languages
developerobject{ name, url }
fieldCompletenessScoreint 0-100Self-filtering signal
agentMarkdownstring300-500 char LLM-ready summary
scrapedAtISO 8601Snapshot timestamp

Shopify App Store scraper output example

{
"outputSchemaVersion": "2026-05-08",
"recordType": "shopify_app",
"recordId": "shopify:app:loox",
"appHandle": "loox",
"url": "https://apps.shopify.com/loox",
"name": "Loox · Product Reviews App",
"tagline": "Turn customer love into sales. Product reviews, referrals and social proof upsells with Loox for Shopify and Shopify Plus.",
"ratingValue": 4.9,
"ratingCount": 7810,
"pricingModel": "free_plan_available",
"pricingHeadline": "Free plan available",
"hasFreePlan": true,
"hasFreeTrial": false,
"pricingTiers": [
{ "name": "Free", "priceUsd": 0, "billingPeriod": "monthly", "description": null },
{ "name": "Beginner", "priceUsd": 9.99, "billingPeriod": "monthly", "description": null }
],
"categories": ["Product reviews", "Photo and video reviews"],
"builtForShopify": true,
"worksWith": ["Klaviyo", "Yotpo", "Loyalty Lion"],
"languagesSupported": ["English", "French", "Spanish", "German", "Italian"],
"developer": { "name": "Loox", "url": "https://apps.shopify.com/partners/loox" },
"fieldCompletenessScore": 100,
"agentMarkdown": "**🛒 Loox · Product Reviews App** · 🛍 Built for Shopify\n> Turn customer love into sales...\n- ⭐ 4.9 (7,810) · Free plan available\n- 👤 by Loox\n- 🏷 Product reviews, Photo and video reviews\n- 🔗 https://apps.shopify.com/loox"
}

During the Actor run

The actor fetches each listing page sequentially with a 1.1-second delay (well under any reasonable Shopify rate limit), parses the JSON-LD SoftwareApplication block for canonical name + rating + description + icon, then parses the surrounding HTML for pricing tier cards, BFS badge, categories, developer link, languages, and works-with list. Each record is validated against a Zod schema before push. Bad rows go to error counters in OUTPUT, not silently dropped.

The actor writes to its key-value store:

  1. OUTPUT — compact run summary
  2. AGENT_BRIEFING — markdown digest with top apps by review count
  3. WATCHLIST_STATE — (when watchlistMode: true) per-app rating snapshot

FAQ

How does Shopify App Store Scraper work?

The actor fetches each app's public listing URL, parses the embedded JSON-LD for canonical metadata, and HTML-parses the surrounding page for pricing tier cards, BFS badge, categories, developer info, and languages.

Can I get reviews for each app?

Not in v0.1. This actor returns the rating value and review count, but not individual review threads. Review-level scraping is on the roadmap as a separate v0.2 feature.

Can I discover apps by category?

Not in v0.1. Shopify's category and search pages are fully client-rendered (JavaScript-only), so discovery requires Playwright. For now, you provide app handles explicitly. Discovery mode is planned for v0.2.

Can I monitor for rating changes only?

Yes. Set watchlistMode: true. The actor tracks ratingValue and ratingCount per app per run and only emits records where either changed.

Can I use this with the Apify API?

Yes. POST to https://api.apify.com/v2/acts/skootle~shopify-app-store-scraper/runs with your input as JSON body and your token as the bearer header.

Can I integrate with Make / Zapier / n8n / Slack?

Yes. From the actor page, click Integrations.

Does this work for non-public apps?

No. This actor only reads public Shopify App Store listings. Custom apps, private apps, and unlisted apps are not accessible.

Why are some fields empty?

Shopify's listing layout varies per app. Pricing tier cards and category badges are particularly inconsistent. The fieldCompletenessScore (0-100) flags how complete a record is so you can self-filter low-quality rows downstream.

What if Shopify changes its layout?

JSON-LD parsing is the primary path for name + rating + description, and JSON-LD is highly stable. HTML parsing for pricing tiers, BFS badge, and categories is the secondary path; if Shopify changes these, the actor adapts within 24-48 hours.

Your feedback

Hit a bug or want a feature? Open an issue on the Issues tab rather than the reviews page, and we'll fix it fast (typically within 48 hours).

Why choose Shopify App Store Scraper

  • JSON-LD primary path — canonical name, rating, description, and icon come from Shopify's own structured-data block. Stable across layout changes.
  • Pricing tier breakdownpricingTiers[] array with named plans, USD prices, and billing periods. Aggregate across competitors for benchmarks.
  • Built for Shopify badge trackingbuiltForShopify: bool on every record. Watchlist mode catches badge gains/losses (a strong revenue signal).
  • Watchlist diff mode — only emits apps where rating or reviews changed since the last run.
  • Versioned schemaoutputSchemaVersion: '2026-05-08' literal on every record.
  • Idempotent record IDsshopify:app:<handle> stable across runs.
  • Agent-grade outputagentMarkdown ready to paste into an LLM context.

Other Skootle actors you might want to check

Support and contact

File issues on this actor's page (Issues tab) — replies within 48 hours. Feature requests welcome — tag with enhancement.