Shopify Store Analyzer - Theme, Apps, Products, Prices, Socials avatar

Shopify Store Analyzer - Theme, Apps, Products, Prices, Socials

Pricing

from $6.00 / 1,000 store analyzeds

Go to Apify Store
Shopify Store Analyzer - Theme, Apps, Products, Prices, Socials

Shopify Store Analyzer - Theme, Apps, Products, Prices, Socials

For agencies, app developers and e-commerce analysts: one row per Shopify store with its name, country, currency, myshopify domain, product and collection counts, price range, top vendors, newest products, theme, app hints and social links. Non-Shopify sites come back as free rows.

Pricing

from $6.00 / 1,000 store analyzeds

Rating

0.0

(0)

Developer

NeverEmpty

NeverEmpty

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

21 days ago

Last modified

Share

Give it a list of store URLs and get one row per Shopify store: store name, country, city, currency and myshopify domain, how many products and collections it publishes, its price range (lowest, median, highest), its top vendors and product types, how fresh its catalog is, which theme it runs, which apps leave a trace on its home page, and its social links.

Built for agencies and app developers qualifying leads, and for e-commerce analysts sizing up competitors. A site that is not on Shopify, or cannot be read, comes back as a free row that says why.

Unofficial. Reads only what a Shopify store serves publicly to any visitor - /meta.json, /products.json, the home page and (when needed) /collections.json - after reading the store's robots.txt. No login, no Shopify account, no API key, no cart, no checkout, no search pages.

What you get

One row per store.

ColumnExample
status, isShopifyok, true
store, storeInputwww.allbirds.com (the address that answered), allbirds.com (what you typed)
storeName, descriptionAllbirds, the store's own description
country, province, city, currencyUS, California, Beverly Hills, USD
myshopifyDomain, primaryDomain, shopIdweareallbirds.myshopify.com, www.allbirds.com, 11044168
shipsToCountries["US"] - as the store profile lists them
productCount, productCountSource692, meta.json - the store's own count of published products
collectionCount1346
productsAnalyzed, productsAnalyzedComplete692, true - how many products the statistics below are computed from, and whether that is the whole list
priceMin, priceMedian, priceMax0.8, 105, 165 - lowest variant price, median of each product's lowest price, highest variant price
vendorCount, topVendors2, [{ "vendor": "Allbirds", "products": 691 }, { "vendor": "re:do", "products": 1 }] (up to 5)
topProductTypes[{ "productType": "Shoes", "products": 602 }, { "productType": "Socks", "products": 57 }, ...] (up to 5)
productsInStock, productsOnSaleproducts with at least one variant in stock; products with a variant priced below its compare-at price
newestProductPublishedAt, productsPublishedLast30Days2026-09-25T23:58:13.000Z, 398
lastProductUpdateAt, daysSinceLastProductUpdate2026-10-03T15:41:36.000Z, 0
themeName, themeSchemaName, themeSchemaVersion, themeStoreIdthe theme's name in the store admin, the theme it is built on (for example Dawn), its version, its Shopify Theme Store ID (null for custom themes)
themeAppExtensions["redo"] - app names taken from the app extension scripts the home page loads
scriptHints["Klaviyo", "Yotpo", "Recharge"] - tools recognized by the script addresses on the home page
instagramUrl, facebookUrl, tiktokUrl, twitterUrl, youtubeUrl, pinterestUrl, linkedinUrlthe profile links found on the home page
partsRead, note, checkedAtwhich of the public sources were read, anything that limits the row, when it was read

A value the store does not publish is null, never 0. A count that was really counted and came out as zero is 0.

Things to know before you rely on a column:

  • Prices are numbers in the store's own listing, as answered to a visitor from the United States without cookies; currency is the store's base currency from its profile.
  • A home page that redirects to a language or country page (for example /en-us) is followed once; any other redirect is not followed, and theme, app hints and social links are then null.
  • Statistics come from the products that were read - by default up to 1,000 per store (maxProductsPerStore, up to 5,000). When a store lists more, productsAnalyzedComplete is false, note says how many products the statistics use, and productsPublishedLast30Days, vendors and prices describe those products only. productCount is not affected: it is the store's own number.
  • themeAppExtensions and scriptHints are hints, not a full app list. They show only apps that load something on the home page. Apps that work in the admin, at checkout or on other pages leave no trace there.
  • Social links are the ones present on the home page. Share buttons and links to single posts are skipped. A store with no such links gets null.
  • Shopify does not publish revenue, traffic, order counts or stock quantities, and this Actor does not estimate them.
  • Some stores switch /meta.json off. They still get a row from the product list and the home page; store name, country and currency are then null, and productCount is given only when the whole list was read.

Input

FieldWhat it does
storesStores to analyze, one per line: a domain (allbirds.com) or any URL of the store (only the domain is used). Up to 200 per run. Empty = one example store.
maxProductsPerStoreHow many products per store are read for the statistics (1-5000). Empty = 1000.

Example:

{ "stores": ["allbirds.com", "kyliecosmetics.com"] }

Sites that are not analyzed

The Actor does not work around stores that do not serve these pages. Each of these comes back as one free row with the reason in note:

statusMeaning
not-shopifyno Shopify store profile and no Shopify products were found, and the home page carries no Shopify theme object: another platform, or Shopify behind a custom storefront
shopify-data-not-publicthe home page shows it is a Shopify store, but neither the store profile nor the product list could be read; theme, app hints and social links are still in the row
robots-disallowedthe store's robots.txt disallows every path this Actor uses for all crawlers; nothing was requested
password-protectedthe store is behind a store password
blockedthe store refused the request (HTTP 403, 429 or 430) also when asked once more through a residential IP address, or showed a bot check page. Check pages are not solved or bypassed
unreadablethe site did not answer, or answered with errors, also on a second try
duplicate-storetwo inputs led to the same store; it was analyzed once
budget-reachedthe run reached its maximum total charge; the row says what was not returned
bad-inputthe input could not be used; nothing was requested

When robots.txt disallows only some of the paths, those are skipped, the rest is read, and note lists what was skipped.

A store that refuses datacenter IP addresses is read through a residential IP address, with one page of its product list (250 products) instead of four, and at most 40 such requests per run; the row says so.

Pricing

Pay per event: one store-analyzed event for each store row with status ok. Rows with any other status are free. There is no start fee.

A run stops when it reaches the maximum total charge you set for it; stores that were not reached are not requested and not charged.

FAQ

How is this different from a product scraper? This returns one summary row per store, not the products. For the full product list with variants, SKUs and price or stock changes, use Shopify Products Scraper & Price Monitor.

Does it find stores for me? No. You bring the URLs; it tells you which ones are Shopify stores and what they look like.

Does it need a proxy? No setting is needed. Most stores answer directly; the Actor switches to a residential IP address by itself only for a store that refuses the first request.

Is the app list complete? No - see above. It is what can be seen on the home page.