# Ecommerce Price List Analyzer (`theendfear/factory-ecommerce-price-list-analyzer-4574eb03`) Actor

Analyze user-provided ecommerce price-list records into deterministic grouped price intelligence without scraping.

- **URL**: https://apify.com/theendfear/factory-ecommerce-price-list-analyzer-4574eb03.md
- **Developed by:** [Marco S.](https://apify.com/theendfear) (community)
- **Categories:** E-commerce, Business
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.00 / 1,000 analysis record emitteds

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## Ecommerce Price List Analyzer

Analyze user-provided product or offer price records into grouped price intelligence. The Actor does not autonomously discover websites, scrape stores, use proxies, require logins, or call paid external APIs.

### What It Does

This Actor turns current ecommerce price-list, offer, or competitor records into one deterministic analysis row per comparable product. It is meant for records you already collected or exported, not for autonomous website discovery.

### Who It Is For

Pricing teams, ecommerce operators, resellers, catalog managers, and analysts who need to compare active listed prices across merchants, regions, channels, or internal catalogs.

### Input

Provide `records` with product or item names, prices, optional currency, and optional source fields. Use `groupKey`, `priceField`, and `dedupeKey` to adapt the analysis to your own data.

### Output

Each dataset row is one analyzed group with offer count, min/median/mean/max price, spread percentage, outlier count, deterministic score, recommended action, score explanation, and source record indexes.

### How It Works

The Actor validates records, normalizes product names and numeric prices, removes duplicates using group, currency, price, and source key, and groups remaining rows by the configured item field. For each group it calculates min, median, mean, max, spread percentage, and IQR-based outlier count. The 0..100 score is explainable: more valid offers add coverage confidence, wider price spread raises review priority, and detected outliers reduce confidence. Recommended action is `prioritize_review` at 80+, `review` at 65+, and `monitor` below 65.

### Example

```json
{
  "records": [
    {"product": "Widget A", "price": "$10.00", "currency": "USD", "url": "https://a.example/w-a"},
    {"product": "Widget A", "price": 12, "currency": "USD", "url": "https://b.example/w-a"},
    {"product": "Widget B", "price": 20, "currency": "USD", "url": "https://a.example/w-b"}
  ],
  "groupKey": "product",
  "priceField": "price",
  "dedupeKey": "url"
}
```

Example output row:

```json
{
  "groupKey": "widget a",
  "itemName": "widget a",
  "currency": "usd",
  "offerCount": 2,
  "minPrice": 10,
  "medianPrice": 11,
  "meanPrice": 11,
  "maxPrice": 12,
  "spreadPct": 18.1818,
  "outlierCount": 0,
  "score": 70,
  "recommendedAction": "review",
  "ScoreExplanation": ["offer_count:2", "spread_pct:18.18", "outliers:0", "coverage:+10", "spread:+10"],
  "sourceRecordIndexes": [0, 1]
}
```

### Pricing

PAY\_PER\_EVENT event `analysis_record_emitted` is charged once per emitted grouped analysis row. Invalid records, duplicates, skipped rows, and charge-limited records are not billable.

### Limitations

Currency symbols and codes are normalized for grouping only; this Actor does not perform FX conversion.

It does not distinguish completed sales from active listings, does not fetch live competitor pages, and does not infer demand. It analyzes only the records supplied in the input.

### Integration

Run it directly with JSON input, from an Apify task, or downstream from another Actor that produces a dataset of price records. Results are written to the default dataset and the run summary is written to the `OUTPUT` key-value store record.

### Differentiation

Use Ecommerce Price List Analyzer when you have active ecommerce offer or catalog records and need grouped price spread, outliers, and review priorities. Use Marketplace Sold Comps Analyzer when your records are completed marketplace sales with sale dates and conditions.

# Actor input Schema

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

Array of user-provided product, offer, or competitor price records.

## `groupKey` (type: `string`):

Field used to group comparable offers.

## `priceField` (type: `string`):

Field containing numeric price values.

## `dedupeKey` (type: `string`):

Optional field used with group and price to remove duplicate offers.

## `maxRecords` (type: `integer`):

Maximum number of input records to process in one run.

## Actor input object example

```json
{
  "groupKey": "product",
  "priceField": "price",
  "dedupeKey": "url",
  "maxRecords": 5000
}
```

# Actor output Schema

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

Grouped price analysis rows in the default dataset.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("theendfear/factory-ecommerce-price-list-analyzer-4574eb03").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("theendfear/factory-ecommerce-price-list-analyzer-4574eb03").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 '{}' |
apify call theendfear/factory-ecommerce-price-list-analyzer-4574eb03 --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,theendfear/factory-ecommerce-price-list-analyzer-4574eb03"
        }
    }
}

```

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/GGMGjMMcVx1SRF5KW/builds/ICldaZy88rrQgZnXT/openapi.json
