
Website Content Crawler
scrape.ly/store/querystone/website-content-crawlerAIDeveloper tools
1 monthly user

Scrape Shopify App Store apps by keyword, category, developer or URL. Get rating, review count, pricing plans, Built for Shopify badge, developer website, support email and address, launch date, categories, plus merchant reviews with store name, country, rating, date and developer reply.
Scrape the Shopify App Store by keyword, category, developer or app URL. Every app comes back with its rating, review count, pricing plans, Built for Shopify badge, launch date, categories and the developer's public contact details: website, support email and address. Add merchant reviews with store name, country, rating, date, time using the app and the developer's reply. No login or API key needed.
product reviews) and/or paste Shopify App Store URLs (apps, categories, developers or search pages).| Field | What it does |
|---|---|
searchQueries | Keywords to search for, one per line. |
startUrls | apps.shopify.com links: app, category, developer (/partners/...) or search pages. Bare app handles like judgeme work too. |
maxResults | Max apps per keyword, category or developer (default 20, 0 = all). App URLs are always scraped. |
minRating, minReviews, pricingType, builtForShopifyOnly, launchedAfter | Filters, checked before an app is saved and charged. |
scrapeAppDetails | Open each app's page for the full record (default on). Off = list data only, faster. |
includeSponsored | Also save apps shown as ads in search results. |
includeReviews, maxReviewsPerApp, reviewsSort, reviewRatings, reviewsFromDate | Merchant reviews and their filters. |
proxyConfiguration | Residential proxy by default (datacenter also works, about 3x slower). |
{
"searchQueries": ["product reviews"],
"startUrls": [
"https://apps.shopify.com/categories/marketing-and-conversion-marketing-email-marketing",
"https://apps.shopify.com/partners/klaviyo"
],
"maxResults": 20,
"minRating": 4.5,
"includeReviews": true,
"maxReviewsPerApp": 20,
"reviewsSort": "newest"
}
Each app is one result with type: "app". With Include reviews on, each review is a separate result with type: "review". The Output tab has three table views: Apps, Reviews and Pricing plans.
| App field | Description |
|---|---|
handle, name, url, iconUrl | App identity |
tagline, description, featureHighlights | Listing copy |
rating, reviewCount, ratingBreakdown, reviewsSummary | Ratings |
builtForShopify, awards | Badges |
pricingSummary, freePlanAvailable, freeTrialAvailable, pricingPlans, pricingNote | Pricing |
developerName, developerUrl, developerWebsite, developerSupportEmail, developerAddress, developerCountry | Developer contact (as publicly listed) |
launchedAt, categories, categoryDetails, languages, worksWith | Facts |
privacyPolicyUrl, faqUrl, tutorialUrl, documentationUrl, changelogUrl, demoStoreUrl, videoUrl, screenshots, similarApps | Links and media |
foundVia, position, sponsored, scrapedAt | Where the app was found |
| Review field | Description |
|---|---|
appHandle, appName, appUrl | The reviewed app |
reviewId, reviewUrl, rating, date, edited, text | The review |
storeName, storeCountry, usageDuration | The reviewing store |
developerReply, developerReplyDate, developerReplyBy | The developer's public reply |
Example app (trimmed):
{
"type": "app",
"handle": "klaviyo-email-marketing",
"name": "Klaviyo: Email Marketing & SMS",
"url": "https://apps.shopify.com/klaviyo-email-marketing",
"tagline": "Build email marketing, SMS, and WhatsApp campaigns powered by AI to grow ecommerce sales.",
"rating": 4.7,
"reviewCount": 3379,
"ratingBreakdown": {"5": 2964, "4": 83, "3": 31, "2": 37, "1": 264},
"builtForShopify": false,
"pricingSummary": "Free to install",
"freePlanAvailable": true,
"pricingPlans": [
{"planName": "Free", "price": "Free to install", "amount": 0.0, "currency": null, "period": null,
"description": "Free to install. Email free forever for up to 250 contacts.", "features": ["Templates for Email/SMS", "A/B testing"]},
{"planName": "SMS", "price": "$15/month", "amount": 15.0, "currency": "USD", "period": "month",
"description": "Up to 1250 SMS/MMS credits. Includes carrier fees.", "features": ["Transactional SMS"]}
],
"developerName": "Klaviyo",
"developerUrl": "https://apps.shopify.com/partners/klaviyo",
"developerWebsite": "https://developers.klaviyo.com/en",
"developerSupportEmail": "support@klaviyo.com",
"developerAddress": "125 Summer St, Floor 7, Boston, MA, 02111, US",
"developerCountry": "US",
"launchedAt": "2012-09-20",
"categories": ["Email marketing", "SMS marketing"],
"languages": ["English", "French", "Spanish", "German"],
"worksWith": ["Checkout", "Shopify Flow", "Gorgias"],
"foundVia": "developer:klaviyo",
"position": 1,
"sponsored": false,
"scrapedAt": "2026-10-15T03:20:11+00:00"
}
Example review (sample data in the real shape):
{
"type": "review",
"appHandle": "klaviyo-email-marketing",
"appName": "Klaviyo: Email Marketing & SMS",
"appUrl": "https://apps.shopify.com/klaviyo-email-marketing",
"reviewId": "1234567",
"reviewUrl": "https://apps.shopify.com/reviews/1234567",
"rating": 5,
"date": "2026-10-10",
"edited": false,
"text": "Easy to set up and our welcome flow paid for itself in the first week.",
"storeName": "Example Outdoor Co",
"storeCountry": "United States",
"usageDuration": "8 months using the app",
"developerReply": "Thanks for the kind words! Let us know if you need help with SMS.",
"developerReplyDate": "2026-10-13",
"developerReplyBy": "Klaviyo"
}
You pay $1.00 per 1,000 results ($0.001 per saved app or review), plus platform usage (compute and proxy traffic) for the run.
Filtered-out apps are not charged. Set a maximum total charge on the run to cap spending; the scraper stops cleanly when it is reached.
Is it legal to scrape the Shopify App Store? The scraper only reads public pages that anyone can open without an account. Developer contact details are the ones developers publish on their listings. Check your local rules (for example GDPR) before using personal data and respect the site's terms.
Do I need a Shopify account, login or proxy? No. No account or cookies are needed. A proxy is included and on by default: the site limits app page views per IP, so the scraper spreads requests over many residential IPs and retries rate-limited requests on a fresh IP.
How many apps can I get?
Search keywords return up to about 5,000 apps (for example reviews lists 4,874). Categories return every app in the category; parent categories are expanded into their sub-categories. Set the limit to 0 to get everything.
Why is a field empty? Fields are only filled when the listing shows them. Many apps publish no website, video or demo store, and new apps have no reviews or rating yet.
Can I get only negative or only recent reviews? Yes. Pick star ratings in Only reviews with these star ratings and/or set Reviews posted on or after. With a date, reviews are read newest first and the scraper stops paging once it passes the date, so monitoring runs stay cheap.
Can I schedule it or use the API? Yes. Save the input as a task, schedule it daily or weekly, and read the dataset through the API or integrations.
position is the organic rank at scrape time.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
searchQueriesarrayOptionalSearch keywords
Keywords to search the Shopify App Store for, one per line (for example 'product reviews' or 'upsell').
startUrlsarrayOptionalShopify App Store URLs
Links from apps.shopify.com: app pages (https://apps.shopify.com/judgeme), category pages (https://apps.shopify.com/categories/marketing-and-conversion-social-trust-product-reviews), developer pages (https://apps.shopify.com/partners/judge-me) or search pages. A bare app handle such as 'judgeme' also works.
maxResultsintegerOptionaldefault 20Max apps per keyword / category / developer
Maximum number of apps to save for each search keyword, category or developer page. App URLs are always scraped. Use 0 for no limit (all listed apps).
Checked before an app is opened, saved and charged.
minRatingnumberOptionalMinimum rating
Only keep apps with an average rating of at least this many stars (0 to 5).
minReviewsintegerOptionalMinimum number of reviews
Only keep apps with at least this many reviews.
pricingTypeenumOptionaldefault "any"Pricing
Only keep apps with this kind of pricing (based on the app's pricing summary).
builtForShopifyOnlybooleanOptionaldefault falseBuilt for Shopify apps only
Only keep apps with the 'Built for Shopify' badge.
launchedAfterstringOptionalLaunched after
Only keep apps launched on or after this date. Use YYYY-MM-DD or a relative value such as '6 months' or '1 year'. Needs app details.
scrapeAppDetailsbooleanOptionaldefault trueScrape full app details
Open each app's page for pricing plans, developer contact (website, support email, address), launch date, categories, languages, integrations and the rating breakdown. Turn off for a faster run with list data only (name, rating, review count, pricing summary, badge).
includeSponsoredbooleanOptionaldefault falseInclude sponsored results
Also save apps shown as ads in search results (marked sponsored: true). They count toward the per-keyword limit.
includeReviewsbooleanOptionaldefault falseInclude reviews
Also save merchant reviews for each app: store name, country, rating, date, time using the app, review text and the developer's reply. Each review is a separate result.
maxReviewsPerAppintegerOptionaldefault 20Max reviews per app
Maximum number of reviews to save for each app. Use 0 for all reviews.
reviewsSortenumOptionaldefault "relevance"Sort reviews by
Order in which reviews are collected.
reviewRatingsarrayOptionalOnly reviews with these star ratings
Leave empty for all ratings. For example pick 1 and 2 to collect only negative reviews.
reviewsFromDatestringOptionalReviews posted on or after
Only save reviews from this date on (YYYY-MM-DD or relative, e.g. '30 days'). Reviews are then collected newest first and the scraper stops paging once it reaches older reviews.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["RESIDENTIA…Proxy configuration
Residential proxies are used by default: the site limits app page views per IP, and residential IPs are about 3x faster than datacenter IPs for the same cost. Datacenter works too, just slower.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| type | string | 'app' or 'review' |
| handle | string | null | App handle (apps only) |
| name | string | null | App name (apps only) |
| url | string | null | App URL (apps only) |
| rating | number | null | Average rating (apps) or star rating (reviews) |
| reviewCount | number | null | Number of reviews (apps only) |
| appHandle | string | null | Reviewed app handle (reviews only) |
| reviewId | string | null | Review id (reviews only) |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Result | One Shopify app or one merchant review saved to the dataset. | $0.001 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('shelfbright/shopify-app-store-scraper').call({
"searchQueries": [
"product reviews"
],
"maxResults": 20,
"maxReviewsPerApp": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"RESIDENTIAL"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run shelfbright/shopify-app-store-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=shelfbright/shopify-app-store-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
App details and recent reviews from an App Store URL.
App search limited to free apps.
App search that also returns sponsored apps.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.