Security News
Supply Chain Attack Detected in Solana's web3.js Library
A supply chain attack has been detected in versions 1.95.6 and 1.95.7 of the popular @solana/web3.js library.
opensea-scraper
Advanced tools
Scraping accurate floor prices from opensea, because the API returns inacurate floor prices.
⚠ Problem: NFT floor prices returned by the Opensea API are not accurate (they lag at least 2 hours, sometimes even a full day it seems). Here is an example of cool-cats floor price actually being 8.5, but the API returns 9.4:
With this utility you can scrape the correct NFT floor prices directly from opensea by using puppeteer.
npm install opensea-scraper
ℹ **slug**
is the human readable identifier that opensea uses to identify a collection. It can be extracted from the URL: https://opensea.io/collection/{slug}
const OpenseaScraper = require("opensea-scraper");
// which nft project to scrape?
const slug = "cool-cats-nft";
// get basic info (from the opensea API)
const basicInfo = await OpenseaScraper.basicInfo(slug);
// scrape the correct floor price from opensea
const floorPrice = await OpenseaScraper.floorPrice(slug);
// scrape the correct floor price from opensea by inserting a custom link
// this is usefull for example if you need the floor price for a sandbox LAND
// token, because the sandbox collection holds both assets and land, with assets
// traditionally being a lot cheaper
const floorPriceByUrl = await OpenseaScraper.floorPriceByUrl(
"https://opensea.io/collection/sandbox?search[sortAscending]=true&search[sortBy]=PRICE&search[stringTraits][0][name]=Type&search[stringTraits][0][values][0]=Land&search[toggles][0]=BUY_NOW"
);
// get offers from opensea. Each offer holds not only the floor price but also the tokenId.
// the resultSize is the number of offers you want to fetch.
const resultSize = 10;
const offers = await OpenseaScraper.offers(slug, resultSize);
// get offers from opensea using a custom link. Each offer holds not only the floor price but also the tokenId.
// the resultSize is the number of offers you want to fetch.
const resultSize = 10;
const url =
"https://opensea.io/collection/sandbox?search[sortAscending]=true&search[sortBy]=PRICE&search[stringTraits][0][name]=Type&search[stringTraits][0][values][0]=Land&search[toggles][0]=BUY_NOW";
const offers = await OpenseaScraper.offersByUrl(url, resultSize);
// scrape all slugs, names and ranks from the top collections from the rankings page sorted by all time volume:
// => https://opensea.io/rankings?sortBy=total_volume
const pagesToScrape = 5; // 100 results per page. 5 pages = 200 results...
const ranking = await OpenseaScraper.ranking(pagesToScrape);
If you want to debug, you can pass "debug"
as last argument and puppeteer will not run in headless mode, so the browser will be launched and you can watch the scraper run. Debugging mode is enabled for the following functions:
// Example how to use debug mode
await OpenseaScraper.offers("treeverse", 20, "debug");
npm run demo
⚠ Important Note: floor prices fetched with this method are not accurate (not in real time).
const axios = require("axios");
async function getFloorPrice(slug) {
try {
const url = `https://api.opensea.io/collection/${slug}`;
const response = await axios.get(url);
return response.data.collection.stats.floor_price;
} catch (err) {
console.log(err);
return undefined;
}
}
const result = await getFloorPrice("lostpoets");
const result = await getFloorPrice("treeverse");
const result = await getFloorPrice("cool-cats-nft");
Open PR or issue if you would like to have more features added.
ℹ if you want a solution to scrape floor prices without using puppeteer, take a look at this python solution: https://gist.github.com/dcts/a1b689b88e61fe350a446a5799209c9b
FAQs
Scraping floor prices from opensea.
The npm package opensea-scraper receives a total of 7 weekly downloads. As such, opensea-scraper popularity was classified as not popular.
We found that opensea-scraper demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
A supply chain attack has been detected in versions 1.95.6 and 1.95.7 of the popular @solana/web3.js library.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.