# GemRate eBay Card Sales Trends Scraper (`amrameng/gemrate-sales-trends-scraper`) Actor

Monthly eBay sales trends for trading cards from GemRate — sales volume, dollar flow, and month-over-month % change for sports players and Pokémon characters, with links to eBay, CardLadder, and MarketMovers. Pick a market, get structured JSON. Read-only.

- **URL**: https://apify.com/amrameng/gemrate-sales-trends-scraper.md
- **Developed by:** [Amram Englander](https://apify.com/amrameng) (community)
- **Categories:** E-commerce, Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 results

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

## GemRate eBay Card Sales Trends Scraper

Pull **monthly eBay sales trends for trading cards** from [GemRate](https://www.gemrate.com) — **sales volume, dollar flow, and month-over-month % change** for every tracked **sports player** and **Pokémon character**. Pick a market, run it, and get clean, structured JSON with links out to eBay, CardLadder, CardHedge, and MarketMovers. No login, no coding.

### What does the GemRate eBay Sales Trends Scraper do?

GemRate tracks how much each player's and character's cards are selling for on eBay, month by month. This Actor turns that into structured rows: for each subject you get **year-to-date totals, each month's sales dollars, the month-over-month change %, and the dollar flow** (absolute change), plus deep-links to the matching eBay search and the major price trackers.

It runs on the **Apify platform**, so you get a scheduler, a REST API, webhooks, integrations (Make, Zapier, Google Sheets, Slack), proxy rotation, and run monitoring out of the box. **No GemRate account is required** — the data is publicly accessible.

### Why use this scraper?

- 💵 **Spot what's hot (and cooling).** A single run shows every player/character ranked by sales, with the month-over-month swing — see momentum at a glance.
- 📈 **Market & investment research.** Track real demand in dollars, not guesses. Compare a name's YTD this year vs last year.
- 🛒 **Dealer & inventory decisions.** Buy into what's selling; avoid what's sliding.
- 🎥 **Content & newsletters.** "Charizard did $11.2M on eBay in January, up 38%" — instant, citable stats for videos, posts, and reports.
- ⚙️ **Automate it.** Schedule a monthly run and pipe the new numbers into a sheet, a dashboard, or a Slack alert.

It's a cheap, programmatic alternative to manual eBay-sold digging and paid market-tracker subscriptions.

### How to use it

1. Click **Try for free** / **Start**.
2. In the **Input** tab, choose a **Market** — **Sports cards** or **Pokémon**.
3. _(Optional)_ For sports, set a **sport filter** (e.g. `baseball-cards`), a **name filter** (e.g. `Ohtani`), or a **limit**.
4. Click **Save & Start**. When it finishes, open the **Output** tab and download as **JSON, CSV, Excel, or HTML** — or pull it via the API.

### Input

| Field | Type | Description |
|-------|------|-------------|
| `market` | string | `sports` or `pokemon`. Which sales-trends list to pull. |
| `salesCategory` | string | Sports only — dropdown to keep just one sport (Baseball, Football, Basketball, Hockey, Soccer, Boxing/Wrestling/MMA, Golf, Multi-sport, Minor League, Misc, Non-sport). Blank = all sports. |
| `search` | string | Keep only names containing this text (e.g. `Ohtani`, `Charizard`). |
| `limit` | integer | Cap the number of players/characters returned. `0` = all. |
| `proxyConfiguration` | object | Residential Apify Proxy (default, required to clear Cloudflare). |

#### Example input

```json
{
    "market": "sports",
    "salesCategory": "baseball-cards",
    "limit": 25
}
````

### Output

One row per player or character. The **Output** tab's **Sales trends** view shows the key columns; the full monthly history and links are in the JSON/CSV download. Real examples:

```json
{
    "market": "sports",
    "player": "Shohei Ohtani",
    "category": "baseball-cards",
    "ytd_2026": 53358847,
    "ytd_2025": 57967602,
    "jan_2026": 8196302,
    "jan_2026_change": 24.6,
    "jan_2026_flow": 1618474,
    "dec_2025": 6577828,
    "ebay_sales_history": "https://www.ebay.com/sch/...",
    "scrapedAt": "2026-06-02T00:00:00.000Z"
}
```

```json
{
    "market": "pokemon",
    "character": "Charizard",
    "ytd_2026": 57483563,
    "jan_2026": 11206886,
    "jan_2026_change": 38,
    "jan_2026_flow": 3084939,
    "dec_2025": 8121947
}
```

You can download the dataset in JSON, CSV, Excel, or HTML, or pull it via the API.

#### Data fields

| Field | Description |
|-------|-------------|
| `player` / `character` | The sports player (sports market) or Pokémon character (Pokémon market). |
| `category` | Sport/category for sports rows (e.g. `baseball-cards`). |
| `ytd_2026`, `ytd_2025` | Year-to-date eBay sales in USD, this year and last. |
| `<month>_<year>` | That month's eBay sales in USD (e.g. `jan_2026`). |
| `<month>_<year>_change` | Month-over-month change, in %. |
| `<month>_<year>_flow` | Month-over-month change, in absolute USD. |
| `ebay_sales_history`, `cl_sales_history`, `market_movers_sales_history`, `cardhedge_sales_history`, `ebay_product_research` | Deep-links to the matching eBay search and price trackers. |
| `scrapedAt` | When the row was captured. |

### How much does it cost to scrape GemRate sales trends?

A run fetches one page (sports or Pokémon) in a real browser to clear GemRate's Cloudflare protection, then parses it — a few seconds and a fraction of a compute unit at 2–4 GB, regardless of how many players come back (the whole list is on one page). On the Apify **free tier**, the monthly credits cover regular use. Cost scales with how many runs you schedule, not with result count.

### Tips & advanced options

- **Sports vs Pokémon are separate lists** — run each market once to get the full picture.
- **Find momentum:** download to a sheet and sort by `<latest-month>_change` to surface what's spiking.
- **Year-over-year:** compare `ytd_2026` vs `ytd_2025` for each name.
- **Monthly monitoring:** schedule the Actor on the 1st of each month and diff against last month's dataset.
- **Proxy:** keep the default residential Apify Proxy — the browser fetch needs it to clear Cloudflare.

### FAQ, disclaimers & support

**Do I need a GemRate or eBay account?** No. The data is public; just pick a market and run.

**How fresh is the data?** GemRate updates these monthly; the current month fills in as it progresses.

**Why are some months blank for a name?** A subject only has values for months it had tracked sales.

**Is this affiliated with GemRate or eBay?** No. This is an independent, read-only Actor built on GemRate's public site; the underlying endpoints are unofficial and may change. Use the data in line with GemRate's and eBay's Terms of Service and applicable law.

**Want a field or market added?** Open an issue on the Actor's **Issues** tab.

# Actor input Schema

## `market` (type: `string`):

Which sales-trends list to pull.

## `salesCategory` (type: `string`):

Optional. For the Sports market, keep only one sport category. Leave blank for all sports. Ignored for Pokémon.

## `search` (type: `string`):

Optional. Keep only players/characters whose name contains this text (case-insensitive), e.g. "Ohtani" or "Charizard".

## `limit` (type: `integer`):

Cap the number of players/characters returned. 0 = all.

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

GemRate is behind Cloudflare; a residential proxy is required to clear it from Apify's network. Residential Apify Proxy is the default and recommended.

## Actor input object example

```json
{
  "market": "sports",
  "limit": 0,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (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 = {
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("amrameng/gemrate-sales-trends-scraper").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 = { "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    } }

# Run the Actor and wait for it to finish
run = client.actor("amrameng/gemrate-sales-trends-scraper").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 '{
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call amrameng/gemrate-sales-trends-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=amrameng/gemrate-sales-trends-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "GemRate eBay Card Sales Trends Scraper",
        "description": "Monthly eBay sales trends for trading cards from GemRate — sales volume, dollar flow, and month-over-month % change for sports players and Pokémon characters, with links to eBay, CardLadder, and MarketMovers. Pick a market, get structured JSON. Read-only.",
        "version": "0.1",
        "x-build-id": "g98Xc7Fff3NS0JQdu"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/amrameng~gemrate-sales-trends-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-amrameng-gemrate-sales-trends-scraper",
                "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/amrameng~gemrate-sales-trends-scraper/runs": {
            "post": {
                "operationId": "runs-sync-amrameng-gemrate-sales-trends-scraper",
                "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/amrameng~gemrate-sales-trends-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-amrameng-gemrate-sales-trends-scraper",
                "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",
                "required": [
                    "market"
                ],
                "properties": {
                    "market": {
                        "title": "Market",
                        "enum": [
                            "sports",
                            "pokemon"
                        ],
                        "type": "string",
                        "description": "Which sales-trends list to pull.",
                        "default": "sports"
                    },
                    "salesCategory": {
                        "title": "Sport filter (sports only)",
                        "enum": [
                            "baseball-cards",
                            "football-cards",
                            "basketball-cards",
                            "hockey-cards",
                            "soccer-cards",
                            "boxing-wrestling-cards-mma",
                            "golf-cards",
                            "multi-sport-cards",
                            "minor-league-cards",
                            "misc-cards",
                            "non-sport-cards"
                        ],
                        "type": "string",
                        "description": "Optional. For the Sports market, keep only one sport category. Leave blank for all sports. Ignored for Pokémon."
                    },
                    "search": {
                        "title": "Name filter",
                        "type": "string",
                        "description": "Optional. Keep only players/characters whose name contains this text (case-insensitive), e.g. \"Ohtani\" or \"Charizard\"."
                    },
                    "limit": {
                        "title": "Limit results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Cap the number of players/characters returned. 0 = all.",
                        "default": 0
                    },
                    "proxyConfiguration": {
                        "title": "Proxy",
                        "type": "object",
                        "description": "GemRate is behind Cloudflare; a residential proxy is required to clear it from Apify's network. Residential Apify Proxy is the default and recommended.",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
