# eBay Sold Price Appraiser — Real Market Value & Comps (`jdepablos/ebay-sold-price-appraiser`) Actor

One call = one appraisal. Real market value from confirmed eBay sold listings: robust stats (median, percentiles, trend, liquidity) + cleaned comps. Built for AI agents and resellers.

- **URL**: https://apify.com/jdepablos/ebay-sold-price-appraiser.md
- **Developed by:** [Juan de Pablos](https://apify.com/jdepablos) (community)
- **Categories:** E-commerce, Automation
- **Stats:** 1 total users, 0 monthly users, 93.9% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $25.00 / 1,000 item appraisals

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

## eBay Sold Price Appraiser — Real Market Value & Comps

**One call = one appraisal.** Give it any item — get its real market value from confirmed eBay **sold** listings: robust statistics (median, percentiles, trend, liquidity) plus a clean list of comparable sales. Built for AI agents, resellers, and collectors.

Most eBay scrapers dump raw listings on you. This Actor answers the question you actually have: **"What is this item worth right now?"**

### What you get per item

```json
{
  "query": "Game Boy Micro console",
  "marketplace": "ebay.es",
  "valuation": {
    "n": 183,
    "currency": "EUR",
    "median": 216.52,
    "meanTrimmed": 219.4,
    "p10": 128.05, "p25": 165.0, "p75": 262.0, "p90": 315.8,
    "min": 61.0, "max": 480.0,
    "medianItemOnly": 195.0,
    "soldPerDay": 2.6,
    "daysSpan": 88,
    "trendPct": 4.2,
    "confidence": "high"
  },
  "comps": [
    { "title": "...", "price": 219.74, "shipping": 21.48, "total": 241.22,
      "soldDate": "2026-07-03", "condition": "Usado", "location": "Estados Unidos",
      "bestOffer": false, "url": "https://www.ebay.es/itm/..." }
  ],
  "meta": { "compsAnalyzed": 183, "filteredOut": { "junkTitle": 46, "olderThanDaysBack": 11 } }
}
```

### Why the numbers are trustworthy

- **Sold prices only** — confirmed sales (`LH_Sold`), never asking prices from active listings.
- **Comp cleaning that collectors need**: lots/bundles, "for parts / not working", box-only, manual-only, repro/replica listings are filtered out before statistics (Spanish + English + German/Italian/French terms). They routinely poison medians by 30%+. You can disable it (`strictClean: false`).
- **Best-offer transparency**: eBay shows the *asking* price for best-offer sales, not the accepted amount. We flag every such comp (`bestOffer: true`) and you can exclude them from stats (`excludeBestOffer: true`). Most tools silently mix them in.
- **Robust statistics**: median and percentile band (p10–p90) instead of a naive average; 10% trimmed mean; confidence level based on sample size and dispersion.
- **Liquidity & trend**: `soldPerDay` tells you how fast the item moves; `trendPct` compares the newer half of sales vs the older half.

### Use cases

- **AI agents**: a single tool call answers "what's it worth?" — clean JSON, no post-processing needed.
- **Resellers / arbitrage**: check the real resale value (+ shipping totals) before you buy.
- **Collectors**: track what your grail actually sells for, in your marketplace and currency.
- **Insurance / trade-ins**: defensible market-value snapshots with comps attached.

### Marketplaces

`ebay.com`, `ebay.es`, `ebay.co.uk`, `ebay.de`, `ebay.fr`, `ebay.it`, `ebay.ca`, `ebay.com.au` — prices and dates parsed in local formats, one currency per appraisal (no mixed-currency stats).

### Input

| Field | Description |
|---|---|
| `query` | Item to appraise, e.g. `"Game Boy Micro console"` |
| `items` | Batch mode: up to 25 items per run, each with optional per-item overrides |
| `marketplace` | One of the 8 sites above (default `ebay.com`) |
| `condition` | `any` / `new` / `used` |
| `priceMin` / `priceMax` | Clip obvious mispriced outliers |
| `daysBack` | 1–90 days of sales history (eBay limit) |
| `maxComps` | How many comps to include in the output (stats always use all analyzed) |
| `strictClean` | Filter lots/parts/repro junk (default on) |
| `excludeBestOffer` | Drop best-offer sales from stats (default off, always flagged) |

### Use with AI agents (MCP)

This Actor is exposed as a tool on the [Apify MCP Server](https://mcp.apify.com) — connect once and your agent can appraise items directly:

```json
{
  "mcpServers": {
    "ebay-sold-price-appraiser": {
      "url": "https://mcp.apify.com?tools=jdepablos/ebay-sold-price-appraiser",
      "headers": { "Authorization": "Bearer <APIFY_TOKEN>" }
    }
  }
}
```

Claude Code one-liner:

```bash
claude mcp add --transport http ebay-appraiser "https://mcp.apify.com?tools=jdepablos/ebay-sold-price-appraiser" --header "Authorization: Bearer <APIFY_TOKEN>"
```

Prefer plain HTTP? A public [OpenAPI spec](https://api.apify.com/v2/acts/jdepablos~ebay-sold-price-appraiser/builds/default/openapi.json) is available for the run-sync API.

### Pricing

Pay per event: **one flat fee per appraised item**, comps included. Failed items are never charged.

### FAQ

**How many sales does one appraisal analyze?** Up to 240 most-recent sold listings per item (one SERP page at maximum density), filtered to your `daysBack` window.

**What if there's little data?** You still get the stats with `confidence: "low"` and the comps found — rare items are honestly labeled, not padded.

**Does it work for any category?** Yes. The junk filters are tuned for collectibles/electronics but are generic; disable `strictClean` for categories where "lot" is the normal unit of sale.

### More data tools by this developer

- [Second-hand Deal Scanner ES — Vinted/Wallapop/Milanuncios deals vs eBay sold](https://apify.com/jdepablos/second-hand-deal-scanner-es)
- [Spanish Company Feed (BORME) — daily registry acts as JSON](https://apify.com/jdepablos/borme-company-feed)
- [Spain Public Auctions (BOE) — judicial auctions with market comparison](https://apify.com/jdepablos/spain-boe-auctions)
- [Trademark Watch (TMview) — new filings & opposition deadlines](https://apify.com/jdepablos/trademark-watch-tmview)

# Actor input Schema

## `query` (type: `string`):

What you want a market value for, e.g. 'Game Boy Micro console'. For multiple items use 'items' instead.

## `items` (type: `array`):

Up to 25 items per run. Each entry: {"query": "..."} plus any per-item overrides (marketplace, condition, ...).

## `marketplace` (type: `string`):

Marketplace to pull sold listings from (determines currency).

## `condition` (type: `string`):

Only count sales of items in this condition.

## `priceMin` (type: `integer`):

Filter out sales below this amount.

## `priceMax` (type: `integer`):

Filter out sales above this amount.

## `daysBack` (type: `integer`):

Only count sales completed within this window (max 90 — eBay limit).

## `maxComps` (type: `integer`):

How many comparable sales to include in the result (stats always use all analyzed comps).

## `includeComps` (type: `boolean`):

Include the list of comparable sales in the output (not just the valuation stats).

## `strictClean` (type: `boolean`):

Drop lots/bundles/for-parts/repro/box-only listings that poison valuations (recommended).

## `proxy` (type: `object`):

eBay blocks datacenter IPs — residential proxy is strongly recommended (default). Country is auto-matched to the marketplace unless you set one.

## `excludeBestOffer` (type: `boolean`):

eBay shows the asking price (not the accepted offer) for best-offer sales. Exclude them from stats for maximum accuracy.

## `browserFallback` (type: `boolean`):

If eBay blocks plain HTTP (403/bot challenge — standard on EU marketplaces since Jul 2026), retry with a real browser. Slower and uses more memory, but keeps EU appraisals working. Disable for lowest cost on ebay.com.

## `monitorMode` (type: `boolean`):

For scheduled smoke tests: when the source blocks every attempt (anti-bot weather, not a code fault), the run exits SUCCEEDED with a clear status message instead of FAILED, and notifies monitorEmail. Code faults (unrecognized markup) still fail the run.

## `monitorEmail` (type: `string`):

Email to notify (via apify/send-mail) when monitor mode detects a fully blocked source. On Apify free plans this must be the account owner email.

## Actor input object example

```json
{
  "query": "Game Boy Micro console",
  "marketplace": "ebay.com",
  "condition": "any",
  "daysBack": 90,
  "maxComps": 60,
  "includeComps": true,
  "strictClean": true,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  },
  "excludeBestOffer": false,
  "browserFallback": true,
  "monitorMode": false
}
```

# 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 = {
    "query": "Game Boy Micro console",
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("jdepablos/ebay-sold-price-appraiser").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 = {
    "query": "Game Boy Micro console",
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("jdepablos/ebay-sold-price-appraiser").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 '{
  "query": "Game Boy Micro console",
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call jdepablos/ebay-sold-price-appraiser --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/DefIO4VOKPxcIVieM/builds/j3tHrpT5iSHmRZLsF/openapi.json
