{"slug":"nft-collection-metadata","title":"Best NFT collection metadata API: Moralis, Alchemy, OpenSea benchmarked","subtitle":"Share of metadata fields (name, image, description, floor_eth, external_url) populated across 50 Ethereum blue-chip NFT collections, audited every 6 hours.","category":"NFT APIs","metric":"Field coverage","unit":"pct","status":"live","higherIsBetter":true,"filters":null,"value":97.1351,"leader":{"name":"Moralis","slug":"moralis","value":97.1351},"rankings":[{"name":"Moralis","slug":"moralis","ms":{"p50":97.1351,"p90":97.1351,"p99":97.1351,"mean":97.1351},"successRate":100,"sampleSize":3666.28},{"name":"OpenSea","slug":"opensea","ms":{"p50":95.174,"p90":95.174,"p99":95.174,"mean":95.174},"successRate":100,"sampleSize":4311.51},{"name":"Alchemy","slug":"alchemy","ms":{"p50":75.05,"p90":75.05,"p99":75.05,"mean":75.05},"successRate":100,"sampleSize":6002.1}],"sparkline":[97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.1429,97.0213,97.0213,97.0213],"sampleSize":13979.890000000001,"asOf":"2026-08-23T05:20:22.610Z","headline":"Moralis leads field coverage at 97.1% (24h avg) on Best NFT collection metadata API: Moralis, Alchemy, OpenSea benchmarked.","quote":"Moralis leads field coverage at 97.1% (24h avg) on Best NFT collection metadata API: Moralis, Alchemy, OpenSea benchmarked. Source: OpenChainBench (https://openchainbench.com/benchmarks/nft-collection-metadata).","cite":{"plain":"OpenChainBench. \"Best NFT collection metadata API: Moralis, Alchemy, OpenSea benchmarked\". Retrieved 2026-08-23. https://openchainbench.com/benchmarks/nft-collection-metadata","bibtex":"@misc{ocb_nft_collection_metadata,\n  author = {OpenChainBench},\n  title  = {Best NFT collection metadata API: Moralis, Alchemy, OpenSea benchmarked},\n  year   = {2026},\n  url    = {https://openchainbench.com/benchmarks/nft-collection-metadata},\n  note   = {Retrieved 2026-08-23}\n}","apa":"OpenChainBench. (2026). Best NFT collection metadata API: Moralis, Alchemy, OpenSea benchmarked. Retrieved August 23, 2026, from https://openchainbench.com/benchmarks/nft-collection-metadata","ris":"TY  - GEN\r\nAU  - OpenChainBench\r\nTI  - Best NFT collection metadata API: Moralis, Alchemy, OpenSea benchmarked\r\nPY  - 2026\r\nUR  - https://openchainbench.com/benchmarks/nft-collection-metadata\r\nY2  - 2026-08-23\r\nER  - \r\n"},"pageUrl":"https://openchainbench.com/benchmarks/nft-collection-metadata","ogImage":"https://openchainbench.com/api/og/nft-collection-metadata","source":"https://github.com/ChainBench/OpenChainBench/tree/main/harnesses/nft-metadata-coverage","methodology":["Collection set: a fixed list of 50 Ethereum blue-chip collections (BAYC, CryptoPunks, Azuki, Pudgy Penguins, Doodles, MAYC, Moonbirds, CloneX, Otherdeeds, Meebits and others). The list is committed to the harness repo and only changes via PR.","Fields scored (5): `name`, `image`, `description`, `floor_eth`, `external_url`. A field counts as covered if the provider returns a non-empty string or a positive number.","Apple-to-apple: each provider gets exactly one chance per field. No OR-of-multiple-URLs tricks.","Providers in scope: Moralis (`/nft/{address}/metadata`), Alchemy (`getContractMetadata`), OpenSea (`/api/v2/collections/{slug}` plus `/api/v2/collections/{slug}/stats` for floor; slug pre-resolved via `/api/v2/chain/ethereum/contract/{addr}`, so OpenSea costs two API calls per collection per check).","Cadence: every 6 hours per provider × collection. Steady-state ≈ 200 checks per provider per day, ~1000 field checks per provider per day.","Region: `eu-west` (single point. multi-region requires running additional monitor instances).","Ratio: `nft_metadata_success_total / nft_metadata_checks_total`, expressed in percent. Failures of the metadata API itself (timeouts, 5xx) are not counted in the denominator. only successful responses with the field check applied."],"license":"CC-BY-4.0"}