# Shopify Theme & Apps Detector - Bulk Store Checker (`byusuklu/shopify-apps-detector`) Actor

See which theme and storefront apps any Shopify store uses: email/SMS, reviews, pixels, chat, subscriptions, buy-now-pay-later, page builders, upsell and more. Paste store URLs, get a clean table.

- **URL**: https://apify.com/byusuklu/shopify-apps-detector.md
- **Developed by:** [Hasan U.](https://apify.com/byusuklu) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.90 / 1,000 shopify store checkeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Shopify Theme & Apps Detector — Bulk Store Checker

A bulk **Shopify theme detector and app checker**: paste a list of store URLs and see, for every Shopify store, which theme it runs and which storefront apps we can detect: email and SMS tools, review apps, ad pixels, chat, subscriptions, buy-now-pay-later, page builders, upsell, loyalty, search and translation.

It's the quick way to answer questions like "which of these stores already use Klaviyo?", "who still has no reviews app?" or "what do the top stores in my niche run?".

**Try it on 10 stores for $0.05** (the free credit on Apify's free plan covers it); 100 stores cost $0.49. Sites that turn out not to be Shopify, or that don't load, are listed with the reason and never charged.

### How to run it

1. Paste Shopify store URLs into the input (a couple are pre-filled so you can just press Start).
2. Optional: use `mustHaveApps` or `onlyMissing` to keep only the stores you care about.
3. Press **Start** and download the table as Excel, CSV or JSON.

### What you get for each store

| Field | Example |
|---|---|
| Store name, URL, country, currency | Allbirds, allbirds.com, US, USD |
| Theme and theme type | Dawn, free (Shopify) |
| Storefront | Shopify theme or headless |
| Apps detected | Klaviyo, Judge.me, Meta pixel, Google tag, Recharge |
| Apps grouped by category | Email & SMS marketing: Klaviyo · Reviews: Judge.me |
| Missing categories | Reviews (no review app found) |

Download as Excel, CSV or JSON, or use the API.

### Apps it recognises

| Category | Apps |
|---|---|
| Email & SMS marketing | Klaviyo, Omnisend, Privy, Mailchimp, Attentive, Postscript, Justuno, Sendlane, Drip, Shopify Forms |
| Reviews | Judge.me, Loox, Yotpo, Okendo, Stamped.io, Reviews.io, Junip, Ali Reviews, Opinew |
| Ads & tracking pixels | Meta pixel, Google tag, TikTok pixel, Pinterest tag, Snapchat pixel, Microsoft Ads |
| Analytics & heatmaps | Microsoft Clarity, Hotjar, Lucky Orange, Triple Whale, Heap, mParticle |
| Chat & helpdesk | Gorgias, Tidio, Zendesk, Intercom, Re:amaze, LiveChat, Crisp, Shopify Inbox, Siena AI |
| Subscriptions | Recharge, Appstle, Seal, Loop, Skio, Bold |
| Buy now, pay later | Shop Pay Installments, Afterpay, Klarna, Sezzle, Affirm |
| Page builders | PageFly, GemPages, Shogun, Replo, Zipify |
| Upsell & bundles | Rebuy, ReConvert, Bundler, Frequently Bought Together |
| Loyalty & referrals | Smile.io, LoyaltyLion, Yotpo Loyalty |
| Search & filters | Searchanise, Boost Commerce, Algolia |
| Translation & currency | Weglot, Langify, Transcy |
| Returns & exchanges | Loop Returns, AfterShip, Redo |
| Consent & privacy | OneTrust, Pandectes, Consentmo |
| Wishlist | Swym, Wishlist Plus |

It also reads the pixels a store connects through Shopify's Customer Events, and lists every other app embed it finds under **Other app embeds**, so apps that aren't on this list yet still show up by name.

Missing an app you care about? Open an issue and I'll add it.

### Who uses it

- **App developers** find stores that use a competitor's app, or none at all, and reach out with something relevant.
- **Agencies** check a prospect's stack before the first call, so the pitch fits what the store already has.
- **Store owners** see what the leading stores in their niche run.

### Filters

- `mustHaveApps`: only stores using any of the apps you list, e.g. `["Klaviyo", "Recharge"]`
- `onlyMissing`: only stores with no app at all in a category, e.g. stores with no review app

### Pricing

$4.90 per 1,000 Shopify stores checked ($0.0049 each). Only Shopify stores that pass your filters are charged.

| Stores | Cost |
|---|---|
| 100 | $0.49 |
| 1,000 | $4.90 |
| 10,000 | $49.00 |

### Good to know

Detection reads the store's public homepage and `/meta.json`, two requests per store. Apps are recognised by the scripts and widgets they add to the storefront, so apps that work only in the back office (accounting, inventory, fulfilment) can't be seen from outside. An app that loads only on product or cart pages may be missed on the homepage. Headless stores (a custom front end on top of Shopify, common with very large brands) are marked as such, and far fewer apps are visible on them.

No personal data is collected.

### FAQ

**How accurate is the app detection?**
It recognises apps by the scripts and widgets they add to the public storefront. Back-office apps (accounting, inventory, fulfilment) can't be seen from outside, and an app that loads only on product or cart pages may be missed.

**Does it work on stores that aren't Shopify?**
No. Non-Shopify sites are listed with the reason and not charged.

**Can I find every store that uses a specific app?**
It checks the stores you give it. Use `mustHaveApps` to keep only stores running, say, Klaviyo, or `onlyMissing` to keep stores with no review app. To get new stores to check, see the related tools below.

**Do I need an API key or login?**
No. Only public pages are read, two requests per store.

### Need new stores to check?

If you're looking for Shopify stores that launched in the last few days, together with their marketing gaps and published business emails, use [Shopify Store Leads - New Stores, Marketing Gaps & Emails](https://apify.com/byusuklu/shopify-store-auditor).

Want a full checklist score instead? [Shopify Store Audit - CRO & SEO Score](https://apify.com/byusuklu/shopify-store-audit) checks 27 conversion and SEO points per store and lists the top fixes.

- [Bulk SPF, DKIM & DMARC Checker](https://apify.com/byusuklu/email-domain-health-checker): SPF, DKIM, DMARC, MX and blocklist check for any domain, with a 0-100 score and fixes.
- [Website Business Contact Finder](https://apify.com/byusuklu/website-business-contact-finder): role-based business emails, contact page, socials and platform for any website.

# Actor input Schema

## `storeUrls` (type: `array`):

Store domains or URLs, one per line, e.g. mystore.com. Non-Shopify sites are listed free of charge.

## `mustHaveApps` (type: `array`):

Optional. App names as they appear in the output, e.g. Klaviyo, Judge.me, Recharge.

## `onlyMissing` (type: `array`):

Optional. Keep stores that have no app at all in these categories (useful to find stores that need what you sell).

## `includeFailed` (type: `boolean`):

Show non-Shopify, unreachable or invalid URLs with the reason (never charged).

## Actor input object example

```json
{
  "storeUrls": [
    "allbirds.com",
    "bombas.com",
    "brooklinen.com"
  ],
  "includeFailed": true
}
```

# Actor output Schema

## `overview` (type: `string`):

One row per checked store (table view).

## `fullResults` (type: `string`):

Every checked store with apps grouped by category.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "storeUrls": [
        "allbirds.com",
        "bombas.com",
        "brooklinen.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("byusuklu/shopify-apps-detector").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "storeUrls": [
        "allbirds.com",
        "bombas.com",
        "brooklinen.com",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("byusuklu/shopify-apps-detector").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "storeUrls": [
    "allbirds.com",
    "bombas.com",
    "brooklinen.com"
  ]
}' |
apify call byusuklu/shopify-apps-detector --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,byusuklu/shopify-apps-detector"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/ECRbSAd3dlXDKS7oX/builds/zXeVEfGfJcwXeHJwq/openapi.json
