# Shopify Scraper — Products, Collections, Reviews & Emails (`khadinakbar/shopify-all-in-one-scraper`) Actor

Extract Shopify products, collections, reviews & merchant emails from any store. No login required. CRM-ready JSON. Export scraped data, run via API, schedule and monitor runs, or integrate with other tools.

- **URL**: https://apify.com/khadinakbar/shopify-all-in-one-scraper.md
- **Developed by:** [Khadin Akbar](https://apify.com/khadinakbar) (community)
- **Categories:** E-commerce, Lead generation, Automation
- **Stats:** 3 total users, 1 monthly users, 75.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 product scrapeds

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## 🛍️ Shopify All-in-One Scraper — Products, Collections, Reviews & Emails

Extract **products, collections, customer reviews, and merchant contact info** from any Shopify store in a single run. No login, no API keys, no cookies required. Uses Shopify's public JSON endpoints for maximum reliability and speed.

The only Shopify scraper that combines all four data types in one actor — and charges you separately for each so you only pay for what you use.

---

### What It Extracts

#### Products (`record_type: "product"`)
Every product from any Shopify store's public catalog:

- **Pricing**: current price, compare-at price, discount percentage calculated automatically
- **Variants**: every size/color/option combination with per-variant price, stock status, SKU, barcode, and inventory quantity
- **Images**: all product image URLs in order
- **Metadata**: title, vendor/brand, product type, tags, full description (HTML stripped to plain text)
- **Stock**: real-time availability status per variant
- **Dates**: created, updated, and published timestamps

#### Collections (`record_type: "collection"`)
All product categories/collections from the store:

- Collection ID, handle, and title
- Description (HTML stripped)
- Hero image URL
- Product count per collection

#### Customer Reviews (`record_type: "review"`)
Reviews extracted directly from the store's review app. Supports auto-detection of:

- **Judge.me** — the most widely used Shopify review app
- **Yotpo** — enterprise-grade review platform

Extracted fields: reviewer name, title, body, star rating (1–5), date, verified buyer status, helpful votes.

#### Merchant Contact Info (`record_type: "contact"`)
Live-scraped contact data from each store's public pages (not a static database):

- Business email and phone number from the contact page
- Social media links: Instagram, Facebook, Twitter/X, TikTok, YouTube
- Store name, currency, and language
- Physical address (where publicly displayed)

---

### Why Use This Over Alternatives?

| Feature | This Actor | webdatalabs ($0.01/product) | xmiso (static DB) |
|---------|-----------|---------------------------|-------------------|
| Products + variants | ✅ | ✅ | ❌ |
| Collections | ✅ | ❌ | ❌ |
| Customer reviews | ✅ | ✅ | ❌ |
| Live merchant emails | ✅ | ❌ | Static/stale |
| Social media links | ✅ | ❌ | ❌ |
| Price per product | **$0.003** | $0.01 | N/A |
| No login required | ✅ | ✅ | ✅ |
| Batch scraping | ✅ | ✅ | ❌ |

---

### Input Parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `storeUrls` | string[] | `["allbirds.com"]` | Shopify store URLs or domains to scrape |
| `scrapeProducts` | boolean | `true` | Extract all products |
| `scrapeCollections` | boolean | `false` | Extract product collections |
| `scrapeReviews` | boolean | `false` | Extract customer reviews (Judge.me, Yotpo) |
| `scrapeContactInfo` | boolean | `false` | Extract merchant email, phone, social links |
| `maxProductsPerStore` | integer | `100` | Max products per store (0 = full catalog) |
| `maxReviewsPerProduct` | integer | `50` | Max reviews per product |

#### Example Input

```json
{
  "storeUrls": ["gymshark.com", "allbirds.com"],
  "scrapeProducts": true,
  "scrapeCollections": true,
  "scrapeReviews": false,
  "scrapeContactInfo": true,
  "maxProductsPerStore": 500
}
````

***

### Output Format

All records share a common schema with a `record_type` discriminator field. Filter by `record_type` to get the data you need.

#### Product Record Example

```json
{
  "record_type": "product",
  "store_url": "https://www.allbirds.com",
  "store_domain": "www.allbirds.com",
  "product_id": "7234567890",
  "product_handle": "mens-wool-runners",
  "product_url": "https://www.allbirds.com/products/mens-wool-runners",
  "title": "Men's Wool Runners",
  "vendor": "Allbirds",
  "product_type": "Shoes",
  "tags": ["mens", "running", "wool", "sustainable"],
  "description": "The world's most comfortable shoes, made with superfine merino wool.",
  "price": 120.0,
  "compare_at_price": null,
  "discount_percentage": null,
  "currency": "USD",
  "available": true,
  "variants_count": 14,
  "variants": [
    {
      "variant_id": "41234567890",
      "title": "8 / Medium Grey",
      "sku": "M-WR-8-MGR",
      "price": 120.0,
      "available": true,
      "option1": "8",
      "option2": "Medium Grey"
    }
  ],
  "image_url": "https://cdn.shopify.com/s/files/1/...",
  "sku": "M-WR-8-MGR",
  "review_platform": "yotpo",
  "review_rating": 4.8,
  "review_count": 2341,
  "created_at": "2023-06-01T00:00:00Z",
  "scraped_at": "2026-04-03T10:30:00.000Z",
  "source_url": "https://www.allbirds.com/products.json?limit=250&page=1"
}
```

#### Contact Record Example

```json
{
  "record_type": "contact",
  "store_url": "https://www.gymshark.com",
  "store_domain": "www.gymshark.com",
  "merchant_name": "Gymshark",
  "merchant_email": "hello@gymshark.com",
  "merchant_phone": "+44 1234 567890",
  "store_currency": "GBP",
  "store_language": "en",
  "social_instagram": "https://www.instagram.com/gymshark/",
  "social_facebook": "https://www.facebook.com/gymshark",
  "social_twitter": "https://twitter.com/gymshark",
  "social_tiktok": "https://www.tiktok.com/@gymshark",
  "social_youtube": "https://www.youtube.com/@Gymshark",
  "contact_page_url": "https://www.gymshark.com/pages/contact",
  "scraped_at": "2026-04-03T10:30:00.000Z"
}
```

***

### Pricing

This actor uses **Pay-Per-Event** pricing — you only pay for what you actually extract.

| Event | Price | Notes |
|-------|-------|-------|
| Product scraped | **$0.003** | Per product, all variants included |
| Collection scraped | **$0.001** | Per collection |
| Review scraped | **$0.001** | Per individual review |
| Contact info scraped | **$0.005** | Per store (one charge covers all fields) |

#### Cost Examples

| Task | Units | Cost |
|------|-------|------|
| Scrape 100 products | 100 products | $0.30 |
| Scrape 1,000 products | 1,000 products | $3.00 |
| Full catalog of 5,000 products | 5,000 products | $15.00 |
| Scrape 50 stores for contact info | 50 stores | $0.25 |
| 1,000 reviews | 1,000 reviews | $1.00 |

Apify takes 20% platform fee — you keep 80% of revenue generated.

***

### Use Cases

**Competitor Price Monitoring** — Track pricing changes across competitor Shopify stores. Run on a schedule and monitor discount patterns, new arrivals, and sold-out products.

**Dropshipping Product Research** — Identify trending products, winning price points, and inventory levels across Shopify stores in your niche.

**B2B Lead Generation** — Scrape merchant emails, phones, and social links from Shopify stores in specific categories. Build targeted outreach lists for apps, services, or agencies targeting Shopify merchants.

**Market Research** — Analyze full product catalogs to understand market pricing, category structures, and brand positioning.

**Review Sentiment Analysis** — Extract customer reviews for NLP analysis, product improvement insights, or competitive intelligence.

**Price Comparison Sites** — Aggregate product data from multiple Shopify stores to power a comparison engine.

***

### Using via API

```javascript
const ApifyClient = require('apify-client');
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });

const run = await client.actor('khadinakbar/shopify-all-in-one-scraper').call({
  storeUrls: ['gymshark.com', 'allbirds.com'],
  scrapeProducts: true,
  scrapeContactInfo: true,
  maxProductsPerStore: 200,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
const products = items.filter(r => r.record_type === 'product');
const contacts = items.filter(r => r.record_type === 'contact');
console.log(`Got ${products.length} products and ${contacts.length} contacts`);
```

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("khadinakbar/shopify-all-in-one-scraper").call(run_input={
    "storeUrls": ["gymshark.com"],
    "scrapeProducts": True,
    "maxProductsPerStore": 500,
})

items = client.dataset(run["defaultDatasetId"]).list_items().items
products = [r for r in items if r["record_type"] == "product"]
```

***

### How It Works

This actor uses Shopify's **public JSON API endpoints** that every Shopify store exposes:

- `/products.json?limit=250&page=N` — paginated product catalog
- `/collections.json?limit=250` — all collections
- `/meta.json` — store metadata (name, currency, language)
- `/pages/contact` and `/contact` — contact information
- `/` — homepage (social links)

For reviews, it detects the installed review app from script tags on the store's homepage, then calls the review platform's public widget API.

No browser automation is used — all requests are plain HTTP, making this actor **fast, lightweight, and highly reliable** (99%+ success rate on public stores).

***

### Limitations

- Only works with **public Shopify stores** (password-protected stores are skipped with a clear log message)
- Reviews require the store to use Judge.me or Yotpo; other platforms (Stamped, Okendo, Loox) detected but not yet scraped — contact us to request
- Inventory quantities may show `-1` on stores that don't track inventory levels by variant
- Contact email/phone availability depends on the store displaying it publicly

***

### Frequently Asked Questions

**Does this require a Shopify account or API key?**
No. This actor uses Shopify's public JSON API, which every Shopify store exposes. No login, cookies, or API keys needed.

**Can I scrape multiple stores in one run?**
Yes. Add as many store URLs as you need to `storeUrls`. Each store is processed sequentially.

**How do I scrape a full product catalog?**
Set `maxProductsPerStore` to `0` for unlimited scraping.

**What if a store is password-protected?**
The actor detects this automatically and skips the store with a warning in the logs. Only public storefront data is accessible.

**Why is my contact email sometimes missing?**
Not every store displays their contact email publicly. Some stores only show a contact form. The actor will still return all other available data.

**Works great with:** [🔗 Google Maps Scraper](https://apify.com/khadinakbar) | [📊 LinkedIn Jobs Scraper](https://apify.com/khadinakbar/linkedin-jobs-scraper)

***

Export scraped data, run the scraper via API, schedule and monitor runs, or integrate with other tools using Apify's platform features.

# Actor input Schema

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

Use this field when the user provides a Shopify store URL or domain name. Accepts full URLs (https://gymshark.com) or bare domains (gymshark.com). Add multiple stores for batch scraping. Use this for specific known stores. Do NOT use this for keyword-based discovery — this actor scrapes stores you already know.

## `scrapeProducts` (type: `boolean`):

Use this when the user wants product data: titles, prices, discounts, variants, stock status, images, SKUs, or barcodes. Enables product extraction from /products.json. Charged at $0.003 per product.

## `scrapeCollections` (type: `boolean`):

Use this when the user wants product categories, collections, or store taxonomy. Extracts all collection handles, titles, descriptions, and product counts from /collections.json. Charged at $0.001 per collection.

## `scrapeReviews` (type: `boolean`):

Use this when the user wants customer reviews, star ratings, verified buyer status, or review text. Auto-detects review platform (Judge.me, Yotpo). Each review is charged separately at $0.001. Use maxReviewsPerProduct to control volume.

## `scrapeContactInfo` (type: `boolean`):

Use this when the user wants merchant emails, phone numbers, or social media links for B2B outreach, lead generation, or sales prospecting. Extracts live contact data from the store's pages. Charged at $0.005 per store (one record per store). This gives the highest ROI for sales teams.

## `maxProductsPerStore` (type: `integer`):

Maximum number of products to extract from each store. Set to 0 for unlimited (scrapes full catalog). Shopify returns products newest-first. Default 100 for quick tests; use higher values or 0 for full catalog extraction.

## `maxReviewsPerProduct` (type: `integer`):

Maximum reviews to fetch per product when scrapeReviews is enabled. Applies per product, not total. Start with 50 for a sample; use higher values for full sentiment analysis.

## Actor input object example

```json
{
  "storeUrls": [
    "https://www.allbirds.com"
  ],
  "scrapeProducts": true,
  "scrapeCollections": false,
  "scrapeReviews": false,
  "scrapeContactInfo": false,
  "maxProductsPerStore": 100,
  "maxReviewsPerProduct": 50
}
```

# Actor output Schema

## `results` (type: `string`):

All scraped records — filter by record\_type: 'product', 'collection', 'review', or 'contact'.

# 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": [
        "https://www.allbirds.com"
    ],
    "maxProductsPerStore": 100,
    "maxReviewsPerProduct": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/shopify-all-in-one-scraper").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": ["https://www.allbirds.com"],
    "maxProductsPerStore": 100,
    "maxReviewsPerProduct": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("khadinakbar/shopify-all-in-one-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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": [
    "https://www.allbirds.com"
  ],
  "maxProductsPerStore": 100,
  "maxReviewsPerProduct": 50
}' |
apify call khadinakbar/shopify-all-in-one-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=khadinakbar/shopify-all-in-one-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Shopify Scraper — Products, Collections, Reviews & Emails",
        "description": "Extract Shopify products, collections, reviews & merchant emails from any store. No login required. CRM-ready JSON. Export scraped data, run via API, schedule and monitor runs, or integrate with other tools.",
        "version": "1.0",
        "x-build-id": "wbbALxgAltedKPqPa"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/khadinakbar~shopify-all-in-one-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-khadinakbar-shopify-all-in-one-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/khadinakbar~shopify-all-in-one-scraper/runs": {
            "post": {
                "operationId": "runs-sync-khadinakbar-shopify-all-in-one-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/khadinakbar~shopify-all-in-one-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-khadinakbar-shopify-all-in-one-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "storeUrls": {
                        "title": "Shopify Store URLs / Domains",
                        "type": "array",
                        "description": "Use this field when the user provides a Shopify store URL or domain name. Accepts full URLs (https://gymshark.com) or bare domains (gymshark.com). Add multiple stores for batch scraping. Use this for specific known stores. Do NOT use this for keyword-based discovery — this actor scrapes stores you already know.",
                        "default": [
                            "https://www.allbirds.com"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "scrapeProducts": {
                        "title": "Scrape Products",
                        "type": "boolean",
                        "description": "Use this when the user wants product data: titles, prices, discounts, variants, stock status, images, SKUs, or barcodes. Enables product extraction from /products.json. Charged at $0.003 per product.",
                        "default": true
                    },
                    "scrapeCollections": {
                        "title": "Scrape Collections",
                        "type": "boolean",
                        "description": "Use this when the user wants product categories, collections, or store taxonomy. Extracts all collection handles, titles, descriptions, and product counts from /collections.json. Charged at $0.001 per collection.",
                        "default": false
                    },
                    "scrapeReviews": {
                        "title": "Scrape Customer Reviews",
                        "type": "boolean",
                        "description": "Use this when the user wants customer reviews, star ratings, verified buyer status, or review text. Auto-detects review platform (Judge.me, Yotpo). Each review is charged separately at $0.001. Use maxReviewsPerProduct to control volume.",
                        "default": false
                    },
                    "scrapeContactInfo": {
                        "title": "Scrape Merchant Contact Info",
                        "type": "boolean",
                        "description": "Use this when the user wants merchant emails, phone numbers, or social media links for B2B outreach, lead generation, or sales prospecting. Extracts live contact data from the store's pages. Charged at $0.005 per store (one record per store). This gives the highest ROI for sales teams.",
                        "default": false
                    },
                    "maxProductsPerStore": {
                        "title": "Max Products per Store",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of products to extract from each store. Set to 0 for unlimited (scrapes full catalog). Shopify returns products newest-first. Default 100 for quick tests; use higher values or 0 for full catalog extraction.",
                        "default": 100
                    },
                    "maxReviewsPerProduct": {
                        "title": "Max Reviews per Product",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum reviews to fetch per product when scrapeReviews is enabled. Applies per product, not total. Start with 50 for a sample; use higher values for full sentiment analysis.",
                        "default": 50
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
