How LotScout Works
LotScout is a platform for used car dealerships and savvy buyers that aggregates private-party vehicle listings from across the internet, enriches them with VIN decoding, AI-powered analysis, and comparable-based market valuations — so you can find underpriced inventory before your competition.
What Is LotScout?
LotScout is a B2B/B2C platform that helps used car dealerships source inventory directly from private sellers. Instead of competing at auction or relying on trade-ins, dealers can browse thousands of private-party listings from multiple classifieds sites — all in one place, updated hourly.
Every listing is automatically enriched with VIN decoding (to verify vehicle specs), AI-powered classification (to detect red flags and extract structured data from messy seller descriptions), and market valuations based on comparable listings across all platforms. The result is a scored, searchable inventory feed that surfaces the best deals first.
Individual buyers benefit too: saved search alerts notify you within minutes when a new listing matches your criteria, and market analysis tools help you understand whether a price is fair before you reach out to the seller.
Where We Source Data
LotScout monitors major classifieds platforms and local dealership websites, scanning for new listings every hour.
Craigslist
LiveTwo-phase scraper: search pages for listing URLs, then individual detail pages for full descriptions, attributes (odometer, title status, drivetrain), images, and map coordinates. Uses TLS impersonation to handle bot detection. Rate-limited to 40 requests/minute.
Method: HTML parsing + detail page fetching
Volume: 200-500 listings/region
Fields: Title, description, price, mileage, VIN, location (lat/lng), title status, seller phone, images
Facebook Marketplace
LiveExtracts listing data from server-rendered Relay JSON embedded in HTML. Uses price-range segmentation (5 buckets) since each page returns ~24 listings max. Fetches every listing's detail page for full seller descriptions, VINs, and all photos. No login required.
Method: Embedded JSON extraction + detail pages
Volume: 50-100 listings/region
Fields: Title, description, price, mileage, VIN (from text), images, seller type, location
OfferUp
LiveQueries OfferUp's public GraphQL API with two operations: feed search (GetModularFeed) and individual detail fetch (GetListingDetailByListingId). Price-range segmentation across 10 buckets maximizes coverage. Vehicle attributes come from structured vehicleAttributes fields.
Method: GraphQL API (public, no auth)
Volume: 150-300 listings/region
Fields: Title, description, price, mileage, VIN, year/make/model, transmission, drivetrain, fuel type, images
KSL Classifieds
LiveRichest data source — queries KSL's Next.js proxy API which returns fully structured vehicle data. No detail page fetching needed. 100% mileage coverage, title status (titleType field), and complete vehicle specs. Runs from residential IP due to KSL blocking cloud IPs.
Method: REST API (structured JSON)
Volume: 300-800 listings/region
Fields: All fields: VIN, mileage, year/make/model/trim, title status, transmission, drivetrain, fuel type, colors, images, posted date
eBay Motors
LiveSearches by ZIP code + radius, then fetches detail pages for item specifics (VIN, mileage, trim). Falls back to Playwright browser automation when Akamai bot detection triggers CAPTCHAs. Stops after 5 consecutive CAPTCHAs to avoid session bans.
Method: HTML parsing + Playwright CAPTCHA fallback
Volume: 100-200 listings/region
Fields: Title, description, price, mileage, VIN, year/make/model, images
AutoTrader
LiveExtracts rich structured data from Next.js server-rendered JSON on search pages — no detail page fetching needed. Includes precise coordinates, full vehicle specs, and dealer/private seller classification. Requires TLS impersonation to pass Akamai bot detection.
Method: Embedded __NEXT_DATA__ JSON extraction
Volume: 150-300 listings/region
Fields: Title, description, price, mileage, VIN, year/make/model/trim, transmission, body type, fuel type, colors, lat/lng, images
Cars.com
LiveParses the srp_results JSON blob embedded in search page HTML. All listing data is available on search pages without needing individual detail page fetches. Primarily dealer inventory with some private-party listings.
Method: Embedded search results JSON
Volume: 200-500 listings/region
Fields: Title, description, price, mileage, VIN, year/make/model/trim, transmission, fuel type, images
18+ Local Dealerships
LiveDirect inventory API access from Tucson-area dealerships including Chapman, Larry H. Miller, AutoNation, O'Rielly, and others. Three platform integrations (Dealer.com, Chapman Apps, Team Velocity) cover different dealer website vendors. Always returns complete, structured data.
Method: REST APIs (Dealer.com, Chapman Apps, Team Velocity)
Volume: 50-500 per dealer
Fields: All fields: VIN, mileage, full specs, stock number, pricing, images
Data is refreshed hourly via automated scraping infrastructure running on cloud servers (Railway) and a local Mac for sources that require residential IP addresses.
How Scraping Works
Each source requires a different collection strategy. Here is what happens behind the scenes.
API-Based Collection
KSL uses a REST API proxy, OfferUp uses a public GraphQL API, and dealer sites expose inventory REST endpoints. These provide the cleanest, most structured data with the highest field coverage — KSL returns 100% of all vehicle fields.
Embedded JSON Extraction
AutoTrader embeds __NEXT_DATA__ JSON in its pages, Cars.com embeds srp_results, and Facebook embeds Relay JSON in __bbox blocks. We extract structured listing data from these server-rendered blobs without needing to execute JavaScript.
Detail Page Fetching
Craigslist, Facebook, and eBay require visiting each listing's individual page to get the full description, VIN, images, and vehicle attributes. This is slower (3-5 seconds per listing with rate limiting) but captures data not available on search pages.
TLS Impersonation
Platforms like Craigslist, AutoTrader, and KSL use bot detection (Akamai, Cloudflare) that blocks standard HTTP clients. Our scrapers use TLS fingerprint impersonation to appear as a real Chrome browser, bypassing these protections without using a full browser engine.
Post-Normalization Pipeline
Every listing — regardless of source — passes through shared text extraction that mines VINs, mileage, title status, phone numbers, and urgency signals from unstructured description text. Make names are standardized (Chevy to Chevrolet, VW to Volkswagen) and implausible prices are filtered out.
Rate-Limited & Respectful
All scrapers include per-source token-bucket rate limiting (5-40 requests/minute depending on source), request delays between pages, and automatic backoff on errors. External APIs are capped at 1,000 requests/hour. We collect only publicly available listing data.
The Enrichment Pipeline
Every listing passes through a multi-step enrichment pipeline before it reaches your dashboard.
Automated Collection
Hourly Scraping Pipeline
Automated scrapers run every hour, collecting new and updated listings from 7 platforms. Each source uses a different collection technique — REST APIs (KSL, OfferUp), embedded JSON extraction (AutoTrader, Cars.com, Facebook), HTML parsing with detail page fetching (Craigslist, eBay), and direct dealer APIs (Dealer.com, Chapman Apps, Team Velocity). All scrapers are rate-limited and include error handling with graceful degradation.
Text Extraction & Normalization
Regex-Based Data Mining
Every listing passes through a post-normalization pipeline that extracts data from unstructured title and description text. This includes: VIN extraction (17-character pattern matching), mileage parsing (handles formats like "95k miles", "95,000 mi", "odom: 95000"), title status detection (salvage, rebuilt, clean, branded, flood), year extraction, phone number parsing, make normalization ("Chevy" to "Chevrolet", "VW" to "Volkswagen"), price sanity checks ($100-$500K range), and urgency signal detection ("must sell", "price reduced", "OBO", "below market").
VIN Decoding
NHTSA vPIC API
When a VIN is present — either from structured data or extracted from the description text — we decode it against the free NHTSA Vehicle Product Information Catalog to verify the exact year, make, model, engine, transmission, and trim. This catches misrepresented vehicles and fills in missing specs that sellers omitted from their listings.
AI Classification
Claude AI Analysis
Every listing is analyzed by Claude AI to extract structured data — year, make, model, trim, mileage — even when sellers use inconsistent formatting. The AI also detects red flags (salvage titles, flood damage, odometer rollback, potential scams), urgency signals ("must sell today"), and classifies seller type (private vs. dealer).
Market Valuation
Comparable Listing Analysis
We find comparable vehicles listed across all platforms — matching on year, make, and model within plus or minus one year and 20,000 miles — to calculate an estimated market value. Prices are mileage-adjusted at $0.05 per mile from the comp average, with a confidence score based on the number of comps and price variance.
Deal Scoring
Profit Opportunity Ranking
After enrichment, we compare each listing's asking price to the estimated market value. Listings priced well below market receive high profit scores (70+), while overpriced listings score low. This lets you instantly spot the best deals without manually researching comparables across multiple platforms.
How We Estimate Car Values
Our market valuations are built from real listing data across all platforms we monitor.
Comparable Listing Analysis
For each vehicle, we find comparable listings across all sources — matching on year, make, and model within plus or minus one model year and 20,000 miles of the subject vehicle. The estimated value is the median asking price of these comparables, adjusted for mileage differences at $0.05 per mile from the comp average.
Confidence Score
Each estimate includes a confidence score based on two factors: the number of comparable listings found (more comps means higher confidence) and the price variance among those comps (tighter clustering means higher confidence). A popular model like a Toyota Camry will have a high-confidence estimate; a rare vehicle with few comps will be flagged as low-confidence.
Coming Soon
We are working on integrating additional valuation sources to complement our comparable-based estimates: NADA wholesale and retail values, Kelley Blue Book (KBB) pricing, and Manheim Market Report (MMR) wholesale auction values. These will provide multiple valuation benchmarks for each vehicle.
Important Disclaimer
All estimated values are based on asking prices of comparable listings currently on the market — not actual sale or transaction prices. These estimates are intended as a reference tool and should not be used as the sole basis for purchase decisions. Always conduct your own due diligence, including a physical inspection and vehicle history check, before purchasing any vehicle.
Known Limitations
We believe in transparency. Here is what LotScout does well and where there are gaps.
Field coverage varies by source
Not all sources provide the same data fields. KSL has 100% mileage and title status coverage. Craigslist has ~60% mileage coverage (from detail page attributes + description parsing). Facebook and OfferUp have lower mileage coverage since it depends on sellers filling in vehicle details. VINs are rare on private-party platforms — only ~5-10% of Craigslist, Facebook, and OfferUp listings include them.
Estimated values are based on asking prices
Our market valuations are calculated from asking prices of comparable listings currently on the market — not actual sale or transaction prices. They should be used as one input in your purchasing decision, not as the sole basis. We are working on integrating NADA wholesale/retail values for more authoritative pricing.
Bot detection can affect coverage
Some platforms (eBay, AutoTrader, Craigslist) employ bot detection that can temporarily block our scrapers. When this happens, the scraper gracefully degrades — it returns whatever listings it collected before being blocked and retries on the next hourly cycle. Coverage may be lower during these periods.
Listing accuracy depends on sellers
Some listings may contain inaccurate information from the original poster — wrong year, incorrect mileage, or misleading descriptions. Our AI classification and VIN decoding catch many of these issues, but not all. Always verify vehicle details in person before purchasing.
Geographic coverage is expanding
LotScout currently focuses on the Tucson, AZ metropolitan area. We plan to expand to additional cities as the platform grows. KSL coverage extends to Utah and surrounding states (ID, NV, WY, CO, AZ).
55%+ of listings lack precise coordinates
Many platforms only provide city-level location (not lat/lng coordinates). LotScout uses city-based filtering rather than radius-based filtering to ensure these listings are not silently excluded from search results.
Privacy & Data Handling
Public Data Only
All listing data we collect is publicly available information posted by sellers on classifieds platforms. We do not access private accounts or non-public data.
Minimal Seller Data
We only store seller data that is publicly included in the listing — a first name, general location, and contact number when the seller includes it in their listing description. We do not scrape private profiles or non-public information.
Secure User Accounts
User accounts are protected by Supabase Auth with row-level security policies on all user-facing database tables. Your saved searches and preferences are private to your account.
For full details, see our Privacy Policy and Terms of Service.
Ready to find your next deal?
Browse listings right now — no account required.