# Pokemon TCG Card and Price Scraper (`parselab/pokemon-tcg-cards-scraper`) Actor

Search Pokemon cards by name, set, rarity, type, illustrator, HP or legality and get TCGplayer prices in USD plus Cardmarket prices in EUR with 7 and 30 day trends. Look up a card list to value a collection. Includes attacks, abilities, images and 7 languages. Export to CSV or Excel.

- **URL**: https://apify.com/parselab/pokemon-tcg-cards-scraper.md
- **Developed by:** [ParseLab](https://apify.com/parselab) (community)
- **Categories:** E-commerce, Games
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $13.50 / 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.
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

## Pokemon TCG Card and Price Scraper

This Pokemon card scraper searches the full Pokemon Trading Card Game catalog, more than 23,000 cards, and returns clean rows with the card data and the current prices. Filter by name, set, series, rarity, type, stage, illustrator, HP, regulation mark or Standard legality, or paste a list of cards and get the price of each one to value a collection.

Every card comes with the TCGplayer market, low, mid and high price in US dollars for each variant (normal, holofoil, reverse holofoil, first edition), and the Cardmarket average, low and trend price in euros. Two derived fields save you a spreadsheet: the price change over 7 days and over 30 days, calculated from the Cardmarket trend against its own averages, so you can see which cards are rising or falling.

Collectors, card shop owners, resellers, deck builders and content creators use it to value collections, spot price movements and build card databases.

### What can you do with this Pokemon card scraper?

- Value a Pokemon card collection from a list of names or card ids
- Find the most expensive cards of a set, sorted by market price
- See which cards rose the most in price over the last 7 days
- List every Special illustration rare of a set with its price
- Find all cards illustrated by one artist
- Search Standard legal cards by type, HP or regulation mark
- Get attacks, abilities, weakness, resistance and retreat cost of every card
- Get card images in small, large and PNG sizes
- List every Pokemon set with release date and card counts
- Export Pokemon card data to CSV or Excel

### What data can you extract from Pokemon cards?

| Mode | One row is | Highlights |
|---|---|---|
| Search cards | One card | Name, set, number, rarity, illustrator, category, HP, types, stage, evolves from, attacks, abilities, weakness, resistance, retreat cost, trainer and energy effect, regulation mark, Standard and Expanded legality, print variants, TCGplayer prices per variant, Cardmarket prices, 7 and 30 day price change, product ids, images |
| Look up a card list | One card from your list | Same fields, sorted by price within each name, plus a not found row for names that do not match |
| Sets | One set | Id, name, series, release date, official and total card count, normal, reverse and holo counts, Standard legality, abbreviation, logo |

Prices are the market values published for each card. TCGplayer prices are in dollars and Cardmarket prices are in euros.

### How to scrape Pokemon cards

1. Choose **What to collect**, for example Search cards.
2. Add a name or filters such as set, rarity, type or illustrator.
3. Optionally set a price range and how to sort the cards.
4. Set **Max Items** and click **Start**.
5. Export the dataset as CSV, Excel or from the Apify console.

### Input example

```json
{
  "mode": "cards",
  "sets": ["sv03.5"],
  "rarities": ["Special illustration rare"],
  "sortBy": "priceUsdDesc",
  "maxItems": 50
}
```

### Output example

```json
{
  "id": "sv03.5-199",
  "name": "Charizard ex",
  "set": "151",
  "localId": "199",
  "rarity": "Special illustration rare",
  "illustrator": "miki kudo",
  "hp": 330,
  "types": ["Fire"],
  "stage": "Stage2",
  "evolvesFrom": "Charmeleon",
  "regulationMark": "G",
  "legalStandard": false,
  "legalExpanded": true,
  "marketPriceUsd": 354.07,
  "tcgplayerVariants": [
    { "variant": "holofoil", "marketPriceUsd": 354.07, "lowPriceUsd": 317.88, "midPriceUsd": 384.4, "highPriceUsd": 10000 }
  ],
  "cardmarketAvgEur": 370.41,
  "cardmarketLowEur": 109.98,
  "cardmarketTrendEur": 533.31,
  "cardmarketAvg7Eur": 470.58,
  "cardmarketAvg30Eur": 364.87,
  "priceChange7dPct": 13.33,
  "priceChange30dPct": 46.16
}
```

### How much does it cost to scrape Pokemon cards?

You pay per result: $18 per 1,000 cards plus a tiny start fee. The free plan returns up to 10 cards per run. A full set is 100 to 250 cards, and the whole catalog is about 23,000 cards.

### Tips for better results

- To value a collection, use **Look up a card list** and add the set id after a pipe, for example `Charizard ex|sv03.5`, or use the card id such as `sv03.5-199`. A name alone returns every printing of that name.
- Sorting by price or price change reads every matching card first. Narrow the search with a set, rarity or name to keep runs short.
- When a card has several variants, the market price field is the highest variant price and the cheapest variant is a separate field. The full list is in the variants array.
- Cards without a published price, mostly very new or very old ones, have empty price fields and are skipped when you set a price range.
- Prices are refreshed about once a day.

### Who uses Pokemon card data?

- **Collectors** track the value of their collection.
- **Card shops and resellers** price singles and watch the market.
- **Deck builders** find budget cards that are legal in Standard.
- **Developers and creators** power apps, price bots and videos.

### Automate and connect

Schedule the Actor daily with the same card list to track price changes. Send finished datasets to Google Sheets, Zapier, Make or n8n, or trigger a webhook when a run ends.

### FAQ

**Do I need an account?**
No. The Actor works without any login.

**Does it include live seller listings?**
No. It returns catalog data and market prices, not individual seller listings or seller ratings.

**Does it include graded card prices?**
No. Prices are for ungraded cards.

**Which languages are supported?**
English, French, Spanish, German, Italian, Brazilian Portuguese and Indonesian. Prices are the same in every language, but not every set exists in every language.

**Does it cover other trading card games?**
No. This Actor covers the Pokemon Trading Card Game only.

### Legal note

This Actor collects information that is publicly visible on the website. Check the source site's terms and your local rules before using the data. Pokemon and card images belong to their owners. This Actor is not affiliated with The Pokemon Company, TCGplayer or Cardmarket.

### Support

Missing a field or found a bug? Open an issue from the Actor page.

# Actor input Schema

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

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000.

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

Cards searches the whole card database with filters. Collection looks up a list of cards and returns the price of each one. Sets lists every set with release date, card counts and legality.

## `language` (type: `string`):

Language of the card text. Tested languages are en, fr, es, de, it, pt-br and id. Prices are the same in every language, but not every set exists in every language.

## `names` (type: `array`):

Search by name, for example Charizard or Pikachu. Partial names work.

## `cardNames` (type: `array`):

One card per line for collection mode. Use the name, the name with a set id after a pipe such as Charizard ex|sv03.5, or a card id such as sv03.5-199.

## `sets` (type: `array`):

Set ids such as sv03.5, sv08, swsh12 or base1. Run sets mode to see all ids.

## `series` (type: `array`):

Series ids or names such as sv, swsh, sm, xy or base. Reading a series makes the run a little slower.

## `rarities` (type: `array`):

Exact rarity names such as Special illustration rare, Illustration rare, Double rare, Ultra Rare, Holo Rare or Common.

## `types` (type: `array`):

Fire, Water, Grass, Lightning, Psychic, Fighting, Darkness, Metal, Dragon, Fairy or Colorless.

## `categories` (type: `array`):

Pokemon, Trainer or Energy.

## `stages` (type: `array`):

Basic, Stage1 or Stage2.

## `illustrators` (type: `array`):

Illustrator names as printed on the card, for example Mitsuhiro Arita.

## `regulationMarks` (type: `array`):

Letters printed on modern cards, such as G, H or I. They show which cards are legal in Standard play.

## `minHp` (type: `integer`):

Only Pokemon with at least this many hit points.

## `maxHp` (type: `integer`):

Only Pokemon with at most this many hit points.

## `standardLegalOnly` (type: `boolean`):

Keep only cards that are legal in the Standard format today.

## `minPriceUsd` (type: `number`):

Only cards whose TCGplayer market price is at least this many dollars. Cards without a price are skipped.

## `maxPriceUsd` (type: `number`):

Only cards whose TCGplayer market price is at most this many dollars.

## `sortBy` (type: `string`):

Sorting reads every matching card first, so the run takes longer when many cards match. Price change compares the Cardmarket trend price with the 7 day average.

## Actor input object example

```json
{
  "maxItems": 10,
  "mode": "cards",
  "language": "en",
  "names": [
    "Charizard"
  ],
  "standardLegalOnly": false,
  "sortBy": "default"
}
```

# Actor output Schema

## `overview` (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 = {
    "maxItems": 10,
    "names": [
        "Charizard"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("parselab/pokemon-tcg-cards-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 = {
    "maxItems": 10,
    "names": ["Charizard"],
}

# Run the Actor and wait for it to finish
run = client.actor("parselab/pokemon-tcg-cards-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 '{
  "maxItems": 10,
  "names": [
    "Charizard"
  ]
}' |
apify call parselab/pokemon-tcg-cards-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parselab/pokemon-tcg-cards-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/iBRCKdasiUXKed4v9/builds/7qpTWVWtGgl3WVgZe/openapi.json
