# Shopify Store Scraper (`webdatalabs/shopify-store-intelligence`) Actor

Deep-dive any Shopify store: full product catalogue, installed apps, theme, pricing strategy and tech stack, plus review coverage and average rating measured over a product sample. One flat record per store for competitor research and lead generation.

- **URL**: https://apify.com/webdatalabs/shopify-store-intelligence.md
- **Developed by:** [WebDataLabs](https://apify.com/webdatalabs) (community)
- **Categories:** E-commerce, Integrations, Lead generation
- **Features:** Limited permissions
- **Stats:** 191 total users, 3 monthly users, 95.2% runs succeeded, 5 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $4.00 / 1,000 store analyzeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 Store Intelligence - Competitor Analysis & Tech Stack Detector

**Deep dive into any Shopify store:** Extract ALL products, detect installed apps and the base theme, analyze pricing strategy, and measure review coverage. One-time comprehensive store analysis for competitor research and market intelligence.

> **Every number in the output is measured, never modelled.** This actor does not publish a sales
> estimate, because a Shopify storefront does not expose order volume and any "estimated sales"
> figure would be a guess dressed up as data. Fields that could not be measured are `null` and
> `status_reason` says why.

### 🎯 What Does This Actor Do?

This Shopify Store Intelligence Scraper provides a **comprehensive, one-time deep analysis** of any Shopify store - going far beyond simple product scraping.

Unlike basic product scrapers that just list items, this actor delivers **complete business intelligence** per store:

✅ **Complete Product Catalog** - All products, variants, pricing, inventory
✅ **Tech Stack Detection** - Base theme + merchant theme name/version + 20+ app categories
✅ **Pricing Intelligence** - Min/avg/max prices, discount analysis
✅ **Review Signals** - Review coverage and average rating, measured on real product pages
✅ **Competitive Positioning** - Category focus, pricing strategy
✅ **Store Age & History** - Launch date estimation
✅ **Inventory Health** - Stock availability percentage
✅ **Best-Selling Products** - Top 10 by collection position

**Output:** ONE comprehensive intelligence record per store (not per product!)

### 💼 Use Cases

#### 🔍 Competitor Research

Understand rivals' product mix, pricing strategy, and technology choices. See what apps successful stores use for reviews, email marketing, upselling, and more.

#### 💰 Dropshipping Intelligence

Find winning products and compare stores by catalogue size, price band, discount depth and how much review social proof they have actually accumulated.

#### 📊 Market Analysis

Benchmark your store against competitors. Compare catalog size, pricing, review coverage, and technology adoption.

#### 🔌 Tech Stack Discovery

See what apps and themes successful stores use. Perfect for agencies prospecting stores that need better tools or optimization.

#### 🎯 E-commerce Market Research

Gather data on pricing strategies, product categories, and business metrics across multiple stores in your industry.

### 🚀 Features

#### 📦 Complete Product Catalog Analysis

- Scrapes ALL products with variants, pricing, and inventory
- Calculates price ranges (min/avg/max)
- Identifies products on sale with average discount percentage
- Breaks down categories and product types
- Analyzes vendor/brand distribution

#### 🔌 Tech Stack & App Detection

Automatically detects installed Shopify apps via HTML pattern matching:

**Reviews:** Judge.me, Yotpo, Stamped.io, Loox, Okendo
**Email Marketing:** Klaviyo, Omnisend, Privy
**Upsell/Cross-sell:** Rebuy, Zipify, Bold Upsell
**Search:** Searchanise, Klevu, SearchSpring
**Loyalty:** Smile.io, Yotpo Loyalty
**Analytics:** Google Analytics, Segment, Hotjar
**Customer Support:** Gorgias, Zendesk, Tidio
**Payments:** Afterpay, Affirm, Klarna
**Personalization:** Nosto, Dynamic Yield
**Social Proof:** Fomo, Prove Source

Plus: base theme (`theme_base_name`, e.g. `Dawn`, `Impulse`, `Prestige`), the merchant's own theme
name, theme version and Shopify theme ID. Most merchants rename their theme copy — `theme_name`
comes back as things like `(24 Jun-2024) Worked of the American-Art-Decor`, so group and filter on
`theme_base_name`.

#### 💰 Measured Store Metrics

- **Review coverage percentage** — share of the sampled product pages (up to 15) that show reviews
- **Average reviews per product** and **average product rating** across those sampled pages
- **Inventory health** (% variants in stock)
- **Store age estimation** (from oldest product date)

Review figures are measured on a sample of up to 15 real product pages per store, not on the whole
catalogue — the field titles and descriptions say so, and `review_coverage_pct` is the share of that
sample.

#### 📈 Competitive Positioning

- Price strategy analysis (min/avg/max across catalog)
- Category distribution and focus areas
- Discount strategy (% products on sale, average discount)
- SEO quality indicators (images per product, description coverage)
- Collection count and organization

### 📥 Input

Simple configuration - just add store URLs:

```json
{
  "storeUrls": [
    { "url": "https://gymshark.com" },
    { "url": "https://allbirds.com" }
  ]
}
```

**Parameters:**

- `storeUrls` (required) - Array of Shopify store URLs to analyze
- `proxyConfiguration` (optional) - Enable Apify proxies for large stores

### 📤 Output

**Every URL you submit gets exactly one row — nothing is ever dropped silently.**

Each row starts with a `status` field that tells you what happened to that URL:

| `status` | Meaning | Billed? |
|---|---|---|
| `analyzed` | Full intelligence below | Yes |
| `not_shopify` | The site is genuinely not a Shopify store | No |
| `rate_limited` | The store's product API throttled us even after retries with backoff | No |
| `blocked` | It is a Shopify store, but its public product API is closed (password / region / app block) | No |
| `unreachable` | DNS, TLS, timeout or server error | No |
| `skipped_run_timeout` | The run hit its time limit before reaching this URL | No |
| `budget_exhausted` | The run reached its maximum charge before this URL could be delivered | No |

`status_reason` carries the plain-language explanation. On non-`analyzed` rows every
analysis field is `null` — no placeholder numbers, no `"Unknown"`, no invented dates.

The run also writes an **OUTPUT** record to the key-value store with per-URL counts and
reasons, and the run **fails loudly** (instead of reporting a green empty result) when none
of your URLs could be analysed for a reason on our side.

If you see `rate_limited` rows, switch **Proxy Settings** on and pick the **RESIDENTIAL**
group — retries then come from fresh IPs.

An `analyzed` row carries **41 intelligence fields**:

```json
{
  "status": "analyzed",
  "status_reason": null,
  "store_domain": "gymshark.com",
  "shop_name": "gymshark.myshopify.com",
  "country": "US",
  "currency": "USD",
  "locale": "en-US",

  "theme_name": "Gymshark/main",
  "theme_base_name": "Dawn",
  "theme_id": 123456789,
  "theme_version": "1.0.0",
  "apps_installed": ["Judge.me", "Klaviyo", "Rebuy"],
  "apps_by_category": {
    "Reviews": ["Judge.me"],
    "Email Marketing": ["Klaviyo"],
    "Upsell": ["Rebuy"]
  },
  "apps_count": 3,

  "total_products": 1234,
  "total_variants": 5678,
  "collections": ["Men", "Women", "Accessories"],
  "collections_count": 12,
  "categories": ["T-Shirts", "Hoodies", "Leggings"],

  "price_min": 15.00,
  "price_avg": 45.50,
  "price_max": 120.00,
  "products_on_sale": 234,
  "discount_pct_avg": 15.5,

  "products_with_reviews": 11,
  "review_coverage_pct": 73.3,
  "avg_reviews_per_product": 123,
  "avg_rating": 4.5,

  "total_variants_available": 4500,
  "inventory_availability_pct": 79.3,

  "estimated_launch_date": "2019-03-15",
  "oldest_product_date": "2019-03-15",
  "newest_product_date": "2025-10-27",

  "products_with_images": 1234,
  "avg_images_per_product": 4.5,
  "products_with_description": 1200,

  "top_products": [
    {
      "title": "Premium Hoodie",
      "url": "https://gymshark.com/products/premium-hoodie",
      "price": 55,
      "reviews": 1234,
      "rating": 4.8
    }
  ],

  "scraped_at": "2025-10-27T15:30:00Z",
  "scrape_duration_sec": 45
}
```

`products_with_reviews` and `review_coverage_pct` describe the sample of up to 15 product pages,
not the full catalogue — a 953-product store with `review_coverage_pct: 73.3` means 11 of the 15
sampled pages showed reviews.

#### Output Format

- **Flat structure** - Easy to import into spreadsheets, databases, n8n, Zapier
- **Predictable fields** - Same fields every time (uses `null` for missing data)
- **No nested complexity** - Ready for automation tools
- **Clean arrays** - Collections, categories, vendors, apps
- **No modelled figures** - every number is measured; nothing is extrapolated or assumed

### 🔧 How It Works

1. **Verifies Shopify store** - Checks `/products.json` endpoint
2. **Fetches homepage HTML** - Extracts base theme, merchant theme name, shop metadata
3. **Detects installed apps** - Pattern matching on CDN scripts, HTML comments, known app signatures
4. **Scrapes all products** - Via Shopify's `/products.json` pagination API
5. **Samples reviews** - Up to 15 real product pages per store (Judge.me, Yotpo, Stamped, Loox, Okendo, JSON-LD)
6. **Fetches collections** - Via `/collections.json` endpoint
7. **Calculates metrics** - Aggregates pricing and inventory from the catalogue it actually read
8. **Outputs intelligence** - ONE comprehensive record per store

**Technology:** HTTP client only (no browser needed) - fast and efficient!

### 💲 Pricing

**Pay-per-store analyzed** (pay-per-event model)

#### Why This Pricing?

- Traditional product scrapers provide just raw product data
- Store Intelligence provides complete analysis including products, tech stack, apps, business metrics, and insights
- One-time deep analysis (not ongoing monitoring) = Maximum value

See current pricing in the Apify Console when starting a run.

Cost scales with the number of stores analyzed. Perfect for competitor analysis and market research.

### ⚡ Performance

- **Speed:** about 5-20 seconds per store, driven by catalogue size (a 2,700-product store takes longest)
- **Reliability:** HTTP API-based (no browser = no blocking)
- **Scalability:** Analyze multiple stores in one run
- **Data quality:** no placeholder values, no `"N/A"`, no invented numbers. A field that could not be
  measured is `null` and `status_reason` explains it.

### How this differs from a product scraper

| Feature | Product Scrapers | Store Intelligence |
|---------|-----------------|-------------------|
| **Price** | Per-product pricing | **Per-store pricing** |
| **Output** | 100+ records (per product) | 1 record (per store) |
| **Data** | Product details only | Products + Apps + Metrics |
| **Tech Stack** | ❌ Not included | ✅ Theme + Apps detected |
| **Business Metrics** | ❌ Not calculated | ✅ Pricing, apps, review coverage |
| **Use Case** | Price monitoring | Competitor research |
| **Value** | Low (raw data) | **5× Higher** (insights) |
| **Integration** | Complex (many records) | Easy (one flat record) |

***

### Need this data as a managed feed?

If you would rather receive this data on a schedule than run the Actor yourself, we can build and operate the feed: the fields you specify, the cadence you set, delivered to a dataset, S3, a webhook, or your database. Every scheduled run is checked against an agreed shape rather than assumed to be fine, missing values are reported as null instead of filled with placeholders, and repairing the collector when the source changes is covered by the monthly rate. Priced as a one-time setup fee plus a monthly rate, scoped in writing before anything is built.

**Contact:** support@webdatalabs.net

### Related actors

- [Shopify Product Scraper](https://apify.com/webdatalabs/shopify-product-scraper) — products, variants and prices from any Shopify store
- [Etsy Scraper Pro - Sale Prices & Discount Depth](https://apify.com/webdatalabs/etsy-scraper-pro) — sale prices, discount depth and ratings
- [Yelp Scraper - Local Business Data, Hours & Contacts](https://apify.com/webdatalabs/yelp-business-scraper-pro) — local business data, hours and contacts
- [AliExpress Scraper — Products, Prices, Variants & Sales Signals](https://apify.com/webdatalabs/aliexpress-product-intelligence) — products, prices, variants and sales signals

Explore the full portfolio from [WebDataLabs](https://apify.com/webdatalabs).

### Support

Found a bug, or need a field that is missing? Open an issue on the **Issues** tab of this Actor and
it will be picked up there. You can also reach WebDataLabs through the support channel on our
[Store profile](https://apify.com/webdatalabs).

### Leave a review

Is this actor saving you time? A quick review on the Store helps other people find it — and tells us which fields to add next. **[Rate this actor →](https://apify.com/webdatalabs/shopify-store-intelligence)**

### Legal Disclaimer

This actor is a general-purpose tool for analyzing publicly accessible web data. The user bears sole responsibility for ensuring their specific use complies with:

- Applicable laws (GDPR/DSGVO, copyright law)
- The target website's Terms of Service
- Apify's Terms of Service

The provider (webdatalabs) expressly disclaims liability for any unauthorized or unlawful use. By using this actor, the user agrees to indemnify the provider against any third-party claims arising from their use of the data.

***

*This tool is not affiliated with Shopify. All trademarks belong to their respective owners.*

### 🔍 SEO Keywords & Searchability

**What this actor helps you discover:**

- Shopify competitor analysis
- Shopify store analytics
- Shopify app detector
- Shopify theme detector
- E-commerce market research
- Dropshipping product research
- Shopify store scraper
- Competitor pricing intelligence
- Shopify tech stack analysis
- Store performance metrics
- Shopify base theme detector
- E-commerce business intelligence
- Shopify market intelligence
- Store catalog analyzer
- Shopify apps list detector

**Industries & Niches:**
Fashion, Apparel, Shoes, Accessories, Beauty, Cosmetics, Health, Fitness, Sports, Electronics, Home Goods, Pet Supplies, Jewelry, Dropshipping, Print on Demand

### 📊 Example: Real Store Analysis

**Store:** Allbirds.com (Sustainable Footwear Brand)

**Results:**

- 717 products across 6 categories
- Wide price range with competitive average pricing
- 631 products on sale (31% average discount)
- 30 collections, including Men's/Women's shoes
- Theme: merchant copy `Allbirds` v1.51.1, base theme `Dawn`
- Review coverage: 9.9% of the sampled product pages (4.4★ average)
- 82% inventory availability
- Store launched: October 2019

**Time:** 58 seconds

### 🛠️ Technical Details

#### Requirements

- Valid Shopify store URL (e.g., `https://store.com` or `https://store.myshopify.com`)
- Store must be publicly accessible (not password-protected)

#### Detection Methods

**Apps Detection:**

1. HTML comments: `<!-- BEGIN app block: shopify://apps/... -->`
2. CDN scripts: `cdn.shopify.com/s/files/.../[app].js`
3. Known signatures: CSS classes, data attributes, script patterns

**Theme Detection:**

- `Shopify.theme` JavaScript object
- Theme name, ID, schema version

**Shop Metadata:**

- `Shopify.shop`, `Shopify.country`, `Shopify.currency`, `Shopify.locale`

**Review Sampling:**

- Up to 15 real product pages per store, read directly
- Judge.me, Yotpo, Stamped, Loox, Okendo badges plus JSON-LD `aggregateRating`

### 📚 Frequently Asked Questions

**Q: Can I use this for ongoing price monitoring?**
A: This is designed for one-time deep analysis. For ongoing monitoring, use a product scraper scheduled daily.

**Q: How many apps can it detect?**
A: 20+ major app categories with 40+ specific apps. Detection rate varies by store's implementation.

**Q: What if a store has 10,000+ products?**
A: Actor scrapes ALL products. Larger stores take longer (2-5 minutes) but still output one comprehensive record.

**Q: Can I integrate with n8n/Zapier/Make?**
A: Yes! Output is flat JSON, perfect for automation tools. One record per store = easy to map.

**Q: Does it work with custom Shopify themes?**
A: Yes! Works with both Shopify themes and custom implementations as long as the store uses Shopify's product API.

**Q: What if a store blocks scraping?**
A: Enable Apify proxies in settings (free with Apify subscription). HTTP API access is rarely blocked.

**Q: Can I get historical data?**
A: No, this provides current snapshot only. For trends, run periodically and compare results.

**Q: Is this legal?**
A: Yes. All data is publicly accessible via Shopify's standard product JSON feeds and public HTML.

### 🎓 Examples & Tutorials

#### Use Case 1: Competitor Analysis

```bash
## Analyze top 5 competitors
{
  "storeUrls": [
    { "url": "https://competitor1.com" },
    { "url": "https://competitor2.com" },
    { "url": "https://competitor3.com" },
    { "url": "https://competitor4.com" },
    { "url": "https://competitor5.com" }
  ]
}
```

**Compare:**

- Pricing strategies (average prices, discount rates)
- Tech stack adoption (which apps they use)
- Catalog sizes (product/variant counts)
- Review strategies (coverage %, ratings)

#### Use Case 2: Agency Prospecting

```bash
## Find stores missing key apps
## 1. Run actor on target stores
## 2. Filter results where apps_count < 5
## 3. Reach out offering app installation services
```

#### Use Case 3: Market Research

```bash
## Analyze entire niche (e.g., sustainable fashion)
## 1. Identify 20-50 stores in niche
## 2. Run actor on all stores
## 3. Export to Excel/Google Sheets
## 4. Calculate industry benchmarks:
##    - Average price points
##    - Most common apps
##    - Review coverage standards
##    - Typical catalog sizes
```

### 🔗 Integration Examples

#### Google Sheets

1. Run actor on Apify
2. Download dataset as CSV
3. Import to Google Sheets
4. Use pivot tables for analysis

#### n8n Workflow

```
Trigger (Schedule/Webhook)
  → Apify Actor Node (Store Intelligence)
  → Filter Node (apps_count < 3)
  → Email Node (Send opportunities to sales team)
```

#### Zapier Integration

1. Trigger: New row in Google Sheets (competitor URLs)
2. Action: Run Apify actor
3. Action: Add results to Airtable
4. Action: Notify Slack channel

### 📞 Support & Feedback

**Questions or issues?**
Email: via Apify

**Feature requests?**
We're actively improving detection of:

- More Shopify apps (currently 40+, expanding to 100+)
- Additional business metrics
- Historical data comparison
- Multi-currency support

### 🏷️ Tags

`shopify` `ecommerce` `competitor-analysis` `market-research` `business-intelligence` `app-detector` `theme-detector` `pricing-intelligence` `base-theme-detector` `dropshipping` `store-analytics` `tech-stack` `shopify-scraper` `store-intelligence`

### 📈 Changelog

**v1.2** (2026-09-08)

- Removed discovery mode. It listed stores from the cro.media directory, and that site has put its
  store data behind a block that returns HTTP 403 for every request, so the mode could no longer
  return any stores. Rather than leave a mode that fails on every run, it is gone: this actor now
  analyses the store URLs you supply. Saved tasks still set to discovery get an explanation instead
  of a failed run.
- The `mode`, `category`, `maxStores` and `maxPages` inputs are gone with it. `storeUrls` is now
  required. Nothing changes for runs that already supplied store URLs.

**v1.1** (2026-07-27)

- Removed `total_estimated_sales` and `avg_sales_per_product`. Both were extrapolations built on an
  assumed 2% review rate applied to a top-of-catalogue sample, so they were guesses, not measurements.
  A Shopify storefront does not publish order volume, so no honest replacement exists.
- Removed `discovery_category` (it only ever echoed the `category` you typed into the input) and
  `shopify_theme_directory` (a third-party mirror that was empty on every URL-mode row).
- Added `theme_base_name`: the parent Shopify theme the storefront is built on, read from the
  storefront itself.
- Review coverage, average reviews per product and average rating are now collected on every run.
  The `extractReviews` toggle is gone; passing it does nothing.

**v1.0.0** (2025-10-27)

- Initial release
- Complete product catalog scraping
- Tech stack detection (themes + apps)
- Pricing and inventory analysis
- Review sampling on real product pages
- Top products identification
- Pay-per-event pricing model

***

### 🔗 Explore More of Our Actors

#### 🏢 Business Intelligence

The full catalogue is at [apify.com/webdatalabs](https://apify.com/webdatalabs).

#### 🛒 E-commerce

| Actor | Description |
|-------|-------------|
| [Shopify Scraper Pro](https://apify.com/webdatalabs/shopify-product-scraper) | Extract complete Shopify product data with variants and sales estimates |
| [Etsy Scraper Pro](https://apify.com/webdatalabs/etsy-scraper-pro) | Fast Etsy product scraper with ratings, reviews, and shop data |
| [Amazon Reviews Scraper](https://apify.com/webdatalabs/amazon-reviews-scraper) | Extract Amazon customer reviews for sentiment analysis |

***

***

**Built with ❤️ by \[WebDataLabs]\(mailto:via Apify)**

*Perfect for e-commerce entrepreneurs, dropshippers, market researchers, agencies, and anyone needing competitive intelligence on Shopify stores.*

# Actor input Schema

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

The Shopify stores to analyse. Every URL gets exactly one record: full product catalogue, installed apps, theme, pricing strategy and review coverage. Use the store's home page, e.g. https://gymshark.com (Discovery mode was removed in v1.2 - the store directory it read now blocks all access, so supply the stores you want here.)

## `proxyConfiguration` (type: `object`):

Route requests through a proxy. Leave off for normal use. Turn it on with the RESIDENTIAL group if you see rows with status "rate_limited" - every retry then comes from a different residential IP, which gets past Shopify's per-IP throttling. Note: the shared datacenter group is often already throttled by Shopify and can make things worse.

## Actor input object example

```json
{
  "storeUrls": [
    {
      "url": "https://www.allbirds.com"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `store_overview` (type: `string`):

No description

# 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": [
        {
            "url": "https://www.allbirds.com"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("webdatalabs/shopify-store-intelligence").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": [{ "url": "https://www.allbirds.com" }] }

# Run the Actor and wait for it to finish
run = client.actor("webdatalabs/shopify-store-intelligence").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": [
    {
      "url": "https://www.allbirds.com"
    }
  ]
}' |
apify call webdatalabs/shopify-store-intelligence --silent --output-dataset

```

## MCP server setup

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

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/IE1MgWPTzfDDDmrV7/builds/9M1qG5vrbWTBCv4Hs/openapi.json
