Backend Engineering

Multi-Source Car Listing Scraper & AI Feed — A Developer's Deep Dive

Aggregates car listings from multiple marketplaces into one normalized, AI-searchable feed.

2026-09-121 min read

Aggregates and normalizes car listings from multiple marketplaces into one AI-searchable feed.

The problem

Car listings were scattered across several marketplace sites, each with its own format, making it impossible to search or compare inventory in one place.

The approach

Built a Laravel scraping pipeline that drives headless Browserless/Chromium instances against multiple marketplaces, normalizes every listing into one schema, and exposes the result through a Vue.js interface as a single AI-searchable feed.

The outcome

Single unified car-listing dataset; reduced manual data collection nearly to zero.

Stack

Laravel, Browserless Chromium, Vue.js

Live architecture demo

See it move, not just read about it.

Re-using the original animation from the linked project — same diagrams and trace you see on the case-study page.

Car Scraper & AI Feed

INGESTING: MARKETPLACE A
Browserless / Chromium ClusterHeadless Scraper
Target Site:Cars.com (Dynamic React DOM)
Payload:Raw DOM / JSON-LD / Prices
Laravel Normalization PipelineSchema Mapping Core
Standardization:Trim, Spec, Pricing Harmonized
Integrity:VIN Hash Verified ✓
Vue.js UIAI SEARCH
Query:"Reliable AWD SUV <$25k"
Feed:Live Stream ✓
DatasetCANONICAL
Format:Unified JSON
Sync:Standby
Headless Chromium handles infinite scroll on Marketplace A. Laravel normalizes specs into the Vue.js AI Feed.

Every marketplace normalizes into one canonical, VIN-deduplicated feed.

Marketplace Aggregation & AI Feed

STEP 1/6
Laravel Queue • Scheduler
dispatching parallel crawl batch across Autotrader, Kijiji, CarGurus • 0 ms
Browserless Chromium • ScraperAPI
geo-targeted proxy rotates; bypasses anti-bot challenge & executes client JS hydration • ~2.4 s
Parser Pipeline • DOM / JSON-LD
extracts disparate payloads: Canadian price formatting, imperial mileage, and raw gallery CDN links
Laravel Core • Normalization Engine
maps into canonical schema: VIN, Year, Make, Model, Trim, CAD Currency; deduplicates cross-posted inventory • ~24 ms
MySQL Core • Normalized Ledger
updates historical pricing tracks; sets active seller entity and coordinates geo-radius
AI Search Index • Vue.js UI
embeddings generated; record available for semantic filters "AWD SUV under $25k within 100km" • <50 ms index

System architecture

Open in new tab ↗

← All posts

Multi-Source Car Listing Scraper & AI Feed — A Developer's D — Parvej Mahmudun Nabi