Request a tool
All toolsAutomationsGuidesMCP serverRequest a toolPlatformsCategories
Liga Pokemon Card Prices Scraper icon

Liga Pokemon Card Prices Scraper

Scrape Pokemon card prices from Liga Pokemon in BRL: set, collector number, condition, language, stock and seller rating. No account or API key.

26 runs on Apify $0.0015 per card price ($1.5 / 1,000)
Run this in the cloudRun on Apify →

Developer & Research Tools

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust searchTerms, startUrls, sellerStores (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Pricing

$0.0015 per card price = $1.5 per 1,000

You are charged forWhenPrice
Card price returnedOne priced card listing returned in the dataset. Mismatched cards, diagnostics and the labelled sample row are not charged.$0.0015

Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-09-20, and they are what you are actually charged.

Inputs

FieldWhat it doesType
searchTermsOne card per line. Add the collector number to pin a single printing - "Charizard ex (006/165)" - or give the name on its own, "Charizard", to get every printing the marketplace lists under it. Liga is a Brazilian site and lists a lot of cards under their Portuguese names, so if an English name plus a number finds nothing, try the name by itself.array
startUrlsOptional. Paste card pages (https://www.ligapokemon.com.br/?view=cards/card&card=Charizard+ex%20(006/165)) or a seller's shop link, the one carrying &store=. Works alongside the fields above.array
sellerStoresOptional. A shop id, or the shop link it came from, returns that seller's whole Pokemon shelf: every listing with its condition, language, stock and price in BRL. The id is the number after "store=" in a shop's address.array
includeSellerDetailsAdds the shop's name, star rating and verified badge to every listing row. One extra request per shop. Turn it off if you only care about prices.boolean
maxItemsHard cap on the rows this run returns, across every search and shop. You are charged per row returned.integer
strictMatchOn by default, and worth leaving on. When you pin a collector number, the marketplace's search sometimes answers with a different card that happens to share that number - a search for "Chien-Pao ex (061/195)" comes back with Hypno 061/195 from another set. With this on, those are reported as an uncharged note instead of being returned and billed as a price for your card.boolean

What you get

A structured dataset — each result includes fields like:

rowTypecardNamecollectorCodecollectorNumbersetSizeeditionNamesetNamesetCodeconditionlanguagestockpriceBrlpriceMinBrlpriceAvgBrlpriceMaxBrlpriceChangeTodayBrlsellerNamesellerRatingidentityMatchurl

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

Related tools in Developer & Research Tools

Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.

GitHub Scraper iconDeveloper & Research Tools

GitHub Scraper

Search GitHub repos and users: stars, forks, language, topics, licence, plus user bio, company and followers. No token needed. $0.90 per 1,000 rows.

18 use cases

Stack Overflow / Stack Exchange Scraper iconDeveloper & Research Tools

Stack Overflow / Stack Exchange Scraper

Search Stack Overflow and Stack Exchange by keyword or tag. Score, answer count, views, reputation and body text. $2 per 1,000 questions.

2 use cases

Package Registry Scraper (npm + PyPI) iconDeveloper & Research Tools

Package Registry Scraper (npm + PyPI)

Get npm and PyPI package metadata as JSON. Version, license, author, repo, keywords and npm monthly downloads. $2 per 1,000 packages.

2 use cases

arXiv Scraper iconDeveloper & Research Tools

arXiv Scraper

Search arXiv papers by title, author, abstract or category. Get full abstracts, authors, categories, DOI, dates and PDF links. $2 per 1,000 papers.

2 use cases

OpenAlex Scholarly Works Scraper iconDeveloper & Research Tools

OpenAlex Scholarly Works Scraper

Search 250M+ OpenAlex papers with no API key. Get titles, authors, venue, year, citations, DOI, OA links and full abstracts. $2.00 per 1,000 papers.

2 use cases

Crossref Scholarly Works Scraper iconDeveloper & Research Tools

Crossref Scholarly Works Scraper

Search 150M+ papers on Crossref: DOI, title, authors, journal, publisher, date, citations and abstract. No API key. $1.00 per 1,000 works.

2 use cases

See all Developer & Research Tools →

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.

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, 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
}
FieldIf you leave it outWhat it is
searchTermsnoneOne card per line. Charizard ex (006/165) pins one printing; Charizard on its own returns every printing listed under that name.
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.
includeSellerDetailsonAdds the shop's name, star rating and verified badge to every listing row. Turn it off if you only want prices.
maxItems1001 to 5,000 rows, across every search and shop in the run.
strictMatchonLeave it on. With it off, a pinned search returns whatever Liga answered, each row tagged with how well it matched.
proxyConfigurationnot usedOnly 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"
}
FieldWhat it is
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.
collectorCode, collectorNumber, setSize, editionName, setName, setCodeWhich printing it is.
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.
cardNamePt, setNamePtThe Portuguese names Liga lists the card and set under.
conditionCode, conditionM, NM, SP, MP, HP or D, with the English label beside it.
languageCode, languageThe card's language, such as PT, EN, ES or JP.
stock, priceBrl, discountPctCopies on the shelf, the price per copy and any discount.
extrasCode, isGraded, gradingLiga's raw variant code for foils, promos and the like, and grading if there is any.
sellerName, sellerRating, sellerRatingCountAtLeast, sellerVerifiedThe 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 itCharged
A card pricerowType: "card"yes
A shop listingrowType: "listing"yes
The sample_sample: trueno
A note_diagnostic: true, 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, CHALLENGED, ADDRESS_REFUSED, UPSTREAM_ERROR, NETWORK_ERRORThe marketplace stopped answering this run, at the start or part way. Rows already returned are kept. Running it again usually gets through.
NO_PROXYThe 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

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.

💰 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. 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. 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 wantUse
Pokemon card prices and shop shelves on Liga PokemonThis one
What items actually sold for on eBayeBay Sold Listings Scraper
Listings, live shows and sellers on WhatnotWhatnot Scraper
Second-hand classified listings across BrazilOLX 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.