Blur APIblur.io ↗
Fetch NFT collection rankings, floor prices, best bids, listed tokens, and trading activity from Blur.io via a structured REST API.
What is the Blur API?
The Blur.io API provides 8 endpoints for retrieving NFT marketplace data from Blur.io, covering collection rankings, floor price history, active listings, and recent sales events. The get_collections endpoint returns paginated rankings with volume stats across multiple time windows, while get_collection_activity surfaces per-event trade data including trader addresses, prices, and marketplace attribution. Wallet-based authentication enables portfolio retrieval for a given Ethereum address.
curl -X GET 'https://api.parse.bot/scraper/9383f30f-7b43-4d7b-b5fa-f521cc6fb20c/get_collections?sort=VOLUME_ONE_DAY&order=ASC' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace blur-io-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Blur.io NFT Marketplace SDK — collection rankings, prices, tokens, activity."""
from parse_apis.blur_io_nft_marketplace_api import Blur, CollectionSort, Sort, CollectionNotFound
blur = Blur()
# List top collections by daily volume, descending
for collection in blur.collections.list(sort=CollectionSort.VOLUME_ONE_DAY, order=Sort.DESC, limit=3):
print(collection.name, collection.collectionSlug, collection.totalSupply)
# Drill into a specific collection by slug (constructible)
penguins = blur.collection("pudgypenguins")
# Floor price trend
fp = penguins.floor_price()
print(fp.collectionSlug, fp.contractAddress, fp.floorPrice, fp.floorPriceOneDay)
# Best bid info
bid = penguins.best_bid()
print(bid.collectionSlug, bid.bestCollectionBid, bid.totalCollectionBidValue)
# List tokens for sale
for token in penguins.tokens.list(limit=3):
print(token.tokenId, token.name, token.rarityRank, token.price)
# Recent activity events
for event in penguins.activity.list(limit=3):
print(event.id, event.eventType, event.createdAt, event.marketplace)
# Typed error handling
try:
bad = blur.collection("nonexistent-slug-xyz-999").floor_price()
except CollectionNotFound as exc:
print(f"Collection not found: {exc.collection_slug}")
print("exercised: collections.list / floor_price / best_bid / tokens.list / activity.list")
Fetch a ranked list of NFT collections sorted by trading volume or other metrics. Returns collection summaries including floor prices, volume stats across multiple time windows, and current best bid. The full ranking contains thousands of collections; a single call returns one page of results.
| Param | Type | Description |
|---|---|---|
| sort | string | Sort field for ranking collections. |
| order | string | Sort order. |
{
"type": "object",
"fields": {
"totalCount": "integer total number of collections available",
"collections": "array of collection summary objects with name, slug, floorPrice, volume stats, and bestCollectionBid"
},
"sample": {
"data": {
"totalCount": 15000,
"collections": [
{
"name": "PudgyPenguins",
"imageUrl": "https://images.blur.io/_blur-prod/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/3369-457f5fc4272cd976",
"floorPrice": {
"unit": "ETH",
"amount": "4.41498799999998"
},
"totalSupply": 8888,
"numberOwners": 5210,
"volumeOneDay": {
"unit": "ETH",
"amount": "116.519174529998258"
},
"volumeOneWeek": {
"unit": "ETH",
"amount": "1156.750235639980833807"
},
"collectionSlug": "pudgypenguins",
"contractAddress": "0xbd3531da5cf5857e7cfaa92426877b022e612cf8",
"floorPriceOneDay": {
"unit": "ETH",
"amount": "4.387972399997239"
},
"bestCollectionBid": {
"unit": "ETH",
"amount": "4.3"
},
"floorPriceOneWeek": {
"unit": "ETH",
"amount": "4.10989249998924"
},
"volumeFifteenMinutes": {
"unit": "ETH",
"amount": "4.427"
},
"totalCollectionBidValue": {
"unit": "ETH",
"amount": "165.63"
}
}
]
},
"status": "success"
}
}About the Blur API
Collection Rankings and Metadata
The get_collections endpoint returns a ranked list of NFT collections with a totalCount of all available collections and per-collection summaries including floorPrice, multi-window volume stats, and bestCollectionBid. You can control sort order using the sort and order parameters. For deeper detail on a single collection, get_collection accepts a collection_slug (e.g. pudgypenguins) and returns the full metadata object: contractAddress, volumeOneDay, traitFrequencies, supply counts, and ownership stats.
Floor Price and Bid Data
Two focused endpoints isolate frequently polled values. get_collection_floor_price returns floorPrice, floorPriceOneDay, and floorPriceOneWeek as structured amount-and-unit objects — useful for trend detection without pulling the full collection payload. get_collection_best_bid returns the highest standing collection-wide offer (bestCollectionBid) alongside totalCollectionBidValue, giving a quick read on buyer-side demand and the floor-to-bid spread.
Tokens and Activity
get_collection_tokens returns only tokens with active listings: each token object includes tokenId, imageUrl, traits, price, rarityRank, and owner. Collections with no active asks return an empty tokens array and a totalCount of zero. get_collection_activity returns an events array with fields for eventType (sale or order creation), price, fromTrader, toTrader, createdAt, and marketplace — allowing cross-marketplace attribution for trades that appear on Blur.
Wallet Authentication and Portfolio
The login endpoint accepts a wallet signature, wallet_address, and challenge_message, returning an accessToken JWT. That token gates access to get_portfolio, which returns the NFT holdings for a given Ethereum address. The challenge message must be signed externally by the wallet before calling login.
The Blur API is a managed, monitored endpoint for blur.io — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when blur.io changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official blur.io API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Track floor price trends for a watchlist of collections using floorPriceOneDay and floorPriceOneWeek differentials
- Build a collection bid scanner that alerts when bestCollectionBid exceeds a threshold relative to floorPrice
- Aggregate multi-window volume stats from get_collections to rank collections by momentum
- Display active listings with rarity ranks and trait filters for a collection front-end using get_collection_tokens
- Attribute cross-marketplace sales to specific venues using the marketplace field in get_collection_activity events
- Retrieve a wallet's NFT portfolio holdings after authenticating via the login endpoint
- Monitor new sales events in near real-time by polling get_collection_activity for specific collection slugs
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.