← Protocols
Element Market
NFT / Marketplace·EVM · Solana · Bitcoin · BNB Chain · Polygon · Avalanche · Linea

Element Market

01Description

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.

02Best for
  • 01multi-chain NFT marketplace integrations
  • 02aggregator-style sweep flows
  • 03BNB Chain / Polygon / Linea NFT support
  • 04Bitcoin Ordinals + BRC-20 marketplace
  • 05creating/fulfilling Element orders
03Install
  • pnpm add element-js-sdk ethers
04Environment variables
VariableScopeDescription
ELEMENT_API_KEYServerElement API key (request via the developer portal). Server-only — required for order POSTs and for higher rate limits.
NEXT_PUBLIC_ELEMENT_NETWORKClientNetwork slug used in API paths: 'eth', 'bsc', 'polygon', 'avalanche', 'arbitrum', 'optimism', 'linea', 'base', etc.
05Prompt snippet
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.
06Gotchas
  • 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.
07Alternatives