# Comic Books Scraper - PriceCharting (`punkrecordsdata/comics-scraper`) Actor

Scrape comic book prices from PriceCharting.com: Ungraded, 4.0/VG, 6.0/Fine, 8.0/VF, 9.2/NM- and 9.8 per issue, plus the full price schedule, CGC population, series details, price history and per-grade sold comps.

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

## Pricing

from $6.00 / 1,000 price records

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

<p align="center">
  <img src="https://api.apify.com/v2/key-value-stores/AAm3a1h3Z9nYfrvh9/records/banner" alt="PunkRecordsData" width="100%" />
</p>

## 📚 Comic Books Scraper - Grades, Population & Sold Comps

> 🚀 **Get real comic book prices by grade, not one flattened number.** Scrape Ungraded through 9.8 prices, the full 14-point price schedule, CGC population and per-grade sold comps from PriceCharting.com.

The **Comic Books Scraper** extracts market values for comic books from [PriceCharting.com](https://www.pricecharting.com/category/comic-books). PriceCharting tracks comics using the same generic price-table it uses for video games and trading cards, silently repurposed for a different grade scale, this actor is built specifically to read those fields correctly for comics: **Ungraded, 4.0/VG, 6.0/Fine, 8.0/VF, 9.2/NM- and 9.8**, verified against the site's own full price schedule.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Comic collectors & investors | Track a collection's value by grade over time |
| CGC submitters | Decide which grade tier is worth chasing before submitting |
| Resellers & flippers | Spot the ungraded-to-9.8 spread worth grading for |
| Data analysts | Build price and population models across series |

### 📋 What the Comic Books Scraper does

> 💡 **Why it matters:** a raw ungraded Amazing Spider-Man #1 and a CGC 9.8 copy can differ by 180x in price. This actor reads every real grade PriceCharting tracks per issue, plus the full 14-point price schedule embedded on the same page for free.

Point it at a series listing page (e.g. `/console/comic-books-amazing-spider-man`) or a single issue URL, and it extracts the current price at every real grade, plus four optional enrichments: CGC population, issue details, full price history, and sold comps, each tagged with the correct grade.

### 📊 Output

Each record contains:

| Field | Description |
|---|---|
| `title` | Issue name (e.g., "Amazing Spider-Man #1 (1963)") |
| `url` | Full PriceCharting product URL |
| `productId` | PriceCharting's internal product ID |
| `ungraded` | Ungraded price ($) |
| `grade_4_0` | 4.0 / Very Good price ($) |
| `grade_6_0` | 6.0 / Fine price ($) |
| `grade_8_0` | 8.0 / Very Fine price ($) |
| `grade_9_2` | 9.2 / Near Mint- price ($) |
| `grade_9_8` | 9.8 price ($) |
| `fullPriceGuide` | All grades from Ungraded through 10.0, free with every record |
| `scrapedAt` | ISO timestamp of scrape |
| `cgcPopulation` | (optional) Raw CGC graded-population count array |
| `attributes` | (optional) Genre, release date, publisher, and other issue details |
| `priceHistory` | (optional) Monthly price arrays per grade |
| `soldComps` | (optional) Recent sold listings, tagged with the grade they sold at |

**Example output** (real issue, real prices, 2026-09-15):

```json
{
  "title": "Amazing Spider-Man #1 (1963)",
  "url": "https://www.pricecharting.com/game/comic-books-amazing-spider-man/amazing-spider-man-1-1963",
  "productId": 2314818,
  "ungraded": 4050,
  "grade_4_0": 9843.75,
  "grade_6_0": 18300,
  "grade_8_0": 45950.44,
  "grade_9_2": 144000,
  "grade_9_8": 728153.67,
  "scrapedAt": "2026-09-15T05:49:00.000Z"
}
```

### ✨ Why choose this Actor

- **Correct by construction.** PriceCharting silently reuses generic price-table fields across categories, this actor labels comic values with the real grade names, verified against the site's own full price schedule.
- **All 14 sold-comps tabs.** Recent eBay sold listings tagged with the grade they actually sold at, not lumped into one bucket.
- **CGC population data.** Raw graded-population counts per issue, a data point most competing scrapers skip.
- **Pay only for what you use.** 5 independent billable events, each optional except the base price record.

### 🚀 How to use

1. **Create a free Apify account** at [console.apify.com/sign-up](https://console.apify.com/sign-up), you get $5 credit monthly.
2. **Open the Comic Books Scraper** in Apify Console.
3. **Add start URLs**, paste a series listing or a single issue URL:
   - `https://www.pricecharting.com/console/comic-books-amazing-spider-man`
   - `https://www.pricecharting.com/game/comic-books-amazing-spider-man/amazing-spider-man-1-1963`
4. **Set max items**, how many issues to scrape (free tier caps at 10).
5. **Toggle the extras you need**, CGC population, Issue details, Price history, Sold comps, each is billed only when enabled.
6. **Click Start**, results appear in the Output tab within minutes.
7. **Download** as JSON, CSV, Excel, or XML.

### 💼 Business use cases

#### Grading ROI analysis

Compare the ungraded price against 9.8 and population counts to decide whether submitting an issue for CGC grading is worth it.

#### Collection valuation by grade

Track a graded collection's real market value instead of a flat per-issue estimate.

#### Population-driven scarcity tracking

Watch how CGC population counts grow over time for a given issue, a rising population can signal a coming price drop.

#### Series-wide market research

Scrape an entire series listing to compare grade premiums across every issue in a run.

### 🔌 Automating Comic Books Scraper

- **Make.com / Zapier**, Schedule weekly scrapes and push results to Google Sheets
- **Slack**, Get notified when an issue's 9.8 price crosses a threshold
- **Airbyte**, Feed grade-level pricing into your data warehouse
- **GitHub Actions**, Automate scrapes on a cron schedule

### 🌟 Beyond business use cases

- **Personal collection tracking**, know exactly what your graded and raw issues are worth
- **Academic research**, study how CGC population growth correlates with price
- **Non-profit fundraising**, value donated comic collections for charity auctions

### 🤖 Ask an AI assistant about this scraper

Ask questions about how to use this scraper, what data it extracts, or how to integrate it with your workflow. The AI assistant has full context about the actor's capabilities.

### ❓ Frequently Asked Questions

#### Why does the output use grade\_4\_0, grade\_9\_8, etc. instead of PriceCharting's own field names?

PriceCharting's site reuses generic price-table fields across every category it tracks, silently repurposing them differently for video games, trading cards, and comics. This actor relabels them to their real comic-grade meaning, verified against the site's own full price schedule table.

#### What is the full price guide?

Every comic record includes a 14-point price schedule (Ungraded through 10.0) embedded on the same product page, at no extra cost, alongside the 6 main grade prices.

#### How does pricing work?

The base `price-record` event bills per issue scraped. Enable CGC population, Issue details, Price history, and/or Sold comps for additional data at extra per-event cost. Free users get 10 issues per run.

#### Is scraping PriceCharting legal?

This actor scrapes publicly available pricing data. Respect PriceCharting's terms of service and use the data responsibly.

#### Can I scrape individual issue pages?

Yes, paste any `https://www.pricecharting.com/game/comic-books-.../...` issue URL directly into the start URLs.

#### What happens if I hit the free tier limit?

The actor caps output at 10 items for free users. Upgrade to a paid plan for up to 1,000,000 items.

#### Does it work with PriceCharting's search?

Not currently, search is protected by Cloudflare. Use direct series/issue URLs instead.

#### Can I schedule recurring scrapes?

Yes, use Apify's Scheduler to run the actor daily, weekly, or on any cron schedule.

#### What are "sold comps"?

Recent eBay sold listings PriceCharting tracks per grade tab. This actor reads all 14 grade tabs and tags each comp with the grade it sold at.

#### Why is the CGC population an unlabeled array?

PriceCharting exposes CGC census data as a raw count array on the product page with no grade labels attached server-side. Rather than inventing labels, this actor returns the raw counts in the order the site publishes them (high to low grade).

### 🔌 Integrate with any app

The actor outputs JSON datasets that work with virtually any tool: Google Sheets, Airtable, Notion, databases (PostgreSQL, MongoDB), data pipelines (Airbyte, Fivetran), and more. Use the Apify API to pull data programmatically.

### 🔗 Recommended Actors

- [Prediction Markets Scraper](https://apify.com/punkrecordsdata/prediction-markets-scraper) - Kalshi & Polymarket odds
- [MercadoLibre Scraper](https://apify.com/punkrecordsdata/mercadolibre-scraper) - Latin American marketplace listings
- [SofaScore Scraper](https://apify.com/punkrecordsdata/sofascore-match-stats-scraper) - Live sports match statistics

> 💡 **Pro Tip:** browse the complete [PunkRecordsData collection](https://apify.com/punkrecordsdata).

**🆘 Need Help?** contact.punkrecordsdata@gmail.com

> **⚠️ Disclaimer:** independent tool, not affiliated with PriceCharting or CGC; only publicly available data.

# Actor input Schema

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

Comic book series listing pages (e.g. pricecharting.com/console/comic-books-amazing-spider-man) or individual issue pages from pricecharting.com.

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

Free users: limited to 10 items (preview). Paid users: optional, max 1,000,000.

## `includePopulation` (type: `boolean`):

Raw CGC graded-population count array for this issue.

## `includeIssueDetails` (type: `boolean`):

Genre, release date, publisher, and other series/issue attributes.

## `includePriceHistory` (type: `boolean`):

Full historical monthly price series for every grade (Ungraded, 4.0/VG, 6.0/Fine, 8.0/VF, 9.2/NM-, 9.8).

## `includeSoldComps` (type: `boolean`):

Recent eBay sold listings, tagged with the grade they sold at (Ungraded through 10.0) — all 14 grade tabs, not just one.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.pricecharting.com/console/comic-books-amazing-spider-man"
    }
  ],
  "maxItems": 10,
  "includePopulation": false,
  "includeIssueDetails": false,
  "includePriceHistory": false,
  "includeSoldComps": false
}
```

# Actor output Schema

## `overview` (type: `string`):

Key fields: issue, URL, price by comic grade

## `fullData` (type: `string`):

Complete dataset including full price schedule, CGC population, details, price history and sold comps

# 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 = {
    "startUrls": [
        {
            "url": "https://www.pricecharting.com/console/comic-books-amazing-spider-man"
        }
    ],
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("punkrecordsdata/comics-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 = {
    "startUrls": [{ "url": "https://www.pricecharting.com/console/comic-books-amazing-spider-man" }],
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("punkrecordsdata/comics-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 '{
  "startUrls": [
    {
      "url": "https://www.pricecharting.com/console/comic-books-amazing-spider-man"
    }
  ],
  "maxItems": 10
}' |
apify call punkrecordsdata/comics-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,punkrecordsdata/comics-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/H9SYKQpFJiZC2BMy9/builds/62jr2wjFxMI26g7IQ/openapi.json
