# Courtyard.io Vault Marketplace Scraper: Cards, Coins & Watches (`getascraper/courtyard-io-scraper`) Actor

Extract graded trading card, coin, and watch data from Courtyard.io's vault marketplace: grading, fair market value, live bid and ask orderbook depth, vault status, on chain transaction history, and blockchain provenance for every asset. No wallet or login needed. From $3.52 per 1,000 results.

- **URL**: https://apify.com/getascraper/courtyard-io-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** E-commerce, Automation
- **Features:** Limited permissions, Single-tenant, Server interface
- **Stats:** 6 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.64 / 1,000 card records

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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

## 🃏 Courtyard.io Vault Marketplace Scraper: Cards, Coins & Watches

<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0;margin-bottom:0">
<tr>
<td style="padding:24px 28px;background:#ECEBFB;border:1px solid #CFCDF2;border-top:4px solid #3A3ED6;color:#1C1917;border-radius:10px 10px 0 0">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">See what any vaulted card, coin, or watch on Courtyard.io is really worth before you buy, sell, or trade it</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Point this actor at any Courtyard.io asset and get its grading detail, fair market value estimate, live two-sided orderbook, vault status, and blockchain provenance back as clean structured data. No account or wallet connection needed, every field comes straight from Courtyard.io's own public pages.</span>
</td>
</tr>
</table>
<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0;margin-top:0">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #CFCDF2;vertical-align:top;border-top:none;color:#1C1917;border-radius:0 0 0 10px">
<span style="font-size:15px;font-weight:800;color:#2E31AB">💵 Fair market value</span><br>
<span style="font-size:12px;color:#57534E">A confidence-scored estimate for every asset, not a platform-wide average</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #CFCDF2;border-left:none;vertical-align:top;border-top:none;color:#1C1917">
<span style="font-size:15px;font-weight:800;color:#2E31AB">📈 Live two-sided orderbook</span><br>
<span style="font-size:12px;color:#57534E">Lowest active ask and highest active bid, plus how many of each are live now</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #CFCDF2;border-left:none;vertical-align:top;border-top:none;color:#1C1917">
<span style="font-size:15px;font-weight:800;color:#2E31AB">🔗 Full blockchain provenance</span><br>
<span style="font-size:12px;color:#57534E">Chain, contract, token ID, and proof of integrity, not just a verified badge</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #CFCDF2;border-left:none;vertical-align:top;border-top:none;color:#1C1917;border-radius:0 0 10px 0">
<span style="font-size:15px;font-weight:800;color:#2E31AB">🔓 No wallet needed</span><br>
<span style="font-size:12px;color:#57534E">Pulls public vault data only. No login or wallet connection required</span>
</td>
</tr>
</table>

Courtyard.io Vault Marketplace Scraper pulls full grading detail, fair market value estimates, the live buy and sell orderbook, vault status, and blockchain proof of ownership for graded Pokemon cards, sports cards, coins, and watches held on Courtyard.io. Feed it direct asset links or let it browse the marketplace for you.

### 🔍 What does Courtyard.io Vault Marketplace Scraper do?

Point this actor at a Courtyard.io asset link, or ask it to browse the marketplace, vending machine, or leaderboard, and it reads every asset's own listing page for you.

For each item it returns the grading company and grade, the year, set, and card number, a fair market value estimate with a confidence score, and the current lowest asking price and highest buy offer sitting live on the order book right now. You also get vault location, whether the item has been redeemed, and the on-chain contract and token details that prove custody and ownership.

Most tools that track graded card prices only show you a single sale history. This one shows you what the market is offering to pay and accept for an item right now, not just what happened last time it changed hands. And because every field is read from Courtyard.io's own public pages, you never need to log in or connect a wallet to get it.

### 💡 Why use Courtyard.io Vault Marketplace Scraper?

- **I am a graded card collector** tracking fair market value and live asking prices across my whole collection, in order to know when to buy, hold, or sell without checking every listing by hand.
- **I am a card flipper or arbitrage seller** scanning Courtyard.io for assets priced below fair market value or recent comparable sales, in order to find profitable buys before anyone else does.
- **I am a developer building a collectibles dashboard** that needs clean structured pricing and provenance data, in order to replace manual screenshotting with a real data feed.
- **I am an alternative-asset researcher** studying vaulted collectibles as an asset class, in order to get blockchain-verified custody and ownership data, not just a price.

### 🚀 How to use Courtyard.io Vault Marketplace Scraper

<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0">
<tr>
<td style="padding:16px 14px;width:33%;background:#ECEBFB;border:1px solid #CFCDF2;border-radius:10px 0 0 10px;vertical-align:top;color:#1C1917">
<span style="font-size:12px;font-weight:800;color:#3A3ED6;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Point it at assets</span><br>
<span style="font-size:12px;color:#57534E">Paste specific Courtyard.io asset links or IDs, or leave the field empty to browse automatically.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#ECEBFB;border:1px solid #CFCDF2;border-left:none;vertical-align:top;color:#1C1917">
<span style="font-size:12px;font-weight:800;color:#3A3ED6;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Set your scope</span><br>
<span style="font-size:12px;color:#57534E">Pick a listing area, an optional category, how many assets you want, and whether to include price and transaction history.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#ECEBFB;border:1px solid #CFCDF2;border-left:none;border-radius:0 10px 10px 0;vertical-align:top;color:#1C1917">
<span style="font-size:12px;font-weight:800;color:#3A3ED6;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Get your data</span><br>
<span style="font-size:12px;color:#57534E">Click Start and open the Dataset tab. Switch between the Listings, Orderbook, and Provenance views.</span>
</td>
</tr>
</table>

### 📥 Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `assetUrls` | array of URLs | No | Direct Courtyard.io asset links you already know about, or bare 64-character asset IDs. Fastest and most reliable option. Leave empty to discover assets automatically instead. |
| `discoveryMode` | enum | No | Which listing area to browse when no asset URLs are given: marketplace, vending machine (cards, coins, or watches), or leaderboard. Defaults to marketplace. |
| `category` | enum | No | Restrict automatic discovery to one category, such as Pokemon, Basketball, or Watches. Defaults to any. |
| `maxItems` | integer | No | Maximum number of assets to return. Defaults to 50. |
| `deepScrape` | boolean | No | Adds comparable sales across every grade of the same item, plus its full on-chain transfer history. Roughly triples the requests per asset. Defaults to true. |
| `includeLikesCount` | boolean | No | Adds the public likes count for each asset with one extra lightweight request. Defaults to true. |
| `proxyConfiguration` | object | No | Leave on the default setting for reliable, uninterrupted scraping. |

### 📤 Output

Each dataset row is one asset, with its grading, pricing, and provenance data.

```json
{
    "asset_id": "efcb845d5d8d84cd7013ce60b0a05297a9573e1634bd96bfb6fcc6c39addb361",
    "asset_url": "https://courtyard.io/asset/efcb845d5d8d84cd7013ce60b0a05297a9573e1634bd96bfb6fcc6c39addb361",
    "title": "2021 Pokémon SM Black Star Promo #SM247 Reshiram & Charizard GX - Holo Full Art Reshiram & Charizard GX Premium Collection (PSA 8 NM-MT)",
    "category": "Pokémon",
    "year": "2021",
    "set_name": "Pokémon SM Black Star Promo",
    "subject": "Reshiram & Charizard GX",
    "grader": "PSA",
    "grade": "8 NM-MT",
    "serial_number": "64778443",
    "image": "https://static.courtyard.io/graded-cards-renders/PSA%2064778443/nft_image.jpg",
    "fmv_estimate_usd": 42.9,
    "fmv_confidence": "5",
    "minimum_bid_threshold": 37.33,
    "lowest_listing_usd": 40.01,
    "lowest_listing_expiration": "2026-08-03T21:41:09Z",
    "highest_offer_usd": 36.33,
    "active_listings_count": 1,
    "active_offers_count": 1,
    "vaulted": true,
    "vault_location": "Courtyard US",
    "burned": false,
    "owner_username": "crimsonhydra10630",
    "chain": "polygon",
    "contract": "0x251BE3A17Af4892035C37ebf5890F4a4D889dcAD",
    "token_id": "108462354313195755805756543849539342188059017706713282205836384568338097746785",
    "likes_count": 2,
    "scraped_at": "2026-07-04T21:41:08.000Z"
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

### 📊 Data table

| Field | Type | Description |
| --- | --- | --- |
| title | string | Full descriptive title of the card, coin, or watch |
| category | string | Category such as Pokemon, Basketball, or Watches |
| card_number | string | Card number printed on the card, when applicable |
| language | string | Print language of the card, when applicable |
| grader | string | Grading company: PSA, BGS, or CGC |
| grade | string | The grade assigned by the grading company |
| image | string | Main image URL for the asset |
| cropped_image | string | Cropped image URL for the asset, when Courtyard.io provides one |
| video | string | Video URL for the asset, when Courtyard.io provides one |
| asset_pictures | array | All available image URLs for the asset |
| fmv_estimate_usd | number | Fair market value estimate in US dollars |
| fmv_confidence | string | Confidence score behind the fair market value estimate |
| minimum_bid_threshold | number | Lowest bid the platform will currently accept |
| lowest_listing_usd | number | Lowest active asking price on the live order book |
| highest_offer_usd | number | Highest active buy offer on the live order book |
| active_listings_count | number | How many active asking prices are live right now |
| active_offers_count | number | How many active buy offers are live right now |
| vaulted | boolean | Whether the physical item is held in a vault |
| vault_location | string | Name of the vault holding the physical item |
| burned | boolean | Whether the asset's token has been burned (redeemed out of the vault) |
| owner_username | string | Current owner's public username |
| owner_address | string | Current owner's wallet address |
| chain | string | Blockchain network the asset is recorded on |
| contract | string | Smart contract address for the asset |
| token_id | string | Unique on-chain token ID |
| collectible_id | string | Courtyard.io's internal collectible identifier |
| proof_of_integrity | string | On-chain hash proving the asset record has not been tampered with |
| tx_type | string | Type of the asset's most recent on-chain transaction |
| tx_time | string | Timestamp of the asset's most recent on-chain transaction |
| likes_count | number | Public likes count for the asset |
| price_history_population_count | number | Number of comparable sales returned in the price history for this item's grade, when price history is enabled |
| price_history_json | string | Comparable sales across every grade of the same item, when enabled |
| transactions_count | number | Number of on-chain transactions returned for this asset, when transaction history is enabled |
| transactions_json | string | Full on-chain transfer history, when enabled |

### 💰 Pricing

This actor runs on a pay per result basis. You only pay for the assets it actually returns, so an empty or failed run costs you nothing. There are no subscriptions or minimum monthly fees.

### ⭐ Enjoying Courtyard.io Vault Marketplace Scraper?

<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0">
<tr>
<td style="padding:20px 24px 14px;background:#ECEBFB;border:1px solid #CFCDF2;border-left:5px solid #3A3ED6;border-radius:10px 10px 0 0;color:#1C1917">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">One run just told me exactly what my whole graded card collection is worth right now.</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other collectors, flippers, and dashboard builders find this actor. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#3A3ED6;border:1px solid #3A3ED6;border-left:5px solid #3A3ED6;border-top:none;border-radius:0 0 10px 10px;text-align:center;color:#FFFFFF">
<a href="https://apify.com/getascraper/courtyard-io-scraper/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

### ❓ FAQ

##### How fresh is this data?

Every field, including the live orderbook, is read directly from Courtyard.io's own pages at the moment the actor runs. Nothing is cached or estimated from an old snapshot.

##### Does this work without a Courtyard.io account?

Yes. All the data in this actor is publicly viewable and does not require logging in or connecting a wallet.

##### Can I track prices for a specific card over time?

Yes. Turn on price history in the input to get comparable sales across every grade of the same item, then run the actor on a schedule to build your own price timeline.

##### Why did some assets come back with missing fields?

Some fields, like an active listing or a public username, only exist when the asset actually has one. This actor never fills in placeholder text for missing data, so you can trust every value you see is real.

##### Is this legal to use?

This actor only extracts data that is already publicly visible on Courtyard.io. You are responsible for how you use the data and for complying with Courtyard.io's own terms of service. If you need a custom solution or run into an issue, open a ticket in the Issues tab.

### 🔗 Other actors

- [MySlabs Graded Card Scraper: Sold Comps & Listings](https://apify.com/getascraper/myslabs-graded-cards-scraper) ↗ - pulls graded card listings and sold comps from the MySlabs marketplace.
- [Goldin Auctions Scraper: Sports Cards & Sold Comps](https://apify.com/getascraper/goldin-auctions-scraper) ↗ - collects sports card and collectibles auction results and sold comps from Goldin.
- [GoCollect Scraper: CGC/CBCS/PSA/BGS Census, Sold Prices & More](https://apify.com/getascraper/gocollect-scraper) ↗ - tracks grading population census data and sold prices for comics and cards.
- [Fanatics Collect Card Auction Scraper: Prices, Sellers & Alerts](https://apify.com/getascraper/fanaticscollect-scraper) ↗ - pulls weekly and premier card auction prices, sellers, and alerts from Fanatics Collect.

# Changelog

This Actor's version history is a separate document: https://apify.com/getascraper/courtyard-io-scraper/changelog.md

# Actor input Schema

## `assetUrls` (type: `array`):

Direct Courtyard.io asset links (e.g. https://courtyard.io/asset/efcb845d...) or bare 64-character asset IDs, one per line. This is the fastest and most reliable way to pull specific graded cards, coins, or watches you already know about. Leave empty to discover assets automatically instead (see 'Discovery mode' below).

## `discoveryMode` (type: `string`):

When 'Asset URLs or IDs' is empty, this Actor browses Courtyard.io's marketplace and collects assets automatically. Choose which listing surface to browse.

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

Restrict discovery to one category. 'Any' browses the default unfiltered feed for the chosen discovery mode.

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

Maximum number of assets to scrape and push to the dataset. When using 'Asset URLs or IDs', this caps how many of the provided links are processed. When discovering automatically, this controls how far the Actor scrolls the listing page before stopping.

## `deepScrape` (type: `boolean`):

When enabled, fetches two extra API calls per asset: the full per-grade price history (comparable sales across every graded population of the same card/item) and the on-chain transaction history (transfer hashes, wallet addresses, payment amounts). Roughly triples request volume per asset. Disable for a faster, lighter run when you only need the core listing, grading, and live orderbook data.

## `includeLikesCount` (type: `boolean`):

Adds the public likes/favorites count for each asset with one extra lightweight API call.

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

Courtyard.io's discovery pages (courtyard.io) only need a standard datacenter proxy. The underlying api.courtyard.io detail endpoint is gated by a browser-TLS fingerprint check (not an IP-reputation check), which this Actor already satisfies via got-scraping's browser impersonation, so datacenter proxy is sufficient here too.

## Actor input object example

```json
{
  "assetUrls": [
    {
      "url": "https://courtyard.io/asset/efcb845d5d8d84cd7013ce60b0a05297a9573e1634bd96bfb6fcc6c39addb361"
    }
  ],
  "discoveryMode": "marketplace",
  "category": "any",
  "maxItems": 50,
  "deepScrape": true,
  "includeLikesCount": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

No description

## `runStats` (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 = {
    "assetUrls": [
        {
            "url": "https://courtyard.io/asset/efcb845d5d8d84cd7013ce60b0a05297a9573e1634bd96bfb6fcc6c39addb361"
        }
    ],
    "discoveryMode": "marketplace",
    "category": "any",
    "maxItems": 50,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/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 = {
    "assetUrls": [{ "url": "https://courtyard.io/asset/efcb845d5d8d84cd7013ce60b0a05297a9573e1634bd96bfb6fcc6c39addb361" }],
    "discoveryMode": "marketplace",
    "category": "any",
    "maxItems": 50,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/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 '{
  "assetUrls": [
    {
      "url": "https://courtyard.io/asset/efcb845d5d8d84cd7013ce60b0a05297a9573e1634bd96bfb6fcc6c39addb361"
    }
  ],
  "discoveryMode": "marketplace",
  "category": "any",
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call getascraper/courtyard-io-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,getascraper/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/AZlyICLQzRXcysjV3/builds/223iEZ7ThpsMWzOUn/openapi.json
