TCGCSV

Frequently Asked Questions

See something wrong or out of place? Reach out on discord or submit an issue on Github to ask a question or offer a correction!

Can I scrape this website?

If the premade CSVs aren't quite what you need then go ahead! It might make more sense to process the cached JSON files with any requests library directly.

import requests pokemon_category = '3' r = requests.get(f"https://tcgcsv.com/tcgplayer/{pokemon_category}/groups") all_groups = r.json()['results'] for group in all_groups: group_id = group['groupId'] r = requests.get(f"https://tcgcsv.com/tcgplayer/{pokemon_category}/{group_id}/products") products = r.json()['results'] for product in products: # Process product information print(f"{product['productId']} - {product['name']}") r = requests.get(f"https://tcgcsv.com/tcgplayer/{pokemon_category}/{group_id}/prices") prices = r.json()['results'] for price in prices: # Process prices print(f"{price['productId']} - {price['subTypeName']} - {price['midPrice']}") break # Only process the first group and break for testing

Are there any past prices available?

TCGPlayer does not offer historcal price information, but TCGCSV does maintain a price archive that records prices daily. You can download price history from February 8, 2024 and onwards! (You will need 7zip to extract the archive)

For the technical folks out there:

# Download archive curl -O https://tcgcsv.com/archive/tcgplayer/prices-2024-02-08.ppmd.7z # Extract 7z x prices-2024-02-08.ppmd.7z # Example price file cat 2024-02-08/3/3170/prices

For everyone else:

  1. Install 7zip
  2. Download the archives you'd like to extract:
    https://tcgcsv.com/archive/tcgplayer/prices-2024-02-08.ppmd.7z
  3. Anything before 2024-02-08 doesn't exist at the time of writing :(
  4. Use 7zip to extract the file you downloaded!

Big thank-yous and shoutouts to Hoodwill for sharing some of the data they've been recording!

If you, or someone you know or love has significant amounts of pricing history from before February 8, 2024 and they'd be comfortable giving it away freely please reach out!

What is the best way to contact someone about this website?

This website is just a hobby and a one-man show. The best place to reach the maintainer (CptSpaceToaster) is probably discord.

Can I look at individual listings or see sales for a specific product?

Unfortunately no. This information isn't quite available to API users because TCGPlayer's API does not allow users to crawl individual listings. The lowPrice is the closest approximation TCGPlayer offers for the lowest price listing. With your own API access, you can pursue data at the SKU level and get a little more accurate information about the true "lowest listing" but the API does not divuldge much more than averages.

What's with Categories 21, 69, and 70?

Category 21 is My Little Pony, but Category 28 is My Little Pony CCG. Category 21 does not have any groups and has been mostly removed from TCGPlayer's side. You want Category 28 instead.

Categories 69 and 70 indicate that TCGPlayer attempted to categorize comic books at one point... and then stopped. Unlike category 21, these two categories have 1000's of groups available, however every group is empty (no products). These empty product-lists are not available to save on processing time.

For these reasons, I would strongly suggest skipping categories 21, 69, and 70 when processing all categories.

import requests r = requests.get('https://tcgcsv.com/tcgplayer/categories') all_categories = r.json()['results'] for category in all_categories: category_id = category['categoryId'] if category_id in [21, 69, 70]: continue # Process the other categories normally

Why are some of the listed high prices absurd, unusually large, and "just bananas"?

A lot of sellers on TCGPlayer engage in Price Parking: when a seller sets the price of a product to thousands of dollars so noone buys it. I don't know why sellers do this, but my guess is that a seller would want to park a card so they don't have to pick the card's set, printing, and condition if they want to list the card for sale again.

For that reason, the highPrice isn't very useful from TCGPlayer's data.

How can I get my own TCGPlayer API access?

TCGPlayer moved to a slightly more involved process, and hasn't been readily handing out new API Keys. Rather than "ask first, then build", try to build out as much of your application as possible without a key. Once you have an app started you can contact them about their affiliate program and show off what you're building. Then you will be in a great spot to request additional API access if needed!

Is it easy to migrate from TCGCSV to TCGPlayer's API?

The cached files and JSON responses are sourced directly from TCGPlayer's API (They just might be ~24 hours old). The JSON data and properties should match exactly what you would get from their API directly. Migrating over to their API should be straight forward. Some considerations:

Is there any data from Cardmarket?

On TCGCSV... not yet. If anyone knows how to contact Cardmarket to pursue API access, that would be helpful.

I wrote an email to Cardmarket's contact email on June 26, 2024 12:29 PM (EDT) and a followup July 26, 2024, 3:06 PM (EDT), but I am still awaiting a response.

Cardmarket does offer Product and Price data exports on their website, however the data lacks set and/or specific card information. The dumps seems hard to parse, and seem to require reverse engineering card names to learn how Cardmarket uniquely identifies which cards from which sets get what names... whether an Attack or Ability is being mentioned in the card's name, etc. Maybe someday?