# PriceCharting Scraper — Game, Card & Collectible Prices (`crawloop/pricecharting-scraper`) Actor

Scrape PriceCharting prices for video games, Pokemon/TCG cards, comics, Funko and LEGO. Search, product URLs, or whole sets — graded prices, price history, sold comps and images. Pay only for successful results.

- **URL**: https://apify.com/crawloop/pricecharting-scraper.md
- **Developed by:** [Andrej Kiva](https://apify.com/crawloop) (community)
- **Categories:** E-commerce, Games, Developer tools
- **Features:** Limited permissions
- **Stats:** 15 total users, 6 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 product results

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

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

## PriceCharting Scraper — Game, Card & Collectible Prices

> **Disclaimer:** Unofficial tool — not affiliated with, sponsored by, or endorsed by PriceCharting or its affiliates. Data is read from publicly accessible pages only. No login. You are responsible for complying with applicable law (including GDPR where personal data appears) and the site’s terms. No warranty on accuracy or availability. Provided for informational and research use.

> Unofficial community Actor. Not affiliated with PriceCharting.

**PriceCharting scraper** for video game, Pokémon / TCG card, comic, Funko, LEGO, and coin **price guide** data. Search by keyword, open product URLs, or crawl a whole set/console — then export **ungraded and graded prices**, **price history**, optional **sold comps**, **POP report**, and **1600px images** as JSON. A practical **PriceCharting API alternative** for shops, resellers, and apps that need on-demand data in Python, Node.js, or via MCP.

### Collectibles suite

| Actor | Role |
| --- | --- |
| [TCGPlayer Listings Scraper](https://apify.com/crawloop/tcgplayer-listings-scraper) | US TCG seller listings and shops |
| [Cardmarket Listings Scraper](https://apify.com/crawloop/cardmarket-listings-scraper) | EU TCG seller offers and shops |
| [Fanatics Collect Scraper](https://apify.com/crawloop/fanatics-collect-scraper) | Weekly / Premier auctions, Buy Now, sold comps |
| [Heritage Auctions Scraper](https://apify.com/crawloop/heritage-auctions-scraper) | Heritage live bids and archive cards |
| [PSA Population Report Scraper](https://apify.com/crawloop/psa-pop-report-scraper) | Set-level PSA pop census and gem rate |
| [Whatnot Listings Scraper](https://apify.com/crawloop/whatnot-listings-scraper) | Live-commerce listings and shops |
| PriceCharting Scraper ◄── you are here | Guide prices, grade ladder, history, sold comps |
| [eBay Sold Listings Scraper](https://apify.com/crawloop/ebay-sold-listings-scraper) | Marketplace completed sales & sold prices |
| [eBay Active Listings Scraper](https://apify.com/crawloop/ebay-active-listings-scraper) | Live asking prices |
| [eBay Sold Price Intelligence](https://apify.com/crawloop/ebay-sold-price-intelligence) | Aggregate comps & pricing stats |
| [eBay Monitor](https://apify.com/crawloop/ebay-monitor) | Newest-listed alerts for a saved search |

**Suite next step:** after guide values, run [TCGPlayer Listings Scraper](https://apify.com/crawloop/tcgplayer-listings-scraper) or [Cardmarket Listings Scraper](https://apify.com/crawloop/cardmarket-listings-scraper) for live asks, then [PSA Population Report Scraper](https://apify.com/crawloop/psa-pop-report-scraper) for gem rate vs PriceCharting POP. Auction comps go to [Fanatics Collect Scraper](https://apify.com/crawloop/fanatics-collect-scraper); volume marketplace still goes to [eBay Sold Listings Scraper](https://apify.com/crawloop/ebay-sold-listings-scraper).

### When to use

- Re-price a **video game** or **card shop** inventory from PriceCharting guide values
- Value a **Pokémon / MTG / Yu-Gi-Oh** collection with history, not a single snapshot
- Compare raw vs **PSA 10 / BGS 10** before paying grading fees
- Pull a full **set or console catalog** (Base Set, NES, Switch, …) in one run
- Power dashboards or MCP workflows that need a **PriceCharting price API**-style JSON feed

### Key features

- **All-in-one** — search, product URLs, and whole collections in one Actor
- **Listings or details** — fast table prices, or full grades + history + images
- **Full grade ladder** — Grade 1–9.5, PSA / BGS / CGC / SGC / TAG / ACE 10, Black Label, Pristine
- **Price history** — dated series per condition from chart data
- **Sold comps (opt-in)** — recent eBay / TCGPlayer-style sales with date, title, price, link
- **POP report** — PSA / CGC population counts for cards
- **Collection index** — set/console value & median history plus every product (paginated)
- **Failed lookups free** — only successful dataset rows are billed
- **HTTP-first** — no headless browser; proxies usually optional

### Input

| Field | Description |
| --- | --- |
| `mode` | `auto` / `search` / `product_urls` / `collection_urls` / `mixed_urls` |
| `detailLevel` | `listings` (fast) or `details` (history, grades, images) |
| `searchQueries` | Keywords (`charizard`, `super mario bros`, `batman #1`) |
| `startUrls` | Product (`/game/...`) or collection (`/console/...`) URLs |
| `category` | Search filter: `pokemon-cards`, `video-games`, `magic-cards`, … |
| `maxItems` | Cap on output rows (`0` = unlimited) |
| `includeRecentSales` | Opt-in sold comps |
| `includePriceHistory` / `includeFullPrices` / `includePopulation` / `includeImages` | Detail toggles |
| `includeCollectionStats` | Emit collection value/median summary |
| `concurrency` | Parallel product fetches in details mode |
| `proxyConfiguration` | Optional Apify Proxy |

#### Example — product details + sold comps

```json
{
  "mode": "product_urls",
  "detailLevel": "details",
  "startUrls": [
    { "url": "https://www.pricecharting.com/game/pokemon-base-set/charizard-4" }
  ],
  "includeRecentSales": true,
  "maxItems": 1
}
```

#### Example — whole set (fast listings)

```json
{
  "mode": "collection_urls",
  "detailLevel": "listings",
  "startUrls": [
    { "url": "https://www.pricecharting.com/console/pokemon-base-set" }
  ],
  "includeCollectionStats": true,
  "maxItems": 500
}
```

#### Example — keyword search (video games)

```json
{
  "mode": "search",
  "detailLevel": "details",
  "searchQueries": ["super mario bros"],
  "category": "video-games",
  "maxItems": 25
}
```

### Output

| `recordType` | Contents |
| --- | --- |
| `listing` | Table row: name, set, price slots, URL, image |
| `product` | Full detail: `prices`, `fullPrices`, `priceHistory`, optional `recentSales`, POP, images |
| `collection` | Set/console summary: `currentValue`, `currentMedian`, histories |

Stable price keys (labels differ for games vs cards):

| Key | Games | Cards (typical) |
| --- | --- | --- |
| `prices.loose` | Loose | Ungraded |
| `prices.cib` | CIB | Grade 7 |
| `prices.new` | New | Grade 8 |
| `prices.graded` | Graded | Grade 9 |
| `prices.boxOnly` | Box only | Grade 9.5 |
| `prices.manualOnly` | Manual only | PSA 10 |

#### Example product record (truncated)

```json
{
  "recordType": "product",
  "productId": "630417",
  "productName": "Charizard #4",
  "consoleName": "Pokemon Base Set",
  "category": "pokemon-cards",
  "url": "https://www.pricecharting.com/game/pokemon-base-set/charizard-4",
  "currency": "USD",
  "prices": {
    "loose": 372.39,
    "cib": 722.0,
    "new": 1407.5,
    "graded": 2675.0,
    "boxOnly": 6166.44,
    "manualOnly": 29090.72
  },
  "fullPrices": {
    "Ungraded": 372.39,
    "Grade 9": 2675.0,
    "PSA 10": 29090.72,
    "BGS 10 Black": 189090.0
  },
  "populationReport": {
    "psa": { "1": 4096, "10": 486 },
    "cgc": { "10": 4 }
  },
  "imageUrl": "https://storage.googleapis.com/images.pricecharting.com/hpgpcpsd42huitud/1600.jpg",
  "scrapedAt": "2026-08-04T12:00:00Z"
}
```

### Use cases

- **Game & card shop pricing** — schedule guide refreshes for inventory SKUs
- **Pokémon / TCG grading ROI** — raw vs PSA 10 / BGS 10 in one record
- **Set completion cost** — scrape a full console/set table and sum missing pieces
- **Arbitrage** — PriceCharting guide vs eBay sold comps (suite chain)
- **Collectible apps & MCP** — on-demand JSON instead of a fixed monthly API plan

### Integration examples

#### Node.js

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('crawloop/pricecharting-scraper').call({
  mode: 'product_urls',
  detailLevel: 'details',
  startUrls: [{ url: 'https://www.pricecharting.com/game/pokemon-base-set/charizard-4' }],
  includeRecentSales: true,
  maxItems: 1,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);
```

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("crawloop/pricecharting-scraper").call(run_input={
    "mode": "search",
    "detailLevel": "listings",
    "searchQueries": ["super mario bros"],
    "category": "video-games",
    "maxItems": 20,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["productName"], item.get("prices"))
```

#### cURL

```bash
curl -s -X POST "https://api.apify.com/v2/acts/crawloop~pricecharting-scraper/runs?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"mode":"collection_urls","detailLevel":"listings","startUrls":[{"url":"https://www.pricecharting.com/console/nes"}],"maxItems":50}'
```

### MCP and AI assistants

Use this Actor from AI tools via [Apify MCP](https://docs.apify.com/platform/integrations/mcp).
Connect your Apify account, then call this Actor by its Store ID / name.

Example prompts:

- "Run PriceCharting Scraper for Charizard Base Set and return ungraded vs PSA 10 prices"
- "Scrape Pokemon Base Set collection listings and rank the top 20 by PSA 10 guide price"
- "Chain PriceCharting Scraper then TCGPlayer Listings Scraper for Charizard Base Set live asks vs guide"

### FAQ

**Is this an official PriceCharting API?**\
No. It scrapes public pages. Treat it as a PriceCharting API alternative for automation; respect their terms for redistribution.

**Do I need a proxy?**\
Usually not. Enable Apify Proxy on large collection crawls if you hit rate limits.

**Why are failed lookups free?**\
Dead or unreadable URLs are skipped — not written to the dataset and not charged.

**Listings vs details?**\
`listings` = fast set/search tables. `details` = full grade ladder, history, POP, optional sold comps.

**What categories are covered?**\
Video games, Pokémon and other TCG, comics, Funko Pops, LEGO, coins — anything on public PriceCharting catalog pages.

### Related Actors

- [TCGPlayer Listings Scraper](https://apify.com/crawloop/tcgplayer-listings-scraper)
- [Cardmarket Listings Scraper](https://apify.com/crawloop/cardmarket-listings-scraper)
- [Fanatics Collect Scraper](https://apify.com/crawloop/fanatics-collect-scraper)
- [Heritage Auctions Scraper](https://apify.com/crawloop/heritage-auctions-scraper)
- [PSA Population Report Scraper](https://apify.com/crawloop/psa-pop-report-scraper)
- [eBay Sold Listings Scraper](https://apify.com/crawloop/ebay-sold-listings-scraper)
- [eBay Active Listings Scraper](https://apify.com/crawloop/ebay-active-listings-scraper)
- [eBay Sold Price Intelligence](https://apify.com/crawloop/ebay-sold-price-intelligence)

# Actor input Schema

## `mode` (type: `string`):

auto — detect from inputs. search — keyword lookup. product_urls — deep scrape product pages. collection_urls — whole set/console. mixed_urls — mix of the above.

## `detailLevel` (type: `string`):

listings — fast table prices (used/CIB/new). details — full product page: all grades, history, optional sold comps, POP, images.

## `searchQueries` (type: `array`):

Keywords to search (e.g. charizard, super mario bros, batman #1). Each query returns up to 100 table hits.

## `startUrls` (type: `array`):

Product pages (/game/...), collection pages (/console/...), or search-products URLs.

## `category` (type: `string`):

Narrow search results to a PriceCharting category.

## `maxItems` (type: `integer`):

Maximum dataset rows to output (0 = unlimited). Applies to listings, products and collection summaries.

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

Parallel product-page fetches when detailLevel=details. Capped so a 256 MB run can hold full product HTML.

## `includePriceHistory` (type: `boolean`):

Attach per-condition historical chart series (details mode).

## `includeFullPrices` (type: `boolean`):

Include every Full Price Guide row (Grade 1–9.5, PSA/BGS/CGC/SGC/TAG/ACE 10, etc.).

## `includeRecentSales` (type: `boolean`):

Opt-in: scrape recent sold comps per grade (eBay, TCGPlayer, etc.). Larger payloads.

## `includePopulation` (type: `boolean`):

Include PSA/CGC population counts when available (cards).

## `includeImages` (type: `boolean`):

Include 1600px gallery URLs (cover always kept as imageUrl).

## `includeCollectionStats` (type: `boolean`):

When scraping a console/set page, also emit a collection summary row with value & median history.

## `requestDelaySecs` (type: `number`):

Polite delay between HTTP calls.

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

Optional. PriceCharting is usually reachable without a proxy; enable Apify Proxy if you hit rate limits.

## Actor input object example

```json
{
  "mode": "auto",
  "detailLevel": "details",
  "searchQueries": [
    "charizard"
  ],
  "startUrls": [],
  "category": "all",
  "maxItems": 50,
  "concurrency": 3,
  "includePriceHistory": true,
  "includeFullPrices": true,
  "includeRecentSales": false,
  "includePopulation": true,
  "includeImages": true,
  "includeCollectionStats": true,
  "requestDelaySecs": 0.15,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

Default dataset items (listing, product, or collection records).

# 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("crawloop/pricecharting-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("crawloop/pricecharting-scraper").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 crawloop/pricecharting-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,crawloop/pricecharting-scraper"
        }
    }
}
```

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/pKuKIC5bNgOIGyGr4/builds/J1noqX00WH1QtAUXf/openapi.json
