NFT / Marketplace·EVM · Solana · Bitcoin · BNB Chain · Polygon · Avalanche · Linea
Element Market
Multi-chain NFT marketplace and aggregator across 20+ EVM chains plus Solana, Bitcoin Ordinals, and BNB Chain. Provides `element-js-sdk` for order creation/fulfillment, an aggregator router that sweeps OpenSea + LooksRare + Blur + X2Y2 + native Element orders, and a partner REST API.
- 01multi-chain NFT marketplace integrations
- 02aggregator-style sweep flows
- 03BNB Chain / Polygon / Linea NFT support
- 04Bitcoin Ordinals + BRC-20 marketplace
- 05creating/fulfilling Element orders
- pnpm add element-js-sdk ethers
| Variable | Scope | Description |
|---|---|---|
| ELEMENT_API_KEY | Server | Element API key (request via the developer portal). Server-only — required for order POSTs and for higher rate limits. |
| NEXT_PUBLIC_ELEMENT_NETWORK | Client | Network slug used in API paths: 'eth', 'bsc', 'polygon', 'avalanche', 'arbitrum', 'optimism', 'linea', 'base', etc. |
Use `element-js-sdk`: `const sdk = new ElementSDK({ networkName, isTestnet: false, apiKey: ELEMENT_API_KEY, signer })`. Create listings with `sdk.makeSellOrder({ asset: { tokenId, tokenAddress, schema }, paymentToken, listingTime, expirationTime, startTokenAmount })`, offers with `sdk.makeBuyOrder(...)`. Fulfill with `sdk.fillOrder({ order, quantity })` or batch via `sdk.batchBuyWithETH({ orders, taker })` — the SDK aggregates across Element + OpenSea + LooksRare + Blur + X2Y2 if order sources are mixed. The REST API lives at `https://api.element.market/openapi/v1/` (e.g. `GET /asset`, `GET /collection`, `GET /orders/list`) authenticated via `x-api-key`. Order types follow Element's modified Wyvern + Seaport hybrid schema.
- ⚑Royalty enforcement is per-collection and per-chain; Element honors EIP-2981 plus an internal royalty registry, but on aggregated buys (e.g. filling a Blur order) the source marketplace's royalty rules apply — final royalty paid is not always what Element's UI shows.
- ⚑Marketplace fees vary by chain (typically 0%–2.5%); always read live fees from `GET /v1/fee` before computing seller proceeds.
- ⚑Chain coverage is broad (20+ EVM chains + Solana + BTC Ordinals) but SDK support per chain lags the UI — check `element-js-sdk` `network` enum before targeting a chain. Solana and Ordinals require separate, dedicated endpoints, not `element-js-sdk`.
- ⚑Element's order schema differs from pure Seaport — orders signed with a generic Seaport builder will not match Element's exchange contract; always use the SDK's `makeSellOrder` / `makeBuyOrder` to produce signatures.
- ⚑API key is required for order POSTs; unkeyed read traffic is throttled to a few req/s.
- ⚑Aggregated batch buys can partially fail — `batchBuyWithETH` returns a per-order success array; surface partial fill state to users so they don't assume the whole sweep landed.