Advanced cryptocurrency security data collection platform powered by CertikSkynet
CryptoLens is a comprehensive cryptocurrency security intelligence platform that automatically scrapes, analyzes, and stores security metrics from CertikSkynet for the top 1000 cryptocurrencies. Built with enterprise-grade reliability and automated scheduling.
In the rapidly evolving crypto landscape, security intelligence is crucial. CryptoLens bridges the gap between raw security data and actionable insights by providing:
- ๐ Real-time Security Monitoring for top 1000 cryptocurrencies
- ๐ Automated Data Collection with 85-90% success rate
- ๐ก๏ธ Enterprise-grade Reliability with advanced error handling
- โก Optimized Performance processing 1000+ coins in 24-27 hours
- ๐ก๏ธ Security Scoring - Comprehensive security metrics and ratings
- ๐ Community Analytics - Twitter engagement and sentiment analysis
- ๐ฐ Financial Data - Market cap, volume, and price tracking
- ๐ Automated Scheduling - Smart cron-based updates every 48 hours
- ๐ฏ Intelligent Targeting - Only scrapes expired data to optimize resources
- ๐ Overlap Protection - Prevents concurrent scraping conflicts
- ๐ Scalable Architecture - Handles 1000+ coins efficiently
- ๐ ๏ธ Error Recovery - Advanced retry mechanisms and fault tolerance
- Node.js 18+
- pnpm package manager
- Supabase account and database
- 4GB+ RAM (for browser automation)
git clone https://github.com/yourusername/cryptolens-certik-scraper.git
cd scrape_certik
pnpm install# Copy environment template
cp .env.example .env
# Add your credentials
SUPABASE_URL=your_supabase_url
SUPABASE_ANON_KEY=your_supabase_anon_key# Upload top 1000 coins from CoinGecko
pnpm run upload-coins# One-time manual scrape
pnpm run scrape-certik
# Or start automated scheduler
pnpm run start-cron| Command | Description | Use Case |
|---|---|---|
pnpm run upload-coins |
๐ฅ Fetch & update top 1000 coins from CoinGecko | Initial setup, monthly updates |
pnpm run scrape-certik |
๐ Manual scraping session | Testing, immediate data needs |
pnpm run start-cron |
โฐ Start automated scheduler | Production deployment |
CoinGecko API โ Supabase DB โ CertikSkynet Scraper โ Enriched Database
โ โ โ โ
Top 1000 Coin List Security Data Complete Dataset
- ๐ท๏ธ Scraper Engine (
Scraper.js) - Puppeteer-based web scraping - ๐ Database Layer (
certikScraperSupabase.js) - Supabase integration - โฐ Scheduler (
cronScraper.js) - Automated task management - ๐ช Coin Management (
uploadCoinsToSupabase.js) - CoinGecko sync
Table: certik_coins
โโโ coin_gecko_id (TEXT, UNIQUE) - CoinGecko identifier
โโโ symbol (TEXT) - Cryptocurrency symbol
โโโ name (TEXT) - Full coin name
โโโ market_cap_rank (INTEGER) - Market ranking
โโโ certik_data (JSONB) - Complete security metrics
โโโ certik_last_updated (TIMESTAMPTZ) - Last scrape time
โโโ certik_next_update (TIMESTAMPTZ) - Next scheduled update
โโโ certik_scrape_attempts (INTEGER) - Retry counter
โโโ certik_last_error (TEXT) - Error loggingconst scraper = new CertikScraperSupabase({
batchSize: 3, // Parallel scraping limit
maxRetries: 3, // Retry attempts per coin
updateInterval: 48, // Hours between updates
});// Check every 12 hours for expired coins
cron.schedule("0 */12 * * *", scraperFunction);| Metric | Value | Notes |
|---|---|---|
| Scraping Speed | ~80-90 seconds/coin | Including retries & waits |
| Success Rate | 85-90% | Varies by coin availability |
| Memory Usage | ~500MB-1GB | Per batch of 3 coins |
| Full Cycle Time | ~24-27 hours | For 1000 coins |
| Data Freshness | 48 hours | Configurable interval |
# Install PM2 globally
npm install -g pm2
# Start scheduler
pm2 start cronScraper.js --name "certik-cron"
# Enable auto-restart on boot
pm2 startup
pm2 save
# Monitor
pm2 status
pm2 logs certik-cronFROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install -g pnpm && pnpm install
COPY . .
CMD ["pnpm", "run", "start-cron"]# Real-time monitoring
pm2 logs certik-cron --lines 100
# Check scraping status
pm2 monit| Issue | Cause | Solution |
|---|---|---|
| Timeout Errors | Slow page loading | Increase timeout values |
| Rate Limiting | Too many requests | Reduce batch size |
| Memory Leaks | Long-running sessions | Restart PM2 process |
| Stale Data | Missing updates | Check cron schedule |
{
"project": "Bitcoin",
"securityScores": {
"averageScore": "97.53",
"additionalMetrics": [
{ "label": "Security Rank", "value": "1" },
{ "label": "Community Trust", "value": "High" }
]
},
"communityEngagement": [
{ "label": "Twitter Followers (24h)", "value": "1.2M" },
{ "label": "Twitter Activity Indicator", "value": "High" }
],
"financialData": {
"metrics": [
{ "label": "Market Cap", "value": "$1.2T" },
{ "label": "Volume (24h)", "value": "$15.3B" }
],
"dailyInflows": [{ "label": "Net Inflow", "value": "+$127M" }]
}
}- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow ESLint configuration
- Add tests for new features
- Update documentation
- Use conventional commit messages
This project is licensed under the ISC License - see the LICENSE file for details.
- CertikSkynet - Security data provider
- CoinGecko - Cryptocurrency market data
- Supabase - Database and backend services
- Puppeteer - Web scraping framework
- Respect CertikSkynet's terms of service
- Use reasonable delays between requests
- Don't overload their servers - default settings are optimized
- For commercial use, consider reaching out to Certik directly
- Keep your .env file secure and never commit it
- Use strong Supabase credentials
- Monitor your scraping logs for unusual activity
- Regular database backups are recommended
- ๐ Bug Reports - Open an Issue
- ๐ก Feature Requests - Discussions
- ๐ง Contact - Your Email
- ๐ฌ Community - Discord Server
โญ Star this repo if it helped you! โญ
Made with โค๏ธ for the crypto community