Liga Pokemon Card Prices Scraper
Pricing
from $1.50 / 1,000 card price returneds
Liga Pokemon Card Prices Scraper
Pokemon TCG card prices from Brazil's Liga Pokemon marketplace. Get a card's low, average and high price in BRL alongside its set and collector number, or pull one seller's whole shelf with condition, language, stock and price. No account needed.
Pricing
from $1.50 / 1,000 card price returneds
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 hours ago
Last modified
Categories
Share
Liga Pokemon Card Prices Scraper: Pokemon TCG prices in reais from Brazil's Liga Pokemon
Give it card names, with a collector number to pin one printing, or a seller's shop id. A card comes back with the marketplace's low, average and high price in BRL and today's move; a shop comes back as every listing on its shelf with condition, language, stock and price. There is no sold-price history, only today's asking prices, and many cards are listed under their Portuguese names, so an English name plus a number can miss.
| Input | Card names, optionally with a collector number, card or shop links, or shop ids |
| Output | One row per card with its price band, or one row per listing on a shop's shelf |
| Ceiling | 5,000 rows, 400 card lookups and 50 shops per run |
| Account needed | None |
| Price | $1.50 per 1,000 rows, flat on every plan |
🔍 What Liga Pokemon Card Prices Scraper does
Two kinds of row come back. A card row is the price band a card trades at across the whole marketplace: the cheapest copy for sale, the dearest, the marketplace's own average and how much that average moved today. Those are Liga's numbers, passed through untouched. A listing row is one copy on one seller's shelf, with its condition, language, stock and price.
Liga's search sometimes answers with the wrong card, and nothing about the answer looks wrong.
Ask for Chien-Pao ex (061/195) and it returns Hypno 061/195 from another set, same number, real
price. So when you pin a collector number, the name and the number that came back are checked
against what you asked for. A mismatch becomes a free note naming the card Liga offered instead,
not a charged price for somebody else's card. That is what strictMatch does, and it is on unless
you turn it off.
The name has to match as well as the number. Capitals, accents and punctuation are ignored, but a
name with a word more or less is another card: ask for Mewtwo ex (150/165) and Liga's Mewtwo at
that number comes back as a free note, not as your card.
Portuguese names are the other thing to know. Rare Candy is listed as Doce Raro, Boss's Orders as Ordem da Chefia. If an English name plus a number finds nothing, search the name on its own. The one spelling handled for you is VSTAR, which Liga writes as V-ASTRO.
Promo printings keep their odd numbers, like TG01/TG30, 065C/151 or an infinity sign where the
set size would be. They are not errors.
Twelve pinned card lookups took 18 seconds on a test run, and a 200-listing shop shelf took 12.
📥 What you give it
{"searchTerms": ["Charizard ex (006/165)", "Pikachu ex (057/191)", "Mew ex (151/165)"],"sellerStores": ["97457"],"maxItems": 100}
| Field | If you leave it out | What it is |
|---|---|---|
searchTerms | none | One card per line. Charizard ex (006/165) pins one printing; Charizard on its own returns every printing listed under that name. |
startUrls | none | Card pages or shop links copied from the site. A shop link is the one carrying &store=. |
sellerStores | none | A shop id, or the shop link it came from. Returns that seller's whole Pokemon shelf. The id is the number after store= in the shop's address. |
includeSellerDetails | on | Adds the shop's name, star rating and verified badge to every listing row. Turn it off if you only want prices. |
maxItems | 100 | 1 to 5,000 rows, across every search and shop in the run. |
strictMatch | on | Leave it on. With it off, a pinned search returns whatever Liga answered, each row tagged with how well it matched. |
proxyConfiguration | not used | Only for your own servers. Addresses you list here are used as given. Leave it alone otherwise. |
With no card names, links or shops at all, the run returns one free sample row. The form opens with
Charizard ex (006/165) filled in as an example.
📤 What you get back
A real card row from a real run:
{"rowType": "card","cardId": "6509","editionId": "639","cardName": "Pikachu ex","collectorNumber": "057","setSize": "191","collectorCode": "057/191","editionName": "Surging Sparks","priceMinBrl": 28.5,"priceAvgBrl": 47.25,"priceMaxBrl": 99.9,"priceChangeTodayBrl": -0.2,"imageUrl": "https://repositorio.sbrauble.com/arquivos/in/pokemon_bkp/cd/639/67350d1d1652a-bxc8f-1jrpq-82ffda375fa28fa9a70a0bb6b0e2b3d6.jpg","url": "https://www.ligapokemon.com.br/?view=cards/card&card=Pikachu+ex%20(057/191)&num=057","currency": "BRL","identityMatch": "exact","searchTerm": "Pikachu ex (057/191)","scrapedAt": "2026-09-20T01:39:02.714Z"}
And a real listing row from a shop's shelf:
{"rowType": "listing","listingId": "30468606","cardId": "7492","cardName": "Billy & O'Nare","cardNamePt": "Abílio e Onara","collectorNumber": "142","setSize": "159","editionId": "654","setName": "Journey Together","setNamePt": "Amigos de Jornada","setCode": "JTG","rarity": "Comum","rarityCode": "C","conditionId": 3,"conditionCode": "SP","condition": "Slightly Played","languageId": 2,"languageCode": "EN","language": "English","extrasCode": "3","grading": null,"isGraded": false,"stock": 7,"priceBrl": 0.49,"discountPct": 0,"currency": "BRL","sellerStoreId": "97457","sellerName": "Admir das Garde","sellerRating": 5,"sellerRatingCountAtLeast": 250,"sellerVerified": true,"sellerCity": null,"imageUrl": "https://repositorio.sbrauble.com/arquivos/in/pokemon_bkp/cd/654/67e5a9a0a383a-ur8ax-h2p7r-040edb458cc4e3c466bcacfea9a6defb.jpg","url": "https://www.ligapokemon.com.br/?view=cards/card&card=Billy%20%26%20O'Nare%20(142%2F159)&num=142","scrapedAt": "2026-09-20T01:39:19.647Z"}
| Field | What it is |
|---|---|
priceMinBrl, priceAvgBrl, priceMaxBrl | The cheapest copy for sale, the marketplace's average and the dearest copy, in reais. |
priceChangeTodayBrl | How far the average moved today. Null when Liga shows no figure for the day. |
collectorCode, collectorNumber, setSize, editionName, setName, setCode | Which printing it is. |
identityMatch | exact when the name and number you pinned came back. With strictMatch off you may also see number-only, name-only or none, and a name-only search gives search-result. |
cardNamePt, setNamePt | The Portuguese names Liga lists the card and set under. |
conditionCode, condition | M, NM, SP, MP, HP or D, with the English label beside it. |
languageCode, language | The card's language, such as PT, EN, ES or JP. |
stock, priceBrl, discountPct | Copies on the shelf, the price per copy and any discount. |
extrasCode, isGraded, grading | Liga's raw variant code for foils, promos and the like, and grading if there is any. |
sellerName, sellerRating, sellerRatingCountAtLeast, sellerVerified | The shop, when includeSellerDetails is on. sellerCity is usually null. |
🧾 Reading the output
Real rows have no charged field. The free ones carry charged: false, so dropping those leaves
only cards and listings.
| Row | How to spot it | Charged |
|---|---|---|
| A card price | rowType: "card" | yes |
| A shop listing | rowType: "listing" | yes |
| The sample | _sample: true | no |
| A note | _diagnostic: true, with an errorCode, an error and usually a hint | no |
The sample row also carries rowType: "card", so filter on _sample or charged, not on
rowType alone.
errorCode | What it means |
|---|---|
NO_EXACT_MATCH | Liga answered a pinned search with a different card. returnedInstead names it. Search the name alone, or turn strictMatch off. |
NO_RESULTS | Nothing found. Try the name on its own, or its Portuguese name. |
STORE_NOT_FOUND | No shop with that id. |
UNRECOGNISED_URL | Not a Liga Pokemon card or shop link. |
INCOMPLETE_IDENTITY | A card or listing came back without a readable name, set or id, so it was left out. |
INPUT_TRUNCATED | More than 400 cards or 50 shops. The rest were not looked up; split them into another run. |
TIME_LIMIT | The run reached its 45-minute working limit. What was returned before it stays. |
NO_ROUTE, RATE_LIMITED, CHALLENGED, ADDRESS_REFUSED, UPSTREAM_ERROR, NETWORK_ERROR | The marketplace stopped answering this run, at the start or part way. Rows already returned are kept. Running it again usually gets through. |
NO_PROXY | The run could not open the connection it needs on the Apify account it ran on. Your input did not cause it. Run it again later, and open an issue if it keeps happening. |
▶️ How to run it
- Open Liga Pokemon Card Prices Scraper and click Try for free.
- Put card names in Cards to look up, one per line, or a shop id in Seller shop ids.
- Set Maximum rows.
- Leave Only return the exact printing asked for ticked.
- Click Start, then download the dataset as JSON, CSV or Excel.
💰 How much does it cost?
$1.50 per 1,000 rows, flat on every Apify plan. A card row and a listing row cost the same.
Not charged: the sample row, every note above, wrong-card answers caught by strictMatch, rows
without a readable identity, duplicates, and anything a run did not reach. If you set a maximum cost
for the run, it stops there and says so in its status.
💡 What people use it for
- Pricing a binder in reais against the marketplace's low, average and high for each card.
- Watching a few chase cards every day.
priceChangeTodayBrlgives the day's move, and a schedule builds the history you keep. - Reading one shop's shelf card by card: what it stocks, in which condition and language, at what price.
- Checking your own shop's prices against the market band before you reprice.
🚧 What it does not do
- No sold prices. Liga shows past sales to signed-in members only, so you get today's asking prices and today's move.
- No list of every seller offering one card. You get the price band for any card, and every listing from a shop you name.
extrasCodeis a raw code. It marks foils, promos and similar, but Liga publishes no table for it, so no label is invented.- No sealed product or accessories. Singles only.
- Prices are in BRL only. No conversion.
🧭 Which trading card or collectibles scraper do you need?
| If you want | Use |
|---|---|
| Pokemon card prices and shop shelves on Liga Pokemon | This one |
| What items actually sold for on eBay | eBay Sold Listings Scraper |
| Listings, live shows and sellers on Whatnot | Whatnot Scraper |
| Second-hand classified listings across Brazil | OLX Brazil Scraper |
❓ Questions people ask
Do I need a Liga account, cookies or an API key? No. It reads current asking prices, which Liga shows to anyone.
How do I find a seller's shop id? Open the shop on Liga and take the number after store= in the
address bar, or paste the whole link into Seller shop ids.
What do NM, SP and MP mean? Card condition, from mint down to damaged: M mint, NM near mint,
SP slightly played, MP moderately played, HP heavily played, D damaged.
Why did my search return nothing? Usually the Portuguese name. Drop the collector number and search the name on its own first.
Can I track a card's price over time? Run it on a schedule and keep the rows. Each carries
scrapedAt and priceChangeTodayBrl, so a daily run builds the history.
Is this legal? It reads public prices and public shop listings. Apify's write-up on the legality of web scraping is a good starting point. We are not lawyers.
🆘 If something breaks
Open the Issues tab on the actor page and send the input you used and the run ID. The note rows in the dataset usually name the reason already.