Shopify Store Analyzer – Apps, Theme, Prices avatar

Shopify Store Analyzer – Apps, Theme, Prices

Pricing

from $6.00 / 1,000 store reports

Go to Apify Store
Shopify Store Analyzer – Apps, Theme, Prices

Shopify Store Analyzer – Apps, Theme, Prices

Analyze any Shopify or WooCommerce store: one report with platform, shop name, currency and country, product count, price stats and sale share, top vendors and product types, newest products, theme, installed apps and pixels, emails and social links. $6 per 1,000 stores.

Pricing

from $6.00 / 1,000 store reports

Rating

0.0

(0)

Developer

SFOLN LLC

SFOLN LLC

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Analyze any Shopify or WooCommerce store from its domain: one report per store with the platform, shop name, currency and country, product count, price statistics and share on sale, top vendors and product types, newest products, the live theme, installed apps and tracking pixels, emails and social links and hosting hints. The store's public storefront JSON (Shopify /meta.json and /products.json, the WooCommerce Store API) and its homepage are read directly, so there is no login, no API key and no browser. Built for Shopify app and agency prospecting, e-commerce lead generation, competitor research, market sizing and AI agents.

  • What you get: platform, storeName, country, currency, productCount, priceStats, onSaleShare, topVendors, topProductTypes, newestProducts, themeName, apps, pixels, emails, socials, techHints.
  • Price: $0.006 per store report (store-report), $6 per 1,000 stores. Stores on other platforms, password-protected, blocked or unreachable stores cost nothing.
  • About 70 common apps recognized (Klaviyo, Attentive, Yotpo, Judge.me, Recharge, Gorgias, Rebuy, Global-e …) plus Meta, Google, TikTok and other pixels.
  • Works everywhere: API, MCP for AI agents, Make, Zapier, n8n, schedules and webhooks.

Input

FieldTypeDefaultDescription
storesstring[]–Store domains or URLs (allbirds.com, https://www.allbirds.com); any page URL of a store analyzes the whole store. Entries for the same store are merged.
maxProductsinteger250Products read per store for the catalog statistics (1–2,500). Shopify lists the most recently published products first. The product count is always the store's full count.
maxStoresinteger1000Safety cap for this run; further entries are ignored and counted as inputItemsDropped in the OUTPUT record.
concurrencyinteger5Stores analyzed in parallel (1–10). The requests to one store run one at a time, at most 2 per second.
itemTimeoutSecsinteger180Time limit per store; reading the catalog stops cleanly before it and the statistics cover the products read.
{
"stores": ["allbirds.com", "kith.com", "https://www.gymshark.com"],
"maxProducts": 250
}

Output

One record per store:

{
"input": "allbirds.com",
"store": "www.allbirds.com",
"url": "https://www.allbirds.com",
"platform": "shopify",
"storeName": "Allbirds",
"description": "The world’s most comfortable shoes, made with natural materials like merino wool, eucalyptus tree fiber, and sugar cane.",
"country": "US",
"province": "California",
"city": "Beverly Hills",
"currency": "USD",
"locale": "en-US",
"myshopifyDomain": "weareallbirds.myshopify.com",
"productCount": 692,
"collectionCount": 1346,
"shipsToCountries": ["US"],
"shopPayInstallments": true,
"catalogRead": true,
"catalogComplete": false,
"productsAnalyzed": 250,
"priceStats": { "min": 4, "p25": 60, "median": 75, "p75": 110, "max": 165, "mean": 83.86 },
"onSaleShare": 0.552,
"avgDiscountPct": 48,
"availableShare": 0.464,
"variantsPerProduct": 10.88,
"vendorCount": 1,
"productTypeCount": 4,
"topVendors": [{ "name": "Allbirds", "count": 250 }],
"topProductTypes": [{ "name": "Shoes", "count": 234 }, { "name": "Apparel", "count": 6 }, { "name": "Underwear", "count": 2 }, { "name": "Socks", "count": 1 }],
"topTags": [{ "name": "shoprunner", "count": 223 }, { "name": "FINAL SALE", "count": 114 }],
"newestProducts": [
{ "title": "Women's Wool Runner - Natural Grey (Light Grey Sole)", "url": "https://www.allbirds.com/products/womens-wool-runners-natural-grey", "price": 49, "createdAt": "2026-05-26T18:10:21.000Z", "publishedAt": "2026-09-25T23:24:03.000Z" }
],
"newProducts30d": 0,
"newProducts90d": 0,
"lastProductUpdate": "2026-10-14T22:58:08.000Z",
"themeName": "[DNAM Theme July 2026]",
"theme": { "name": "[DNAM Theme July 2026]", "schemaName": "allbirds-theme", "schemaVersion": "1.231.12", "themeStoreId": null, "id": 130450260048, "role": "main" },
"apps": [
{ "name": "Attentive", "category": "email & SMS" },
{ "name": "Redo", "category": "returns & shipping" },
{ "name": "Shop Pay", "category": "payments" },
{ "name": "Elevar", "category": "analytics" }
],
"pixels": ["Meta Pixel", "Google Tag Manager", "Microsoft Clarity"],
"techHints": ["Shopify", "Cloudflare", "HSTS"],
"emails": ["help@allbirds.com"],
"phones": [],
"socials": { "instagram": "https://www.instagram.com/allbirds", "facebook": "https://www.facebook.com/weareallbirds", "tiktok": "https://www.tiktok.com/@weareallbirds" },
"contactPages": [],
"homepageRead": true,
"status": "ok",
"charged": true,
"chargedEvent": "store-report",
"source": "storefront",
"fetchedAt": "2026-10-14T12:00:02.000Z",
"warnings": ["The catalog statistics cover the first 250 products of 692 (maxProducts)."]
}
FieldDescription
platform, store, urlshopify or woocommerce (other for unsupported stores, see below), and the store's host and origin after redirects.
storeName, description, country, province, city, currency, locale, myshopifyDomainShopify's /meta.json (name, address, currency, permanent .myshopify.com domain), else the homepage (site name, meta description, language). WooCommerce currencies come from the product prices.
productCount, collectionCount, shipsToCountries, shopPayInstallmentsThe store's own counts of published products and collections (WooCommerce: X-WP-Total), shipping countries and Shop Pay Installments (Shopify).
catalogRead, catalogComplete, productsAnalyzedWhether the catalog could be read, whether every product was read, and how many products the statistics cover (up to maxProducts).
priceStats, onSaleShare, avgDiscountPct, availableShare, variantsPerProductQuartiles, mean and range of each product's lowest price; the share of products on sale (a variant below its compare-at price) and their mean discount; the share with at least one variant in stock.
vendorCount, productTypeCount, topVendors, topProductTypes, topTagsDistinct and most common vendors (brands), product types (WooCommerce: first categories) and tags (machine tags such as key::value left out).
newestProducts, newProducts30d, newProducts90d, lastProductUpdateThe 5 most recently created products, products created in the last 30 / 90 days and the latest product update (Shopify; the WooCommerce Store API has no dates).
themeName, themeThe live Shopify theme (Shopify.theme: name, the theme it is built on as schemaName, version, Theme Store ID); WooCommerce: the WordPress theme folder.
apps, pixelsApps the homepage loads, by category (email & SMS, reviews & UGC, subscriptions, loyalty, support, returns, search, upsell, page builders, payments …), and advertising / analytics pixels.
techHintsCDN, hosting and server hints from the homepage's response headers (Cloudflare, Fastly, WP Engine, Nginx …) and its generator tag.
emails, phones, socials, contactPagesContacts on the homepage: emails (the store's own domain first), phone numbers, social profiles and contact / about pages.

status: ok for a Shopify or WooCommerce store whose catalog or homepage was read (charged), not_found for a store on another platform (unsupported_platform, with platform: "other" and platformName such as BigCommerce, Magento, Wix or Squarespace when the homepage shows it), a password-protected store or a domain that does not exist, error when the store blocks automated requests (blocked) or failed, skipped_invalid for an unusable entry and skipped_budget / skipped_free_plan when a cap was hit. Only ok is charged.

Pricing

Store discounts: the FREE and BRONZE tiers use the list prices below. SILVER receives 5% off; GOLD, PLATINUM and DIAMOND receive 10% off billable result events. The platform start fee is unchanged. Check the Actor's Store pricing table for the prices currently in effect.

Pay-per-event, no subscription:

EventPriceWhen charged
store-report$0.006 per store ($6 / 1,000)once per Shopify or WooCommerce store whose catalog or homepage was read

Example: a list of 1,000 e-commerce domains of which 620 run on Shopify or WooCommerce costs 620 × $0.006 = $3.72; the other 380 are free. Reading up to 2,500 products per store costs nothing extra. Apart from Apify's automatic Actor-start charge ($0.00005 per GB of run memory) there is no start fee.

Set Maximum cost per run to cap spend: the Actor checks the budget before each store and stops cleanly; remaining stores are returned with status: "skipped_budget" and are not charged.

Accounts on the Apify free plan can process up to 10 stores per run.

Use with AI agents (MCP)

Use this Actor from Claude, ChatGPT, Cursor, VS Code or any other MCP client through the Apify MCP server. Add this server URL to your client and sign in with your Apify account when asked:

https://mcp.apify.com?tools=sfoln/shopify-store-analyzer

To run the MCP server locally instead, start npx -y @apify/actors-mcp-server --tools sfoln/shopify-store-analyzer with your APIFY_TOKEN in the environment.

Example prompt:

Analyze the Shopify stores allbirds.com and kith.com: which theme and apps does each use, how many products do they sell, what is their median price and what share of products is on sale?

Runs started by an agent are billed like any other run (see Pricing). Agents can cap what a run may spend with maxTotalChargeUsd.

API usage

Run the Actor and get its dataset items in one call (the call waits up to 5 minutes for the run to finish):

curl -X POST "https://api.apify.com/v2/acts/sfoln~shopify-store-analyzer/run-sync-get-dataset-items" \
-H "Authorization: Bearer <APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"stores": ["allbirds.com"], "maxProducts": 250}'

For large inputs, start the run asynchronously and download the dataset when it has finished:

# 1. Start a run: the response holds the run ID (data.id) and its dataset ID (data.defaultDatasetId)
curl -X POST "https://api.apify.com/v2/acts/sfoln~shopify-store-analyzer/runs" \
-H "Authorization: Bearer <APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"stores": ["allbirds.com"], "maxProducts": 250}'
# 2. Repeat until data.status is SUCCEEDED (each call waits up to 60 s)
curl "https://api.apify.com/v2/actor-runs/<runId>?waitForFinish=60" -H "Authorization: Bearer <APIFY_TOKEN>"
# 3. Download the results (format=json, csv or xlsx)
curl "https://api.apify.com/v2/datasets/<defaultDatasetId>/items?format=json" -H "Authorization: Bearer <APIFY_TOKEN>"

Python (apify-client):

from apify_client import ApifyClient
client = ApifyClient("<APIFY_TOKEN>")
run = client.actor("sfoln/shopify-store-analyzer").call(run_input={"stores": ["allbirds.com"], "maxProducts": 250})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

Instead of polling, you can attach a webhook to the run (see Integrations). The API tab of this page shows the same calls for JavaScript and the Apify CLI.

Integrations

  • Make, Zapier and n8n: run sfoln/shopify-store-analyzer with the Apify app (in n8n, the Apify node) and pass the dataset items to the next step of your workflow.
  • Google Sheets: add the items to a sheet with the Google Sheets step of Make, Zapier or n8n, or download them as CSV or Excel from the run's Storage tab or the API (format=csv or format=xlsx).
  • Webhooks: get a POST request when a run succeeds or fails: add a webhook in the Actor's Integrations tab, or pass webhooks when you start a run through the API.
  • Schedules: run it hourly, daily or weekly with the same input from Apify Schedules; every run keeps its results in its own dataset.
  • More: Slack, Google Drive, GitHub, LangChain, LlamaIndex and other Apify integrations.

See all our Actors on Apify Store.

FAQ

How much does it cost, and am I charged for failed items?

You pay per event at the prices under Pricing above, plus a run start fee of $0.00005 per GB of memory, with no subscription; platform usage is included. Errors and skipped items (skipped_… statuses) are never charged; a lookup that finds nothing is charged only where Pricing says so, and every record's charged field shows whether it was billed. Set Maximum cost per run to cap what a single run can spend.

How fresh is the data?

Each run queries its source while it runs, so you get what the source returns at that moment. Source-specific details, such as how often a provider refreshes its own database, are under Limits & notes.

What are the limits?

Per-run caps (for example the maximum number of items) are listed under Input, source limits under Limits & notes, and the free-plan limit under Pricing. For big batches, start the run asynchronously (see API usage) and read the dataset when it has finished.

Can I schedule runs or get results by webhook?

Yes. Create a schedule in Apify Console to run it hourly, daily or weekly with the same input, and add a webhook to get a POST request when a run finishes (see Integrations).

What does this Actor record about my runs?

This Actor records operational metrics about each run (item counts, duration, charges, error codes and a pseudonymous hash of your Apify user ID) to monitor reliability and costs. It never stores your input or results.

How are apps detected?

From the hosts the homepage loads scripts and assets from (and a few distinctive script names): about 70 common apps such as Klaviyo, Attentive, Yotpo, Judge.me, Recharge, Gorgias, Rebuy and Global-e, plus advertising and analytics pixels. Apps that load nothing on the homepage (back-office apps, apps only on product or checkout pages) cannot be seen.

Does it read the whole catalog?

The product count is always the store's full count. Price statistics, vendors, product types and newest products cover up to maxProducts products (250 by default, up to 2,500); Shopify lists the most recently published products first. catalogComplete tells whether every product was read.

What happens with stores that are not on Shopify or WooCommerce?

They return status not_found with platform other and, when the homepage shows it, the platform they use (BigCommerce, Magento, Wix, Squarespace …). They are not charged, nor are password-protected, blocked or unreachable stores.

How do I get help?

Open an issue in the Actor's Issues tab and include the link to the run, so we can reproduce the problem. Feature requests are welcome there too.

Limits & notes

  • Up to 2,500 products analyzed per store and 10,000 stores per run. The statistics of larger catalogs cover the most recently published products (Shopify) or the first Store API pages (WooCommerce); productCount is always the full count.
  • Apps are recognized on the homepage only: apps that load nothing there (back-office tools, checkout or product-page widgets) are not seen. The app table covers about 70 common apps.
  • A store whose storefront JSON is refused but whose homepage is readable still gets a report without catalog statistics (catalogRead: false, charged). Stores that refuse every request (Cloudflare challenges, HTTP 403/429) end as error and are not charged.
  • WooCommerce needs the Store API (WooCommerce 6.0+, enabled by default) for catalog statistics; it publishes no product dates and no shop address.
  • Country, city and shipping countries come from Shopify's /meta.json; multi-currency stores report their base currency.
  • Data is live: each run reads the store at that moment. For monitoring (new products, theme or app changes), schedule the Actor and compare runs.