PriceCharting Product Scraper avatar

PriceCharting Product Scraper

Pricing

from $5.00 / 1,000 product results

Go to Apify Store
PriceCharting Product Scraper

PriceCharting Product Scraper

Scrape PriceCharting prices for video games, Pokemon and other TCG cards, comics and coins: every grade (PSA, BGS, CGC, SGC, TAG, ACE), full price history, recent sold listings, POP report and 1600px images. Clean JSON/CSV by product URL or ID. Failed lookups are never billed.

Pricing

from $5.00 / 1,000 product results

Rating

0.0

(0)

Developer

Elena Vance

Elena Vance

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

1

Monthly active users

4 days ago

Last modified

Share

PriceCharting Product Scraper — Prices, Price History, Graded Values & Images

Turn any PriceCharting product page into clean, structured JSON: current prices for every condition and grade — including PSA, BGS, CGC, SGC, TAG and ACE graded card values — the complete price-history time series, recent sold listings, and full-resolution product images — for video games, Pokémon / Magic / Yu-Gi-Oh! and other trading cards, comics, coins, Funko Pops, and LEGO sets.

Paste a list of product URLs or numeric product IDs and get back one tidy record per item, ready to drop into a spreadsheet, database, dashboard, or app. No browser automation, no HTML wrangling, no $49/month subscription — and you are never billed for failed lookups.


Why this Actor

  • Full price history — not just today's price. The entire time series behind PriceCharting's charts (often hundreds of data points per product), per condition. PriceCharting's own official API does not return history; this Actor does.
  • Full-resolution product images. The cover photo plus every gallery image (card backs, box / cartridge / manual shots) as direct 1600 px URLs — ready for your storefront, app, or catalog.
  • Every price point, one record. Loose / CIB / new / graded / box-only / manual-only for games; Ungraded → PSA 10 grade tiers for cards (see the mapping table below). Missing conditions come back as null, never a crash.
  • The complete grading ladder (fullPrices). Every row of PriceCharting's Full Price Guide with the site's own labels: for cards that means Grade 1-9.5 plus TAG 10, ACE 10, SGC 10, CGC 10, CGC 10 Pristine, PSA 10, BGS 10 and BGS 10 Black Label; for games, hybrid conditions like Item & Box and Graded CIB. Neither the official API nor other scrapers return these.
  • Sales volume, POP report, and optional sold listings. Per-grade counts of recent sales, the PSA/CGC population chart for cards, and (opt-in) the actual recent sold listings — date, title, sale price, and link per eBay / TCGPlayer / Goldin / PWCC / Heritage sale — the raw comps behind every price.
  • You never pay for failures. A dead link, typo, or removed product is reported in the run summary — it is not written to your dataset and not billed. You pay only for product records you actually receive.
  • Fast and cheap by design. Lightweight HTTP scraping — no headless browser — so runs are quick and compute stays minimal.
  • Flexible input. Full product URLs, bare numeric IDs, or category/slug paths — mix them freely in one run.
  • Optional official-API mode. Bring your own PriceCharting API token and numeric IDs are resolved through the sanctioned /api/product endpoint.
  • Clean, consistent USD output. Prices normalized to USD floats (2 decimals) regardless of where you run from.

Problems this Actor solves

If you are…Your problemHow this Actor solves it
A reseller / game or card shopPricing inventory by hand from the website takes hours and goes stale immediatelyRe-price your whole inventory in one scheduled run; per-condition prices map directly to what you stock
A collectorYou want your collection's value and its trend, not a single snapshotFull price history per condition lets you chart gains/losses over any period
A developer building an app or storeThe official API needs a $49/month subscription and still returns no history and no imagesPay cents per product on demand, get history and 1600 px images in one call
A market researcher / data analystChart data is locked inside the site's JavaScriptThe exact chart series arrives as dated JSON points you can load into pandas, Sheets, or BI tools
An eBay / marketplace sellerGuessing listing prices leaves money on the tablePull current prices for every grade plus the actual recent sold comps (date, final price, link) for every item before you list
A card grader / submitterIs grading this card worth the fee?The full grade ladder in one record — e.g. raw vs Grade 9 vs PSA 10 vs BGS 10 — plus the PSA/CGC POP report and per-grade sales volume to judge the value jump and liquidity

Efficiency, concretely: valuing a 1,000-item collection by hand at ~30 seconds per lookup is ~8 hours of clicking. This Actor does it in one run of about 15 minutes, for a few dollars, and gives you the history and images the website lookup never would.


What data you get

Each product becomes one dataset record:

FieldDescription
productIdPriceCharting's numeric product ID
productName, consoleNameProduct and console / set name (e.g. Charizard #4, Pokemon Base Set)
categoryPriceCharting category (e.g. video-games, pokemon-cards)
urlCanonical product page URL
releaseDate, genre, upc, epid, asinCatalog metadata where available
imageUrlCover photo, full-resolution (1600 px)
imagesAll product photos (cover + gallery: card backs, box/cart/manual shots), 1600 px
flagsProduct-type booleans: isCard, isComic, isCoin, isSystem, isFunkoPop, isLegoSet, …
currencyAlways USD
pricesCurrent price per condition slot (see mapping below)
fullPricesEvery row of the on-page Full Price Guide, labels verbatim — cards: Ungraded, Grade 1Grade 9.5, TAG 10, ACE 10, SGC 10, CGC 10, PSA 10, BGS 10, BGS 10 Black, CGC 10 Pristine; games: Loose, Item & Box, Graded CIB, … (null = grade tracked, no sales yet)
salesVolumeNumber of recent sold listings per grade/condition, same labels as the site
populationReportCards only: PSA and CGC population counts per grade 1–10 (the site's POP Report chart)
recentSalesOpt-in (see input): recent sold listings per grade — { date, title, price, source, itemId, url } per sale, from eBay, TCGPlayer, Goldin, PWCC, Heritage
priceHistoryPer-condition arrays of { "date": "YYYY-MM-DD", "price": 12.34 } points
sourcescrape or api
scrapedAtISO timestamp

What the six price slots mean

PriceCharting reuses the same six columns with different labels per category — this Actor keeps stable keys and you read them per category:

KeyVideo gamesTrading cards
prices.looseLoose (cart / disc only)Ungraded
prices.cibComplete in boxGrade 7
prices.newNew / sealedGrade 8
prices.gradedGradedGrade 9
prices.boxOnlyBox onlyGrade 9.5
prices.manualOnlyManual onlyPSA 10

(Comics, coins, and other categories follow the same pattern with their own on-site labels.) priceHistory uses the same keys, so for a card, priceHistory.manualOnly is the PSA 10 price over time.

If the six slots are not enough, read fullPrices instead: it carries the site's complete price guide with the labels exactly as shown on the page — no mapping table needed, and for cards it includes every grading company (TAG / ACE / SGC / CGC / PSA / BGS, plus Black Label and Pristine variants). History exists only for the six slots above — PriceCharting publishes no time series for the company-specific grades, so fullPrices is their current market value.

Example output

{
"productId": 630417,
"productName": "Charizard #4",
"consoleName": "Pokemon Base Set",
"category": "pokemon-cards",
"url": "https://www.pricecharting.com/game/pokemon-base-set/charizard-4",
"releaseDate": "January 9, 1999",
"imageUrl": "https://storage.googleapis.com/images.pricecharting.com/hpgpcpsd42huitud/1600.jpg",
"images": [
"https://storage.googleapis.com/images.pricecharting.com/hpgpcpsd42huitud/1600.jpg",
"https://storage.googleapis.com/images.pricecharting.com/kmwn5qjyipwzbuwm/1600.jpg"
],
"flags": { "isCard": true, "isComic": false, "isCoin": false },
"currency": "USD",
"prices": {
"loose": 338.42, // Ungraded
"cib": 749.50, // Grade 7
"new": 1199.03, // Grade 8
"graded": 3175.04, // Grade 9
"boxOnly": 3403.50, // Grade 9.5
"manualOnly": 30085.73 // PSA 10
},
"fullPrices": { // the complete on-page price guide, labels verbatim
"Ungraded": 338.42,
"Grade 1": 354.00, "Grade 2": 277.50, "Grade 3": 325.00,
"Grade 4": 330.60, "Grade 5": 450.00, "Grade 6": 504.81,
"Grade 7": 749.50, "Grade 8": 1199.03, "Grade 9": 3175.04,
"Grade 9.5": 3403.50,
"TAG 10": null, // tracked, no sales yet
"ACE 10": null,
"SGC 10": 18051.00,
"CGC 10": 7605.63,
"PSA 10": 30085.73,
"BGS 10": 39111.00,
"BGS 10 Black": 195555.00,
"CGC 10 Pristine": 27475.00
},
"salesVolume": { "Ungraded": 48, "PSA 10": 30, "CGC 10": 30, "Grade 9": 30, "…": 0 },
"populationReport": {
"PSA": { "1": 20, "2": 19, "…": 0, "9": 9, "10": 0 },
"CGC": { "…": 0, "9": 2, "10": 4 }
},
"recentSales": { // only with "Include recent sold listings" enabled
"PSA 10": [
{ "date": "2026-05-04", "title": "1999 Pokemon Base Set Charizard #4 Holo PSA 10",
"price": 30100.00, "source": "ebay", "itemId": "157…", "url": "https://www.ebay.com/itm/157…" }
],
"…": []
},
"priceHistory": {
"used": [ { "date": "2020-09-01", "price": 180.00 }, { "date": "2020-10-01", "price": 210.50 }, "…" ],
"graded": [ "…" ]
},
"source": "scrape",
"scrapedAt": "2026-06-11T04:24:21+00:00"
}

Inputs that could not be fetched are not written to the dataset (and are never billed). They are listed in the run's SUMMARY record in the key-value store — { "failures": [ { "input": "…", "source": "scrape", "error": "…" } ] } — so you can inspect and retry them, and the run's status message tells you at a glance how many succeeded.


How to use it (60 seconds)

  1. Click Try for free / Start.
  2. In Products, add one entry per line — a product page URL or a numeric ID:
    https://www.pricecharting.com/game/super-nintendo/super-mario-world
    https://www.pricecharting.com/game/pokemon-base-set/charizard-4
    7141
  3. (Optional) Toggle Scrape full product details off if you only need current prices without the history series.
  4. Click Save & Start. Download results as JSON, CSV, Excel, or via API from the Dataset tab; check the Key-value store → SUMMARY for run totals and any failed inputs.

Tip — finding a product ID: open any product on PriceCharting and hover over its title — the numeric ID appears. Or just paste the page URL.


Input reference

FieldTypeDefaultDescription
Products (required)listOne per line: product page URL or numeric product ID.
Scrape full product detailsbooleantrueInclude the full price-history series. Images are always included for scraped products.
Include recent sold listingsbooleanfalseAdds recentSales (up to ~30 sold listings per grade with date, title, price, link). Increases item size ~5x; leave off if you only need prices.
PriceCharting API tokensecretOptional. Resolves numeric IDs through the official API when full details are off (see below).
Proxy configurationobjectAutomaticProxy used for scraping. Automatic (datacenter) is reliable and the cheapest; switch to residential only if you ever see failed requests.
Max concurrencyinteger3Parallel requests (kept low to be respectful).
Delay between requestsinteger1Politeness delay in seconds (max 10).
Max itemsinteger0Stop after N results (0 = unlimited).

Pricing — what a run actually costs

This Actor uses transparent pay-per-event pricing with a built-in volume discount: a small Actor-start fee, a fixed price per successful product record for the first 10,000 results of a run, and a ~70% cheaper rate for every result beyond that. No subscription, no minimums, no charges for failures.

Per runRate
Results 1 – 10,000$5.00 / 1,000
Results 10,001 and up$1.50 / 1,000 (automatic volume discount)
Example jobApproximate cost
Value 50 cards≈ $0.27 (start fee + 50 results)
Re-price a 500-item store inventory≈ $2.52
1,000 products with full history + images≈ $5.02
100,000 products (bulk tier kicks in)≈ $185
  • Failed lookups are free. Dead links and removed products are reported in the summary, not billed.
  • Bigger runs cost less. The discount tier resets per run, so one large run is much cheaper than the same job split into many small runs — batch large jobs accordingly.
  • Try it free: an Apify free account includes $5 of monthly platform credit — enough to scrape roughly 1,000 products with this Actor before paying anything.
  • Compare: PriceCharting's own API requires the $49/month Legendary subscription and still returns no price history, no images, no graded values beyond the basic slots, and no sold listings. Here you pay per result, get all of it, and there is no commitment.
  • Stay in control: set a maximum charge per run (Apify's built-in spending limit) and the Actor stops gracefully at your cap, keeping everything already scraped.

Bulk runs (10,000+ products) — best practices

  • Input bare numeric IDs instead of full URLs — hundreds of thousands of IDs fit in a single run's input.
  • Set the run timeout to unlimited, keep memory at 1 GB, raise Max concurrency to 10–15 and set the delay to 0 — roughly 7–12 products/sec. The request queue survives restarts and migrations.
  • Set maxItems and a maximum charge as guardrails; datasets reach several GB at this scale with history included (export promptly or read via the API).

Compared to the alternatives

This ActorOfficial API ($49/mo)Build your own scraperManual lookups
Current prices, all conditionsYesYesYou maintain itSlow
Price history seriesYesNoYou reverse-engineer the chartsNo
Graded values: PSA / BGS / CGC / SGC / TAG / ACE (incl. Black Label, Pristine)Yes — fullPricesNoYou maintain itOne grade at a time
Recent sold listings (eBay, TCGPlayer, Goldin, PWCC, Heritage)Yes — opt-inNoHard: affiliate links to unwrapCopy-paste
POP report & per-grade sales volumeYesNoYou maintain itNo
Product images (1600 px)YesNoYou maintain itManual saves
Cost for 1,000 products / month≈ $5$49 flatYour dev time + proxies~8 hours of your life
Setup time60 secondsSubscription + codingDays, breaks on site changes
Export JSON / CSV / Excel / APIYes, built-inDIYDIYDIY

Integrate the data

  • Exports: JSON, CSV, Excel, XML from the dataset tab — or fetch programmatically:
    GET https://api.apify.com/v2/datasets/{datasetId}/items?format=json
  • Run on a schedule: use Apify Schedules to re-price daily or weekly, and webhooks to push finished runs into your pipeline (Sheets, Slack, your backend).
  • From code: call the Actor with the Apify API or SDKs (Python / JavaScript) and read the dataset when the run finishes.
  • Run summary: every run writes a SUMMARY record (key-value store) with totals, per-source counts, and the list of failed inputs — ideal for monitoring automated pipelines.

Optional: official API token mode

If you have a paid PriceCharting subscription, add your API token in the input. When Scrape full product details is off, numeric-ID inputs are fetched through PriceCharting's official, sanctioned /api/product endpoint (rate-limited to 1 request/second) and marked "source": "api".

Note: the official API returns current prices but no price history and no images. Because of that, while full details are enabled (the default) the Actor scrapes every input — including numeric IDs — so history and images are never silently missing. URL inputs are always scraped.


FAQ

Which products are supported? Anything with a PriceCharting product page: video games (every console generation), Pokémon / Magic / Yu-Gi-Oh! / Lorcana / One Piece / Star Wars / Marvel and other TCG cards, comic books, coins, Funko Pops, and LEGO sets.

Do I get product images? Yes — every scraped record includes the cover (imageUrl) and all gallery photos (images) as full-resolution 1600 px URLs.

What about graded card prices? Every card record includes the complete grading ladder in fullPrices: Ungraded, Grade 1 through 9.5, and the company-specific top grades — TAG 10, ACE 10, SGC 10, CGC 10, CGC 10 Pristine, PSA 10, BGS 10 and BGS 10 Black Label — exactly as PriceCharting publishes them. The six headline slots (Ungraded → PSA 10) additionally come with full price history; company-specific grades are current market values (the site publishes no time series for them, so this is everything that exists).

Do I get the actual sold listings (comps)? Yes — turn on Include recent sold listings and every record gains recentSales: the most recent sales per grade with date, listing title, final sale price (best-offer sales report the accepted price, not the asking price), the marketplace (eBay, TCGPlayer, Goldin, PWCC, Heritage), and a direct, tracking-free link to the listing. Cards also always include salesVolume (how many recent sales per grade) and the PSA/CGC populationReport.

How fresh is the data? Each run fetches live pages, so you get exactly what PriceCharting shows at that moment. Schedule the Actor to keep your dataset as fresh as you need.

What happens with broken or wrong URLs? They're skipped, listed in the run summary with the error, and never billed. You pay only for successful product records.

Can I scrape a whole console or set at once? v1 takes individual product URLs/IDs. Search-keyword and full-set (/console/…) modes are on the roadmap — open an issue if you want them prioritized.

Do I need a PriceCharting account? No. The optional token mode only changes how numeric IDs are fetched.

Are prices in my local currency? Prices are normalized to USD consistently, regardless of run location.

What formats can I export? JSON, CSV, Excel, XML — from the Console or via the Apify API.


Roadmap & support

Planned: search-keyword input, full-set/console bulk mode, per-grade PSA/BGS tables, marketplace (eBay sold) listings. Found a bug or need a field? Open an issue from the Actor's Issues tab — feedback directly shapes the roadmap.


Disclaimer

This Actor is intended for personal and research use. You are responsible for ensuring your use complies with PriceCharting's Terms of Service and applicable law. For high-volume or commercial use, PriceCharting's official paid API (token mode) is the sanctioned data source. Please scrape responsibly — keep concurrency low and delays reasonable. This project is not affiliated with, endorsed by, or sponsored by PriceCharting.