Scryfall API

Beginner's Pick Games & Comics / No Auth Required Beginner HTTPS CORS
Free to Use
89 A
Measured Score 0 50 100 Speed 29/30 Consistency 17/20 Security 20/20 Browser access 15/15 Transparency 8/15 TESTED 2026-08-10

Overview

Scryfall is a comprehensive Magic: The Gathering card database API that covers every printed card, including artwork, legality, and pricing data. It requires no API key and returns rich JSON objects with dozens of fields per card. It is an excellent beginner API for MTG players and developers building deck builders or collection trackers.

Beginner Tip

No API key is required. Use the /cards/named endpoint with a ?fuzzy= parameter to find a card by approximate name, which is perfect for search-as-you-type features.

Measurement Record

What actually happened when we called this API from our own infrastructure. Every value below was recorded by the request, not copied from the provider's documentation.

Request
GET https://api.scryfall.com/cards/named?fuzzy=black+lotus
Result
HTTP 200 · application/json · 5,289 bytes · compressed
Response time
35 ms (median of 3) · fastest 33 ms
Transport
TLSv1.3 · TLS_AES_256_GCM_SHA384 · certificate issued by Google Trust Services
Browser CORS
Allowed — Access-Control-Allow-Origin: *
Served by
cloudflare
Recorded
2026-08-10

Fields Returned

Top-level fields present in the response we captured, with the type and value we actually received.

Field Type Value received
object string card
id string bd8fa327-dd41-4737-8f19-2cf5eb1f7cdd
oracle_id string 5089ec1a-f881-4d55-af14-5d996171203b
multiverse_ids array [1 item]
mtgo_id integer 53155
mtgo_foil_id integer 53156
name string Black Lotus
lang string en
released_at string (date) 2014-06-16
uri string (url) https://api.scryfall.com/cards/bd8fa327-dd41-…
scryfall_uri string (url) https://scryfall.com/card/vma/4/black-lotus?u…
layout string normal
highres_image boolean true
image_status string highres_scan

Captured Response

Captured from a real request to https://api.scryfall.com/cards/named?fuzzy=black+lotus on 2026-08-10. Long arrays and nested objects are truncated to keep the shape readable.

JSON Response · Captured
{
  "object": "card",
  "id": "bd8fa327-dd41-4737-8f19-2cf5eb1f7cdd",
  "oracle_id": "5089ec1a-f881-4d55-af14-5d996171203b",
  "multiverse_ids": [
    382866
  ],
  "mtgo_id": 53155,
  "mtgo_foil_id": 53156,
  "name": "Black Lotus",
  "lang": "en",
  "released_at": "2014-06-16",
  "uri": "https://api.scryfall.com/cards/bd8fa327-dd41-4737-8f19-2cf5eb1f7cdd",
  "scryfall_uri": "https://scryfall.com/card/vma/4/black-lotus?utm_source=api",
  "layout": "normal",
  "highres_image": true,
  "image_status": "highres_scan",
  "…": "(48 more fields)"
}

Field Reference

id Scryfall UUID uniquely identifying this specific printing of the card
name Full card name as printed

Implementation Example

Calls a real endpoint of this API. Replace any placeholder credentials with your own key.

Request
const url = "https://api.scryfall.com/cards/named?fuzzy=black+lotus";
const response = await fetch(url);
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
const data = await response.json();
console.log(data);

What Can You Build?

Note: These code examples are AI-generated and unverified. Always refer to the official API documentation for accurate usage.

How This API Fails

We deliberately sent this API a broken request and recorded exactly what came back on 2026-08-10. Knowing the shape of an error before you hit it makes error handling much easier to write.

HTTP 404 Requesting a path that does not exist application/json
{
  "object": "error",
  "code": "not_found",
  "status": 404,
  "details": "No card found with the given ID or set code and collector number."
}
HTTP 404 Sending an invalid value for "fuzzy" application/json
{
  "object": "error",
  "code": "not_found",
  "type": "ambiguous",
  "status": 404,
  "details": "Too many cards match ambiguous name “!!!invalid!!!”. Add more words to refine your search."
}

Common Errors & Troubleshooting

Generated guidance based on this API's documentation, not observed by us. Treat it as a starting point and check against the provider's own error reference.

404 Not Found for card name Card name has no close match in the database
Try the /cards/search endpoint with q= parameter for broader searches, or verify spelling on the Scryfall website
429 Too Many Requests Sending requests faster than 10 per second
Add a 100ms delay between requests; Scryfall asks developers to self-rate-limit as a courtesy policy
Multiple versions returned A card name matches multiple printings from different sets
Use the id field from the card object to pin to a specific printing, or filter by set code with &set=

Measured Score Breakdown

Live HTTP request to the API endpoint

Speed 29/30
Consistency 17/20
Security 20/20
Browser access 15/15
Transparency 8/15
Endpoint Response Time 35ms

Fully tested on Aug 10, 2026

Technical Specifications

Auth No Auth
HTTPS REQUIRED
CORS YES
Category Games & Comics
Difficulty Beginner
Endpoint last called: 2026-08-10

Related Tags

Similar APIs

View All →