Shopify App Store Scraper - Keyword Ranks & Watchlist
Pricing
from $1.50 / 1,000 app / rank rows
Shopify App Store Scraper - Keyword Ranks & Watchlist
Scrape the Shopify App Store: keyword and category ranks, app details (ratings, pricing tiers, Built for Shopify badge), and watchlist deltas for rating, reviews, price, and badge changes. Built for daily runs. No Partner login.
Pricing
from $1.50 / 1,000 app / rank rows
Rating
0.0
(0)
Developer
Andrej Kiva
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Shopify App Store Scraper — Keyword Ranks, Category Ranks & Watchlist
Unofficial tool for publicly accessible Shopify App Store listing data. Shopify and related trademarks belong to their respective owners. Not affiliated with, sponsored by, or endorsed by Shopify Inc. Provided for informational use only; users must comply with applicable terms and laws.
| Actor | Platform |
|---|---|
| Shopify App Store Scraper / Rank Tracker ◄── you are here | Shopify App Store |
| Apple App Store Scraper | iOS / App Store |
| Google Play Store Scraper | Android / Google Play |
| App Stores Scraper — Apple & Google Play ASO | Apple + Google Play (combo) |
Shopify App Store scraper for Apify — track keyword SERP ranks, category positions, and scrape app details (rating, review count, pricing tiers, Built for Shopify badge). Run a watchlist that emits deltas when competitors move. Export structured JSON for Python, Node.js, or AI agents via MCP. Designed for daily scheduled runs with KV history. No Shopify Partner login — a practical Shopify App Store API alternative for public listing data.
Use it for Shopify app competitor research, ASO-style keyword monitoring on App Store search, and cron alerts when a rival gains reviews or wins the Built for Shopify badge. For mobile store ASO, chain to Apple App Store Scraper or Google Play Store Scraper.
When to use this Actor
- Daily keyword rank tracking for your app vs competitors (
email marketing,product reviews, …) - Category position snapshots on curated category pages
- Watchlist alerts: rating / review count / pricing / Built for Shopify badge
- Reliable app detail export via schema.org JSON-LD (not fragile CSS-only scraping)
- Canary mode for pipeline health checks before production schedules
When not to use
- You need install counts or revenue (not published on public listings)
- You only want a one-off dump of the entire 16k+ catalog with no rank history (use a full-catalog sitemap Actor instead)
Modes
| Mode | What it does |
|---|---|
keyword_ranks | Search SERP position of tracked handles × keywords + KV history + optional RANK_CHANGE |
category_ranks | Position on a category page × tracked handles + KV history |
watchlist | Fingerprint deltas: rating, review count, pricing, Built for Shopify badge |
app_details | Full listing parse (JSON-LD + pricing plans + badge + developer) |
search | Dump search result rows for a keyword (discovery) |
canary | Fixed public probes — fails the run loudly if parsers break |
Key features
- Turbo-Frame search — real SERP HTML (organic vs
search_adsponsored cards) - Organic-first ranks — ads excluded by default (
includeAdsto count them) - JSON-LD details —
ratingValue/ratingCountfrom structured data - True BFS badge — detects
built-for-shopify-badge, not navbar guide links - KV history — named store for rank snapshots and watchlist fingerprints
- Canary — deterministic health check for scheduled pipelines
- Typed dataset —
keyword_rank,category_rank,app,search_result,monitor_event
Input parameters
| Parameter | Description |
|---|---|
mode | See modes table above |
appHandles | App slugs to track (klaviyo-email-marketing, judgeme, …) |
startUrls | App / category / search URLs (handles and queries parsed automatically) |
searchTerm / searchTerms | Keywords for search / keyword_ranks |
categoryUrls | Category paths or URLs (marketing-and-conversion) |
maxSearchPages | Pages per keyword (default 3) |
includeAds | Count sponsored cards in SERP ranks (default false) |
concurrency | Parallel workers (default 4) |
rankHistoryLimit | KV snapshots per target |
emitRankChanges | Emit RANK_CHANGE monitor events |
maxItems | Dataset row cap (0 = unlimited) |
monitorStoreName | KV store for ranks + watchlist state |
monitorBaselineOnly | Seed state without change events |
resetMonitorState | Clear KV state before run |
proxyConfiguration | Optional Apify Proxy |
Example — keyword ranks (daily)
{"mode": "keyword_ranks","appHandles": ["klaviyo-email-marketing", "omnisend", "mailchimp"],"searchTerms": ["email marketing", "sms marketing"],"maxSearchPages": 3,"includeAds": false,"emitRankChanges": true,"maxItems": 50}
Example — watchlist deltas
{"mode": "watchlist","appHandles": ["judgeme", "loox", "klaviyo-email-marketing"],"monitorBaselineOnly": false,"maxItems": 100}
Example — category ranks
{"mode": "category_ranks","appHandles": ["judgeme", "loox", "instafeed"],"categoryUrls": ["marketing-and-conversion"],"emitRankChanges": true,"maxItems": 50}
Example — app details
{"mode": "app_details","appHandles": ["klaviyo-email-marketing", "judgeme", "omnisend"],"maxItems": 10}
Output
Typed dataset rows via itemType — export as JSON, CSV, or Excel from the Apify dataset.
| itemType | Main fields |
|---|---|
keyword_rank | keyword, handle, rank, previousRank, rankDelta, found, history |
category_rank | category, handle, rank, previousRank, found |
app | title, rating, reviewCount, pricingSummary, pricingPlans, builtForShopify, developerName |
search_result | keyword, handle, rank, isAd, page |
monitor_event | eventType, changes, handle (RATING_CHANGE, REVIEW_COUNT_CHANGE, PRICE_CHANGE, BADGE_CHANGE, RANK_CHANGE, NEW_APP) |
canary | ok, checks, failures |
Example — keyword_rank
{"itemType": "keyword_rank","keyword": "email marketing","handle": "klaviyo-email-marketing","title": "Klaviyo: Email Marketing & SMS","rank": 1,"previousRank": 2,"rankDelta": 1,"found": true,"isAd": false,"url": "https://apps.shopify.com/klaviyo-email-marketing","scrapedAt": "2026-08-03T16:00:00Z"}
Example — app details
{"itemType": "app","handle": "judgeme","title": "Judge.me Product Reviews App","rating": 5.0,"reviewCount": 42771,"pricingSummary": "Free plan available","pricingPlans": [{"name": "Free", "price": "Free"}, {"name": "$15/month", "price": "$15/month"}],"builtForShopify": true,"developerName": "Judge.me","url": "https://apps.shopify.com/judgeme","scrapedAt": "2026-08-03T16:00:00Z"}
Use cases
- Shopify app founders tracking SERP vs Klaviyo / Omnisend / Judge.me
- Agencies monitoring client apps for review-count velocity and badge wins
- Market researchers exporting category grids and competitor pricing tiers
- SaaS / VC screening of a niche (email, reviews, loyalty) via keyword discovery
- Pipelines that need a failing canary when Shopify markup changes
Integration examples
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('crawloop/shopify-app-store-rank-tracker').call({mode: 'keyword_ranks',appHandles: ['klaviyo-email-marketing', 'omnisend'],searchTerms: ['email marketing'],maxSearchPages: 2,maxItems: 20,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.slice(0, 5));
Python
from apify_client import ApifyClientclient = ApifyClient()run = client.actor("crawloop/shopify-app-store-rank-tracker").call(run_input={"mode": "watchlist","appHandles": ["judgeme", "loox"],"maxItems": 50,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item.get("eventType") or item.get("itemType"), item.get("handle"))
cURL
curl -s -X POST "https://api.apify.com/v2/acts/crawloop~shopify-app-store-rank-tracker/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"mode":"app_details","appHandles":["klaviyo-email-marketing"],"maxItems":5}'
MCP and AI assistants
Use this Actor from AI tools via Apify MCP.
Connect your Apify account, then call this Actor by its Store ID / name (crawloop/shopify-app-store-rank-tracker).
Example prompts:
- "Run Shopify App Store Scraper for keyword email marketing tracking klaviyo-email-marketing and omnisend, return ranks as JSON"
- "Watchlist judgeme and loox for rating, review count, and Built for Shopify badge changes"
- "Scrape Shopify App Store app details for judgeme with Python, then compare Apple App Store ranks via Apple App Store Scraper"
Suite next step
After Shopify App Store ranks, enrich mobile ASO with Apple App Store Scraper or Google Play Store Scraper, or run both via App Stores Scraper.
FAQ
Is this a Shopify App Store API?
Shopify does not offer a public App Store listing API for third parties. This Actor scrapes the same public pages merchants see and returns structured JSON — a practical API alternative for ranks, ratings, and pricing.
Can I scrape with Python or Node.js?
Yes — use the Apify client examples above, or call the Actor from MCP / AI assistants.
Do I get install counts or revenue?
No — Shopify does not publish those on public listings. Use rating, reviewCount, and SERP/category rank as popularity proxies.
Are search ads included in ranks?
By default no. Set includeAds: true to count sponsored search_ad cards.
Why is category rank coverage limited?
Category landing pages are curated (section grids), not infinite paginated catalogs. Rank is position among unique handles on that page.
How do I schedule daily runs?
Use Apify Schedules with keyword_ranks or watchlist. First run with monitorBaselineOnly: true to seed KV state quietly.