Skip to content

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

Live

Two-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

Live

Extracts 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

Live

Queries 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

Live

Richest 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

Live

Searches 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

Live

Extracts 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

Live

Parses 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

Live

Direct 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.

1

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.

2

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").

3

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.

4

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).

5

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.

6

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.