# Magic Eden API — Solana NFT marketplace scraper: browse collections; collection detail, floor price, listed count and total volume stats; active NFT listings with price, rarity rank and traits; all collection tokens; single NFT / token detail and its activity history; collection activity (sales, listings, offers); per-trait floor prices; wallet holdings; popular / trending collections; and Launchpad mints — from Magic Eden (magiceden.io), no API key required

> 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.
> ReefAPI engine `magiceden` · 13 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/magiceden/v1/<action>` with a JSON body.
- **Auth:** header `x-api-key: <YOUR_REEFAPI_KEY>` — create one free (1,000 credits, no card): https://reefapi.com/signup
- **Response (every call):** `{ ok: boolean, data: ..., meta: { record_count, credits, ... }, error: { code, message } }` — branch on `ok`. Failed or blocked calls are free.
- **One key + one shared credit pool** across every ReefAPI API. Per-call credits are listed on each endpoint below.
- **Use it from an AI agent (MCP):** connect `https://api.reefapi.com/mcp` (remote streamable-http, `Authorization: Bearer <key>`) and your assistant can call these actions directly.

## Endpoints

### POST /magiceden/v1/collections — 1 credit
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.

**Parameters:**
- `page` (integer, optional, default 1) — Page number (1-based). Pages of `limit` items each; pass page=2 for the next page. Use meta.has_more to know when to stop.
- `limit` (integer, optional, default 20) — Items per page (snapped to a multiple of 20; 20-100, default 20).

**Returns:** collections[]{symbol, name, description, image_url, categories[], twitter, discord, website, is_badged, magiceden_url} + meta{page, has_more}

**Example request body:**
```json
{
  "limit": 20
}
```

### POST /magiceden/v1/collection — 1 credit
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.

**Parameters:**
- `symbol` (string, required) — Magic Eden collection symbol — the last path segment of a Magic Eden collection URL (magiceden.io/marketplace/<symbol>), e.g. 'okay_bears', 'famous_fox_federation', 'degods'. Use the search or collections action to resolve a name to its symbol.

**Returns:** collection{symbol, name, description, image_url, categories[], twitter, discord, website, floor_price_sol, listed_count, avg_price_24hr_sol, volume_all_sol, magiceden_url}

**Example request body:**
```json
{
  "symbol": "okay_bears"
}
```

### POST /magiceden/v1/stats — 1 credit
Live market stats for a collection: floor price (SOL), number of NFTs currently listed, 24-hour average sale price and all-time trading volume.

**Parameters:**
- `symbol` (string, required) — Magic Eden collection symbol — the last path segment of a Magic Eden collection URL (magiceden.io/marketplace/<symbol>), e.g. 'okay_bears', 'famous_fox_federation', 'degods'. Use the search or collections action to resolve a name to its symbol.

**Returns:** stats{symbol, floor_price_sol, listed_count, avg_price_24hr_sol, volume_all_sol, magiceden_url}

**Example request body:**
```json
{
  "symbol": "okay_bears"
}
```

### POST /magiceden/v1/listings — 1 credit
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`.

**Parameters:**
- `symbol` (string, required) — Magic Eden collection symbol — the last path segment of a Magic Eden collection URL (magiceden.io/marketplace/<symbol>), e.g. 'okay_bears', 'famous_fox_federation', 'degods'. Use the search or collections action to resolve a name to its symbol.
- `page` (integer, optional, default 1) — Page number (1-based). Pages of `limit` items each; pass page=2 for the next page. Use meta.has_more to know when to stop.
- `limit` (integer, optional, default 20) — Items per page (snapped to a multiple of 20; 20-100, default 20).
- `min_price` (number, optional) — Only listings priced at or above this many SOL (must be > 0).
- `max_price` (number, optional) — Only listings priced at or below this many SOL.

**Returns:** listings[]{token_mint, name, price_sol, seller, rarity_rank_moonrank, rarity_rank_howrare, image_url, attributes[]{trait_type,value}, magiceden_url} + meta{page, has_more}

**Example request body:**
```json
{
  "symbol": "okay_bears",
  "limit": 20
}
```

### POST /magiceden/v1/tokens — 1 credit
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`.

**Parameters:**
- `symbol` (string, required) — Magic Eden collection symbol — the last path segment of a Magic Eden collection URL (magiceden.io/marketplace/<symbol>), e.g. 'okay_bears', 'famous_fox_federation', 'degods'. Use the search or collections action to resolve a name to its symbol.
- `page` (integer, optional, default 1) — Page number (1-based). Pages of `limit` items each; pass page=2 for the next page. Use meta.has_more to know when to stop.
- `limit` (integer, optional, default 20) — Items per page (snapped to a multiple of 20; 20-100, default 20).

**Returns:** tokens[]{mint_address, name, owner, image_url, list_status, price_sol, attributes[]{trait_type,value}, magiceden_url} + meta{page, has_more}

**Example request body:**
```json
{
  "symbol": "okay_bears"
}
```

### POST /magiceden/v1/token — 1 credit
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.

**Parameters:**
- `mint_address` (string, required) — The NFT's Solana mint address. From a listings[]/tokens[]/activity[] row (token_mint / mint_address).

**Returns:** token{mint_address, name, collection_symbol, collection_name, owner, image_url, external_url, list_status, price_sol, attributes[]{trait_type,value}, magiceden_url}

### POST /magiceden/v1/token_activity — 1 credit
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`.

**Parameters:**
- `mint_address` (string, required) — The NFT's Solana mint address.
- `page` (integer, optional, default 1) — Page number (1-based). Pages of `limit` items each; pass page=2 for the next page. Use meta.has_more to know when to stop.
- `limit` (integer, optional, default 20) — Items per page (snapped to a multiple of 20; 20-100, default 20).

**Returns:** activity[]{signature, type, source, token_mint, price_sol, buyer, seller, block_time, slot} + meta{page, has_more}

### POST /magiceden/v1/activity — 1 credit
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`.

**Parameters:**
- `symbol` (string, required) — Magic Eden collection symbol — the last path segment of a Magic Eden collection URL (magiceden.io/marketplace/<symbol>), e.g. 'okay_bears', 'famous_fox_federation', 'degods'. Use the search or collections action to resolve a name to its symbol.
- `page` (integer, optional, default 1) — Page number (1-based). Pages of `limit` items each; pass page=2 for the next page. Use meta.has_more to know when to stop.
- `limit` (integer, optional, default 20) — Items per page (snapped to a multiple of 20; 20-100, default 20).
- `event_type` (enum, optional) — Filter to one activity type (omit for all). [one of: buyNow, list, delist, bid, cancelBid, auctionUpdate, placeBid]

**Returns:** activity[]{signature, type, source, token_mint, collection_symbol, price_sol, buyer, seller, block_time, image_url} + meta{page, has_more}

**Example request body:**
```json
{
  "symbol": "okay_bears",
  "limit": 20
}
```

### POST /magiceden/v1/attributes — 1 credit
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.

**Parameters:**
- `symbol` (string, required) — Magic Eden collection symbol — the last path segment of a Magic Eden collection URL (magiceden.io/marketplace/<symbol>), e.g. 'okay_bears', 'famous_fox_federation', 'degods'. Use the search or collections action to resolve a name to its symbol.

**Returns:** attributes[]{trait_type, value, count, floor_sol, image_url}

**Example request body:**
```json
{
  "symbol": "okay_bears"
}
```

### POST /magiceden/v1/wallet — 1 credit
NFTs held by a Solana wallet address: each token's mint, name, collection, image, list status and price if listed. Offset pagination via `page`.

**Parameters:**
- `address` (string, required) — The Solana wallet address to list NFT holdings for.
- `page` (integer, optional, default 1) — Page number (1-based). Pages of `limit` items each; pass page=2 for the next page. Use meta.has_more to know when to stop.
- `limit` (integer, optional, default 20) — Items per page (snapped to a multiple of 20; 20-100, default 20).

**Returns:** tokens[]{mint_address, name, collection_symbol, collection_name, image_url, list_status, price_sol, attributes[]} + meta{page, has_more}

### POST /magiceden/v1/popular — 1 credit
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).

**Parameters:**
- `time_range` (enum, optional, default "1d") — Ranking window (1h / 1d / 7d / 30d). [one of: 1h, 1d, 7d, 30d]
- `limit` (integer, optional, default 50) — Number of collections (Magic Eden allows 50 or 100). [one of: 50, 100]

**Returns:** collections[]{symbol, name, image_url, floor_price_sol, volume_all_sol, magiceden_url}

**Example request body:**
```json
{
  "time_range": "1d",
  "limit": 50
}
```

### POST /magiceden/v1/launchpad — 1 credit
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`.

**Parameters:**
- `page` (integer, optional, default 1) — Page number (1-based). Pages of `limit` items each; pass page=2 for the next page. Use meta.has_more to know when to stop.
- `limit` (integer, optional, default 20) — Items per page (snapped to a multiple of 20; 20-100, default 20).

**Returns:** collections[]{symbol, name, description, image_url, mint_price_sol, size, launch_datetime, chain_id, contract_address, magiceden_url} + meta{page, has_more}

### POST /magiceden/v1/search — 2 credits
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.

**Parameters:**
- `query` (string, required) — Collection name or keyword to search for (e.g. 'bears', 'fox', 'degods').
- `limit` (integer, optional, default 10) — Max collections to return (1-50, default 10).

**Returns:** collections[]{symbol, name, description, image_url, categories[], magiceden_url}

## More
- Try it live, no code: https://reefapi.com/playground?engine=magiceden
- Human docs page: https://reefapi.com/docs/magiceden
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
