Real-Time NFT Floor Price Tracking System

Manual floor price monitoring fails against manipulation: wash trading and public API delays distort the real market picture. We develop a real-time tracking system that aggregates data from multiple sources, including on-chain, and instantly alerts on changes. Our team delivers the project turnkey—from audit to implementation and ongoing support—so you make decisions based on accurate data.

Blockchain Development Services

Frequently Asked Questions

Latest works

  • Development of a web application for FEEDME
    Development of a web application for FEEDME
    1335
  • Development of an online store for the company FURNORO
    Development of an online store for the company FURNORO
    1293
  • B2B Advance company logo design
    B2B Advance company logo design
    738
  • Development of a web application for Enviok
    Development of a web application for Enviok
    1031
  • AIDER company logo development
    AIDER company logo development
    978
  • CRM development for Chasseurs
    CRM development for Chasseurs
    1087

We integrate a real-time NFT floor price tracking system that combines multiple sources to protect against manipulation. A wash trader places a listing at 0.001 ETH to artificially drive the floor down and buy the panic. Or the opposite — removes cheap listings before a large sale. A tracking system that simply polls the OpenSea API once a minute won't give you an accurate picture. A monitoring error costs real money: traders lose up to 30% on wrong entries. Our system saves you from these losses, potentially saving $500+ monthly for active traders. We build real-time monitoring from multiple sources simultaneously, including on-chain data, so you see the true floor.

Why floor price is a tricky metric

Market manipulation. Wash trading (trading with yourself) and spoofing (placing/removing listings) are daily practice on popular collections. Public marketplace APIs have delays from 30 seconds to 15 minutes, enough for fast attacks. Only a combination of multiple sources and on-chain verification gives a reliable picture.

Source limitations. Each marketplace shows only its own listings. The real market floor is the minimum across all platforms.

Marketplace Endpoint Delay Rate limit
OpenSea v2 GET /api/v2/collections/{slug}/stats 5-15 min 4 req/s (free)
Blur Unofficial / reverse-engineered ~1 min No public
LooksRare GET /api/v1/collections/stats ~1 min 5 req/s
Reservoir GET /collections/v7 ~30 sec 10 req/s (free)

Reservoir is an aggregator that normalizes data from all marketplaces. For most tasks it is the best single source of truth, especially on their free tier (10 req/s is enough for monitoring several dozen collections).

How to distinguish the true floor from manipulation

The most reliable way is to compare oracles: if OpenSea shows 0.1 ETH but on-chain trades record sales at 0.08 ETH in the same block, manipulation is present. We use a statistical filter: a sudden drop without a corresponding volume increase is a red flag. The algorithm automatically ignores suspicious listings until confirmed on the secondary market.

Technical Implementation

How we build real-time monitoring

On-chain events give the true real-time floor. We subscribe via WebSocket to Seaport contracts (events OrderValidated, OrderCancelled, OrderFulfilled) and Blur Pool (events NewPool, DepositERC721). Delay is 100-500ms from block confirmation — orders of magnitude faster than any REST polling.

System architecture:

┌─────────────────────────────────────────────┐
│ Data Ingestion Layer                        │
│ ┌──────────┐ ┌──────────┐ ┌─────────────┐  │
│ │ OpenSea  │ │Reservoir │ │  WebSocket  │  │
│ │ Poller   │ │ Poller   │ │  Listener   │  │
│ └────┬─────┘ └────┬─────┘ └──────┬──────┘  │
└───────┼────────────┼──────────────┼──────────┘
        │            │              │
        └────────────┴──────────────┘
                    │
        ┌───────────┴───────────┐
        │ Redis Streams         │
        └───────────┬───────────┘
                    │
        ┌───────────┴───────────┐
        │ Aggregation Worker    │
        │ (compute true floor,  │
        │  detect anomalies)    │
        └───────────┬───────────┘
                    │
        ┌───────────┴───────────┐
        │ TimescaleDB / ClickHouse │
        │ (time-series storage) │
        └───────────┬───────────┘
                    │
        ┌───────────┴───────────┐
        │ WebSocket Push API    │
        │ (client alerts)       │
        └───────────────────────┘

Redis Streams buffer peak loads and guarantee delivery to aggregation. A single source failure does not break the system — data from other sources continues to flow.

How to compute the true floor

The aggregation worker receives snapshots from Redis Streams, discards data older than 2 minutes, and picks the minimum price among fresh ones.

interface FloorSnapshot {
  collectionAddress: string;
  floorPriceWei: bigint;
  floorPriceEth: number;
  source: 'opensea' | 'blur' | 'looksrare' | 'reservoir' | 'onchain';
  timestamp: number;
  listingsCount: number;
}

function computeTrueFloor(snapshots: FloorSnapshot[]): bigint {
  const fresh = snapshots.filter(s => Date.now() - s.timestamp < 120_000);
  if (fresh.length === 0) throw new Error('No fresh data');
  return fresh.reduce((min, s) => s.floorPriceWei < min ? s.floorPriceWei : min, fresh[0].floorPriceWei);
}

Time-series storage: TimescaleDB

We create a hypertable with time-based partitioning for efficient queries.

CREATE TABLE floor_snapshots (
    time TIMESTAMPTZ NOT NULL,
    collection TEXT NOT NULL,
    floor_eth DOUBLE PRECISION,
    volume_24h DOUBLE PRECISION,
    source TEXT
);

SELECT create_hypertable('floor_snapshots', 'time');

CREATE INDEX ON floor_snapshots (collection, time DESC);

-- Continuous aggregate for 1-hour OHLC
CREATE MATERIALIZED VIEW floor_1h
WITH (timescaledb.continuous) AS
SELECT
    time_bucket('1 hour', time) AS bucket,
    collection,
    first(floor_eth, time) AS open,
    max(floor_eth) AS high,
    min(floor_eth) AS low,
    last(floor_eth, time) AS close
FROM floor_snapshots
GROUP BY bucket, collection;

Alerting System

Two signals are truly useful for traders: floor drop (decrease >X% in Y minutes) and sweep alert (accumulation of cheap listings in 1-5 blocks). A sweep often precedes a price increase.

async function detectFloorSweep(
  collection: string,
  windowBlocks: number = 3
): Promise<boolean> {
  const currentBlock = await provider.getBlockNumber();
  const sales = await getSalesInRange(collection, currentBlock - windowBlocks, currentBlock);
  const floorSales = sales.filter(s => s.priceEth <= currentFloor * 1.02); // ±2% of floor
  return floorSales.length >= SWEEP_THRESHOLD; // e.g., 5 sales in 3 blocks
}

Clients subscribe to collections via WebSocket (Node.js + ws or Socket.IO). When floor changes >1%, broadcast to all subscribers.

Deployment and Support

What's included in a turnkey development

Component Status
Polling Reservoir + OpenSea (base) Included
WebSocket listener on Seaport/Blur Included
TimescaleDB storage + aggregations Included
REST API for history Included
WebSocket push alerts Included
Integration documentation (Swagger) Included
Deployment to your server/cloud Optional
Team training Optional
1 month support Included

Our expertise and guarantees

More than 5 years of experience in blockchain development, 20+ successful projects in smart contracts and NFT infrastructure. We guarantee stable system operation: 99.9% uptime, 24/7 monitoring during the first month. We provide a security audit certificate (using Slither, Mythril, Echidna for smart contract verification).

Estimated timelines

Basic tracker with Reservoir polling API + TimescaleDB + REST endpoint — 1 day. Real-time WebSocket listener on Seaport events + alert system + WebSocket push API — 2-3 days total. Full cycle (acceptance, documentation, deployment) — up to 5 working days.

Order your system

Get a consultation on your project — we will calculate the exact timeline and scope of work. Order the development of an NFT floor price tracking system that works faster than competitors.