Shopify App Store Scraper — Apps, Pricing Plans & Reviews avatar

Shopify App Store Scraper — Apps, Pricing Plans & Reviews

Pricing

from $2.00 / 1,000 app listings

Go to Apify Store
Shopify App Store Scraper — Apps, Pricing Plans & Reviews

Shopify App Store Scraper — Apps, Pricing Plans & Reviews

Scrape Shopify App Store apps by keyword, category, developer or URL: pricing plans, rating, rating breakdown, review count, developer, launch date, categories and features, languages, integrations, data access. Optional reviews with no reviewer names. No login, no browser.

Pricing

from $2.00 / 1,000 app listings

Rating

0.0

(0)

Developer

Datakiln

Datakiln

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 days ago

Last modified

Categories

Share

Shopify App Store Scraper: apps, pricing plans and reviews

Give it search words, a category, a developer page or a list of app URLs, and it returns one row per app from the Shopify App Store: name, tagline, rating and star breakdown, review count, every pricing plan with its price and features, developer, launch date, categories, languages, integrations and the store data the app asks to access. If you want them, it also returns the reviews of each app, with date, text, star rating, the reviewing store's country, how long they used the app and the developer's reply.

It reads the public pages at apps.shopify.com over plain HTTP. No browser, no login, no API key. Reviews come without the name of the store or person who wrote them. That field is never collected.

This actor is independent. It is not made, endorsed or supported by Shopify. "Shopify" is a trademark of its owner and appears here only to say which site the actor reads.

Who it is for

You areWhat you do with it
App developerCompare your pricing plans and ratings with the other apps in your category; read what merchants complain about in competitors' reviews
Agency or consultantBuild a shortlist of apps for a client: free plan or not, cheapest paid plan, rating, "Built for Shopify" badge, languages
Investor or analystTrack launch dates, review counts and rating changes across a category over time
Market researcherCount how many apps solve one problem, how they price it, and who builds them
Agent or workflow builderSmall, flat JSON that an agent can filter ("email apps under 30 USD with a free plan and a 4.8+ rating")

How it works

  1. Keyword search. The store's own search page is closed to robots, so the actor does not use it. It downloads the store's public app sitemap and keeps the apps whose URL name contains every word you typed. email marketing finds klaviyo-email-marketing. The result is not in Shopify's search ranking order, and an app whose URL does not contain your word will not match.
  2. Categories, developers, collections. The actor opens the listing page and takes the apps in the store's own order. The position is saved in sourcePosition. Category pages are read page by page, 24 apps each.
  3. App pages. Each app page is read once and turned into one row.
  4. Reviews (optional). The actor opens the app's review pages, 10 reviews per page, newest first or in the store's default order, until it reaches your limit.

An app found through several routes is scraped, and charged, once.

Input

Give at least one of searchTerms, categories or startUrls.

Example:

{
"searchTerms": ["upsell"],
"categories": ["marketing-and-conversion-marketing-email-marketing"],
"startUrls": ["https://apps.shopify.com/klaviyo-email-marketing", "judgeme"],
"maxResults": 50,
"includeReviews": true,
"maxReviewsPerApp": 20,
"reviewsSort": "newest"
}
FieldTypeDefaultWhat it does
searchTermslist of textemptyKeywords. An app matches when its URL name contains every word
categorieslist of textemptyCategory handles or full category URLs
startUrlslist of textemptyAny mix of app URLs, app handles, developer pages (/partners/...) and category or collection URLs
maxResultsinteger, 1 to 10,00050Apps per search term, category, developer or collection. App URLs you list directly are always scraped
includeReviewstrue/falsefalseAlso return reviews
maxReviewsPerAppinteger, 0 to 100,00020Reviews per app (10 are read per page)
reviewsSortnewest or relevancenewestOrder of the reviews
respectRobotsTxttrue/falsetrueSkip pages the store's robots.txt disallows. Skipped pages are not charged
maxConcurrencyinteger, 1 to 203Pages fetched at the same time
maxRequestsPerMinuteinteger, 10 to 60060Upper limit on page requests
requestTimeoutSecsinteger, 5 to 12030Wait time per page before a retry
maxRetriesinteger, 0 to 52Retries for a failing page
proxyConfigurationproxy objectno proxyOptional. The store works without one. Try Apify Proxy only if many pages fail

The Console form pre-fills small values (3 apps, 5 reviews) so a first test run costs a few cents. Raise them for real work.

Output

The dataset has two kinds of rows, told apart by type: app and review. Both are in the same dataset; the Console has an "Apps" view and a "Reviews" view.

An app row (shortened, from a real run):

{
"type": "app",
"status": "ok",
"handle": "reupsell",
"url": "https://apps.shopify.com/reupsell",
"name": "Reup: AI Product Accessories",
"tagline": "Find matching product accessories with AI, review them, and publish in bulk.",
"rating": 5,
"reviewCount": 1,
"ratingDistribution": { "5": 1 },
"builtForShopify": false,
"pricingSummary": "Free plan available",
"hasFreePlan": true,
"hasFreeTrial": false,
"lowestPaidPlanUsd": 9.99,
"pricingPlans": [
{ "name": "Free", "price": "Free", "priceUsd": 0, "billingPeriod": null, "features": ["Stores up to 25 products", "CSV import and export"] },
{ "name": "Starter", "price": "$9.99/month", "priceUsd": 9.99, "billingPeriod": "month", "features": ["Stores up to 250 products", "Analytics"] }
],
"developerName": "Sky Design Media Srl",
"developerPageUrl": "https://apps.shopify.com/partners/sky-design-media-srl",
"launchedAt": "2026-03-10",
"listingLastModified": "2026-09-19",
"categoryNames": ["Upsell and bundles - Other"],
"foundVia": "search:upsell",
"sourcePosition": 1,
"scrapedAt": "2026-10-05T04:01:12.244Z"
}

A review row:

{
"type": "review",
"status": "ok",
"handle": "upsell",
"appName": "Avocados upsell with triggers",
"reviewId": "841229",
"rating": 5,
"reviewDate": "2022-01-21",
"edited": false,
"text": "Very good purchase app. Stunning customer support as well. No need to look further. I love it. Thanks",
"reviewerCountry": "France",
"timeUsingApp": "About 2 hours",
"developerReply": "Thanks a lot for such a nice & honest review. ...",
"developerReplyDate": "2022-01-21",
"reviewUrl": "https://apps.shopify.com/reviews/841229",
"scrapedAt": "2026-10-05T03:58:53.258Z"
}

There is no field for the reviewer's name or store name. reviewerCountry is the country of the reviewing store, not of a person.

The app row has more fields than shown: description, highlights, reviewsSummary (the store's own summary, only on apps with many reviews), languages, worksWith, dataAccess, resources, screenshots, similarApps and others. The full list is in the dataset schema.

Rows that are not apps

When something cannot be scraped you get a row with a status and an error that says why, so a run never fails silently:

statusMeaning
okScraped, and charged
failedThe page could not be read after the retries, or the app is unlisted or removed
skippedrobots.txt disallows the page
invalid-inputA value you gave is not a valid category, URL or search (for example a keyword that matches no app)

Only ok rows are charged. Every other status is free.

Pricing

You pay per result, plus the usual Apify platform usage.

EventWhat is chargedFreeStarter / BronzeScale / SilverBusiness / Gold
app-listingOne app row with status ok$3.00 per 1,000$2.50 per 1,000$2.20 per 1,000$2.00 per 1,000
app-reviewOne review row$1.00 per 1,000$0.90 per 1,000$0.80 per 1,000$0.70 per 1,000

There is also a start event of $0.00005 per run (Actor Start).

  • Failed, skipped and invalid-input rows are not charged.
  • An app that appears through several routes is charged once.
  • Review pages that return no reviews cost nothing.

Your spending limit is respected. Set "Maximum cost per run" when you start the actor. The actor checks how many results your limit still allows before it saves each batch. When the limit is reached it stops and logs a warning. It never saves more than you agreed to pay for.

Cost examples (Free plan prices)

RunCalculationCost
100 apps, no reviews100 x $3.00 / 1,000$0.30
500 apps in one category500 x $3.00 / 1,000$1.50
50 apps and 20 newest reviews each50 x $3.00 / 1,000 + 1,000 x $1.00 / 1,000$1.15
One app, all of its 2,900 reviews$0.003 + 2,900 x $1.00 / 1,000about $2.90
The same 50 apps and 1,000 reviews on the Business / Gold plan50 x $2.00 / 1,000 + 1,000 x $0.70 / 1,000$0.80

Reviews are the expensive part when an app has thousands. Keep maxReviewsPerApp low unless you need the full history.

Limits

  • The store can change its HTML. The actor reads the page structure as it was when it was last tested. If the store changes its layout, some fields can come back empty or wrong until the actor is updated. Report it in Issues.
  • Removed or unlisted apps appear as failed with a message. The sitemap can still list an app for a while after it is gone.
  • Keyword search matches URL names, not descriptions. An app called acme-boost will not show up for "upsell" even if it is an upsell app. Use categories when you want everything in a field.
  • No ranking order for keywords. Results follow the sitemap, not the store's search ranking. Category and developer pages keep the store's own order.
  • Developer and collection pages are read as one page. If a developer has more apps than their page shows at once, you get the apps on that page. Category pages are read page by page up to maxResults.
  • Reviews are read page by page, 10 at a time, and the whole run is capped at maxRequestsPerMinute (60 by default). A history of thousands of reviews takes a while.
  • Pricing is what the listing shows. Usage-based fees, volume discounts and prices negotiated outside the store are not in the listing. lowestPaidPlanUsd is the cheapest paid plan in USD per billing period, so a yearly plan and a monthly plan are not directly comparable.
  • English listings only. The actor reads the English version of the store.
  • Rate limiting. If the store answers HTTP 429, the actor pauses all requests, then retries.

Responsible use

The actor reads public pages that the store shows to any visitor. It needs no login and does not get around any access control. It checks robots.txt before every request, limits request speed, backs off when asked to, and does not use a proxy unless you turn one on.

Reviews are collected without the author's name or store name. The text of a review is still the work of the person who wrote it and can contain personal details they chose to write. Do not try to identify authors, and check the store's terms and your local law (data protection, copyright, competition) for what you plan to do with the data. If you publish review text, quote it with care and credit the source.

FAQ

Does it need a Shopify account or API key? No. It reads the public store pages only.

Can I get the name of the store that left a review? No. It is not collected, and there is no setting to change that.

Why did my keyword return nothing? The words must all appear in the app's URL name. Try fewer or shorter words (review instead of product reviews), or use a category.

What happens when I hit my spending limit in the middle of a run? The actor stops, keeps what it already saved, and logs which limit it hit. Everything saved is charged, nothing beyond it.

How do I find a category handle? Open the category on apps.shopify.com. The handle is the last part of the address after /categories/. You can also paste the full URL.

How do I monitor an app over time? Schedule the actor with the app's URL, includeReviews on, reviewsSort on newest and a small maxReviewsPerApp. Compare rating, reviewCount and pricingPlans between runs.

Is the data live? It is read at the time of the run. listingLastModified comes from the store's sitemap and shows when the listing was last changed.

Support and feature requests

Use the Issues tab of this actor to report a problem or ask for a new field or filter. For a bug, include the run link and the app URL or keyword that caused it. The Apify platform, API, schedules, webhooks and integrations (Make, Zapier, n8n, Google Sheets, MCP) work with this actor like with any other.