# WooCommerce Variant & Price Mismatch Checker (`flaming_toffee/woocommerce-variant-price-check`) Actor

Check whether WooCommerce product links open the advertised variant and price. Get a readable report, CSV and screenshots. 50 links: $2; minimum $0.49. No installation. Free synthetic demo. Unsupported pages are marked unverified.

- **URL**: https://apify.com/flaming_toffee/woocommerce-variant-price-check.md
- **Developed by:** [Eduard Puga](https://apify.com/flaming_toffee) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.01 / billing unit (50 links = $2 total)

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

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

## What's an Apify Actor?

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

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

## How to integrate an Actor?

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

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

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

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

# README

## WooCommerce Variant & Price Mismatch Checker

**Does your advertised product link open the right variant at the expected price?** Variant Check opens the original WooCommerce link in a browser and produces an evidence report for technical PPC freelancers, ecommerce teams and agencies.

**Start with 10 links for $0.49 USD total. 50 links cost $2. Execution usage is included.** Public beta 0.1.6.

### Start free. No account required.

- [Check your feed CSV for free](https://variant-check-beta.eduard323522.chatgpt.site/free-woocommerce-feed-check.html): local CSV/TSV preparation, no account or upload. Find missing audit fields, optionally extract variant parameters already present in URLs, review and download audit input. It does not visit your store or compare live prices.
- [See a sample evidence report](https://variant-check-beta.eduard323522.chatgpt.site/report.html): five clearly labelled synthetic cases.
- [PPC agency workflow and client handover checklist](https://variant-check-beta.eduard323522.chatgpt.site/woocommerce-ppc-audit.html): choose a small compatibility batch, keep independent feed expectations and route findings to the right investigation.
- [Try the synthetic demo in Apify](https://apify.com/flaming_toffee/woocommerce-variant-price-check/examples/diagnose-woocommerce-variant-and-price-mismatches-demo): no report charge. Requires an Apify account; does not test your own store. Owner development runs can consume platform credits.

### One link, three different diagnoses

Your feed expects blue / M at 29.90 EUR. These are illustrative examples, not customer results.

| Captured evidence | Finding |
|---|---|
| Blue M, visible amount 34.90 | Numeric price discrepancy with identity confirmed |
| Red L | Wrong variant; its price is not compared as though it were blue M |
| A 25–40 range without exact evidence | Needs verification, not a pass or an invented mismatch |

The report supplies captured evidence and the next check to investigate. It does not repair feeds, synchronize product data or guarantee Google Merchant Center approval.

### Clear totals, gradual volume pricing

| Submitted links | Total USD |
|---:|---:|
| 10 | 0.49 |
| 50 | 2.00 |
| 200 | 5.00 |
| 500 | 9.50 |
| 1,000 | 14.50 |

Minimum $0.49 per run. First 50 links: $0.04 each; next 150: $0.02; next 300: $0.015; next 500: $0.01. Each rate applies only within its band; round the total up to a cent. For example, 501 links cost $9.51. [Calculate the exact price](https://variant-check-beta.eduard323522.chatgpt.site/#pricing).

**The $0.01 displayed in Apify is one billing unit, not a full audit.** A $2 report uses 200 one-cent units. No Variant Check subscription; execution usage is included. Apify account and platform rules apply, including subsequent dataset operations.

The saved report is charged only if at least 80% of submitted links produce decisive native variant/amount checks. Below that threshold, no report event is charged. Currency and exact-SKU markup can remain unverified even when native checks qualify. Inaccessible links count in both the quote and coverage denominator.

### Run a first batch of your own links

1. Use the [free CSV preflight](https://variant-check-beta.eduard323522.chatgpt.site/free-woocommerce-feed-check.html) or [full input builder](https://variant-check-beta.eduard323522.chatgpt.site/prepare.html) with original advertised URLs, current amounts, currency and exact variant expectations.
2. Review the expectations and confirm you are authorized to test the stores. Start with a small real batch to check compatibility.
3. Open **Input → JSON** in Apify and paste the downloaded input. Its demo field is false for a live audit.
4. Review the quote and set a maximum run cost covering the total. An insufficient budget stops before capture.
5. After completion, open **Readable report**, or download CSV, JSON and optional screenshots from run storage.

The original advertised URL stays intact. No dropdowns are changed, products added to a cart or writes made to your store.

#### Input example

Replace the placeholder with your authorized store data.

```json
{
  "demo": false,
  "authorized": true,
  "screenshots": true,
  "records": [{
    "id": "tee-blue-m",
    "url": "https://YOUR-STORE.example/product/tee/?attribute_pa_size=m",
    "price": "29.90",
    "currency": "EUR",
    "sku": "TEE-M",
    "attributes": {"attribute_pa_size": "m"}
  }]
}
```

Use an exact variant SKU, numeric variation ID or expected attribute option values such as m, not guessed display labels. A feed row ID is not automatically a SKU. Export the currently advertised sale amount after checking sale dates. Use a decimal price string and a three-letter currency. Never submit credentials, cookies or private customer data.

**Keep the expectation independent:** if your feed expects M but the URL requests L, use M from your feed to investigate the discrepancy. URL-derived attributes describe what the link requests, not proof of the intended variant.

### What is checked?

Four separate checks: selected variant, visible numeric amount, currency and exact-variant Product/Offer markup. Incomplete evidence stays explicitly unverified. [See a worked diagnosis](https://variant-check-beta.eduard323522.chatgpt.site/woocommerce-price-mismatch.html).

Standard native WooCommerce variation forms on public HTTPS pages are supported. Custom swatches/configurators, multiple forms, login prices, checkout totals, shipping/tax calculations and regional discounts can remain unsupported. Security challenges and access denials are not bypassed. Read-only captures block cart/login actions and unrelated writes; incomplete page-security verification is explicit and excludes billing eligibility.

Up to 1,000 links per run; larger exports must be split, restarting pricing bands and the minimum. Pages run sequentially. A supported 50-link test took about six minutes; this is a demo measurement, not a speed guarantee. For large batches set the timeout to 32,500 seconds. The 1,000-row capacity was tested synthetically, not on 1,000 distinct live products. Results describe one capture; theme, location, cookies and timing can affect behavior.

### Questions and support

**Does it fix rejected products?** It supplies evidence for investigation. Feed corrections and Google approval decisions are separate.

**Does the free CSV check confirm correct prices?** No. It checks supplied input fields and prepares records. Live page comparison happens separately in Apify.

**Can a charged report contain unknowns?** Yes. Currency and markup can remain unverified. The billing threshold concerns decisive native variant/amount evidence.

**What if a charge is interrupted?** Inspect BILLING and BILLING_ATTEMPT. Partial or uncertain charge attempts are not retried automatically.

For support, use **Issues** with version, run ID and a sanitized authorized example. Store customization is outside support scope. Compatibility was tested on a small set of public demos; real buyer payments have not been validated.

Created by Eduard Puga, creator of Variant Check. Independent of Google, WooCommerce and Automattic.

# Actor input Schema

## `demo` (type: `boolean`):

Show a report using synthetic fixtures. Does not visit merchants and does not charge a report event.

## `authorized` (type: `boolean`):

Required for live mode: confirm permission to test every submitted store.

## `records` (type: `array`):

1–1000 links. Graduated pricing: first 50 at $0.04/link; next 150 at $0.02; next 300 at $0.015; next 500 at $0.01. Minimum $0.49 USD; round total up to a cent. Examples: 50=$2.00, 200=$5.00, 500=$9.50, 1000=$14.50. Charged after report delivery only if at least 80% decisive native checks. Review maximum run cost before starting. Each row requires id, public HTTPS url, price, currency and exact variant identity.

## `screenshots` (type: `boolean`):

Save screenshots alongside the report to help review each finding.

## `timeoutMs` (type: `integer`):

Maximum collection time per page; an incomplete page remains unverified.

## Actor input object example

```json
{
  "demo": true,
  "authorized": false,
  "records": [
    {
      "id": "example-1",
      "url": "https://example.com/product/tee/?attribute_pa_size=m",
      "price": "29.90",
      "currency": "EUR",
      "sku": "TEE-M",
      "attributes": {
        "attribute_pa_size": "m"
      }
    }
  ],
  "screenshots": true,
  "timeoutMs": 15000
}
```

# Actor output Schema

## `report` (type: `string`):

No description

## `csv` (type: `string`):

No description

## `json` (type: `string`):

No description

## `billing` (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 = {
    "records": [
        {
            "id": "example-1",
            "url": "https://example.com/product/tee/?attribute_pa_size=m",
            "price": "29.90",
            "currency": "EUR",
            "sku": "TEE-M",
            "attributes": {
                "attribute_pa_size": "m"
            }
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("flaming_toffee/woocommerce-variant-price-check").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 = { "records": [{
            "id": "example-1",
            "url": "https://example.com/product/tee/?attribute_pa_size=m",
            "price": "29.90",
            "currency": "EUR",
            "sku": "TEE-M",
            "attributes": { "attribute_pa_size": "m" },
        }] }

# Run the Actor and wait for it to finish
run = client.actor("flaming_toffee/woocommerce-variant-price-check").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 '{
  "records": [
    {
      "id": "example-1",
      "url": "https://example.com/product/tee/?attribute_pa_size=m",
      "price": "29.90",
      "currency": "EUR",
      "sku": "TEE-M",
      "attributes": {
        "attribute_pa_size": "m"
      }
    }
  ]
}' |
apify call flaming_toffee/woocommerce-variant-price-check --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,flaming_toffee/woocommerce-variant-price-check"
        }
    }
}
```

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/vDa202szKc7EGUvw8/builds/JmWV4T8kSjcERrzyg/openapi.json
