E-commerce & Marketplaces

OpenSea API

The OpenSea API returns NFT marketplace data — floor prices, items and activity — as clean JSON.

7 actionsLive JSON1,000 free creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

The primary collection endpoint returns a collection's slug, name, category, floor price (amount, symbol, USD), top offer, total supply, unique-item and listed counts, and you can search collections, list items, pull an item, its activity and holders, and see what is trending. It is built for NFT analytics, portfolio tools and web3 apps that need OpenSea data without a scraper. One ReefAPI key, one shared credit pool, the standard { ok, data, meta, error } envelope.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/opensea/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "query": "pudgy"
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "opensea",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 722.3,
    "record_count": 10,
    "bytes": 4133,
    "cache_hit": false,
    "method": "gql+v2"
  },
  "data": {
    "collections": [
      {
        "slug": "pudgypenguins",
        "name": "[redacted-name]",
        "category": "PFPS",
        "image_url": "https://i2c.seadn.io/collection/pudgypenguins/image/f489fb69fd11886b468c0f7ff1376c/cdf489fb69fd11886b468c0f7ff1376c.png",
        "opensea_url": "https://opensea.io/collection/pudgypenguins",
        "floor_price": {
          "amount": 4.189956449999882,
          "symbol": "ETH",
          "usd": null
        },
        "total_supply": 8888,
        "owner_count": 5081,
        "total_volume": {
          "amount": 517390.48322527186,
          "symbol": null,
          "usd": null
        }
      },
      {
        "slug": "lilpudgys",
        "name": "[redacted-name]",
        "category": "PFPS",
        "image_url": "https://i2c.seadn.io/collection/lilpudgys/image/9289b91d3d0cefccfe6b9c7f83f471/649289b91d3d0cefccfe6b9c7f83f471.png",
        "opensea_url": "https://opensea.io/collection/lilpudgys",
        "floor_price": {
          "amount": 0.419899,
          "symbol": "ETH",
          "usd": null
        },
        "total_supply": 21929,
        "owner_count": 10527,
        "total_volume": {
          "amount": 142491.910604402,
          "symbol": null,
          "usd": null
        }
      },
      {
        "slug": "pudgyrods",
        "name": "[redacted-name]",
        "category": "MEMBERSHIPS",
        "image_url": "https://i2c.seadn.io/collection/pudgyrods/image/6691c691d[redacted-phone]db411b57e86/866691c691d[redacted-phone]db411b57e86.png",
        "opensea_url": "https://opensea.io/collection/pudgyrods",
        "floor_price": {
          "amount": 0.11889739,
          "symbol": "ETH",
          "usd": null
        },
        "total_supply": 7399,
        "owner_count": 2951,
        "total_volume": {
          "amount": 23606.3316370304,
          "symbol": null,
          "usd": null
        }
      }
    ]
  }
}
Actions

What the OpenSea API does

ActionDescriptionConcrete use caseKey params
collectionFull collection detail by slug: floor price, top offer, 24h + total volume, owner / listed / supply counts and 1-day floor change merged with keyless metadata — description, image/banner, contracts (address + chain), category, safelist status, fees and social links (Twitter / Discord / Telegram / website).Pricing teams call collection to get full collection detail by slug.slug
searchSearch OpenSea collections by free-text name. Returns matching collections with slug, name, image, category, floor price, owner count, supply and total volume — use the returned slug with the other actions.Marketplace operators call search to search OpenSea collections by free-text name.query, limit
itemsPaginated items (NFTs) in a collection. Each item: name, token id, contract, image, rarity rank, best listing price + marketplace, best offer and last sale. Sort by price / rarity / last-sale-price / listing-date. Cursor pagination — pass the returned meta.next_cursor as `cursor` to page on.Catalog enrichment teams call items to get paginated items (NFTs) in a collection.slug, limit, cursor, sort_by, direction
itemSingle NFT / item detail by collection contract + token id: name, image, all traits (trait_type + value), rarity rank, best listing (price + marketplace), best offer and last sale. Get contract_address from the collection action's contracts[] (or an items[] row); token_id is the NFT number.Retail analysts call item to get single NFT / item detail by collection contract + token id.contract_address, token_id, chain
activityRecent on-chain activity for a collection (default: sales). Each event: type, time, price (token amount + USD) and the item (name, token id, contract). Filter by event type — sales, listings, offers, transfers or mints.Pricing teams call activity to get recent on-chain activity for a collection (default.slug, limit, event_type
holdersTop holders (owners) of a collection, ranked by quantity owned. Each holder: wallet address, display name (ENS / OpenSea username if any), quantity, % of supply and estimated total NFT portfolio value (USD). Cursor pagination.Marketplace operators call holders to get top holders (owners) of a collection, ranked by quantity owned.slug, limit, cursor
trendingTrending or top collections ranked over a time window — the OpenSea rankings/leaderboard. Each: rank score, slug, name, floor price, volume, owners and 1-day floor change. Choose TRENDING (momentum) or TOP (by volume), and a window (1h / 1d / 7d / 30d).Catalog enrichment teams call trending to get trending or top collections ranked over a time window.ranking, timeframe, limit
Code samples

Call search from your stack

curl -X POST https://api.reefapi.com/opensea/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"pudgy"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.opensea.search with {"query":"pudgy"}.
Use cases

Who uses this API and why

  • NFT-analytics tools call collection to track a project's floor price, supply and listed count.
  • Portfolio apps use holders and items to value a wallet's holdings across collections.
  • Web3 products use activity and trending to power market feeds and discovery.
FAQ

Questions developers ask before integrating

What is the OpenSea API?

OpenSea API is a ReefAPI endpoint group for opensea It returns live JSON through POST requests under /opensea/v1.

Is the OpenSea API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. OpenSea calls use the same shared credit balance as every other ReefAPI engine.

Do I need a OpenSea login or account?

No login to OpenSea is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the OpenSea data?

The page example is captured from a live collection call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the OpenSea API use?

OpenSea actions currently cost 1 credit per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.

Can I call OpenSea from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call opensea actions with the same key, credit pool and JSON envelope used by normal REST requests.

Is the OpenSea API a OpenSea scraper?

It is the managed alternative to a DIY OpenSea scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same opensea back as clean JSON.

Why does my OpenSea scraper keep getting blocked?

Most OpenSea scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked or failed calls are free.

docs / opensea

OpenSea

OpenSea

base /opensea/v17 endpoints
post/opensea/v1/collection1 credit

Full collection detail by slug: floor price, top offer, 24h + total volume, owner / listed / supply counts and 1-day floor change merged with keyless metadata — description, image/banner, contracts (address + chain), category, safelist status, fees and social links (Twitter / Discord / Telegram / website).

ParameterAllowed / rangeDescription
slugrequiredOpenSea collection slug — the last path segment of an OpenSea collection URL (opensea.io/collection/<slug>), e.g. 'pudgypenguins', 'boredapeyachtclub', 'azuki'. Use the search action to resolve a name to its slug.
Try in playground →
post/opensea/v1/items1 credit

Paginated items (NFTs) in a collection. Each item: name, token id, contract, image, rarity rank, best listing price + marketplace, best offer and last sale. Sort by price / rarity / last-sale-price / listing-date. Cursor pagination — pass the returned meta.next_cursor as `cursor` to page on.

ParameterAllowed / rangeDescription
slugrequiredOpenSea collection slug — the last path segment of an OpenSea collection URL (opensea.io/collection/<slug>), e.g. 'pudgypenguins', 'boredapeyachtclub', 'azuki'. Use the search action to resolve a name to its slug.
limit = 30optional1–100Items per page (1-100, default 30).
cursoroptionalPagination cursor — pass meta.next_cursor from the previous page to fetch the next.
sort_by = PRICEoptionalPRICE · RARITY · LAST_SALE_PRICE · CREATED_DATE · BEST_OFFERSort items by this field.
direction = ASCoptionalASC · DESCSort direction (ASC = cheapest/lowest first).
Try in playground →
post/opensea/v1/item1 credit

Single NFT / item detail by collection contract + token id: name, image, all traits (trait_type + value), rarity rank, best listing (price + marketplace), best offer and last sale. Get contract_address from the collection action's contracts[] (or an items[] row); token_id is the NFT number.

ParameterAllowed / rangeDescription
contract_addressrequiredNFT contract address (0x…). From the collection's contracts[].address or an items[] row.
token_idrequiredThe token id / NFT number within the contract.
chain = ethereumoptionalethereum · matic · base · solana · arbitrum · optimism · klaytn · avalanche · blast · zora · bsc · seiBlockchain the item is on (default ethereum).
Try in playground →
post/opensea/v1/activity1 credit

Recent on-chain activity for a collection (default: sales). Each event: type, time, price (token amount + USD) and the item (name, token id, contract). Filter by event type — sales, listings, offers, transfers or mints.

ParameterAllowed / rangeDescription
slugrequiredOpenSea collection slug — the last path segment of an OpenSea collection URL (opensea.io/collection/<slug>), e.g. 'pudgypenguins', 'boredapeyachtclub', 'azuki'. Use the search action to resolve a name to its slug.
limit = 20optional1–50Max events (1-50, default 20).
event_type = SALEoptionalSALE · LISTING · OFFER · TRANSFER · MINTWhich activity to return (default SALE = recent sales).
Try in playground →
post/opensea/v1/holders1 credit

Top holders (owners) of a collection, ranked by quantity owned. Each holder: wallet address, display name (ENS / OpenSea username if any), quantity, % of supply and estimated total NFT portfolio value (USD). Cursor pagination.

ParameterAllowed / rangeDescription
slugrequiredOpenSea collection slug — the last path segment of an OpenSea collection URL (opensea.io/collection/<slug>), e.g. 'pudgypenguins', 'boredapeyachtclub', 'azuki'. Use the search action to resolve a name to its slug.
limit = 20optional1–50Holders per page (1-50, default 20).
cursoroptionalPagination cursor (meta.next_cursor from the previous page).
Try in playground →