Scryfall Scraper: MTG Cards, Prices & Legalities avatar

Scryfall Scraper: MTG Cards, Prices & Legalities

Pricing

Pay per event

Go to Apify Store
Scryfall Scraper: MTG Cards, Prices & Legalities

Scryfall Scraper: MTG Cards, Prices & Legalities

Scrape Scryfall Magic: The Gathering cards with the full Scryfall search syntax: USD, EUR and foil prices, Standard, Modern and Commander legalities, EDHREC rank, oracle text and images. Fuzzy name lookups and all 1,053 sets. Export CSV, Excel, JSON. No login or API key.

Pricing

Pay per event

Rating

0.0

(0)

Developer

RecordsData

RecordsData

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 days ago

Last modified

Categories

Share

RecordsData

Scryfall Scraper: MTG Cards, Prices & Legalities

The Scryfall Scraper exports Magic: The Gathering cards from Scryfall as a flat dataset. Type any Scryfall search such as "c:red cmc<=2 t:instant" or "f:commander usd>=50", or fill the set and format boxes, and get USD, EUR, foil and MTGO prices, legality in 23 formats, EDHREC rank, oracle text, card faces and image URLs for each card. Optional rulings and an only-new mode for repeat runs. Export CSV, Excel, JSON or XML. No login, no API key. Priced at $12 per 1,000 card rows on the Free tier ($10.29 from Gold); failed or empty lookups are free.

Scryfall is the reference MTG database, with 1,053 sets and 32,116 Commander-legal cards at the time of writing. This actor turns any search you can type on Scryfall into a priced, legality-tagged table, without API code, pagination or rate limits.

๐Ÿƒ What does the Scryfall Scraper do?

  • Scrape MTG cards by search query. Full Scryfall syntax with automatic pagination, or use the set and format inputs instead.
  • Legality in 23 formats. Standard, Modern, Commander, Pauper and more, each as its own column (legal, not_legal, restricted or banned).
  • Sort 15 ways, ascending or descending. unique returns one row per card, per artwork or per printing.
  • Look up cards by name, even misspelled ("blak lotus"), through Scryfall's fuzzy match.
  • Double-faced cards. A cardFaces array holds every face.
  • Rulings (optional). includeRulings adds one row per official ruling after each card.
  • Only-new mode. onlyNew returns only cards that no earlier run of the same search delivered. Skipped cards are not charged.
  • Export all Magic sets, one row per set.

๐Ÿ“‹ What data can you extract from Scryfall?

FieldDescription
recordTypecard, set or ruling
scryfallId, oracleId, name, urlCard ids, card name, Scryfall page link
manaCost, cmc, typeLine, oracleText, keywordsCost, mana value, type, rules text
power, toughness, loyalty, defenseStats (where they exist)
colors, colorIdentity, producedManaColor and mana arrays
cardFaces, relatedCardsOne object per face; tokens and combo pieces
rarity, setCode, setName, collectorNumber, releasedAtPrinting details
priceUsd, priceUsdFoil, priceUsdEtched, priceEur, priceEurFoil, priceTixMarket prices as text (only when Scryfall has a price)
priceUsdAmount, priceEurAmount, priceTixAmount and twinsThe same prices as numbers
edhrecRank, pennyRankPopularity ranks (only when ranked)
legalStandard, legalModern, legalLegacy, legalCommander and 19 moreLegality per format
artist, isReserved, isGameChanger, finishesArtist and print flags
imageUrl, imageLarge, imagePng, imageArtCrop and moreCard image links hosted by Scryfall
tcgplayerUrl, cardmarketUrl, edhrecUrl, gathererUrlMarketplace links and ids
rulingsCount, rulingSource, rulingDate, rulingTextRulings (only with includeRulings)
setType, cardCount, block, parentSetCode, printedSize, iconUrlSet rows only
scrapedAtUTC timestamp

Up to 125 fields in total. Fields without a value are omitted, so there are no always-empty columns.

๐Ÿ“Š Sample output of the MTG card export

Real row (query c:red cmc<=2 t:instant, sorted by EDHREC rank), trimmed: newer columns listed above are not shown.

{
"recordType": "card",
"scryfallId": "7673784e-db4b-43a1-8d55-1bb9fc1e284f",
"name": "Lightning Bolt",
"cmc": 1,
"typeLine": "Instant",
"oracleText": "Lightning Bolt deals 3 damage to any target.",
"rarity": "uncommon",
"setCode": "MSC",
"releasedAt": "2026-06-26",
"priceUsd": "0.82",
"priceEur": "1.98",
"edhrecRank": 157,
"legalStandard": "not_legal",
"legalModern": "legal",
"legalCommander": "legal",
"imageUrl": "https://cards.scryfall.io/normal/front/7/6/7673784e-db4b-43a1-8d55-1bb9fc1e284f.jpg?1783903008",
"url": "https://scryfall.com/card/msc/806/lightning-bolt?utm_source=api",
"scrapedAt": "2026-10-04T05:12:55.625Z"
}

Prices are the daily market prices Scryfall publishes; a card without one (for example Black Lotus) has no priceUsd field.

๐Ÿ’ต How much does it cost to scrape Scryfall?

Pay per event. Prices on the free Apify plan tier (paid plans get volume discounts):

EventPriceCharged when
Card row$0.012 (from $0.01029 on Gold)One card row is saved to the dataset
Set row$0.010One Magic set row is saved to the dataset
Ruling row$0.001One ruling or Scryfall note row is saved to the dataset

Worked examples: 1,000 cards cost 1,000 x $0.012 = $12.00 on the Free tier and about $10.29 on Gold. The full set list (1,053 sets) costs about $10.53. Ruling rows cost a flat $0.001 each ($1.00 per 1,000), at most 100 per run, counting towards Max Items. Example: 100 cards with 250 rulings cost 100 x $0.012 + 250 x $0.001 = $1.45 on the Free tier.

Error rows, "card not found" rows, rejected queries, empty searches, cards skipped by only-new mode and failed runs are never charged. The run stops cleanly at your maximum charge limit. Free users get a 10-row preview per run.

๐Ÿš€ How to scrape Scryfall in 3 steps

  1. Type a Scryfall search (for example r:mythic), or pick a set and a format, or add card names, or switch on the set list. Set Max Items.
  2. Click Start, then download the dataset as CSV, Excel, JSON or XML.

โš™๏ธ Input

FieldTypeDescription
searchQuerystringAny Scryfall search. If all inputs are empty, the sample query c:red cmc<=2 t:instant runs.
setstringOne set code or several separated by commas (OR). Adds set:<code> to the query.
formatselectOne of 23 formats, or any. Adds f:<format> to the query.
sortByselect15 options, edhrec (default), usd, eur, tix, released, name, rarity, cmc and more
sortDirectionselectauto (default), asc, desc
uniqueselectcards (default), art, prints
includeExtrasbooleanAlso return tokens, planes, schemes and emblems
cardNamesstring listExact or misspelled card names, one row each
includeSetsbooleanAdd one row per Magic set
includeRulingsbooleanAdd one row per ruling after each card (one extra request per card), $0.001 per ruling
onlyNewbooleanSkip cards that an earlier run of the same search already delivered
stateKey, resetSeenstring, booleanName of the onlyNew memory (empty derives it from your search); clear it before the run
maxItemsintegerRow limit (cards, sets and rulings together). Free users: 10
{
"searchQuery": "usd>=20",
"format": "commander",
"sortBy": "power",
"sortDirection": "desc",
"onlyNew": true,
"maxItems": 100
}

Scryfall lists cards with no value for the sort key first, so add a filter such as usd>0 to a price sort. An invalid sortBy value is rejected before the run starts.

๐Ÿ“ฆ Output

Dataset views: Cards, Prices, Legalities, Sets and Rulings. Cards not found, searches with no matches and searches Scryfall rejects add one uncharged error row. If Scryfall cannot be reached and no rows were delivered, the run fails instead of finishing empty, and nothing is charged.

๐Ÿ“ˆ Scryfall scraper vs alternatives

Read from the public Apify Store listings on 2026-10-10. A cell says "not stated in their listing" when the page shows nothing about it.

This actorparseforge/scryfall-mtg-scraperchrisp1211/mtg-cards-scraper-max
Price per 1,000$12.00 Free tier, $10.29 Goldfrom $6.00 (README $6.50)$0.60
Legality23 formats, one column each8 formats listed3 formats listed
Filters and sortsSyntax, set, format, 15 sorts with directionQuery, set, format, 10 sortsSyntax or names, rarity, color
Faces, rulings, only-newFaces, optional rulings, only-newNot stated in their listingNot stated in their listing
Fuzzy names, set rowsYes, bothNot stated in their listingNames inside queries; sets not stated

We cost more per row than every rival we read. benthepythondev lists $1.20 to $1.50 per 1,000 and ninhothedev from $0.50, both with a short field list and no legalities in their listings. If you only need bare card rows in bulk, a cheaper actor is the better buy. This one fits when you need legality columns, rulings, faces, numeric prices or only-new repeat runs.

๐Ÿ’ก Use cases

Card shops (price sheets), collectors and investors (usd>=X watchlists), deck builders, judges and rules tools (rulings next to each card) and app developers (seeded card database with images and legalities) use this data.

๐Ÿ”Œ Run the Scryfall Scraper via API and integrations

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('RecordsData/scryfall-mtg-cards-scraper').call({ set: 'mh3', searchQuery: 'r:mythic', maxItems: 50 });

Schedule runs or connect the dataset to Make, Zapier, n8n, Google Sheets or Airbyte.

๐Ÿค– Scryfall Scraper MCP server for AI agents

AI agents can call this Actor through the Apify MCP server at https://mcp.apify.com?tools=RecordsData/scryfall-mtg-cards-scraper. The URL loads only this Actor as a tool.

MCP client configuration (Claude Desktop, Cursor, VS Code):

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=RecordsData/scryfall-mtg-cards-scraper"
}
}
}

Example agent prompt:

Use the Scryfall Scraper with the query "usd>=50", format commander, sorted by usd descending, 25 rows, and list each card's name, USD price and EDHREC rank so I can pick which ones to sell.

Tool description: choose this Actor when an agent needs Magic: The Gathering card data from Scryfall (prices, legality, EDHREC rank, faces, rulings, images) for a search query, a set, card names or the full set list, or only cards not seen before. It takes the same fields as the Input table above.

The actor calls Scryfall's public API with a descriptive User-Agent and keeps to its published rate limits (about 600 ms between searches). It collects card and set data only, no personal data. Card text and images belong to Wizards of the Coast. Scryfall's terms forbid paywalling or simply repackaging its data; check them before republishing images or data commercially. Scryfall also asks high-volume users to use its daily bulk data files, which this actor does not use.

โ“ Frequently asked questions

What query syntax does the Scryfall Scraper support?

The Scryfall Scraper passes Scryfall's own search syntax through unchanged, so anything you type on scryfall.com works in the searchQuery field: c: for colors, t: for types, set:, r: for rarity, f: for format, usd>=, cmc<=, a: for artist and the rest of the syntax guide. The set and format inputs add set: and f: for you. A query Scryfall rejects gives one free error row with Scryfall's own explanation.

Where do the Scryfall Scraper card prices come from?

The Scryfall Scraper reads prices from Scryfall's own price fields: USD, USD foil, USD etched, EUR and MTGO tix, as text and as numbers. Scryfall updates these fields daily, so they are market estimates, not live store quotes. When Scryfall has no price for a card, such as Black Lotus, the price fields are left out of that row.

Why did the Scryfall Scraper return 0 results?

Either your query matches no cards on Scryfall, in which case the Scryfall Scraper ends with a free "No cards matched" row, or the cardNames could not be matched. With onlyNew on, a repeat run returns 0 rows when nothing new appeared. Test the query on scryfall.com first. Nothing is charged for empty runs.

Does the Scryfall Scraper work with misspelled card names?

Yes. The cardNames input uses Scryfall's fuzzy name match, so a misspelling such as "blak lotus" still finds Black Lotus and returns one card row. A name that cannot be matched returns an uncharged error row, so a typo costs nothing. A list that keeps failing stops after about 25 misses.

Can the Scryfall Scraper scrape all Magic cards?

Yes, in principle. Use a broad Scryfall query with a high maxItems, or unique: prints for every printing, but expect a long run and a large bill, because each card row costs $0.012 on the Free tier. One run reaches roughly 15,000 rows before the one-hour timeout. Narrow queries by set, format or price are cheaper.

How do I limit what I spend with the Scryfall Scraper?

Set a maximum charge limit in the Apify run options, and set maxItems to the number of rows you want. The Scryfall Scraper checks the limit after every card row and stops cleanly when it is reached, so a run never spends more than you allow. Error rows, empty searches, duplicates and cards skipped by only-new mode are never charged.

Is there a free trial for the Scryfall Scraper?

Free Apify accounts can run a 10-row preview of the Scryfall Scraper, enough to check the price columns, legalities and image URLs. Paid Apify plans lift the 10-row limit and get volume discounts on the $0.012 card row price, down to $0.01029 from Gold.

What happens if I send an empty or invalid input to the Scryfall Scraper?

An invalid sortBy value is rejected by the Apify platform with a 400 error before any Scryfall Scraper run is created. An empty input {} runs the sample query c:red cmc<=2 t:instant limited to 10 rows. Any other input mistake ends the run as SUCCEEDED with one free error row (for example errorType: invalid-input) and nothing charged.

Can I get only the Magic set list from the Scryfall Scraper?

Yes. Leave searchQuery empty, switch on includeSets and set maxItems to 1100 or more. The Scryfall Scraper then returns one row per Magic set. The list had 1,053 sets at the time of writing and costs $0.01 per set row, about $10.53 in total.

How does the only-new mode of the Scryfall Scraper work?

Switch on onlyNew and run the same search again later. The Scryfall Scraper remembers the Scryfall ids it already delivered in a named store of your own Apify account, one memory per search, and returns only new cards. Skipped cards are not charged. Use stateKey to share or separate memories and resetSeen to start over.

Do the rulings cost extra?

Yes, a little. With includeRulings the Scryfall Scraper adds one ruling row per official ruling or Scryfall note after each card, at the cost of one extra request per card. Each ruling row costs $0.001, so 250 rulings add $0.25. At most 100 are delivered per run, and they count towards Max Items.

๐ŸŽด Want more game and collectibles data?

๐Ÿ›Ÿ Support

Open the Issues tab on this actor's page or write to contact.punkrecordsdata@gmail.com. Custom versions are available on request.

Last updated: 2026-10-11