NFT API
NFT metadata, ownership & marketplace data
Complete NFT data API for ERC-721 and ERC-1155 tokens. Get metadata, ownership history, floor prices, rarity scores, and collection stats across all major chains.
Rich Metadata
Normalized metadata with images, traits, and attributes.
Collection Discovery
Search and explore NFT collections by name or address.
Ownership History
Track ownership changes, sales, and provenance.
Floor & Sales Data
Real-time floor prices and recent sales from marketplaces.
Get Your API Key
Start building in under 5 minutes
No credit card required. Free tier includes 300M compute units/month.
Trusted by developers building:
Key Capabilities
Everything you need, nothing you don't.
Rich Metadata
Normalized metadata with images, traits, and attributes.
Collection Discovery
Search and explore NFT collections by name or address.
Ownership History
Track ownership changes, sales, and provenance.
Floor & Sales Data
Real-time floor prices and recent sales from marketplaces.
Rarity Scoring
Automatic trait rarity calculation for collections.
Multi-chain Support
ERC-721 and ERC-1155 across Ethereum, Polygon, and more.
Spam Filtering
Automatic detection and filtering of spam NFTs.
Fast Rendering
Optimized image proxying and thumbnail generation.
Metadata Refresh
On-demand metadata refresh for dynamic NFTs.
Simple to Integrate
Get started with just a few lines of code. SDKs for every language.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
import "@hanzo/nft/IHanzoNFT.sol";
import "@openzeppelin/contracts/token/ERC721/IERC721.sol";
import "@openzeppelin/contracts/token/ERC1155/IERC1155.sol";
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";
contract NFTMarketplace is ReentrancyGuard {
IHanzoNFT public hanzoNFT;
struct Listing {
address seller;
address nftContract;
uint256 tokenId;
uint256 price;
bool is1155;
uint256 amount;
}
mapping(bytes32 => Listing) public listings;
event Listed(bytes32 indexed listingId, address seller, uint256 price);
event Sold(bytes32 indexed listingId, address buyer, uint256 price);
constructor(address _hanzoNFT) {
hanzoNFT = IHanzoNFT(_hanzoNFT);
}
// List an ERC721 NFT
function listERC721(
address nftContract,
uint256 tokenId,
uint256 price
) external returns (bytes32 listingId) {
IERC721(nftContract).transferFrom(msg.sender, address(this), tokenId);
listingId = keccak256(abi.encode(nftContract, tokenId, block.timestamp));
listings[listingId] = Listing({
seller: msg.sender,
nftContract: nftContract,
tokenId: tokenId,
price: price,
is1155: false,
amount: 1
});
emit Listed(listingId, msg.sender, price);
}
// Buy a listed NFT
function buy(bytes32 listingId) external payable nonReentrant {
Listing memory listing = listings[listingId];
require(listing.seller != address(0), "Not listed");
require(msg.value >= listing.price, "Insufficient payment");
delete listings[listingId];
// Transfer NFT to buyer
if (listing.is1155) {
IERC1155(listing.nftContract).safeTransferFrom(
address(this), msg.sender, listing.tokenId, listing.amount, ""
);
} else {
IERC721(listing.nftContract).transferFrom(
address(this), msg.sender, listing.tokenId
);
}
// Transfer payment to seller
payable(listing.seller).transfer(listing.price);
emit Sold(listingId, msg.sender, listing.price);
}
}Built For
NFT Marketplaces
Build trading platforms with rich collection and item data.
Wallet Integration
Display NFT collections with images and metadata.
Gaming Platforms
Track in-game assets and player inventories.
Analytics Tools
Collection analytics, whale tracking, and market trends.
Supported Chains
Start Building with NFT API
Get your free API key and ship your first request in under 5 minutes. No credit card required.