Liga Pokemon Card Prices Scraper avatar

Liga Pokemon Card Prices Scraper

Pricing

from $1.44 / 1,000 card prices

Go to Apify Store
Liga Pokemon Card Prices Scraper

Liga Pokemon Card Prices Scraper

Pokemon TCG card prices from Brazil's Liga Pokemon marketplace: a card's low, average and high price in reais with set and collector number, or one seller's shelf with condition, language, stock and price. Wrong cards aren't billed. $1.50 per 1,000 rows; a one-printing search adds $3.00 per 1,000.

Pricing

from $1.44 / 1,000 card prices

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

7

Total users

2

Monthly active users

a day ago

Last modified

Share

Get Pokemon TCG card prices in reais from Brazil's Liga Pokemon: give it card names, with a collector number to pin one printing, and each card comes back with the marketplace's low, average and high price in BRL and today's move. Give it a seller's shop id and you get the listings on that 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.

InputCard names, optionally with a collector number, card or shop links, or shop ids
OutputOne row per card with its price band, or one row per listing on a shop's shelf
Ceiling5,000 rows, 400 card lookups and 50 shops per run
Account neededNone
Price$1.50 per 1,000 rows on the Free plan, a little less on paid plans. The free plan's $5 a month covers about 3,300. A search for one printing adds a $3.00 per 1,000 card lookup

🔍 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 or 065C/151; they are not errors.

Twelve pinned card lookups took 18 seconds on a test run, and a 200-listing shop shelf took 12.

📋 What data you get from each Liga Pokemon card or listing

What you getField
Row kindrowType
Which card and printingcardId, cardName, cardNamePt, collectorNumber, setSize, collectorCode, editionId, editionName, setName, setNamePt, setCode, rarity, rarityCode
Card rows: the low, average and high price, and today's movepriceMinBrl, priceAvgBrl, priceMaxBrl, priceChangeTodayBrl
Card rows: how well the answer matched what you askedidentityMatch, searchTerm
Listing rows: condition and languageconditionId, conditionCode, condition, languageId, languageCode, language
Listing rows: variant code and gradingextrasCode, isGraded, grading
Listing rows: stock, price and discountlistingId, stock, priceBrl, discountPct
Listing rows: the shopsellerStoreId, sellerName, sellerRating, sellerRatingCountAtLeast, sellerVerified, sellerCity
Image, link and currencyimageUrl, url, currency

▶️ How to scrape Liga Pokemon card prices

  1. Open Liga Pokemon Card Prices Scraper and click Try for free.
  2. Put card names in Cards to look up, one per line, or a shop id in Seller shop ids.
  3. Set Maximum rows.
  4. Leave Only return the exact printing asked for ticked.
  5. Click Start, then download the dataset as JSON, CSV or Excel.

With no card names, links or shops at all, the run returns one free sample row.

💰 How much does it cost to scrape Liga Pokemon prices?

$1.50 per 1,000 rows on the Free plan. Paid plans pay a little less: $1.48 on Starter, $1.46 on Scale and $1.44 on Business. A card row and a listing row cost the same. On the free plan, the $5 Apify gives you each month covers about 3,300 rows.

A search for one printing, a card name with its collector number like Charizard ex (006/165), also costs a card lookup: $3.00 per 1,000 searches on the Free plan ($2.96 on Starter, $2.92 on Scale and $2.88 on Business), charged once when the search returns its card, on top of that card's row. A search by name alone has no lookup charge, and neither has a one-printing search that finds nothing or only a different card.

Not charged: the sample row, every note listed further down, 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 you give it

{
"searchTerms": ["Charizard ex (006/165)", "Pikachu ex (057/191)", "Mew ex (151/165)"],
"sellerStores": ["97457"],
"maxItems": 100
}
FieldDefaultWhat it is
searchTermsnoneOne card per line. Charizard ex (006/165) pins one printing; Charizard on its own returns every printing listed under that name. The form opens with that Charizard filled in as an example.
startUrlsnoneCard pages or shop links copied from the site. A shop link is the one carrying &store=.
sellerStoresnoneA 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.
includeSellerDetailstrueAdds the shop's name, star rating and verified badge to every listing row. One extra request per shop. Turn it off if you only want prices.
maxItems1001 to 5,000 rows, across every search and shop in the run.
strictMatchtrueLeave it on. With it off, a pinned search returns whatever Liga answered, each row tagged with how well it matched.
proxyConfigurationnoneOnly for your own servers, which are used as given. Leave it alone otherwise.

📤 What you get back

A real card row from a run on 20 September 2026:

{
"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, read the same day:

{
"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": "SHOP NAME",
"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"
}
FieldHow to read it
priceMinBrl, priceAvgBrl, priceMaxBrlThe cheapest copy for sale, the marketplace's average and the dearest copy, in reais.
priceChangeTodayBrlHow far the average moved today. Null when Liga shows no figure for the day.
identityMatchexact 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.
conditionCode, conditionM, NM, SP, MP, HP or D, with the English label beside it.
extrasCodeLiga's raw variant code for foils, promos and the like. Liga publishes no table for it, so no label is invented.
sellerName, sellerRatingThe 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.

RowHow to spot itBilled
A card pricerowType: "card" and no charged fieldyes
A shop listingrowType: "listing"yes
The sample_sample: true and charged: falseno
A note_diagnostic: true, charged: false, with an errorCode, an error and usually a hintno

The sample row also carries rowType: "card", so filter on _sample or charged, not on rowType alone.

errorCodeWhat it means
NO_EXACT_MATCHLiga answered a pinned search with a different card. returnedInstead names it. Search the name alone, or turn strictMatch off.
NO_RESULTSNothing found. Try the name on its own, or its Portuguese name.
STORE_NOT_FOUNDNo shop with that id.
UNRECOGNISED_URLNot a Liga Pokemon card or shop link.
INCOMPLETE_IDENTITYA card or listing came back without a readable name, set or id, so it was left out.
INPUT_TRUNCATEDMore than 400 cards or 50 shops. The rest were not looked up; split them into another run.
TIME_LIMITThe run reached its 45-minute working limit. What was returned before it stays.
NO_ROUTE, RATE_LIMITED, UPSTREAM_ERROR, NETWORK_ERRORThe marketplace stopped answering this run, at the start or part way. Rows already returned are kept. Try the run again later.
NOT_SERVEDThis request was not served this run. Re-run it later. Until 12 October 2026 this code was called CHALLENGED or ADDRESS_REFUSED.
NO_PROXYA connection the run needs could not be opened. Your input did not cause it. Run it again later, and open an issue if it keeps happening.

💡 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. priceChangeTodayBrl gives 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.
  • extrasCode is a raw code, not a label.
  • No sealed product or accessories. Singles only.
  • Prices are in BRL only. No conversion.
  • It is not an official Liga Pokemon tool. Dami's Studio is independent and is not affiliated with or endorsed by Liga Pokemon or The Pokemon Company, or by any other company named on this page.

🧭 Which trading card or collectibles scraper do you need?

If you wantUse
Pokemon card prices and shop shelves on Liga PokemonThis one
Listings, live shows and sellers on WhatnotWhatnot Scraper
Brazilian classified ads from OLXOLX 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 Liga Pokemon 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.

Can I call it from code or connect it to an AI assistant?

The API tab has code for Python, JavaScript and the CLI. MCP clients like Claude and ChatGPT use https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/ligapokemon-card-prices-scraper; coding assistants can load our skill file. All three bill your Apify account at the same price.

It reads public prices and public shop listings. Apify's write-up on the legality of web scraping is a good starting point, and 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.