# ComicConnect Auction Scraper - CGC Comics & Art (`lulzasaur/comicconnect-scraper`) Actor

Scrape ComicConnect.com auctions, buy-it-now listings & the sold archive. Get title, issue, grade, grader (CGC/CBCS), publisher, current bid, buy now price, sold price & date, auction end time, image and URL. Search by keyword.

- **URL**: https://apify.com/lulzasaur/comicconnect-scraper.md
- **Developed by:** [lulz bot](https://apify.com/lulzasaur) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

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

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#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

## ComicConnect Scraper

Scrape **[ComicConnect.com](https://www.comicconnect.com/)** — the online comic book auction house and marketplace behind record-setting sales of Action Comics #1, Amazing Fantasy #15 and more. Get live auction lots, buy-it-now listings, and the public **sold archive** with realized prices — perfect for comic price research, CGC census cross-referencing, deal hunting, and market analytics.

### Features

- **Keyword search** across ComicConnect's browse listings (comics, original art, video games, memorabilia)
- **Live auctions**: starting bid, current bid, auction end time, reserve status, buyer's premium
- **Buy-it-now listings**: fixed "Buy Now" prices
- **Sold archive**: realized sale prices with sale dates — thousands of historical comps
- **Grade parsing**: numeric grade (0.5–10), grade label (VG+, NM, etc.), grading company (CGC / CBCS / PGX or Raw), and publisher — parsed from every listing
- Series + issue number extracted from titles
- Automatic pagination, cover image URLs, direct listing links

### Input

```json
{
    "searchQueries": ["amazing spider-man", "batman"],
    "listingStatus": "both",
    "maxListings": 40
}
```

| Field | Type | Description |
|-------|------|-------------|
| `searchQueries` | array | Comic titles / keywords to search |
| `listingStatus` | string | `live` (auctions + buy-it-now), `sold` (sold archive), or `both` |
| `maxListings` | integer | Max listings per query per status (0 = unlimited) |
| `proxyConfiguration` | object | Optional; not needed for typical runs |

### Output

One dataset item per listing:

```json
{
    "itemId": "1103473",
    "title": "AMAZING SPIDER-MAN (1963-98; 2003-13) #30",
    "series": "AMAZING SPIDER-MAN (1963-98; 2003-13)",
    "issue": "30",
    "publisher": "Marvel",
    "grade": 5.0,
    "gradeLabel": "VG/F",
    "grader": "Raw",
    "gradeRaw": "Marvel VG/F: 5.0",
    "listingType": "auction",
    "status": "live",
    "startingBid": 1,
    "currentBid": null,
    "buyNowPrice": null,
    "soldPrice": null,
    "currency": "USD",
    "noReserve": true,
    "buyersPremiumPercent": 15,
    "auctionEndsAt": "2026-08-11T05:23:17.000Z",
    "soldDate": null,
    "description": "off-white pages Steve Ditko cover/art; 1st app of the Cat Burglar",
    "image": "https://www.comicconnect.com/coverimages/gallery425/ama1-49193.jpg",
    "url": "https://www.comicconnect.com/item/1103473",
    "searchQuery": "amazing spider-man",
    "scrapedAt": "2026-07-28T18:00:00.000Z"
}
```

Sold-archive items instead carry `soldPrice`, `soldDate` and `soldDateRaw` (e.g. `"Sold on Saturday, 06/27/2026 1:57 AM"`).

### Use Cases

- **Price comps**: pull realized prices by title/issue/grade from the sold archive
- **Deal hunting**: monitor no-reserve auctions ending soon with low current bids
- **Market analytics**: track CGC-graded comic prices across grades over time
- **Census cross-reference**: combine with CGC census data to gauge scarcity vs. price
- **Collection valuation**: look up recent sales for books you own

### Notes

- Prices are in USD. Auction hammer prices exclude the buyer's premium (`buyersPremiumPercent`, typically 15%).
- `auctionEndsAt` is computed from the site's live countdown at scrape time.
- `grader: "Raw"` means the book is ungraded (dealer-graded); `CGC`/`CBCS`/`PGX` indicate slabbed books.
- This actor scrapes only publicly visible listing data.

# Actor input Schema

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

Comic titles / keywords to search on comicconnect.com (e.g., 'amazing spider-man', 'batman', 'x-men'). Each query produces a separate set of results.

## `listingStatus` (type: `string`):

Which listings to scrape: 'live' (current auctions + buy-it-now), 'sold' (public sold archive with realized prices), or 'both'.

## `maxListings` (type: `integer`):

Maximum listings to scrape per search query per status. Set to 0 for unlimited (bounded by page budget). ComicConnect serves 20 listings per page with automatic pagination.

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

Proxy settings. ComicConnect serves standard server-rendered HTML directly, so no proxy is needed for typical runs.

## Actor input object example

```json
{
  "searchQueries": [
    "amazing spider-man"
  ],
  "listingStatus": "both",
  "maxListings": 20,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (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 = {
    "searchQueries": [
        "amazing spider-man"
    ],
    "listingStatus": "both",
    "maxListings": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("lulzasaur/comicconnect-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 = {
    "searchQueries": ["amazing spider-man"],
    "listingStatus": "both",
    "maxListings": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("lulzasaur/comicconnect-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 '{
  "searchQueries": [
    "amazing spider-man"
  ],
  "listingStatus": "both",
  "maxListings": 20
}' |
apify call lulzasaur/comicconnect-scraper --silent --output-dataset

```

## MCP server setup

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