NFT Marketplace Aggregator Development

We design and develop full-cycle blockchain solutions: from smart contract architecture to launching DeFi protocols, NFT marketplaces and crypto exchanges. Security audits, tokenomics, integration with existing infrastructure.
Showing 1 of 1 servicesAll 1306 services
NFT Marketplace Aggregator Development
Complex
from 1 week to 3 months
FAQ
Blockchain Development Services
Blockchain Development Stages
Latest works
  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1161
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1051
  • image_logo-advance_0.png
    B2B Advance company logo design
    561
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    827
  • image_logo-aider_0.jpg
    AIDER company logo development
    762
  • image_crm_chasseurs_493_0.webp
    CRM development for Chasseurs
    850

NFT Marketplace Aggregator Development

The problem an aggregator solves is simple: the same NFT can be listed on OpenSea, Blur, LooksRare, and X2Y2 simultaneously at different prices. A buyer looking for the best price is forced to open 4 tabs. An aggregator, like 1inch for tokens, collects orders from all platforms, shows a unified listing, and executes the trade through the optimal route. Gem.xyz and Reservoir did this and became industry standards — but opportunities for specialized aggregators remain.

Smart Contract Architecture

Multi-marketplace Trade Execution

The key component — an aggregator contract that buys NFTs from multiple platforms in one transaction:

contract NFTAggregator {
    struct TradeData {
        address marketplace;
        bytes tradeData;      // calldata for specific marketplace
        uint256 value;        // ETH for this part of trade
        bool isERC721;
    }

    function batchBuy(TradeData[] calldata trades) external payable {
        for (uint256 i = 0; i < trades.length; i++) {
            (bool success, ) = trades[i].marketplace.call{value: trades[i].value}(
                trades[i].tradeData
            );
            if (!success) {
                // Partial fill or revert depending on policy
                emit TradeFailed(i, trades[i].marketplace);
            }
        }
        // Return unspent ETH
        if (address(this).balance > 0) {
            payable(msg.sender).transfer(address(this).balance);
        }
    }
}

Critical moment: atomicity. If first 3 NFTs bought and 4th already sold — what do you do? Two modes: failOnRevert (revert everything if anything fails) and skipFailed (buy what you can, return money for rest). Gem used the second approach as UX optimization — user still gets part of what was requested.

Order Format Support

Each marketplace — its own standard:

Marketplace Standard Features
OpenSea (Seaport) Seaport 1.5 EIP-712, zone/conduit architecture
Blur Blur Exchange Custom, bid pool
LooksRare LooksRare v2 ERC-2981 royalties mandatory
X2Y2 X2Y2 v1 Need backend for callable calldata
Rarible ExchangeV2 ERC-1155 + bundles support
Foundation Foundation Market Primary only, custom format

Need separate adapter for each. Seaport — most complex: supports criteria-based orders (buy any token from collection with certain traits), advanced orders with partial fill, multiple recipients for royalties.

Sweeping and Trait-Based Purchases

Sweep (mass purchase from bottom of price range) — main function for collectors and traders. Trait-sweep: buy all "legendary" from available, regardless of marketplace. Requires criteria-based matching in Seaport or off-chain filtering with on-chain execution.

Indexing and Data Layer

An aggregator without current data — useless. 90% of complexity — in infrastructure for collecting and updating orders.

Data Sources

Marketplace API: OpenSea API v2, Blur API (partially closed), Reservoir protocol as meta-aggregator with open API. Reservoir indexes most marketplaces and provides unified API — makes sense to use it as foundation, adding own indexing for specific cases.

On-chain events: listen to OrderFulfilled, OrderCancelled events on Seaport and equivalents on other marketplaces. WebSocket subscription via Alchemy/Infura for real-time updates. 1-2 block delay — acceptable for most use cases.

Own indexer: for production — own indexer based on The Graph subgraph or custom solution on Go/TypeScript. Store orders in PostgreSQL with indexes on (contract, tokenId, price). Redis for hot data (floor price, recent sales).

Staleness Problem

Orders become stale. Best listing on OpenSea might already be executed while user clicks "Buy". Solutions:

  • Check on-chain order status before display (expensive in RPC calls)
  • Optimistic UI with fallback to next best order on fail
  • Cache with 30 second TTL + real-time invalidation via events

Blur additionally complicates: bid pool lets you see "available" bids which might be filled by competitors faster than your transaction arrives.

Frontend Architecture

Search and Filtering

Full-text search by collection name + filters: trait-based, price range, marketplace source, verification status (verified/unverified collection). Elasticsearch or Meilisearch for fast search across millions of tokens.

Virtualized list (react-virtual or tanstack-virtual) — 10k token collections don't render in DOM entirely.

Cart

Aggregator without cart — just a search engine. Cart: add several NFTs from different marketplaces, show total cost + gas estimate, execute in one transaction. Technically — forming TradeData[] array on frontend with subsequent batchBuy() call.

Gas estimation for batch transactions non-trivial: each marketplace consumes different amounts of gas, plus aggregator overhead. Use eth_estimateGas with small buffer (10-20%) or precomputed gas lookup table by marketplace types.

Royalty Compliance

After Blur introduced optional royalties and captured market share, topic became political. Aggregator must explicitly show which royalties will be paid on each purchase and give user choice — or apply project policy automatically (relying on onchain royalty registry EIP-2981 + Manifold Registry).

Monetization and Competitive Positioning

Standard models: 0.5-1% fee on transaction volume, pro-subscription for analytics, API access for other projects. Blur destroyed the listing fees market — need to compete on UX, speed, analytics, specialization (niche chains, specific categories like gaming NFTs, phygital).

Multi-chain mandatory: Ethereum, Polygon, Base, Arbitrum, Blast. Each chain needs separate indexer, but aggregator contract and frontend — unified.

Timeline Estimates

MVP (Ethereum + OpenSea + Blur, basic cart): 2-3 weeks. Full product (multi-chain, 5+ marketplaces, analytics, trait-based search): 2-3 months.