# Courtyard.io Scraper (`devcake/courtyard-io-scraper`) Actor

Extract real-time graded card sales data. Track Pokemon & sports card prices, PSA/BGS/CGC grades, and Fair Market Value estimates.

- **URL**: https://apify.com/devcake/courtyard-io-scraper.md
- **Developed by:** [devcake](https://apify.com/devcake) (community)
- **Categories:** E-commerce, Other
- **Stats:** 55 total users, 3 monthly users, 100.0% runs succeeded, 4 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.30 / 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?

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

## 🃏 Courtyard.io Scraper - Extract Pokemon Card Prices & Sports Card Sales Data

**Courtyard.io Scraper** extracts **real-time collectible card sales data** from [Courtyard.io](https://courtyard.io), the premier **graded card marketplace**. **Track Pokemon card prices**, **monitor sports card market data**, and **analyze graded card sales** from PSA, BGS, and CGC - no coding needed.

Perfect for **card collectors** 🎴, **TCG investors** 📈, **dropshippers** 🚚, and **market researchers** 🔬 building **TCG market data** pipelines.

***

### 🎯 🏷️ What You Get

Courtyard.io Scraper is a **collectible card API** pulling live data from Courtyard.io's blockchain-powered marketplace:

| 🔹 | Data Type |
|---|------------|
| 💵 | **Real-time sale prices** in USD |
| 📊 | **Price comparison** vs **Fair Market Value (FMV)** |
| 🃏 | **Pokemon card prices** with set & language (English, Japanese, Korean) |
| ⚾ | **Sports card market data**: Baseball, Basketball 🏀, Football 🏈, Soccer ⚽, Hockey 🥅 |
| 🏆 | **Graded card sales**: PSA, BGS, CGC grades & serial numbers |
| 💰 | **FMV estimates** & **price history** for similar grades |
| 🖼️ | High-quality slab scans (front & back) |
| 👤 | Seller usernames, vault status & blockchain verification |

***

### 💡 🤔 Why Use This Scraper?

| 🔹 | Use Case |
|---|------------|
| 📈 | **Track Pokemon card prices** in real-time (Charizard, Pikachu, Base Set) |
| 📊 | Monitor **sports card market data** for investment decisions (Michael Jordan, LeBron James) |
| 🔬 | Analyze **graded card sales** patterns by PSA/BGS/CGC grades |
| 💎 | Find underpriced cards: **price\_vs\_fmv** negative = below market |
| 🗄️ | Build **historical price databases** for trend analysis |

***

### 📥 ⚙️ Input Parameters

| 🔹 | Parameter | 📋 | Type | 📝 | Description |
|---|------------|-----|------|----|-------------|
| 🎯 | `scrapeType` | | Select | | `latest` (recent sales), `keywords` (search), or `categories` |
| 🔑 | `keywords` | | String List | | "Charizard", "Michael Jordan", "LeBron James", "1999" |
| 📂 | `categories` | | String List | | Pokemon, Baseball, Basketball, Football, Soccer, Hockey |
| 📊 | `limit` | | Number | | Results per keyword (1-1000, default: 30) |

#### 💻 📝 Example Input

```json
{
  "scrapeType": "keywords",
  "keywords": ["Charizard", "Michael Jordan", "LeBron James"],
  "limit": 100,
  "dateFrom": "2025-01-01",
  "dateTo": "2025-12-31"
}
```

***

### 📤 📋 Output Data

Each **graded card sale** includes transaction hash, **price\_usd**, **price\_vs\_fmv**, **card\_title**, **card\_category** (Pokemon/Baseball/etc), **card\_year**, **card\_set**, **grader** (PSA/BGS/CGC), **grade**, **serial\_number**, **fmv\_estimate**, **price\_history**, images, and seller data.

***

### 🚀 ⚡ How to Scrape

| 🔢 | Step | 📝 | Action |
|---|------|----|--------|
| 1️⃣ | 🎯 | Open Actor | Go to Courtyard.io Scraper on Apify Store |
| 2️⃣ | 📋 | Choose type | Select latest sales, keywords, or categories |
| 3️⃣ | ⚙️ | Configure | Set keywords, categories, date range, limit |
| 4️⃣ | ▶️ | Run | Click "Start" and wait for collection |
| 5️⃣ | 💾 | Download | Export JSON, CSV, HTML, or Excel |

***

### ✅ 💡 Pro Tips

| 🔹 | Tip |
|---|-----|
| 🎯 | Use **keywords** for specific cards (Charizard, Jordan rookie cards) |
| 📅 | Filter by **date range** to build **Pokemon card price** history |
| 💰 | Monitor **price\_vs\_fmv** to find deals (negative = undervalued) |
| 📊 | Review **price\_history** for market range analysis |
| 🖼️ | Check **asset\_pictures** for slab scans (front/back) |
| 👤 | Track **seller usernames** for pricing strategies |

***

### ❓ 🤔 FAQ

**🎯 Can I track Pokemon card prices over time?**
Yes! Use date filters to build your **Pokemon card price database** and analyze trends.

**🃏 What categories can I scrape?**
Pokemon, Baseball, Basketball, Football, Soccer, Hockey, Magic: The Gathering.

**🏆 Can I use this for PSA card price research?**
Absolutely! Captures PSA, BGS, CGC grades. Search specific levels to analyze **PSA card price premiums**.

**⚖️ Is this legal for commercial use?**
Extracts publicly available data for **market research** and **business intelligence**. Review Courtyard.io's Terms.

**🔄 Can I scrape Courtyard.io and TCGplayer?**
Yes! Compare prices across marketplaces. Try **[TCGplayer Scraper](https://apify.com/devcake/tcgplayer-data-scraper)** for ungraded cards.

**💵 How much does it cost?**
Start free with Apify's $5 monthly credits.

***

### 🔗 Related Actors

| 🔹 | Actor | 📝 | Description |
|---|-------|----|-------------|
| 🛒 | **[TCGplayer Data Scraper](https://apify.com/devcake/tcgplayer-data-scraper)** | | Ungraded card prices from TCGplayer |

**🎯 Courtyard vs TCGplayer:**

- **Graded cards (PSA/BGS/CGC)** with sale history → **Courtyard.io Scraper**
- **Ungraded cards** (NM, LP, MP) → **[TCGplayer Scraper](https://apify.com/devcake/tcgplayer-data-scraper)**

***

<p align="center">
  <br>
  <strong>🎯 Start tracking card prices today! 🚀</strong>
  <br><br>
  Run your first scrape and build your market intelligence 💰
</p>

# Actor input Schema

## `scrapeType` (type: `string`):

Choose what to scrape: latest sales, by keywords, by categories, or marketplace listings

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

Maximum number of results to fetch per keyword/category (1-1000)

## `keywords` (type: `array`):

List of keywords to search for (one per line). Works with 'Sales by Keywords' and 'Listed Items by Search' scrape types.

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

Select categories to scrape. Works with 'Sales by Categories' and 'Listed Items by Category' scrape types.

## `proxyConfig` (type: `object`):

Select proxies to use for requests. Apify Proxy is enabled by default for reliable scraping.

## Actor input object example

```json
{
  "scrapeType": "latest",
  "limit": 30,
  "keywords": [
    "Charizard"
  ],
  "categories": [
    "Pokémon"
  ],
  "proxyConfig": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

Complete scraped data with all sales and listings

## `sales` (type: `string`):

Recent sales with card images, prices, and key details - sorted by newest first

## `listings` (type: `string`):

Active marketplace listings with deal scores and pricing insights

## `deals` (type: `string`):

Top deals sorted by deal score - best opportunities

# 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 = {
    "keywords": [
        "Charizard"
    ],
    "categories": [
        "Pokémon"
    ],
    "proxyConfig": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("devcake/courtyard-io-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 = {
    "keywords": ["Charizard"],
    "categories": ["Pokémon"],
    "proxyConfig": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("devcake/courtyard-io-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 '{
  "keywords": [
    "Charizard"
  ],
  "categories": [
    "Pokémon"
  ],
  "proxyConfig": {
    "useApifyProxy": true
  }
}' |
apify call devcake/courtyard-io-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,devcake/courtyard-io-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/K50g6cpqQ1km0Pza8/builds/PtsaIP0kmMSDxA5rs/openapi.json
