OpenSea NFT Collection Scraper
Pricing
from $5.00 / 1,000 results
Go to Apify Store
OpenSea NFT Collection Scraper
Scrape NFT collection data from OpenSea. Get token IDs, last sale prices (ETH + USD), floor price, traits, rarity ranks, listings, and collection metadata. No API key needed.
Pricing
from $5.00 / 1,000 results
Rating
0.0
(0)
Developer
lulz bot
Maintained by Community
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Scrape NFT collection data from OpenSea, the largest NFT marketplace. Extract token IDs, last sale prices in ETH and USD, floor prices, rarity ranks, trait data, listing prices, and full collection metadata -- all without needing an API key.
Features
- Collection metadata via OpenSea API v2 (no authentication required)
- Individual NFT data from server-side rendered HTML with embedded URQL transport data
- Sale prices in both ETH and USD for each token
- Rarity ranks and trait/attribute data for each NFT
- Listing prices and best offer data
- Collection stats including floor price, total volume, owner count, and sales count
- Pagination via GraphQL and alternate sort orders to get up to 5,000 items
Input
| Field | Type | Default | Description |
|---|---|---|---|
collectionSlug | string | (required) | Collection slug from the URL, e.g. boredapeyachtclub |
maxResults | integer | 100 | Max NFTs to scrape (1-5000) |
proxyConfiguration | object | none | Optional proxy settings |
Example Input
{"collectionSlug": "boredapeyachtclub","maxResults": 100}
Output
Each result contains:
| Field | Description |
|---|---|
tokenId | NFT token ID |
name | NFT name (e.g. "#5161") |
lastSaleUsd | Last sale price in USD |
lastSaleEth | Last sale price in ETH/WETH |
lastSaleSymbol | Token symbol (ETH, WETH, BETH) |
listingPriceUsd | Current listing price in USD |
listingPriceEth | Current listing price in ETH |
bestOfferUsd | Best offer in USD |
rarityRank | Rarity rank within collection |
traits | Array of trait objects {traitType, value} |
contractAddress | Smart contract address |
chain | Blockchain (ethereum, polygon, etc.) |
collectionName | Collection display name |
floorPrice | Collection floor price |
totalSupply | Total items in collection |
totalVolume | All-time trading volume |
numOwners | Number of unique owners |
openseaUrl | Direct link to NFT on OpenSea |
scrapedAt | ISO timestamp |
Example Output
{"tokenId": "5161","name": "#5161","lastSaleUsd": 23443.38,"lastSaleEth": 10.14,"lastSaleSymbol": "WETH","listingPriceEth": 10.099,"rarityRank": 4653,"traits": [{"traitType": "Background", "value": "Orange"},{"traitType": "Clothes", "value": "Leather Jacket"},{"traitType": "Eyes", "value": "Heart"},{"traitType": "Fur", "value": "Black"}],"contractAddress": "0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d","chain": "ethereum","collectionName": "Bored Ape Yacht Club","floorPrice": 10.099,"totalSupply": 9998,"openseaUrl": "https://opensea.io/assets/ethereum/0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d/5161","scrapedAt": "2026-04-25T12:00:00.000Z"}
Popular Collections
| Collection | Slug |
|---|---|
| Bored Ape Yacht Club | boredapeyachtclub |
| CryptoPunks | cryptopunks |
| Azuki | azuki |
| Pudgy Penguins | pudgypenguins |
| Mutant Ape Yacht Club | mutant-ape-yacht-club |
| Doodles | doodles-official |
| Clone X | clonex |
| Moonbirds | proof-moonbirds |
How It Works
- Fetches collection metadata and stats from the OpenSea API v2 (free, no key)
- Loads the collection page HTML which contains embedded URQL transport data with ~50 NFTs
- Parses token IDs, sale prices, listing prices, rarity ranks, and traits from the embedded JSON
- For additional pages, uses the OpenSea GraphQL API (
gql.opensea.io) with cursor-based pagination - Falls back to loading the page with different sort parameters to discover more unique items
Notes
- The initial page load returns approximately 50 NFTs
- GraphQL pagination can extend this significantly depending on the collection
- Each page of NFTs includes the full collection metadata (floor price, volume, etc.)
- Rate limiting is applied between requests (1.5-2s delays)
- Use a proxy for production workloads to avoid rate limits