this post was submitted on 18 Oct 2025
6 points (87.5% liked)

MTG

2357 readers
1 users here now

Magic: the Gathering discussion

General discussion, questions, and media related to Magic: the Gathering that doesn't fit within a more specific community. Our equivalent of /r/magicTCG!

Type [[Card name]] in your posts and comments and CardBot will reply with a link to the card! More info here.

founded 2 years ago
MODERATORS
 

I want to play a custom MTG format where the card pool is defined by a Scryfall search and updated twice a year. For example, my search might be f:standard f:penny usd<=1.

How can I export, share, and import the list of legal cards with other people so that we can all check card legality and use a deck builder with the same pool of cards?

you are viewing a single comment's thread
view the rest of the comments
[โ€“] chgxvjh@hexbear.net 2 points 2 months ago* (last edited 2 months ago) (1 children)

That's pretty straightforward with Powershell

$url = 'https://api.scryfall.com/cards/search?q=f%3Astandard f:penny usd<=1'
$data = @()

DO {
    $response = $(Invoke-WebRequest $url).Content | ConvertFrom-Json
    $data = $data + $response.data
    $url = $response.next_page
} WHILE ($response.has_more)


FOREACH ($card in $data) {
    ECHO $card.name
}

This gives you a plain list of card names

[โ€“] counterspell@mtgzone.com 3 points 2 months ago* (last edited 2 months ago) (1 children)

Is there a deckbuilder that allows using just that list to build decks? How would I import it?

#!/bin/bash

url="https://api.scryfall.com/cards/search?q=f%3Astandard+f%3Apenny+usd<=1"
data=()

while [ -n "$url" ]; do
    response=$(curl -s "$url")
    data_chunk=$(echo "$response" | jq -c '.data[]')
    while read -r card; do
        data+=("$card")
    done <<< "$data_chunk"

    has_more=$(echo "$response" | jq -r '.has_more')
    if [ "$has_more" = "true" ]; then
        url=$(echo "$response" | jq -r '.next_page')
    else
        url=""
    fi
done

for card_json in "${data[@]}"; do
    echo "$card_json" | jq -r '.name'
done