# Price Comparison Tool — Compare Prices Across Major Retailers (`junipr/price-comparison`) Actor

Compare product prices across Amazon, Walmart, Target, Best Buy, and Home Depot. Find the best deals, track price differences, and identify savings. Search by product name or provide specific URLs.

- **URL**: https://apify.com/junipr/price-comparison.md
- **Developed by:** [junipr](https://apify.com/junipr) (community)
- **Categories:** E-commerce
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

$6.50 / 1,000 product compareds

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/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

## Multi-Store Price Comparison

### Introduction

**Multi-Store Price Comparison** lets you compare product prices across five of the largest US retailers — Amazon, Walmart, Target, Best Buy, and Home Depot — in a single actor run. No more running five separate scrapers and manually joining the results in a spreadsheet.

Provide a product name, a UPC/EAN barcode, or a direct product URL, and the actor searches every configured store simultaneously. For each store it returns the current price, availability status, shipping cost, estimated delivery window, product rating, and review count — all normalized into a single, unified output schema. The `bestPrice` field immediately tells you which store is cheapest and how much you'd save by buying there instead of the most expensive option.

Primary use cases:
- **E-commerce price monitoring** — track competitor pricing on specific SKUs daily or weekly
- **Retail arbitrage** — find products cheaper in one store to resell on another
- **Deal-finding apps** — surface the best price for users at the moment of intent
- **Procurement** — compare vendor pricing on tools, equipment, or office supplies
- **Affiliate marketing** — always link to the lowest-price retailer for maximum conversion

Key differentiators vs the competition: multi-store in one actor run, UPC barcode search for exact matching, unified output schema with no data joining required, and PPE pricing so you only pay for results you get.

---

### Why Use This Actor

Running five separate per-store scrapers is slow, expensive, and painful to maintain. Subscription price APIs charge $50–500/month regardless of usage. This actor gives you a better result for a fraction of the cost.

| Feature | This Actor | 5 Separate Scrapers | Oxylabs / Bright Data | PriceAPI.com |
|---------|-----------|---------------------|-----------------------|--------------|
| Stores per query | 5 simultaneously | 1 each | 1 at a time | Varies |
| Pricing | $6.50 / 1,000 products (PPE) | Pay per each | $49–500/mo subscription | $50–250/mo |
| Unified output schema | Yes | No (manual join) | No | Yes |
| UPC barcode search | Yes | Varies | No | Yes |
| Zero config | Yes | No | API key required | API key required |
| Apify ecosystem | Full | Partial | None | None |

A single product comparison costs $0.0065 — less than a cent. Daily monitoring of 50 products costs under $0.33/day. Weekly monitoring of 500 products costs $3.25/week.

---

### How to Use

#### Zero-Config Quick Start

Just provide a product name — all five stores are searched with default settings:

```json
{
  "products": [{ "name": "AirPods Pro 2" }]
}
````

#### UPC Barcode Search (Exact Match)

UPC search finds the exact product SKU on each store, producing higher match confidence scores:

```json
{
  "products": [{ "upc": "194253397175" }]
}
```

#### URL-Based Search

Start from a known product page. The actor extracts product details and searches other stores:

```json
{
  "products": [
    { "urls": ["https://www.amazon.com/dp/B0D1XD1ZV3"] }
  ]
}
```

#### Batch Comparison

Compare multiple products in a single run (max 100):

```json
{
  "products": [
    { "name": "Sony WH-1000XM5" },
    { "name": "iPad Air M2" },
    { "upc": "194253397175" },
    { "name": "DeWalt 20V drill" }
  ],
  "stores": ["amazon", "walmart", "bestbuy"]
}
```

#### Via Apify API

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

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });

const run = await client.actor('junipr/price-comparison').call({
  products: [{ name: 'Kindle Paperwhite' }],
  stores: ['amazon', 'walmart', 'target'],
  includeShippingDetails: true,
  includeReviews: true,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0].bestPrice); // { store: 'amazon', price: 139.99, savings: 20.00, ... }
```

***

### Input Configuration

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `products` | array | `[{"name": "AirPods Pro 2"}]` | Products to compare. Each object has `name`, `upc`, or `urls`. Max 100. |
| `stores` | array | All 5 stores | Stores to include: `amazon`, `walmart`, `target`, `bestbuy`, `homedepot`. |
| `amazonDomain` | string | `amazon.com` | Amazon regional domain (amazon.com, amazon.co.uk, amazon.ca, amazon.de). |
| `includeThirdPartySellers` | boolean | `false` | Include marketplace/third-party seller listings. |
| `includeUsedCondition` | boolean | `false` | Include used, renewed, or refurbished listings. |
| `matchStrictness` | string | `moderate` | `strict` = exact model only, `moderate` = same product OK, `loose` = similar products. |
| `maxResultsPerStore` | integer | `1` | Max product matches per store (1–5). Useful with loose matching. |
| `includeOutOfStock` | boolean | `true` | Include out-of-stock products with availability marked. |
| `includeShippingDetails` | boolean | `true` | Include shipping cost and estimated delivery. |
| `includeReviews` | boolean | `true` | Include rating and review count per store. |
| `proxyConfiguration` | object | Apify residential | Residential proxy configuration. Required for Amazon and Walmart. |

**Common configurations:**

- **Quick price check:** `products: [{ "name": "..." }]` — defaults cover everything
- **Exact match via barcode:** `products: [{ "upc": "..." }]`, `matchStrictness: "strict"`
- **Batch monitoring:** `products: [50 items]`, `stores: ["amazon", "walmart"]`

***

### Output Format

Each dataset item corresponds to one product query:

```json
{
  "productQuery": { "name": "AirPods Pro 2", "upc": null, "inputUrls": [] },
  "bestPrice": {
    "store": "walmart",
    "price": 189.99,
    "url": "https://www.walmart.com/ip/...",
    "savings": 59.01,
    "savingsPercent": 23.7
  },
  "comparisons": [
    {
      "store": "amazon",
      "productName": "Apple AirPods Pro (2nd Generation)",
      "productUrl": "https://www.amazon.com/dp/...",
      "price": 219.99,
      "originalPrice": 249.00,
      "currency": "USD",
      "onSale": true,
      "saleDiscount": 12,
      "availability": "in_stock",
      "condition": "new",
      "seller": "Amazon",
      "isDirectRetailer": true,
      "shipping": { "freeShipping": true, "shippingCost": 0, "estimatedDelivery": "Tomorrow", "primeEligible": true },
      "reviews": { "rating": 4.7, "reviewCount": 85432 },
      "productDetails": { "brand": "Apple", "model": null, "upc": null, "imageUrl": "https://...", "category": null },
      "matchConfidence": 0.92,
      "scrapedAt": "2026-03-11T14:22:00.000Z",
      "errors": []
    }
  ],
  "priceRange": { "lowest": 189.99, "highest": 249.00, "average": 214.50, "storesCompared": 4 },
  "scrapedAt": "2026-03-11T14:22:01.000Z"
}
```

The `matchConfidence` score (0–1) tells you how closely the found product matches your query. Scores above 0.8 indicate strong matches. The `priceRange` summarizes the spread across all stores compared.

***

### Tips and Advanced Usage

**Setting up scheduled monitoring:** Use Apify's built-in scheduler to run the actor on a cron schedule (daily, hourly). Each run creates a new dataset — query multiple datasets to track price history over time.

**UPC codes vs name search:** UPC codes produce exact matches with higher confidence scores. Find UPCs on the product box, Amazon's product detail page, or barcode databases like barcodelookup.com. Always prefer UPC over name search when the exact product matters.

**Interpreting match confidence:** A confidence of 0.9+ means the actor found the same product. 0.6–0.9 is a probable match (same model, possibly different bundle or color). Below 0.5 means the store returned a different product — use `strict` matchStrictness to filter these out.

**Building a price dashboard in Google Sheets:** Use the Apify Google Sheets integration or fetch dataset items via the Apify API and write them to a sheet using Apps Script. Schedule daily runs + daily sheet updates for a live price tracker.

**Setting up price alert webhooks:** Configure a webhook on your actor run to POST to your server when a run completes. Parse `bestPrice` in the webhook payload and send alerts when a product drops below your target price.

**Tracking price trends:** Each comparison item includes a `scrapedAt` timestamp. Store multiple run datasets and join on `productQuery.name` + `store` to build price-over-time charts.

***

### Pricing

This actor uses **Pay-Per-Event (PPE)** pricing at **$6.50 per 1,000 products compared** ($0.0065 each).

Pricing includes all platform compute costs — no hidden fees.

You are only charged when a product comparison is successfully produced — meaning at least one store returned a price. Products not found on any store are never charged.

| Scenario | Products | Monthly Cost |
|----------|----------|-------------|
| Single check | 1 | $0.0065 |
| Weekly monitoring (50 products) | ~200/mo | $1.30/mo |
| Daily monitoring (50 products) | ~1,500/mo | $9.75/mo |
| E-commerce catalog (500 products, weekly) | ~2,000/mo | $13.00/mo |
| Retail arbitrage (100 products, daily) | ~3,000/mo | $19.50/mo |

Compare to Oxylabs ($49–500/month subscription) or Bright Data ($500+/month) — for most use cases this actor costs 95%+ less.

***

### FAQ

#### Which stores are supported?

Amazon (US, UK, Canada, Germany, and other regional domains), Walmart, Target, Best Buy, and Home Depot. All five are searched by default. Use the `stores` input to limit to specific stores.

#### Can I compare prices for any product?

Yes, as long as the product is sold by at least one of the five supported retailers. Works best for consumer electronics, appliances, tools, and household goods. Niche or specialty products may only appear on one or two stores.

#### How does it match the same product across different stores?

Each store's search results are matched against your query using a word-overlap similarity score. The `matchConfidence` field (0–1) shows how closely each found product matches. Use `matchStrictness: "strict"` to only keep high-confidence matches, or `"loose"` to include similar products. UPC-based searches produce the most reliable cross-store matches.

#### Does it work for products outside the US?

For Amazon, set `amazonDomain` to a regional domain (e.g., `amazon.co.uk`, `amazon.de`). Walmart, Target, Best Buy, and Home Depot are US-only retailers and always use US pricing. For non-US markets, set `stores: ["amazon"]` with your regional domain.

#### Can I track price changes over time?

Yes. Each Apify actor run creates a new dataset. Schedule the actor to run daily or weekly, then query multiple datasets by date to see price history. Use Apify's dataset API to retrieve historical runs programmatically.

#### What if a product is out of stock?

By default (`includeOutOfStock: true`), out-of-stock products are included with `availability: "out_of_stock"`. The last known price is shown if the retailer displays it. Set `includeOutOfStock: false` to exclude them from comparisons entirely.

#### Does it include marketplace/third-party seller prices?

By default, only direct retailer prices are returned (Amazon's Buy Box, Walmart sold/shipped by Walmart, etc.). Set `includeThirdPartySellers: true` to include marketplace seller listings where available.

#### How accurate are the prices?

Prices are point-in-time snapshots taken at the moment of scraping. Each comparison includes a `scrapedAt` timestamp. Flash sales, cart discounts, and store-specific coupons may not be reflected. Always verify before purchasing.

***

### Legal Notice

This actor accesses publicly available product pages. No login credentials or authentication are bypassed. Users are responsible for compliance with each retailer's Terms of Service. Price data is used for informational comparison purposes only. Product images are not stored — only image URLs are returned.

***

### Related Actors

- [Google Shopping Scraper](https://apify.com/junipr/google-shopping) — Scrape Google Shopping results for broader market price discovery

# Actor input Schema

## `products` (type: `array`):

Products to compare. Each item can have a name, upc, or urls field. Max 100 products per run. Example: \[{"name": "AirPods Pro 2"}, {"upc": "194253397175"}, {"urls": \["https://www.amazon.com/dp/B0D1XD1ZV3"]}]

## `stores` (type: `array`):

Which stores to include in the price comparison. Valid values: amazon, walmart, target, bestbuy, homedepot

## `amazonDomain` (type: `string`):

Amazon regional domain for pricing. Examples: amazon.com, amazon.co.uk, amazon.ca, amazon.de.

## `includeThirdPartySellers` (type: `boolean`):

Include third-party/marketplace seller prices in addition to direct retail prices.

## `includeUsedCondition` (type: `boolean`):

Include used, renewed, or refurbished product listings.

## `matchStrictness` (type: `string`):

How strictly to match the same product across different stores. Strict = exact model match only. Moderate = same product, different packaging OK. Loose = similar products included.

## `maxResultsPerStore` (type: `integer`):

Maximum product matches to return per store. Min: 1, Max: 5. Useful with loose matching to see multiple options.

## `includeOutOfStock` (type: `boolean`):

Include products that are currently out of stock. Availability will be marked accordingly.

## `includePriceHistory` (type: `boolean`):

Attempt to include recent price history data where available.

## `includeShippingDetails` (type: `boolean`):

Include shipping cost and estimated delivery information per store.

## `includeReviews` (type: `boolean`):

Include product rating and review count per store.

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

Residential proxy is strongly recommended — Amazon, Walmart, and Target have anti-bot protection. Defaults to Apify residential proxy (requires paid Apify plan). Free-plan users can provide their own residential proxy URL.

## Actor input object example

```json
{
  "products": [
    {
      "name": "AirPods Pro 2"
    }
  ],
  "stores": [
    "amazon",
    "walmart",
    "target",
    "bestbuy",
    "homedepot"
  ],
  "amazonDomain": "amazon.com",
  "includeThirdPartySellers": false,
  "includeUsedCondition": false,
  "matchStrictness": "moderate",
  "maxResultsPerStore": 1,
  "includeOutOfStock": true,
  "includePriceHistory": false,
  "includeShippingDetails": true,
  "includeReviews": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

Actor output data.

# 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 = {
    "products": [
        {
            "name": "AirPods Pro 2"
        }
    ],
    "stores": [
        "amazon",
        "walmart",
        "target",
        "bestbuy",
        "homedepot"
    ],
    "amazonDomain": "amazon.com",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("junipr/price-comparison").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 = {
    "products": [{ "name": "AirPods Pro 2" }],
    "stores": [
        "amazon",
        "walmart",
        "target",
        "bestbuy",
        "homedepot",
    ],
    "amazonDomain": "amazon.com",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("junipr/price-comparison").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 '{
  "products": [
    {
      "name": "AirPods Pro 2"
    }
  ],
  "stores": [
    "amazon",
    "walmart",
    "target",
    "bestbuy",
    "homedepot"
  ],
  "amazonDomain": "amazon.com",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call junipr/price-comparison --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=junipr/price-comparison",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Price Comparison Tool — Compare Prices Across Major Retailers",
        "description": "Compare product prices across Amazon, Walmart, Target, Best Buy, and Home Depot. Find the best deals, track price differences, and identify savings. Search by product name or provide specific URLs.",
        "version": "1.0",
        "x-build-id": "cJinlmlMQo6Jjuzbc"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/junipr~price-comparison/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-junipr-price-comparison",
                "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/junipr~price-comparison/runs": {
            "post": {
                "operationId": "runs-sync-junipr-price-comparison",
                "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/junipr~price-comparison/run-sync": {
            "post": {
                "operationId": "run-sync-junipr-price-comparison",
                "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": {
                    "products": {
                        "title": "Products",
                        "type": "array",
                        "description": "Products to compare. Each item can have a name, upc, or urls field. Max 100 products per run. Example: [{\"name\": \"AirPods Pro 2\"}, {\"upc\": \"194253397175\"}, {\"urls\": [\"https://www.amazon.com/dp/B0D1XD1ZV3\"]}]",
                        "default": [
                            {
                                "name": "AirPods Pro 2"
                            }
                        ]
                    },
                    "stores": {
                        "title": "Stores to Compare",
                        "type": "array",
                        "description": "Which stores to include in the price comparison. Valid values: amazon, walmart, target, bestbuy, homedepot",
                        "items": {
                            "type": "string"
                        },
                        "default": [
                            "amazon",
                            "walmart",
                            "target",
                            "bestbuy",
                            "homedepot"
                        ]
                    },
                    "amazonDomain": {
                        "title": "Amazon Domain",
                        "type": "string",
                        "description": "Amazon regional domain for pricing. Examples: amazon.com, amazon.co.uk, amazon.ca, amazon.de.",
                        "default": "amazon.com"
                    },
                    "includeThirdPartySellers": {
                        "title": "Include Third-Party Sellers",
                        "type": "boolean",
                        "description": "Include third-party/marketplace seller prices in addition to direct retail prices.",
                        "default": false
                    },
                    "includeUsedCondition": {
                        "title": "Include Used/Renewed Listings",
                        "type": "boolean",
                        "description": "Include used, renewed, or refurbished product listings.",
                        "default": false
                    },
                    "matchStrictness": {
                        "title": "Match Strictness",
                        "enum": [
                            "strict",
                            "moderate",
                            "loose"
                        ],
                        "type": "string",
                        "description": "How strictly to match the same product across different stores. Strict = exact model match only. Moderate = same product, different packaging OK. Loose = similar products included.",
                        "default": "moderate"
                    },
                    "maxResultsPerStore": {
                        "title": "Max Results Per Store",
                        "minimum": 1,
                        "maximum": 5,
                        "type": "integer",
                        "description": "Maximum product matches to return per store. Min: 1, Max: 5. Useful with loose matching to see multiple options.",
                        "default": 1
                    },
                    "includeOutOfStock": {
                        "title": "Include Out-of-Stock",
                        "type": "boolean",
                        "description": "Include products that are currently out of stock. Availability will be marked accordingly.",
                        "default": true
                    },
                    "includePriceHistory": {
                        "title": "Include Price History",
                        "type": "boolean",
                        "description": "Attempt to include recent price history data where available.",
                        "default": false
                    },
                    "includeShippingDetails": {
                        "title": "Include Shipping Details",
                        "type": "boolean",
                        "description": "Include shipping cost and estimated delivery information per store.",
                        "default": true
                    },
                    "includeReviews": {
                        "title": "Include Reviews",
                        "type": "boolean",
                        "description": "Include product rating and review count per store.",
                        "default": true
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Residential proxy is strongly recommended — Amazon, Walmart, and Target have anti-bot protection. Defaults to Apify residential proxy (requires paid Apify plan). Free-plan users can provide their own residential proxy URL.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
