QPAScrape
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data β all from the browser, and deployed in milliseconds.
Viewing readonly version of main branch: v39View latest version
A simple, focused JSON API that scrapes every item from every auction across all pages on quarterpriceauction.com.
βββ backend/
β βββ index.ts # Main HTTP endpoint
β βββ scrapers/
β βββ mainScraper.ts # Main orchestration logic
β βββ auctionDiscovery.ts # Finds all auction URLs
β βββ auctionScraper.ts # Scrapes individual auctions
β βββ paginationDetector.ts # Detects page count per auction
β βββ itemExtractor.ts # Extracts item data from HTML/REDUX
βββ shared/
β βββ types.ts # TypeScript interfaces
βββ index.ts # Entry point
GET /- Returns ALL items from ALL auctions (comprehensive scraping)
GET /health- Health check endpointGET /info- API information and available endpoints
Returns all items from all auctions:
{ "timestamp": "2025-08-16T18:25:00.000Z", "totalItems": 450, "totalAuctions": 6, "items": [ { "title": "Google Pixel 9a with Gemini - Unlocked Android Smartphone...", "auctionTitle": "August 22 Auction - Quarter Price", "auctionUrl": "https://www.quarterpriceauction.com/auctions/30135-august-22-auction", "itemUrl": "https://www.quarterpriceauction.com/auctions/30135/lot/291744-google-pixel...", "imageUrl": "https://d3j17a2r8lnfte.cloudfront.net/qrt/2025/8/medium/DG6mWsSZbO4GZPZh7Trv5Fza.jpeg", "lotNumber": "291744", "currentBid": "$45.00", "startingBid": "$1.00", "bidCount": 12, "timeLeft": "2d 4h 15m", "category": "Electronics" } ], "metadata": { "reduxDataFound": true, "auctionUrlsFound": 6, "scrapedAuctions": 6, "totalPagesScraped": 45, "processingTimeMs": 180000 } }
- π Comprehensive Scraping: Extracts every item from every auction
- π Multi-Page Support: Automatically detects and handles pagination
- π― Detailed Item Data: Titles, lot numbers, prices, images, categories
- π§ Intelligent Parsing: Uses REDUX data extraction + HTML fallbacks
- β‘ Performance Optimized: Rate limiting and binary search pagination detection
- π‘οΈ Error Resilient: Graceful error handling with detailed metadata
- π Rich Metadata: Processing statistics and data source information
- Auction Discovery: Finds all auction URLs from main page
- Pagination Detection: Uses binary search to find max pages per auction
- Item Extraction: Tries REDUX data first, falls back to HTML parsing
- Data Enhancement: Extracts lot numbers, prices, bid counts from containers
- Rate Limiting: 300-500ms delays between requests
- Caching: 10-minute cache for comprehensive scraping
- Binary Search: Efficient pagination detection
- Memory Management: Processes auctions sequentially
title- Full item name/descriptionauctionTitle- Which auction the item belongs toauctionUrl- Link to the auction pageitemUrl- Direct link to the individual item/lotimageUrl- Product image from CDNlotNumber- Auction lot numbercurrentBid- Current highest bid amountstartingBid- Starting bid amountbidCount- Number of bids placedtimeLeft- Time remaining in auctioncategory- Item category
- Comprehensive scraping takes 3-5 minutes and returns 200-500+ items
- Results are cached to improve subsequent request performance
- Processing time and page count included in metadata for transparency
Goal: Simple JSON list of every item across all auctions with metadata.
Status: β Accomplished - Clean, organized, focused implementation.