Blog/Real-Time Stock & Crypto Price Tracking with ScrapeGraphAI: A Technical Walkthrough

Real-Time Stock & Crypto Price Tracking with ScrapeGraphAI: A Technical Walkthrough

Learn how to build a robust real-time price tracking system for stocks and cryptocurrencies using ScrapeGraphAI. Master automated data extraction from financial websites.

Tutorials15 min read min readMarco VinciguerraBy Marco Vinciguerra
Real-Time Stock & Crypto Price Tracking with ScrapeGraphAI: A Technical Walkthrough

Real-Time Stock & Crypto Price Tracking with ScrapeGraphAI: A Technical Walkthrough

Introduction

In today's fast-paced financial markets, having access to real-time price data can make the difference between catching a profitable trade and missing out entirely. Whether you're a day trader monitoring volatile crypto markets or a long-term investor keeping tabs on your stock portfolio, the ability to automatically scrape and track price movements is invaluable.

Traditional methods of gathering financial data often involve expensive API subscriptions, complex integrations, or manual data collection that simply can't keep pace with market movements. Enter ScrapeGraphAI – a powerful web scraping framework that leverages artificial intelligence to intelligently extract data from websites, even as their structures change.

In this technical walkthrough, we'll explore how to build a robust real-time price tracking system that monitors both stock and cryptocurrency prices using ScrapeGraphAI. You'll learn how to set up automated scrapers that can adapt to different financial websites, handle dynamic content, and deliver clean, structured data ready for analysis or trading algorithms. By the end of this guide, you'll have a flexible foundation for monitoring any financial instrument across multiple platforms – all without breaking the bank on expensive data feeds.

For more insights into AI-powered web scraping, check out our comprehensive guide on the future of web scraping and learn how AI agents are revolutionizing data collection.

What is ScrapeGraphAI

ScrapeGraphAI is an API for extracting data from the web with the use of AI. So it will help you with the data part which is focussed on scraping and aggregating information from various sources to gain insights from. This service will fit in your data pipeline perfectly because of the easy to use apis that we provide which are fast and accurate. And it's all AI powered.

If you're new to web scraping, we recommend starting with our Web Scraping 101 guide to understand the fundamentals before diving into this advanced tutorial.

Getting Started with ScrapeGraphAI

Installation and Setup

First, install the ScrapeGraphAI Python client:

bash
pip install scrapegraph-py

Basic Usage Example

Here's how to get started with the ScrapeGraphAI client:

python
from scrapegraph_py import Client
from scrapegraph_py.logger import sgai_logger

# Set up logging
sgai_logger.set_logging(level="INFO")

# Initialize the client with your API key
sgai_client = Client(api_key="YOUR_API_KEY_HERE")

# Define URLs to scrape
urls = [
    "https://example.com"
]

# SmartScraper request example
response = sgai_client.smartscraper(
    website_url="https://example.com",
    user_prompt="Find the CEO of company X and their contact details"
)

print(response)

Important Security Note: Never hardcode your API key in your source code. Instead, use environment variables or configuration files that are not committed to version control.

For more advanced usage patterns, explore our ScrapeGraphAI tutorial and learn about structured output with Pydantic.

Extracting Cryptocurrency Data with ScrapeGraphAI

Now let's dive into the practical implementation of cryptocurrency price tracking. ScrapeGraphAI's AI-powered approach makes it incredibly simple to extract structured data from crypto websites, even when their layouts change.

This approach is similar to what we use for e-commerce price monitoring and Amazon price tracking, but adapted for cryptocurrency exchanges.

Real-Time Crypto Price Extraction

Here's a practical example of how to extract cryptocurrency prices from popular exchanges:

python
import os
from scrapegraph_py import Client
from scrapegraph_py.logger import sgai_logger
import json
from datetime import datetime

# Set up logging
sgai_logger.set_logging(level="INFO")

# Initialize the client (use environment variable for security)
sgai_client = Client(api_key=os.getenv("SCRAPEGRAPHAI_API_KEY"))

def extract_crypto_prices(exchange_url, cryptocurrencies):
    """
    Extract cryptocurrency prices from an exchange website
    
    Args:
        exchange_url (str): URL of the cryptocurrency exchange
        cryptocurrencies (list): List of crypto symbols to track
    
    Returns:
        dict: Structured price data
    """
    
    # Create a detailed prompt for crypto data extraction
    crypto_list = ", ".join(cryptocurrencies)
    user_prompt = f"""
    Extract the current prices for the following cryptocurrencies: {crypto_list}.
    For each cryptocurrency, provide:
    - Symbol (e.g., BTC, ETH, ADA)
    - Current price in USD
    - 24h price change (percentage)
    - 24h volume
    - Market cap (if available)
    - Last update timestamp
    
    Return the data in JSON format with clear structure.
    """
    
    try:
        response = sgai_client.smartscraper(
            website_url=exchange_url,
            user_prompt=user_prompt
        )
        
        return {
            "timestamp": datetime.now().isoformat(),
            "source": exchange_url,
            "data": response,
            "status": "success"
        }
        
    except Exception as e:
        return {
            "timestamp": datetime.now().isoformat(),
            "source": exchange_url,
            "error": str(e),
            "status": "failed"
        }

# Example usage for multiple exchanges
crypto_exchanges = [
    "https://coinmarketcap.com/",
    "https://www.coingecko.com/",
    "https://finance.yahoo.com/crypto/"
]

# Cryptocurrencies to track
target_cryptos = ["BTC", "ETH", "ADA", "SOL", "MATIC", "LINK"]

# Extract data from multiple sources
all_crypto_data = []

for exchange in crypto_exchanges:
    print(f"Scraping crypto data from: {exchange}")
    crypto_data = extract_crypto_prices(exchange, target_cryptos)
    all_crypto_data.append(crypto_data)
    
    # Print results
    if crypto_data["status"] == "success":
        print(f"✅ Successfully extracted data from {exchange}")
        print(json.dumps(crypto_data["data"], indent=2))
    else:
        print(f"❌ Failed to extract data from {exchange}: {crypto_data['error']}")
    
    print("-" * 50)

# Save all data to file
with open(f"crypto_prices_{datetime.now().strftime('%Y%m%d_%H%M%S')}.json", "w") as f:
    json.dump(all_crypto_data, f, indent=2)

print("Crypto price extraction completed!")

Advanced Crypto Data Extraction

For more sophisticated tracking, you can extract additional market data:

python
def extract_detailed_crypto_analysis(coin_url):
    """
    Extract detailed analysis for a specific cryptocurrency
    
    Args:
        coin_url (str): URL of specific cryptocurrency page
    
    Returns:
        dict: Detailed crypto analysis data
    """
    
    analysis_prompt = """
    Extract comprehensive data about this cryptocurrency including:
    
    PRICE DATA:
    - Current price in USD
    - All-time high and low
    - 24h, 7d, 30d price changes
    - Trading volume (24h)
    
    MARKET DATA:
    - Market capitalization
    - Fully diluted valuation
    - Circulating supply
    - Total supply
    - Max supply
    
    TECHNICAL INDICATORS:
    - Support and resistance levels (if mentioned)
    - Moving averages (if available)
    - RSI or other indicators (if shown)
    
    SENTIMENT DATA:
    - Social media mentions
    - News sentiment
    - Community activity
    
    Return all data in structured JSON format.
    """
    
    try:
        response = sgai_client.smartscraper(
            website_url=coin_url,
            user_prompt=analysis_prompt
        )
        
        return {
            "coin_url": coin_url,
            "analysis": response,
            "extracted_at": datetime.now().isoformat(),
            "status": "success"
        }
        
    except Exception as e:
        return {
            "coin_url": coin_url,
            "error": str(e),
            "extracted_at": datetime.now().isoformat(),
            "status": "failed"
        }

# Example: Detailed analysis for Bitcoin
btc_analysis = extract_detailed_crypto_analysis("https://coinmarketcap.com/currencies/bitcoin/")
print("Bitcoin Detailed Analysis:")
print(json.dumps(btc_analysis, indent=2))

Setting Up Automated Crypto Monitoring

Create a monitoring system that runs at regular intervals:

python
import time
import schedule
from datetime import datetime

class CryptoMonitor:
    def __init__(self, api_key, exchanges, cryptocurrencies):
        self.client = Client(api_key=api_key)
        self.exchanges = exchanges
        self.cryptocurrencies = cryptocurrencies
        self.price_history = []
    
    def monitor_prices(self):
        """Monitor crypto prices across all configured exchanges"""
        print(f"🔍 Starting crypto price monitoring at {datetime.now()}")
        
        for exchange in self.exchanges:
            try:
                data = extract_crypto_prices(exchange, self.cryptocurrencies)
                self.price_history.append(data)
                
                # Alert logic (implement your own notification system)
                self.check_price_alerts(data)
                
            except Exception as e:
                print(f"❌ Error monitoring {exchange}: {e}")
        
        print(f"✅ Monitoring cycle completed at {datetime.now()}")
    
    def check_price_alerts(self, data):
        """Check for significant price movements and trigger alerts"""
        # Implement your alert logic here
        # Example: notify if any crypto moves more than 5% in 24h
        pass
    
    def start_monitoring(self, interval_minutes=15):
        """Start automated monitoring"""
        schedule.every(interval_minutes).minutes.do(self.monitor_prices)
        
        print(f"🚀 Crypto monitoring started! Checking every {interval_minutes} minutes")
        print("Press Ctrl+C to stop monitoring")
        
        try:
            while True:
                schedule.run_pending()
                time.sleep(1)
        except KeyboardInterrupt:
            print("
👋 Monitoring stopped by user")

# Initialize and start monitoring
if __name__ == "__main__":
    monitor = CryptoMonitor(
        api_key=os.getenv("SCRAPEGRAPHAI_API_KEY"),
        exchanges=crypto_exchanges,
        cryptocurrencies=target_cryptos
    )
    
    # Start monitoring every 15 minutes
    monitor.start_monitoring(interval_minutes=15)

Stock Price Tracking with ScrapeGraphAI

While cryptocurrency markets are highly volatile, stock markets follow more predictable patterns. Let's explore how to track stock prices using similar techniques.

Real-Time Stock Price Extraction

Ready to Scale Your Data Collection?

Join thousands of businesses using ScrapeGrapAI to automate their web scraping needs. Start your journey today with our powerful API.

python
def extract_stock_prices(stock_symbols, market_url):
    """
    Extract stock prices from financial websites
    
    Args:
        stock_symbols (list): List of stock symbols to track
        market_url (str): URL of the financial website
    
    Returns:
        dict: Structured stock price data
    """
    
    symbols_list = ", ".join(stock_symbols)
    stock_prompt = f"""
    Extract current stock prices and data for the following symbols: {symbols_list}.
    For each stock, provide:
    - Stock symbol
    - Current price
    - Daily change (amount and percentage)
    - Volume
    - Market cap
    - P/E ratio (if available)
    - 52-week high/low
    - Dividend yield (if applicable)
    
    Return the data in structured JSON format.
    """
    
    try:
        response = sgai_client.smartscraper(
            website_url=market_url,
            user_prompt=stock_prompt
        )
        
        return {
            "timestamp": datetime.now().isoformat(),
            "source": market_url,
            "data": response,
            "status": "success"
        }
        
    except Exception as e:
        return {
            "timestamp": datetime.now().isoformat(),
            "source": market_url,
            "error": str(e),
            "status": "failed"
        }

# Example stock tracking
stock_symbols = ["AAPL", "GOOGL", "MSFT", "TSLA", "AMZN"]
financial_sites = [
    "https://finance.yahoo.com/",
    "https://www.marketwatch.com/",
    "https://www.investing.com/"
]

for site in financial_sites:
    print(f"Scraping stock data from: {site}")
    stock_data = extract_stock_prices(stock_symbols, site)
    
    if stock_data["status"] == "success":
        print(f"✅ Successfully extracted stock data from {site}")
        print(json.dumps(stock_data["data"], indent=2))
    else:
        print(f"❌ Failed to extract stock data from {site}: {stock_data['error']}")
    
    print("-" * 50)

Advanced Stock Analysis

For more comprehensive stock analysis, you can extract additional financial metrics:

python
def extract_stock_fundamentals(stock_url):
    """
    Extract fundamental analysis data for a specific stock
    
    Args:
        stock_url (str): URL of the stock's detailed page
    
    Returns:
        dict: Fundamental analysis data
    """
    
    fundamentals_prompt = """
    Extract comprehensive fundamental analysis data including:
    
    FINANCIAL METRICS:
    - Revenue and growth rates
    - Profit margins
    - Debt-to-equity ratio
    - Return on equity (ROE)
    - Return on assets (ROA)
    
    VALUATION METRICS:
    - Price-to-earnings (P/E) ratio
    - Price-to-book (P/B) ratio
    - Enterprise value to EBITDA
    - Price-to-sales ratio
    
    TECHNICAL INDICATORS:
    - Moving averages (50-day, 200-day)
    - Relative strength index (RSI)
    - MACD indicators
    - Support and resistance levels
    
    ANALYST RATINGS:
    - Buy/sell/hold recommendations
    - Price targets
    - Number of analysts covering
    
    Return all data in structured JSON format.
    """
    
    try:
        response = sgai_client.smartscraper(
            website_url=stock_url,
            user_prompt=fundamentals_prompt
        )
        
        return {
            "stock_url": stock_url,
            "fundamentals": response,
            "extracted_at": datetime.now().isoformat(),
            "status": "success"
        }
        
    except Exception as e:
        return {
            "stock_url": stock_url,
            "error": str(e),
            "extracted_at": datetime.now().isoformat(),
            "status": "failed"
        }

Building a Multi-Asset Portfolio Tracker

Now let's combine both crypto and stock tracking into a comprehensive portfolio monitoring system:

python
class PortfolioTracker:
    def __init__(self, api_key):
        self.client = Client(api_key=api_key)
        self.portfolio_data = {
            "crypto": [],
            "stocks": [],
            "last_updated": None
        }
    
    def track_crypto_portfolio(self, crypto_symbols, exchanges):
        """Track cryptocurrency portfolio across multiple exchanges"""
        for exchange in exchanges:
            crypto_data = extract_crypto_prices(exchange, crypto_symbols)
            if crypto_data["status"] == "success":
                self.portfolio_data["crypto"].append(crypto_data)
    
    def track_stock_portfolio(self, stock_symbols, financial_sites):
        """Track stock portfolio across multiple financial sites"""
        for site in financial_sites:
            stock_data = extract_stock_prices(stock_symbols, site)
            if stock_data["status"] == "success":
                self.portfolio_data["stocks"].append(stock_data)
    
    def generate_portfolio_report(self):
        """Generate a comprehensive portfolio report"""
        self.portfolio_data["last_updated"] = datetime.now().isoformat()
        
        report = {
            "portfolio_summary": self.portfolio_data,
            "total_assets": len(self.portfolio_data["crypto"]) + len(self.portfolio_data["stocks"]),
            "data_sources": len(set([d["source"] for d in self.portfolio_data["crypto"] + self.portfolio_data["stocks"]]))
        }
        
        return report
    
    def save_portfolio_data(self, filename=None):
        """Save portfolio data to file"""
        if filename is None:
            filename = f"portfolio_data_{datetime.now().strftime('%Y%m%d_%H%M%S')}.json"
        
        with open(filename, "w") as f:
            json.dump(self.portfolio_data, f, indent=2)
        
        print(f"Portfolio data saved to {filename}")

# Usage example
portfolio = PortfolioTracker(api_key=os.getenv("SCRAPEGRAPHAI_API_KEY"))

# Track crypto portfolio
crypto_symbols = ["BTC", "ETH", "ADA"]
crypto_exchanges = ["https://coinmarketcap.com/", "https://www.coingecko.com/"]
portfolio.track_crypto_portfolio(crypto_symbols, crypto_exchanges)

# Track stock portfolio
stock_symbols = ["AAPL", "GOOGL", "MSFT"]
financial_sites = ["https://finance.yahoo.com/"]
portfolio.track_stock_portfolio(stock_symbols, financial_sites)

# Generate and save report
report = portfolio.generate_portfolio_report()
portfolio.save_portfolio_data()

print("Portfolio tracking completed!")
print(json.dumps(report, indent=2))

Integration with Trading Platforms

For advanced users, you can integrate this data with trading platforms and algorithms:

python
def integrate_with_trading_platform(price_data, platform_api_key):
    """
    Integrate scraped price data with trading platforms
    
    Args:
        price_data (dict): Scraped price data
        platform_api_key (str): Trading platform API key
    
    Returns:
        dict: Integration status
    """
    
    # Example integration with a hypothetical trading platform
    # This would need to be adapted for your specific platform
    
    integration_prompt = f"""
    Based on the following price data, generate trading signals:
    
    {json.dumps(price_data, indent=2)}
    
    Analyze the data and provide:
    - Buy/sell recommendations
    - Risk assessment
    - Position sizing suggestions
    - Stop-loss levels
    
    Return analysis in JSON format.
    """
    
    try:
        analysis = sgai_client.smartscraper(
            website_url="https://your-trading-platform.com/analysis",
            user_prompt=integration_prompt
        )
        
        return {
            "integration_status": "success",
            "trading_signals": analysis,
            "timestamp": datetime.now().isoformat()
        }
        
    except Exception as e:
        return {
            "integration_status": "failed",
            "error": str(e),
            "timestamp": datetime.now().isoformat()
        }

Best Practices for Financial Data Scraping

1. Rate Limiting and Respectful Scraping

python
import time
import random

def respectful_scraping_with_delays():
    """Implement respectful scraping with random delays"""
    
    for exchange in crypto_exchanges:
        # Add random delay between requests (1-3 seconds)
        delay = random.uniform(1, 3)
        time.sleep(delay)
        
        # Your scraping logic here
        crypto_data = extract_crypto_prices(exchange, target_cryptos)
        
        # Add another delay after successful request
        time.sleep(random.uniform(0.5, 1.5))

2. Error Handling and Retry Logic

python
import time
from functools import wraps

def retry_on_failure(max_retries=3, delay=1):
    """Decorator for retry logic on failed requests"""
    
    def decorator(func):
        @wraps(func)
        def wrapper(*args, **kwargs):
            for attempt in range(max_retries):
                try:
                    return func(*args, **kwargs)
                except Exception as e:
                    if attempt == max_retries - 1:
                        raise e
                    print(f"Attempt {attempt + 1} failed, retrying in {delay} seconds...")
                    time.sleep(delay)
            return None
        return wrapper
    return decorator

@retry_on_failure(max_retries=3, delay=2)
def robust_crypto_extraction(exchange_url, cryptocurrencies):
    """Robust crypto extraction with retry logic"""
    return extract_crypto_prices(exchange_url, cryptocurrencies)

3. Data Validation and Quality Checks

python
def validate_price_data(data):
    """Validate scraped price data for quality"""
    
    validation_checks = {
        "has_required_fields": False,
        "price_is_numeric": False,
        "price_is_positive": False,
        "timestamp_is_valid": False
    }
    
    try:
        # Check if data has required fields
        if "data" in data and isinstance(data["data"], dict):
            validation_checks["has_required_fields"] = True
        
        # Validate price data
        if "price" in data["data"]:
            price = float(data["data"]["price"])
            validation_checks["price_is_numeric"] = True
            validation_checks["price_is_positive"] = price > 0
        
        # Validate timestamp
        if "timestamp" in data:
            datetime.fromisoformat(data["timestamp"])
            validation_checks["timestamp_is_valid"] = True
        
        return validation_checks
        
    except Exception as e:
        print(f"Validation error: {e}")
        return validation_checks

Key Benefits of Using ScrapeGraphAI for Financial Data

  1. AI-Powered Adaptability: The scraper automatically adapts to website changes without requiring code updates
  2. Multi-Source Aggregation: Easily compare prices across different exchanges and financial sites
  3. Structured Data Output: Get clean, JSON-formatted data ready for analysis or trading algorithms
  4. No API Rate Limits: Unlike traditional APIs, you're not limited by exchange-specific rate limits
  5. Cost-Effective: Much cheaper than premium financial data APIs
  6. Flexible Prompting: Extract exactly the data you need using natural language prompts
  7. Real-Time Updates: Monitor price movements as they happen
  8. Cross-Platform Compatibility: Works with any financial website or exchange

Conclusion

In this comprehensive guide, we've explored how to build a robust real-time price tracking system for both stocks and cryptocurrencies using ScrapeGraphAI. The AI-powered approach makes it possible to extract structured financial data from any website, adapt to changes automatically, and build sophisticated monitoring systems.

Whether you're a day trader looking for real-time crypto prices, a long-term investor tracking your stock portfolio, or a financial analyst gathering market data, ScrapeGraphAI provides the tools you need to succeed in today's fast-paced financial markets.

For more advanced techniques, explore our guides on building AI agents for web scraping, automated data scraping, and large-scale data collection.

FAQ

How to obtain an API key for ScrapeGraphAI? To obtain an API key: Visit the https://dashboard.scrapegraphai.com/. Create an account or log in if you already have one. Generate a new API key from your user profile.

What services does ScrapeGraphAI offer? ScrapeGraphAI offers 3 services: smartscraper, searchscraper and markdownify. Checkout https://docs.scrapegraphai.com/introduction

Does ScrapeGraphAI have integration with No code platforms? Yes ScrapeGraphAI has integrations with many no code platforms like n8n, zapier, bubble etc.

Is it legal to scrape financial data? Yes, scraping publicly available financial data is generally legal. However, always check the terms of service of the websites you're scraping and implement respectful scraping practices. For more details, see our guide on web scraping legality.

How accurate is the scraped financial data? The accuracy depends on the source websites and how frequently they update their data. ScrapeGraphAI extracts data exactly as it appears on the source websites. For real-time trading, consider using multiple sources and implementing data validation.

Can I use this for automated trading? While this guide shows how to extract price data, automated trading requires additional considerations including risk management, regulatory compliance, and robust error handling. Always test thoroughly in a paper trading environment first.

How often should I update the price data? For crypto markets, consider updating every 1-5 minutes due to high volatility. For stocks, 15-minute intervals are usually sufficient during market hours. Adjust based on your trading strategy and the assets you're tracking.

What if a website changes its structure? One of the key benefits of ScrapeGraphAI is its AI-powered adaptability. The system can often handle minor website changes automatically. For major changes, you may need to adjust your prompts or target different data sources.

Can I track multiple exchanges simultaneously? Yes! The examples in this guide show how to track multiple exchanges and financial sites simultaneously. This allows you to compare prices across different platforms and get more comprehensive market data.

How do I handle rate limiting and avoid being blocked? Implement respectful scraping practices by adding delays between requests, using random intervals, and respecting robots.txt files. The best practices section in this guide provides specific code examples for this.

What's the difference between this approach and traditional financial APIs? Traditional APIs often have rate limits, require expensive subscriptions, and may not provide access to all the data you need. ScrapeGraphAI gives you direct access to any financial website with flexible, AI-powered data extraction at a fraction of the cost.

Can I integrate this with my existing trading platform? Yes, the integration section shows how to connect scraped data with trading platforms. You'll need to adapt the code for your specific platform's API and implement proper risk management.

How do I ensure data quality and accuracy? Implement the validation checks shown in the best practices section, use multiple data sources for comparison, and set up alerts for unusual price movements or data inconsistencies.

What programming languages are supported? ScrapeGraphAI provides Python and JavaScript SDKs. This guide focuses on Python, but you can achieve similar results with our JavaScript SDK.

Can I use this for backtesting trading strategies? Yes! You can collect historical price data over time and use it for backtesting. Store the scraped data in a database and build analysis tools to test your trading strategies against historical market conditions.

How do I handle market hours and after-hours trading? Implement time-based logic to adjust scraping frequency based on market hours. For stocks, reduce frequency during after-hours trading. For crypto, maintain consistent monitoring as markets are 24/7.

What are the costs involved? ScrapeGraphAI pricing is based on API calls, making it much more cost-effective than traditional financial data APIs. Check our pricing page for current rates and compare with our free vs paid guide.