Magic Eden API
The Magic Eden API returns Solana NFT marketplace data as clean JSON.
🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.
The primary collections endpoint returns collections with symbol, name, description, image, categories and social links, and you can pull a collection, its stats, listings, tokens, a token and its activity, marketplace activity, attributes and a wallet. It is built for NFT analytics, portfolio tools and web3 apps that need Magic Eden data without a scraper. One ReefAPI key, one shared credit pool, the standard envelope.
Real request and response JSON
Captured from the indexed primary action, collections, on .
{
"method": "POST",
"url": "https://api.reefapi.com/magiceden/v1/collections",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"limit": 20
}
}{
"ok": true,
"meta": {
"api": "magiceden",
"endpoint": "collections",
"mode": "live",
"latency_ms": 614.6,
"record_count": 20,
"bytes": 9441,
"cache_hit": false,
"stop_reason": "limit_reached",
"method": "rest-v2",
"page": 1,
"has_more": true
},
"data": {
"collections": [
{
"symbol": "city_coins_collection",
"name": "[redacted-name]",
"description": "City Coin Collection",
"image_url": "https://creator-hub-prod.s3.us-east-2.amazonaws.com/city_coins_collection_pfp_[redacted-phone].png",
"categories": [
"art"
],
"twitter": null,
"discord": "https://www.discord.gg/KGgfRWv2n",
"website": null,
"is_badged": false,
"has_compressed_nfts": false,
"magiceden_url": "https://magiceden.io/marketplace/city_coins_collection"
},
{
"symbol": "tgtny",
"name": "[redacted-name]",
"description": "A little rebellion now and then is a good thing.\" — Thomas Jefferson\n\nThe Eastern Bluebird. 250 animated NFTs. 1 Crown Jewel vaulted forever.\n\nSeries 2 of 52 | The Great Theme | $TALON",
"image_url": "https://creator-hub-prod.s3.us-east-2.amazonaws.com/tgtny_pfp_[redacted-phone].png",
"categories": [
"art",
"music"
],
"twitter": null,
"discord": "https://www.discord.gg/xZgEaHEkuZ",
"website": "https://www.thegreattheme.com/",
"is_badged": false,
"has_compressed_nfts": false,
"magiceden_url": "https://magiceden.io/marketplace/tgtny"
},
{
"symbol": "fgpb",
"name": "[redacted-name]",
"description": "Мощный и величественный Лесной Страж-Медведь. Сильный, выносливый и готовый к любым испытаниям. С большим походным рюкзаком, в окружении дикой природы, он олицетворяет силу, независимость, выживание и связь с природой. Этот NFT символизирует внутренн",
"image_url": "https://creator-hub-prod.s3.us-east-2.amazonaws.com/fgpb_pfp_[redacted-phone].jpeg",
"categories": [
"art",
"virtual_worlds"
],
"twitter": null,
"discord": null,
"website": null,
"is_badged": false,
"has_compressed_nfts": false,
"magiceden_url": "https://magiceden.io/marketplace/fgpb"
}
]
}
}What the Magic Eden API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| collections | Browse Magic Eden collections (paginated). Each: symbol, name, description, image, categories and social links. Use the returned symbol with the other actions. Offset pagination via the `page` param. | Pricing teams call collections to get browse Magic Eden collections (paginated). | page, limit |
| collection | Full collection detail by symbol: metadata (name, description, image, categories, social links) merged with live market stats — floor price (SOL), listed count, 24h average sale price and all-time volume. | Marketplace operators call collection to get full collection detail by symbol. | symbol |
| stats | Live market stats for a collection: floor price (SOL), number of NFTs currently listed, 24-hour average sale price and all-time trading volume. | Catalog enrichment teams call stats to get live market stats for a collection. | symbol |
| listings | Active NFT listings in a collection (NFTs currently for sale), cheapest first. Each: token mint, name, price (SOL), seller, rarity rank (Moonrank + HowRare), image and traits. Optional min/max price filter (SOL). Offset pagination via `page`. | Retail analysts call listings to get active NFT listings in a collection (NFTs currently for sale), cheapest first. | symbol, page, limit, min_price, max_price |
| tokens | All tokens (NFTs) in a collection (listed or not), paginated. Each: mint address, name, owner, image, list status, price if listed, and traits. Offset pagination via `page`. | Pricing teams call tokens to get all tokens (NFTs) in a collection (listed or not), paginated. | symbol, page, limit |
| token | Single NFT / token detail by its Solana mint address: name, collection, current owner, image, all traits, list status and price if listed. Get a mint address from a listings[], tokens[] or activity[] row. | Marketplace operators call token to get single NFT / token detail by its Solana mint address. | mint_address |
| token_activity | On-chain activity history for a single NFT by mint address: every sale, listing, delisting and bid with type, price (SOL), buyer / seller and block time. Offset pagination via `page`. | Catalog enrichment teams call token_activity to get on-chain activity history for a single NFT by mint address. | mint_address, page, limit |
| activity | Recent on-chain activity for a collection: sales, listings, delistings and bids. Each event: type, price (SOL), buyer / seller, token mint and block time. Filter by event type (default: all). Offset pagination via `page`. | Retail analysts call activity to get recent on-chain activity for a collection. | symbol, page, limit, event_type |
| attributes | Trait floor prices for a collection — for every trait value (e.g. Background = Yellow), the floor price (SOL) and how many NFTs carry it. Useful for trait-based valuation. | Pricing teams call attributes to get trait floor prices for a collection. | symbol |
| wallet | NFTs held by a Solana wallet address: each token's mint, name, collection, image, list status and price if listed. Offset pagination via `page`. | Marketplace operators call wallet to get nFTs held by a Solana wallet address. | address, page, limit |
| popular | Popular / trending Magic Eden collections over a time window — the marketplace leaderboard. Each: symbol, name, floor price (SOL) and all-time volume. Choose a window (1h / 1d / 7d / 30d). | Catalog enrichment teams call popular to get popular / trending Magic Eden collections over a time window. | time_range, limit |
| launchpad | Magic Eden Launchpad collections — upcoming and live primary mints. Each: symbol, name, mint price (SOL), supply size, launch datetime, chain and contract. Offset pagination via `page`. | Retail analysts call launchpad to get magic Eden Launchpad collections. | page, limit |
| search | Search Magic Eden collections by free-text name. Resolves a name to its collection symbol(s): first tries an exact symbol match, then scans popular collections and collection pages for a name/symbol substring match. Returns matching collections (symbol, name, image, categories) — use the returned symbol with the other actions. | Pricing teams call search to search Magic Eden collections by free-text name. | query, limit |
Call collections from your stack
curl -X POST https://api.reefapi.com/magiceden/v1/collections \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"limit":20}'import requests
r = requests.post(
"https://api.reefapi.com/magiceden/v1/collections",
headers={"x-api-key": REEF_KEY},
json={
"limit": 20
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/magiceden/v1/collections", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"limit": 20
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.magiceden.collections with {"limit":20}.Who uses this API and why
- NFT-analytics tools call stats and listings to track a collection's floor price and volume.
- Portfolio apps use wallet and token to value a holder's NFTs in real time.
- Web3 products use activity and attributes to power trait rarity and market feeds.
Questions developers ask before integrating
What is the Magic Eden API?
Magic Eden API is a ReefAPI endpoint group for magic eden It returns live JSON through POST requests under /magiceden/v1.
Is the Magic Eden API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. Magic Eden calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Magic Eden login or account?
No login to Magic Eden is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the Magic Eden data?
The page example is captured from a live collections call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Magic Eden API use?
Magic Eden actions currently cost 1-2 credits per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.
Can I call Magic Eden from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call magiceden actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the Magic Eden API a Magic Eden scraper?
It is the managed alternative to a DIY Magic Eden scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same magic eden back as clean JSON.
Why does my Magic Eden scraper keep getting blocked?
Most Magic Eden scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked or failed calls are free.