# Amazon eBay Best Buy Newegg Price Comparison by ASIN or UPC (`fayoussef/multi-marketplace-price-checker`) Actor

Paste ASINs, UPCs, model numbers or product names and get what that exact product sells for on Amazon, eBay, Best Buy and Newegg. AI verifies every match, so accessories, bundles and refurbs never inflate your numbers. Highest, lowest and typical price with a source URL each.

- **URL**: https://apify.com/fayoussef/multi-marketplace-price-checker.md
- **Developed by:** [youssef farhan](https://apify.com/fayoussef) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 product checkeds

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

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#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

### What does Multi-Marketplace Price Checker do?

Multi-Marketplace Price Checker takes a list of **ASINs, UPCs, model numbers or plain product names** and returns **what that exact product actually sells for right now on [Amazon](https://www.amazon.com), [eBay](https://www.ebay.com), [Best Buy](https://www.bestbuy.com) and [Newegg](https://www.newegg.com)**. For every marketplace you get the **highest, lowest and typical price, plus a clickable source URL behind each number**, so any figure can be traced back to the offer it came from.

The hard part of cross-marketplace price comparison is not fetching pages, it is knowing that the thing you found is the same product. A search for one mouse returns its dock, its cable, a two-pack bundle, a refurbished unit and three different colourways. This Actor runs **every candidate listing through an AI exact-match filter** before any price is reported, so accessories, bundles, variants and open-box units never contaminate your market price.

Runs on Apify, so you get a REST API, scheduling, webhooks, monitoring, residential proxy rotation and exports to JSON, CSV, Excel or Google Sheets without writing any of it yourself.

### Why use this Amazon, eBay, Best Buy and Newegg price comparison tool?

- **Retail and online arbitrage sourcing.** Check a sourcing list of hundreds of ASINs in one run and see instantly where each product resells highest.
- **Reseller repricing.** Know the going rate across four marketplaces before you set your own price, instead of guessing from one.
- **Liquidation and wholesale buying.** Price a manifest of UPCs before you bid on the pallet.
- **Brand and distributor price monitoring.** Watch what your product sells for across the channels you do not control.
- **Competitive market research.** Track price spread per channel to find where a category is over- or under-priced.
- **Catalogue enrichment.** Resolve a bare UPC or model number into a full product identity with brand, title, specs and Amazon URL.

### How to use Multi-Marketplace Price Checker

1. Click **Try for free**.
2. Paste your identifiers into the **Products** field, one per line. Mix ASINs, UPCs, model numbers and product names freely.
3. Optionally uncheck marketplaces you do not care about, and set your **US ZIP code** so Amazon prices reflect the market you sell into.
4. Click **Start**. Watch the log as each product resolves.
5. Open the **Output** tab and export as JSON, CSV, Excel or HTML, or pull it from the API.

No proxy setup, no API keys and no configuration are required. Paid runs include a US residential network; the AI matching works out of the box with no key of your own.

### Input

Set everything in the **Input** tab. Only **Products** is required.

| Field | What it does |
|---|---|
| `products` | Identifiers to look up, one per line. ASIN, UPC/EAN, model number, or product name. |
| `marketplaces` | Which of Amazon, eBay, Best Buy and Newegg to price against. Fewer means faster and cheaper. |
| `model` | The AI model that verifies exact product matches. The cheap fast models are plenty. |
| `zipCode` | US delivery ZIP. Amazon prices and availability vary by location. |
| `maxProducts` | Stop after N products. 0 checks everything. |
| `concurrency` | How many products to check at once. |
| `openrouterApiKey` | Optional. Bring your own OpenRouter key to be billed by OpenRouter instead of through Apify. |
| `proxyConfiguration` | Optional override. Paid runs already include a US residential network. |

```json
{
    "products": ["B0DGHMNQ5Z", "097855174789", "Sony WH-1000XM5"],
    "marketplaces": ["Amazon", "eBay", "BestBuy", "Newegg"],
    "zipCode": "10001",
    "concurrency": 5
}
```

### Output

One row per product. Download as JSON, HTML, CSV or Excel, or read it straight from the API.

```json
{
    "input": "B09HM94VDS",
    "title": "Logitech MX Master 3S Wireless Performance Mouse",
    "brand": "Logitech",
    "upc": "097855172538",
    "model": "910-006556",
    "amazonUrl": "https://www.amazon.com/dp/B09HM94VDS",
    "amazonPrice": 99.99,
    "amazonStatus": "buy-box price found",
    "amazonHighest": 119.99,
    "amazonMostFrequent": 99.99,
    "amazonMostFrequentUrl": "https://www.amazon.com/dp/B09HM94VDS",
    "amazonOfferCount": 4,
    "ebayHighest": 109.95,
    "ebayLowest": 74.5,
    "ebayMostFrequent": 89.99,
    "ebayMostFrequentUrl": "https://www.ebay.com/itm/123456789012",
    "ebayOfferCount": 11,
    "bestBuyMostFrequent": 99.99,
    "bestBuyOfferCount": 1,
    "neweggMostFrequent": 104.99,
    "neweggOfferCount": 2,
    "marketplacesWithOffers": 4,
    "notes": null
}
```

### Data fields

| Field | Description |
|---|---|
| `input` | The identifier you supplied for this row. |
| `title`, `brand`, `model`, `upc` | Resolved product identity, from the Amazon detail page. |
| `description` | Key specifications, pipe separated. |
| `amazonUrl` | Canonical Amazon product page the reference data came from. |
| `amazonPrice` | The product's own featured-offer (buy box) price. |
| `amazonStatus` | Why the buy-box price is what it is: found, unavailable, no featured offer, 404, no match for the identifier, or blocked. |
| `<market>Highest` / `HighestUrl` | Highest verified price on that marketplace, and the offer it came from. |
| `<market>Lowest` / `LowestUrl` | Lowest verified price, and its offer. |
| `<market>MostFrequent` / `MostFrequentUrl` | The typical going rate: the modal whole-dollar price across verified offers. Use this one. |
| `<market>OfferCount` | How many offers were confirmed to be the same product. |
| `marketplacesWithOffers` | How many selected marketplaces returned at least one verified offer. |
| `notes` | Per-row warnings, such as a marketplace that could not be reached. |

`<market>` is one of `amazon`, `ebay`, `bestBuy`, `newegg`.

**A null price is not a zero price.** Null means the product was never verified on that marketplace, either because nothing matched or because the site could not be reached. `0` is never used as a stand-in, and an unreachable site is always named in `notes`. That distinction is what keeps the data safe to make buying decisions on.

### How much does it cost to compare prices across marketplaces?

You are charged per product **found**, plus a small amount per marketplace that returns a verified price, so a run costs in proportion to the answers you actually get.

**Lookups that find nothing are free.** If an identifier cannot be resolved to a product, because the ASIN is dead, the barcode matches nothing, or the page could not be loaded, you are not charged for it at all. The row still appears in your output so you can see which identifier failed and why, but it costs you nothing.

AI model usage is billed separately by Apify's OpenRouter integration, not by this Actor, so you are never charged twice for the same call. Supply your own `openrouterApiKey` and that usage moves to your own OpenRouter account instead.

**Free plan** runs are capped at **2 products per run** and use Apify Proxy residential on your own account. Paid runs lift the cap and include a bundled US residential network at no extra cost. [Upgrade your Apify plan](https://apify.com/pricing?fpr=youssef) to unlock the full list.

### Tips for accurate results

- **Prefer ASINs and UPCs over product names.** They resolve to exactly one product; a name can resolve to the wrong variant.
- **Set the ZIP code to your actual market.** Amazon quotes different prices and availability by delivery location.
- **Raise concurrency for long lists, lower it if sites start refusing.** The Actor backs off and retries on its own, and logs every retry, but a gentler rate finishes more reliably.
- **Trust `MostFrequent` over `Highest` for pricing decisions.** The highest offer is often an outlier seller; the modal price is the real market.
- **A 404 is confirmed, not assumed.** Amazon serves 404s to exits it is throttling, so a product is only reported as not found once several separate exits agree. A single bad response never turns a live product into a missing one.
- **Interrupted runs resume.** Progress is checkpointed per product, so a migrated or restarted run continues instead of re-checking and re-charging for products already done.

### FAQ

#### How do I compare Amazon prices to eBay in bulk?

Paste your ASINs into the Products field and select both Amazon and eBay. Each row returns both marketplaces' typical, highest and lowest verified price side by side.

#### Can I look up products by UPC instead of ASIN?

Yes. UPC, EAN, manufacturer model number and plain product names all work in the same field. Non-ASIN inputs are resolved through Amazon search first, then priced normally.

#### How does it avoid matching the wrong product?

Every candidate listing goes through an AI filter that keeps only exact brand and model matches, and explicitly rejects bundles, accessories, different variants, and refurbished or open-box units. If that filter cannot run for a marketplace, that marketplace reports nothing rather than an unverified price.

#### Which AI model should I pick?

The default, **GPT-4o mini**, was chosen by benchmarking candidates against real eBay result sets. It was the most precise at rejecting listings that are not your exact product, and it costs roughly $0.003 per product checked. Cheaper models let noticeably more junk through: on a Sony WH-1000XM5 test one accepted a $130 and a $486 listing, neither of which is a new unit of that product.

#### Why is a price null instead of a number?

Because nothing was verified there. Either no listing matched the product, or the marketplace could not be reached. Check the `notes` field, which names any marketplace that failed.

#### Why are all my prices empty with an "AI access unavailable" error?

Your Apify plan cannot start the public Actor that provides the built-in AI matching. Either upgrade your Apify plan, or fill the **OpenRouter API key** input to use your own OpenRouter account. Without one of the two, nothing can be verified and every price stays empty.

#### Do I need an OpenRouter or proxy API key?

Normally no: AI matching runs through Apify's built-in access and paid runs include a residential network. The one exception is an Apify plan that cannot start public Actors, which is what the built-in AI access is; on those plans you must supply your own OpenRouter key.

#### Can I run this on a schedule?

Yes. Use Apify's scheduler to re-run your product list daily or weekly, and connect a webhook or integration to push the results into Sheets, Slack, or your own database.

#### Can an AI agent call this Actor?

Yes. It is callable from any AI agent through the Apify MCP server, and its input and output schemas are published so an agent can discover the fields without documentation.

#### Is scraping marketplace prices legal?

This Actor collects only publicly available listing data, with no login and no personal information. Publicly accessible price data is generally considered legal to collect, but you are responsible for how you use it and should seek your own legal advice for your use case.

### Support

Found a bug or a marketplace that stopped parsing? Open a ticket on the **Issues** tab and it gets looked at.

💼 Need a custom version, another marketplace, or a different output shape? Email **youssefarhan24@gmail.com**
🌐 Got a site you want scraped? [Suggest it here](https://automationbyexperts.com/apify)
⚡ [Upgrade your Apify plan](https://apify.com/pricing?fpr=youssef) to lift the free-tier cap.

# Actor input Schema

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

What to look up, one per line. Accepts an Amazon ASIN (B0DGHMNQ5Z), a UPC or EAN barcode, a manufacturer model number, or just the product name. Each line produces one row.

## `marketplaces` (type: `array`):

Which marketplaces to price the product on. Fewer marketplaces means faster and cheaper runs.

## `model` (type: `string`):

The model that verifies each search result is the exact same product, not an accessory, bundle or different variant. The cheap fast models are more than good enough for this; the price shown is per million tokens.

## `zipCode` (type: `string`):

Delivery ZIP used for Amazon pricing. Amazon shows different prices and availability by location, so set this to the market you actually sell into.

## `maxProducts` (type: `integer`):

Stop after this many products. Leave at 0 to check every line you entered.

## `concurrency` (type: `integer`):

How many products to check at once. Raise it for large lists; lower it if marketplaces start refusing requests.

## `openrouterApiKey` (type: `string`):

Optional. Bring your own OpenRouter key and calls go straight to OpenRouter, billed by them on your own OpenRouter account instead of through Apify. Leave empty to use the built-in access, which needs no key at all.

## `apifyToken` (type: `string`):

Optional. Only needed when running this Actor outside the Apify platform. On the platform it is supplied automatically.

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

Optional override. Paid runs already include a US residential network and need nothing here. Free runs use Apify Proxy residential on your own account.

## Actor input object example

```json
{
  "products": [
    "B0DGHMNQ5Z",
    "Sony WH-1000XM5"
  ],
  "marketplaces": [
    "Amazon",
    "eBay",
    "BestBuy",
    "Newegg"
  ],
  "model": "openai/gpt-4o-mini",
  "zipCode": "10001",
  "maxProducts": 0,
  "concurrency": 5,
  "proxyConfiguration": {}
}
```

# Actor output Schema

## `prices` (type: `string`):

Every product checked, with the typical, highest and lowest verified price per marketplace and a source URL behind each one. Switch between the Price comparison and Product identifiers views in the table.

# 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": [
        "B0DGHMNQ5Z",
        "Sony WH-1000XM5"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("fayoussef/multi-marketplace-price-checker").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": [
        "B0DGHMNQ5Z",
        "Sony WH-1000XM5",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("fayoussef/multi-marketplace-price-checker").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": [
    "B0DGHMNQ5Z",
    "Sony WH-1000XM5"
  ]
}' |
apify call fayoussef/multi-marketplace-price-checker --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/wpjCmduSad8iDrx2B/builds/7CoKaAPeYFfzQJ5gl/openapi.json
