# Fanatics Collect Scraper — Weekly Auctions & Sold Prices (`crawloop/fanatics-collect-scraper`) Actor

Scrape Fanatics Collect weekly auctions, Premier lots, Buy Now listings, and sold comps. Get hammer price, bids, PSA/BGS/SGC grades, cert numbers, watchers, and images as JSON — dealers, consignors, and pricing apps.

- **URL**: https://apify.com/crawloop/fanatics-collect-scraper.md
- **Developed by:** [Andrej Kiva](https://apify.com/crawloop) (community)
- **Categories:** E-commerce, Other
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.89 / 1,000 lot 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

## Fanatics Collect Scraper — Weekly Auctions & Sold Prices

> Unofficial community Actor. Not affiliated with Fanatics Collect, Fanatics, or PWCC Marketplace.

**Fanatics Collect scraper** for US **sports cards**, **TCG / Pokémon**, and memorabilia auctions. Pull **live Weekly and Premier lots**, **sold comps** (realized hammer), and **Buy Now / fixed-price** marketplace listings into JSON — current bid, sold price, bid count, watchers, PSA / BGS / SGC / CGC grades, cert numbers, and images. Works as a **Fanatics Collect API alternative** over HTTP search (Python / Node.js / MCP) — no headless browser, no login friction fields.

### 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 ◄── you are here | Weekly / Premier auctions, Buy Now, sold comps |
| [Goldin Auctions Scraper](https://apify.com/crawloop/goldin-scraper) | High-end auction live lots and sold hammer |
| [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 seller shops |
| [PriceCharting Scraper](https://apify.com/crawloop/pricecharting-scraper) | Guide prices for games, TCG, and comics |
| [eBay Sold Listings Scraper](https://apify.com/crawloop/ebay-sold-listings-scraper) | Marketplace completed sales |
| [eBay Active Listings Scraper](https://apify.com/crawloop/ebay-active-listings-scraper) | Live asking prices |

**Suite next step:** after Fanatics Collect weekly or sold comps, run [Goldin Auctions Scraper](https://apify.com/crawloop/goldin-scraper) for high-end hammer on the same titles, then [PSA Population Report Scraper](https://apify.com/crawloop/psa-pop-report-scraper) for gem rate vs realized price. For live TCG asks, chain [TCGPlayer Listings Scraper](https://apify.com/crawloop/tcgplayer-listings-scraper) (US) or [Cardmarket Listings Scraper](https://apify.com/crawloop/cardmarket-listings-scraper) (EU).

### When to use

- Pull **Fanatics Collect sold prices** from Weekly / Premier auctions to set reserves and consignment floors
- Monitor **live weekly auction lots** by player, set, or grader (PSA 10, BGS 9.5)
- Browse **Buy Now / fixed-price** inventory
- Resolve specific lot URLs into structured rows for sheets or warehouses
- Schedule a **monitor** so each weekly sale only bills **new** listing IDs

**When not to use:** high-end Goldin-only elite hammer — use [Goldin Auctions Scraper](https://apify.com/crawloop/goldin-scraper). Live TCG seller books — use [TCGPlayer Listings Scraper](https://apify.com/crawloop/tcgplayer-listings-scraper) or [Cardmarket Listings Scraper](https://apify.com/crawloop/cardmarket-listings-scraper). PSA 10 pop / gem rate — use [PSA Population Report Scraper](https://apify.com/crawloop/psa-pop-report-scraper). eBay volume comps — use [eBay Sold Listings Scraper](https://apify.com/crawloop/ebay-sold-listings-scraper). This Actor reads public marketplace search, not private bidder identities or invoices.

### Key features

- **Five modes** — `live`, `sold`, `marketplace`, `lot_urls`, `auto`
- **Auction types** — Weekly, Premier, Fixed (Buy Now)
- **Sold archive** — millions of realized comps in the search index
- **Grade parsing** — PSA / BGS / SGC / CGC / CSG from titles, plus cert numbers
- **Keyword + filters** — category, grader, grade, price range, auction UUID
- **GraphQL hydrate** — slug, eye appeal, auction names, extra images (optional)
- **Monitor mode** — named Key-Value store of seen listing IDs for weekly cron
- **HTTP-first** — Chrome TLS impersonation against search + GraphQL; proxy optional

### Input

| Field | Description |
| --- | --- |
| `mode` | `live` / `sold` / `marketplace` / `lot_urls` / `auto` |
| `searchQueries` | Keywords (player, set, card). Empty = browse all in mode |
| `startUrls` | Lot URLs (`lot_urls` mode) |
| `auctionType` | `All` / `Weekly` / `Premier` / `Fixed` |
| `auctionId` | Optional parent auction UUID or URN |
| `soldOnly` | Force sold archive even outside `sold` mode |
| `category` / `grader` / `grade` | Optional facet filters |
| `priceMin` / `priceMax` | USD price window |
| `sort` | `featured` / `price_asc` / `price_desc` |
| `maxItems` | Cap (`0` = fill the ~1000-hit search window) |
| `hydrateDetails` | Batch GraphQL extras (default on) |
| `monitorMode` | Push only listing IDs not seen in a previous run |
| `proxyConfiguration` | Optional; default off |

#### Example — Fanatics Collect sold comps

```json
{
  "mode": "sold",
  "searchQueries": ["charizard psa 10"],
  "auctionType": "Weekly",
  "maxItems": 50
}
```

#### Example — live Weekly lots

```json
{
  "mode": "live",
  "auctionType": "Weekly",
  "grader": "PSA",
  "maxItems": 100
}
```

#### Example — Buy Now marketplace

```json
{
  "mode": "marketplace",
  "searchQueries": ["michael jordan"],
  "maxItems": 50
}
```

#### Example — specific lot URLs

```json
{
  "mode": "lot_urls",
  "startUrls": [
    {
      "url": "https://www.fanaticscollect.com/weekly/04f3f9a0-92bf-11f1-9928-0a58a9feac02/1958-editora-aquarela-black-number-pele-rookie-10-psa-3-vg"
    }
  ]
}
```

#### Example — weekly monitor (schedule this)

```json
{
  "mode": "live",
  "auctionType": "Weekly",
  "maxItems": 200,
  "monitorMode": true,
  "monitorStoreName": "fanatics-collect-weekly"
}
```

### Output

| Field | Description |
| --- | --- |
| `listingId` / `listingIntegerId` / `lotNumber` / `url` | Identifiers and page URL |
| `title` / `status` / `marketplace` | Title, Live / Sold, WEEKLY / PREMIER / FIXED |
| `auctionId` / `auctionName` | Parent auction |
| `grader` / `grade` / `gradeNumeric` / `certNumber` | Parsed grading |
| `currentPrice` / `soldPrice` / `price` | USD prices (`price` = hammer if sold, else current) |
| `bidCount` / `watchers` | Bidding and favorites |
| `startAt` / `endAt` / `soldAt` | Timestamps |
| `primaryImageUrl` / `imageUrls` | Lot images |
| `searchQuery` / `mode` / `scrapedAt` | Run metadata |

#### Sample record

```json
{
  "listingId": "1ece36a6-6f23-11ed-9bb7-0a58a9feac02",
  "title": "1996 Skybox Z-Force Scottie Pippen #9 PSA 8 NM-MT",
  "status": "Sold",
  "marketplace": "WEEKLY",
  "auctionName": "Weekly Auction #1",
  "grader": "PSA",
  "grade": "PSA 8",
  "gradeNumeric": 8,
  "certNumber": "63561922",
  "soldPrice": 150,
  "price": 150,
  "bidCount": 19,
  "watchers": 1,
  "currency": "USD",
  "url": "https://www.fanaticscollect.com/weekly/1ece36a6-6f23-11ed-9bb7-0a58a9feac02",
  "mode": "sold"
}
```

### Use cases

- **Consignment pricing** — Weekly / Premier sold comps before setting reserves
- **Dealer watchlists** — live Weekly lots filtered by PSA / BGS
- **High-end vs eBay** — Fanatics Collect hammer vs marketplace sold volume
- **TCG / Pokémon comps** — sold archive search by set and grade
- **Buy Now scan** — fixed-price listings
- **Weekly cron / MCP** — `monitorMode` on a schedule; only new lots billed

### 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/fanatics-collect-scraper').call({
  mode: 'sold',
  searchQueries: ['jordan psa 10'],
  maxItems: 25,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.slice(0, 3));
```

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_TOKEN")
run = client.actor("crawloop/fanatics-collect-scraper").call(run_input={
    "mode": "live",
    "auctionType": "Weekly",
    "maxItems": 50,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["title"], item.get("price"))
```

#### cURL

```bash
curl "https://api.apify.com/v2/acts/crawloop~fanatics-collect-scraper/runs?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"mode":"sold","searchQueries":["charizard"],"maxItems":20}'
```

### 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 (`crawloop/fanatics-collect-scraper`).

Example prompts:

- "Run Fanatics Collect Scraper in sold mode for 'Shohei Ohtani PSA 10' and return the top 20 comps as JSON"
- "Scrape live Weekly Fanatics Collect lots graded PSA 10 and summarize average current bid"
- "Chain Fanatics Collect sold comps, then PSA Population Report Scraper for the same Charizard set gem rate"

### FAQ

**Is this a Fanatics Collect API alternative?**\
Yes for public lot search: live Weekly / Premier, sold comps, and Buy Now rows via the same search the website uses — no official developer API key required.

**Does the Fanatics Collect scraper need a proxy?**\
Usually no. Enable Apify Proxy only if you hit rate limits.

**What is the difference between Weekly and Premier?**\
Weekly is the large recurring catalog auction. Premier is the higher-end featured sale. Buy Now (`marketplace` mode) is fixed-price inventory.

**Can I scrape all sold results?**\
The search index is large (millions of Weekly sold lots). Use keywords, grader, category, or `auctionId` to stay inside the ~1000-hit window per filter set.

**How do I get sports card or Pokémon comps?**\
Use `mode: sold` with queries like `mantle psa 8` or `charizard psa 10`, optionally `grader: PSA` and `auctionType: Weekly`.

**Why is grade sometimes null?**\
Grades come from the search index and from title parsing. Ungraded memorabilia may not match.

**How does monitor mode work?**\
First scheduled run is the baseline (IDs remembered, rows still emitted). Later runs emit and charge only listing IDs not seen before. Pair with an Apify Schedule around weekly close / open.

### Related Actors

| Actor | Role |
| --- | --- |
| Fanatics Collect Scraper ◄── you are here | Weekly / Premier auctions + sold |
| [Goldin Auctions Scraper](https://apify.com/crawloop/goldin-scraper) | High-end sports cards / TCG hammer + sold |
| [PSA Population Report Scraper](https://apify.com/crawloop/psa-pop-report-scraper) | PSA pop census and gem rate |
| [TCGPlayer Listings Scraper](https://apify.com/crawloop/tcgplayer-listings-scraper) | US TCG listings and shops |
| [Cardmarket Listings Scraper](https://apify.com/crawloop/cardmarket-listings-scraper) | EU TCG listings and shops |
| [Whatnot Listings Scraper](https://apify.com/crawloop/whatnot-listings-scraper) | Live-commerce listings and shops |
| [eBay Sold Listings Scraper](https://apify.com/crawloop/ebay-sold-listings-scraper) | Marketplace sold prices |
| [PriceCharting Scraper](https://apify.com/crawloop/pricecharting-scraper) | Guide prices |

# Actor input Schema

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

What to scrape. live = current Weekly/Premier lots; sold = realized hammer comps; marketplace = Buy Now / fixed price; lot\_urls = resolve specific lot URLs; auto picks from inputs.

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

Keywords (player, set, card, grade). Leave empty to browse all lots in the selected mode. Each query runs separately.

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

Fanatics Collect lot URLs for lot\_urls mode. Example: https://www.fanaticscollect.com/weekly/04f3f9a0-92bf-11f1-9928-0a58a9feac02/1958-editora-aquarela-black-number-pele-rookie-10-psa-3-vg

## `auctionType` (type: `string`):

Filter by Fanatics Collect marketplace. Marketplace mode forces Buy Now (FIXED).

## `auctionId` (type: `string`):

Optional auction UUID or URN (e.g. 61de75bc-0e4b-11f1-80c8-0a58a9feac02 or WEEKLY:61de75bc-0e4b-11f1-80c8-0a58a9feac02) to scope lots to one sale.

## `soldOnly` (type: `boolean`):

When true, only sold lots (overrides live mode). Useful with keyword search for comps.

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

Optional category facet (e.g. Basketball, Baseball, Football, Pokémon).

## `grader` (type: `string`):

Filter by grading company (Algolia gradingService facet, with title fallback).

## `grade` (type: `string`):

Numeric grade filter (e.g. 10, 9.5, 8).

## `priceMin` (type: `number`):

Minimum current / sale price. 0 or empty = no floor.

## `priceMax` (type: `number`):

Maximum current / sale price. 0 or empty = no ceiling.

## `sort` (type: `string`):

Algolia index sort. Featured is the site default. Price replicas match the marketplace UI.

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

Maximum lot records to output across all queries. 0 = fill the search window (Algolia caps ~1000 hits per filter set).

## `hydrateDetails` (type: `boolean`):

Batch-fetch slug, eye appeal, auction names, and extra images via GraphQL. Turn off for maximum speed if Algolia fields are enough.

## `monitorMode` (type: `boolean`):

On a schedule, push and charge only listing IDs not seen in a previous run. First run is the baseline. Pair with an Apify Schedule — Fanatics Collect weekly auctions make a natural cron.

## `monitorStoreName` (type: `string`):

Named Key-Value store for seen listing IDs across scheduled runs. Use a distinct name per watch (e.g. weekly-psa10 vs premier-jordan).

## `resetMonitorState` (type: `boolean`):

Clear the seen-ID cache before this run (next run becomes a new baseline).

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

Throttle between API calls.

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

Optional. Fanatics Collect search API usually works without a proxy. Enable Apify Proxy only if you hit rate limits.

## Actor input object example

```json
{
  "mode": "live",
  "searchQueries": [],
  "startUrls": [],
  "auctionType": "All",
  "auctionId": "",
  "soldOnly": false,
  "category": "",
  "grader": "",
  "grade": "",
  "priceMin": 0,
  "priceMax": 0,
  "sort": "featured",
  "maxItems": 100,
  "hydrateDetails": true,
  "monitorMode": false,
  "monitorStoreName": "fanatics-collect-monitor",
  "resetMonitorState": false,
  "requestDelaySecs": 0.12,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

Default dataset lot 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/fanatics-collect-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/fanatics-collect-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/fanatics-collect-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,crawloop/fanatics-collect-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/rA5n7VFasIMc0K5g7/builds/ASmJHcwRBVuMcYySS/openapi.json
