Pokemon Cards Scraper - Prices, Population & Grades
Pricing
from $17.14 / 1,000 price records
Pokemon Cards Scraper - Prices, Population & Grades
Scrape Pokemon card prices by grade (Ungraded, Grade 7 to PSA 10) from PriceCharting.com, plus PSA/CGC population reports, card details, price history and sold comps. Export CSV, Excel, JSON. No login or API key. Maps all 6 real grade prices for every card.
Pricing
from $17.14 / 1,000 price records
Rating
0.0
(0)
Developer
RecordsData
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Share
๐ด Pokemon Cards Scraper - Prices, Population & Grades
Pokemon Cards Scraper is an Apify Actor that extracts Pokemon card prices from PriceCharting.com. Search by card name, read whole sets, or paste URLs and product IDs. Each row has the full grading ladder (up to 19 grades, from Ungraded to PSA 10 and BGS 10 Black), sales volume, a 1600 px image and the six classic grade fields. Optional add-ons return PSA/CGC population, card details, price history and sold comps. Monitor mode returns only new or changed cards. Export to CSV, Excel or JSON. No login or API key needed.
The Pokemon Cards Scraper turns a card name, set name or PriceCharting page into structured data. In a real test on 2 Base Set cards with every add-on, one Charizard [1st Edition] #4 row came back with 6 grade prices, 11 population rows, 122 sold comps and 6 price-history series in about 10 seconds.
PriceCharting stores trading cards in the same generic price table it uses for video games, with raw names like loose, cib and manual only. This Actor maps them to the real grade (Ungraded, Grade 7 to 9.5, PSA 10), so your spreadsheet says psa10. It reads Pokemon only; other pages are refused with a free error row.
๐ฏ What does the Pokemon Cards Scraper do?
You can feed it five kinds of source, alone or mixed in one run:
- Search by name.
searchQueriessuch as "charizard base set"; every word must appear in the card title or set name. - Sets by name.
setstakes "Base Set", "Jungle", "Scarlet & Violet 151", a slug or "all" (about 300 sets, including Japanese and Chinese ones). - URLs and IDs.
startUrlstakes set and card pages,productIdstakes numeric IDs. - Monitor mode.
onlyChangedskips cards whose prices did not move since the last run.
Each card is one row with the price at every grade. Four optional add-ons are billed separately, only when they return data.
๐ฆ What data does the Pokemon Cards Scraper return?
| Field | Description |
|---|---|
title, cardNumber, setName, setUrl | Card name with number, for example "Charizard [1st Edition] #4", and set name and link |
url, productId, imageUrl, images, upc | Card URL, numeric ID, 1600 px image, extra photos and UPC when the page has them |
currency, scrapedAt | Always USD, and the ISO timestamp |
ungraded, grade7, grade8, grade9, grade9_5, psa10 | The six classic grade prices in USD |
fullPrices | The whole ladder with the site's labels (Grade 1 to 9.5, TAG 10, SGC 10, CGC 10, PSA 10, BGS 10, BGS 10 Black), only grades with a price |
salesVolume, salesPerYear, searchQuery | Sales volume per grade as the page words it and as a number per year, and the search that found the card |
population | Optional. PSA and CGC population count plus market price for each grade 1 to 10 |
cardDetails, priceHistory | Optional. Genre, release date, publisher, print run, eBay ePID, TCGPlayer ID; monthly price series per grade |
soldComps | Optional. Recent eBay and TCGPlayer sales with grade, link and price |
A grade with no market price is left out of the row, never written as null. Cards with no price at any of the six grades are skipped and not billed. ASIN is not offered: PriceCharting leaves it empty on Pokemon pages.
๐งพ Sample output (real run)
Real cloud row with all four add-ons on, arrays shortened. It predates the newer columns listed above.
{"title": "Charizard [1st Edition] #4","ungraded": 8022.5,"grade9": 31020,"grade9_5": 70401,"psa10": 343098,"cardDetails": { "genre": "Pokemon Card", "releaseDate": "January 9, 1999", "publisher": "Wizards of the Coast (WOTC)", "ebayEpid": "715593", "tcgplayerId": "106999" },"population": [ { "grade": "1", "psaPopulation": 215, "cgcPopulation": 11, "totalPopulation": 226, "priceAtGrade": 9100 } ],"soldComps": [ { "grade": "ungraded", "date": "2026-08-31", "price": 7500, "source": "eBay" } ]}
๐ฐ How much does it cost to scrape Pokemon card prices?
Pay-per-event pricing. Free-tier prices from the live Actor page, read on 2026-10-10. Paid plans get a small discount on the price record (down to $0.01714).
| Event | Price | Billed when |
|---|---|---|
| Price record | $0.02 | One card row with real per-grade prices is saved |
| Population record | $0.01 | One population row (one grade) is returned |
| Card details record | $0.01 | Card details were found for the card |
| Price history record | $0.01 | One grade series is returned (up to 6 per card) |
| Sold comps record | $0.01 | One sold listing is returned |
The newer columns (full ladder, sales volume, image, product ID, set fields) are part of the price record at no extra cost. A search that matches nothing charges nothing and ends with one free scan-budget notice row.
At free-tier prices, base price records only: 10 cards cost $0.20, 100 cards cost $2.00 and 1,000 cards cost $20.00. On Gold, Platinum and Diamond plans 1,000 cards cost $17.14. Every add-on is billed on top, per row returned, at $0.01 each.
Example from real runs: two cards with every add-on produced 2 price, 22 population, 2 card details, 12 price history and 322 sold comps records. That is 358 events, about $3.62, or roughly $1.81 per card. includeAllGradeSoldComps can bill 280 to 400 comps ($3 to $4) on one card, so it is off by default.
You are never billed for error rows, notice rows, empty results, cards with no data for an add-on, or runs that fail. The Actor stops cleanly when your maximum charge per run is reached.
๐ How to scrape Pokemon card prices in 3 steps
- Pick a source. Type a card name, name a set, or paste URLs. With no source, the Actor reads the Base Set page.
- Set Max Items. The default is 10 cards, and free users are capped at 10 per run.
- Pick add-ons and click Start. Download JSON, CSV, Excel or XML.
โ๏ธ Pokemon Cards Scraper input
| Field | Type | Default | What it does |
|---|---|---|---|
searchQueries | array | empty | Card names or keywords, for example "charizard". Every word must match the title or set name. |
sets | array | empty | Pokemon sets by name, slug or set URL, or "all". Combine with search to search inside those sets. |
startUrls, productIds | array | empty | PriceCharting Pokemon set or card pages, and numeric product IDs |
maxResultsPerQuery | integer | 10 | Cards each search may return (1 to 500) |
maxScanSeconds | integer | 180 | Time cap for reading set pages during a name search (10 to 230) |
maxItems | integer | 10 | Maximum cards across all sources. Free users: 10. |
includePopulation | boolean | false | Add PSA and CGC population at grades 1 to 10. Billed per row. |
includeCardDetails | boolean | false | Add release date, publisher, eBay ePID and TCGPlayer ID. Billed once per card. |
includePriceHistory | boolean | false | Add the monthly price series per grade. Billed per series. |
includeSoldComps | boolean | false | Add recent eBay and TCGPlayer sold listings. Billed per listing. |
includeAllGradeSoldComps | boolean | false | With Sold comps, also return the other grade tabs. Billed per listing. |
onlyChanged | boolean | false | Only cards not returned before by this search, or whose price moved. Skipped cards are free. |
stateKey, resetSeen | string, boolean | empty, false | Optional monitor name, and clear the monitor memory before the run |
{ "searchQueries": ["charizard"], "maxResultsPerQuery": 5, "maxItems": 5, "includePopulation": true }
URLs that are not Pokemon PriceCharting set or card pages produce one free invalid-input error row before anything is charged. A search by name reads set pages one after another: a common name ("charizard base set") comes back in about 6 to 8 seconds, a rare name can take 80 to 150 seconds. Narrow the search with sets if the time cap ends it. Failed pages are saved as an unbilled { "error": "..." } row.
๐ How does it compare to other PriceCharting scrapers?
Read on 2026-10-10 from the public Store listings; "not stated" means the listing does not show the feature.
| Feature | RecordsData (this Actor) | incognito_mode | crawloop |
|---|---|---|---|
| Keyword search | Yes, Pokemon only, plus set names | No, URLs and IDs only | Yes, all categories |
| Grading ladder | Up to 19 grades plus six named fields | fullPrices, same ladder | Full ladders in details mode |
| Population and sold comps | Both, every grade tab optional | Both, sales opt-in | Both, in details mode |
| Monitor mode | Yes, only new or changed cards | No, schedules and summary | Not stated in their listing |
| Price per 1,000 | $20 (Free), $17.14 (Gold), add-ons extra | $5, then $1.50 after 1,000 | From $1 for listings |
Others read the same day: gio21 ($5 per 1,000, keyword search, UPC, ASIN and ePID, price history) and powerai (about $5 per 1,000 plus $0.09 per run, only three grades).
Plainly: we cost about 4x the main rival per card at the Free tier, before their start fee. The price buys the only Pokemon-focused keyword search with set names, PSA/CGC population and sold comps in one run, and monitor mode with free skipped cards. incognito_mode also covers BGS, SGC, images and ASIN. If you only need flat prices, a cheaper actor fits better.
๐ How do I use it through the API?
Call RecordsData/pokemon-cards-scraper with curl or apify-client using the same input as above. It works with Make, Zapier, n8n, Google Sheets and Airbyte. Use the Apify Scheduler with onlyChanged for only cards whose price moved.
๐ค Pokemon Cards Scraper MCP server for AI agents
Agents can call this Actor through the Apify MCP server at https://mcp.apify.com?tools=RecordsData/pokemon-cards-scraper, which loads only this Actor as a tool.
Add this to your MCP client configuration:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=RecordsData/pokemon-cards-scraper"}}}
Example agent prompt:
Use the Pokemon Cards Scraper to search "charizard base set", return up to 5 cards with their Ungraded and PSA 10 prices, and tell me which has the biggest gap. Skip sold comps.
The tool description is: extract Pokemon card prices from PriceCharting by search, set, URL or product ID, with the full grading ladder and optional population, history and sold comps. It takes the same fields as the Input table above.
๐ผ What can you do with Pokemon card price data?
- Grading ROI. Compare
ungradedwithpsa10and the population counts before you submit a card. - Collection valuation, price alerts and set research across a full set such as Base Set.
โ๏ธ Is it legal to scrape PriceCharting?
The Actor reads only publicly visible pricing pages and does not log in. Check PriceCharting's terms of service. The Actor is independent and not affiliated with PriceCharting, PSA or CGC.
โ FAQ
Why does the Pokemon Cards Scraper output use grade7, grade8 and psa10?
PriceCharting reuses its video-game price table for Pokemon cards, so its own labels read loose, cib, new, graded, box only and manual only. The Pokemon Cards Scraper maps each column to the real grade: Ungraded, Grade 7, 8, 9, 9.5 and PSA 10. The wider ladder (TAG, ACE, SGC, CGC, BGS) comes in fullPrices.
Why did my Pokemon card scrape return 0 results?
Three cases cause this. If the PriceCharting page was blocked or changed, the run fails with a clear message and nothing is charged. If a name search found no match inside the maxScanSeconds budget, the run succeeds with one free scan-budget notice row; narrow the search with Sets or raise the budget. A 404 page ends with a status message and no charge.
What happens if I send an empty or invalid input?
An empty {} input falls back to the PriceCharting Base Set page and 10 cards. If a URL is not a Pokemon page (video games, LEGO and consoles are refused), the run ends as SUCCEEDED with one free invalid-input error row and a hint, and nothing is charged.
Does the Pokemon Cards Scraper support PriceCharting search?
Yes, by card name. PriceCharting's own search page is blocked by Cloudflare from the cloud, so this Actor reads the Pokemon set listings (302 sets) and matches every word of your query against the card title plus set name. Put a set name in the query for a faster result, or use sets.
What is a Pokemon card population report?
A population report shows how many copies PSA and CGC have graded at each grade from 1 to 10, plus the market price at that grade. The Pokemon Cards Scraper returns it as the optional population field with includePopulation, billed per grade row returned.
Do I need a login, API key or proxy to scrape PriceCharting Pokemon cards?
No. The Pokemon Cards Scraper needs no PriceCharting login, no API key and no proxy configuration. It reads the public PriceCharting pages directly. You only need an Apify account, and free accounts can try it with the 10 card preview limit.
How many Pokemon cards can I scrape in one run?
Free Apify users get up to 10 cards per run as a preview. Paid users can raise maxItems up to 1,000,000 cards per run. Cost scales with the cards returned: 1,000 price records cost $20 at the free tier price, plus any add-on rows.
Will a duplicate PriceCharting URL be billed twice?
No. The Pokemon Cards Scraper tracks the cards it has already saved during a run, so each card is saved and billed once per run, even if it appears in two start URLs, a search and a set, or as its own card URL. Error rows and failed runs are never billed.
Can I schedule the Pokemon Cards Scraper to track prices over time?
Yes. Use the Apify Scheduler or the API to run it daily or weekly. Turn on onlyChanged and a repeat run returns only cards that are new or whose price moved at any grade, so an unchanged run returns 0 rows and costs nothing. Each row carries a scrapedAt timestamp.
๐ฎ Want more game and collectible data?
- Steam Scraper for reviews, achievements, news and players
- GOG Scraper for DRM-free games, prices and deals
- Epic Games Store Scraper for free games and product data
๐ Support
Write to contact.punkrecordsdata@gmail.com or open an issue.
Last updated: 2026-10-11