OpenSea API Query NFT data, trade on the Seaport marketplace, and swap ERC20 tokens across Ethereum, Base, Arbitrum, Optimism, Polygon, and more. Quick start Set OPENSEA_API_KEY in your environment Preferred: Use the opensea CLI ( @opensea/cli ) for all queries and operations Alternatively, use the shell scripts in scripts/ or the MCP server export OPENSEA_API_KEY = "your-api-key"
Install the CLI globally (or use npx)
npm install -g @opensea/cli
Get collection info
opensea collections get boredapeyachtclub
Get floor price and volume stats
opensea collections stats boredapeyachtclub
Get NFT details
opensea nfts get ethereum 0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d 1234
Get best listings for a collection
opensea listings best boredapeyachtclub --limit 5
Search across OpenSea
opensea search "cool cats"
Get trending tokens
opensea tokens trending --limit 5
Get a swap quote
opensea swaps quote
\
--from-chain base --from-address 0x0000000000000000000000000000000000000000
\
--to-chain base --to-address 0xTokenAddress
\
--quantity
0.02
--address
0xYourWallet
Task guide
Recommended:
Use the
opensea
CLI (
@opensea/cli
) as your primary tool. It covers all the operations below with a consistent interface, structured output, and built-in pagination. Install with
npm install -g @opensea/cli
or use
npx @opensea/cli
. The shell scripts in
scripts/
remain available as alternatives.
Token swaps
OpenSea's API includes a cross-chain DEX aggregator for swapping ERC20 tokens with optimal routing across all supported chains.
Task
CLI Command
Alternative
Get swap quote with calldata
opensea swaps quote --from-chain
Install globally
npm install -g @opensea/cli
Or use without installing
npx @opensea/cli collections get mfers Authentication
Set via environment variable (recommended)
export OPENSEA_API_KEY = "your-api-key" opensea collections get mfers
Always use the OPENSEA_API_KEY environment variable above — do not pass API keys inline
- CLI Commands
- Command
- Description
- collections
- Get, list, stats, and traits for NFT collections
- nfts
- Get, list, refresh metadata, and contract details for NFTs
- listings
- Get all, best, or best-for-nft listings
- offers
- Get all, collection, best-for-nft, and trait offers
- events
- List marketplace events (sales, transfers, mints, etc.)
- search
- Search collections, NFTs, tokens, and accounts
- tokens
- Get trending tokens, top tokens, and token details
- swaps
- Get swap quotes for token trading
- accounts
- Get account details
- Global options:
- --api-key
- ,
- --chain
- (default: ethereum),
- --format
- (json/table/toon),
- --base-url
- ,
- --timeout
- ,
- --verbose
- Output Formats
- JSON
- (default): Structured output for agents and scripts
- Table
-
- Human-readable tabular output (
- --format table
- )
- TOON
- Token-Oriented Object Notation, uses ~40% fewer tokens than JSON — ideal for LLM/AI agent context windows ( --format toon )
JSON output (default)
opensea collections stats mfers
Human-readable table
opensea --format table collections stats mfers
Compact TOON format (best for AI agents)
opensea --format toon tokens trending --limit 5 Pagination All list commands support cursor-based pagination with --limit and --next :
First page
opensea collections list --limit 5
Pass the "next" cursor from the response to get the next page
- opensea collections list
- --limit
- 5
- --next
- "LXBrPTEwMDA..."
- Programmatic SDK
- The CLI also exports a TypeScript/JavaScript SDK for use in scripts and applications:
- import
- {
- OpenSeaCLI
- ,
- OpenSeaAPIError
- }
- from
- "@opensea/cli"
- const
- client
- =
- new
- OpenSeaCLI
- (
- {
- apiKey
- :
- process
- .
- env
- .
- OPENSEA_API_KEY
- }
- )
- const
- collection
- =
- await
- client
- .
- collections
- .
- get
- (
- "mfers"
- )
- const
- {
- nfts
- }
- =
- await
- client
- .
- nfts
- .
- listByCollection
- (
- "mfers"
- ,
- {
- limit
- :
- 5
- }
- )
- const
- {
- listings
- }
- =
- await
- client
- .
- listings
- .
- best
- (
- "mfers"
- ,
- {
- limit
- :
- 10
- }
- )
- const
- {
- asset_events
- }
- =
- await
- client
- .
- events
- .
- byCollection
- (
- "mfers"
- ,
- {
- eventType
- :
- "sale"
- }
- )
- const
- {
- tokens
- }
- =
- await
- client
- .
- tokens
- .
- trending
- (
- {
- chains
- :
- [
- "base"
- ]
- ,
- limit
- :
- 5
- }
- )
- const
- results
- =
- await
- client
- .
- search
- .
- query
- (
- "mfers"
- ,
- {
- limit
- :
- 5
- }
- )
- // Swap quote
- const
- {
- quote
- ,
- transactions
- }
- =
- await
- client
- .
- swaps
- .
- quote
- (
- {
- fromChain
- :
- "base"
- ,
- fromAddress
- :
- "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"
- ,
- toChain
- :
- "base"
- ,
- toAddress
- :
- "0x3ec2156d4c0a9cbdab4a016633b7bcf6a8d68ea2"
- ,
- quantity
- :
- "1000000"
- ,
- address
- :
- "0xYourWalletAddress"
- ,
- }
- )
- // Error handling
- try
- {
- await
- client
- .
- collections
- .
- get
- (
- "nonexistent"
- )
- }
- catch
- (
- error
- )
- {
- if
- (
- error
- instanceof
- OpenSeaAPIError
- )
- {
- console
- .
- error
- (
- error
- .
- statusCode
- )
- // e.g. 404
- console
- .
- error
- (
- error
- .
- responseBody
- )
- // raw API response
- console
- .
- error
- (
- error
- .
- path
- )
- // request path
- }
- }
- TOON Format for AI Agents
- TOON (Token-Oriented Object Notation) is a compact serialization format that uses ~40% fewer tokens than JSON, making it ideal for piping CLI output into LLM context windows:
- opensea
- --format
- toon tokens trending
- --limit
- 3
- Example output:
- tokens[3]{name,symbol,chain,market_cap,price_usd}:
- Ethereum,ETH,ethereum,250000000000,2100.50
- Bitcoin,BTC,bitcoin,900000000000,48000.00
- Solana,SOL,solana,30000000000,95.25
- next: abc123
- TOON is also available programmatically:
- import
- {
- formatToon
- }
- from
- "@opensea/cli"
- const
- data
- =
- await
- client
- .
- tokens
- .
- trending
- (
- {
- limit
- :
- 5
- }
- )
- console
- .
- log
- (
- formatToon
- (
- data
- )
- )
- CLI Exit Codes
- 0
- - Success
- 1
- - API error
- 2
- - Authentication error
- Shell Scripts Reference
- The
- scripts/
- directory contains shell scripts that wrap the OpenSea REST API directly using
- curl
- . These are an alternative to the CLI above.
- NFT & Collection Scripts
- Script
- Purpose
- opensea-get.sh
- Generic GET (path + optional query)
- opensea-post.sh
- Generic POST (path + JSON body)
- opensea-collection.sh
- Fetch collection by slug
- opensea-collection-stats.sh
- Fetch collection statistics
- opensea-collection-nfts.sh
- List NFTs in collection
- opensea-nft.sh
- Fetch single NFT by chain/contract/token
- opensea-account-nfts.sh
- List NFTs owned by wallet
- Marketplace Scripts
- Script
- Purpose
- opensea-listings-collection.sh
- All listings for collection
- opensea-listings-nft.sh
- Listings for specific NFT
- opensea-offers-collection.sh
- All offers for collection
- opensea-offers-nft.sh
- Offers for specific NFT
- opensea-best-listing.sh
- Lowest listing for NFT
- opensea-best-offer.sh
- Highest offer for NFT
- opensea-order.sh
- Get order by hash
- opensea-fulfill-listing.sh
- Get buy transaction data
- opensea-fulfill-offer.sh
- Get sell transaction data
- Token Swap Scripts
- Script
- Purpose
- opensea-swap.sh
- Swap tokens via OpenSea MCP
- Monitoring Scripts
- Script
- Purpose
- opensea-events-collection.sh
- Collection event history
- opensea-stream-collection.sh
- Real-time WebSocket events
- Supported chains
- ethereum
- ,
- matic
- ,
- arbitrum
- ,
- optimism
- ,
- base
- ,
- avalanche
- ,
- klaytn
- ,
- zora
- ,
- blast
- ,
- sepolia
- References
- OpenSea CLI GitHub
- - Full CLI and SDK documentation
- CLI Reference
- - Complete command reference
- SDK Reference
- - Programmatic SDK API
- CLI Examples
- - Real-world usage examples
- references/rest-api.md
- - REST endpoint families and pagination
- references/marketplace-api.md
- - Buy/sell workflows and Seaport details
- references/stream-api.md
- - WebSocket event streaming
- references/seaport.md
- - Seaport protocol and NFT purchase execution
- references/token-swaps.md
- -
- Token swap workflows via MCP
- OpenSea MCP Server
- An official OpenSea MCP server provides direct LLM integration for token swaps and NFT operations. When enabled, Claude can execute swaps, query token data, and interact with NFT marketplaces directly.
- Setup:
- Go to the
- OpenSea Developer Portal
- and verify your email
- Generate a new API key for REST API access
- Generate a separate MCP token for the MCP server
- Add to your MCP config:
- {
- "mcpServers"
- :
- {
- "opensea"
- :
- {
- "url"
- :
- "https://mcp.opensea.io/mcp"
- ,
- "headers"
- :
- {
- "Authorization"
- :
- "Bearer
" - }
- }
- }
- }
- Note:
- Replace
- above with the MCP token from your
- OpenSea Developer Portal
- . Do not embed tokens directly in URLs or commit them to version control.
- Token Swap Tools
- MCP Tool
- Purpose
- get_token_swap_quote
- Get swap calldata for token trades
- get_token_balances
- Check wallet token holdings
- search_tokens
- Find tokens by name/symbol
- get_trending_tokens
- Hot tokens by momentum
- get_top_tokens
- Top tokens by 24h volume
- get_tokens
- Get detailed token info
- NFT Tools
- MCP Tool
- Purpose
- search_collections
- Search NFT collections
- search_items
- Search individual NFTs
- get_collections
- Get detailed collection info
- get_items
- Get detailed NFT info
- get_nft_balances
- List NFTs owned by wallet
- get_trending_collections
- Trending NFT collections
- get_top_collections
- Top collections by volume
- get_activity
- Trading activity for collections/items
- get_upcoming_drops
- Upcoming NFT mints
- Profile & Utility Tools
- MCP Tool
- Purpose
- get_profile
- Wallet profile with holdings/activity
- account_lookup
- Resolve ENS/address/username
- get_chains
- List supported chains
- search
- AI-powered natural language search
- fetch
- Get full details by entity ID
- Token Swaps via MCP
- OpenSea MCP supports ERC20 token swaps across supported DEXes - not just NFTs!
- Get Swap Quote
- mcporter call opensea.get_token_swap_quote
- --args
- '{
- "fromContractAddress": "0x0000000000000000000000000000000000000000",
- "fromChain": "base",
- "toContractAddress": "0xb695559b26bb2c9703ef1935c37aeae9526bab07",
- "toChain": "base",
- "fromQuantity": "0.02",
- "address": "0xYourWalletAddress"
- }'
- Parameters:
- fromContractAddress
-
- Token to swap from (use
- 0x0000...0000
- for native ETH)
- toContractAddress
-
- Token to swap to
- fromChain
- /
- toChain
-
- Chain identifiers
- fromQuantity
-
- Amount in human-readable units (e.g., "0.02" for 0.02 ETH)
- address
-
- Your wallet address
- Response includes:
- swapQuote
-
- Price info, fees, slippage impact
- swap.actions[0].transactionSubmissionData
- Ready-to-use calldata Execute the Swap import { createWalletClient , http } from 'viem' ; import { privateKeyToAccount } from 'viem/accounts' ; import { base } from 'viem/chains' ; // Extract from swap quote response const txData = response . swap . actions [ 0 ] . transactionSubmissionData ; const wallet = createWalletClient ( { account : privateKeyToAccount ( PRIVATE_KEY ) , chain : base , transport : http ( ) } ) ; const hash = await wallet . sendTransaction ( { to : txData . to , data : txData . data , value : BigInt ( txData . value ) } ) ; Check Token Balances mcporter call opensea.get_token_balances --args '{ "address": "0xYourWallet", "chains": ["base", "ethereum"] }' Generating a wallet To execute swaps or buy NFTs, you need an Ethereum wallet (private key + address). Using Node.js import crypto from 'crypto' ; import { privateKeyToAccount } from 'viem/accounts' ; // WARNING: Never log or print private keys — store them only in environment variables const privateKey = '0x' + crypto . randomBytes ( 32 ) . toString ( 'hex' ) ; const account = privateKeyToAccount ( privateKey ) ; // Export as env var for use by other tools; do not write to stdout process . env . PRIVATE_KEY = privateKey ; console . log ( 'Address:' , account . address ) ; Using OpenSSL
Generate private key — do not log or print private keys
export PRIVATE_KEY = "0x $( openssl rand -hex 32 ) "
Derive address (requires node + viem)
node --input-type = module -e " import { privateKeyToAccount } from 'viem/accounts'; console.log('Address:', privateKeyToAccount(' $PRIVATE_KEY ').address); " Using cast (Foundry) cast wallet new Important: Store private keys securely. Never commit them to git or share publicly. Requirements OPENSEA_API_KEY environment variable (for CLI, SDK, and REST API scripts) OPENSEA_MCP_TOKEN environment variable (for MCP server, separate from API key) Node.js >= 18.0.0 (for @opensea/cli ) curl for REST shell scripts websocat (optional) for Stream API jq (recommended) for parsing JSON responses from shell scripts Get both credentials at opensea.io/settings/developer .