JLR US — Discovery Explore Summary
- OEM / market: jlr / us (Land Rover; Jaguar shares the same locator + SCS host)
- Explored / verified: 2026-06-12 (live probes via curl_cffi chrome impersonation + chrome-devtools network capture)
Entities and endpoints
| Entity | Endpoint | Method | Auth / protocol | Pagination | Enumerator |
|---|---|---|---|---|---|
| dealers | retailerlocator.jaguarlandrover.com/dealers | GET | Public; Origin/Referer = Land Rover US | none (single response) | multi-zip sweep deduped by ciCode (181 unique US dealers) |
| models | rules.config.landrover.com/rc/lr/en_us/{nameplate}_{my}/{ver}/{bodystyle}/.jsonp?view=summary | GET | Public JSONP (rcjson(...)) | none | base nameplate URL 302->version; version no-view request lists all bodystyles |
| features | same SCS response as models | GET | Public JSONP | none | same as models |
| inventory | production-api-oregon.search-api.netdirector.auto/api/vehicle-search | POST | Static authorization header + uuid param; no WAF | currentPage/pageSize (up to 1000), getCount for total | single national endpoint; condition="new" or condition="used"; identifiers.dealerId = ciCode |
Key findings
- National inventory API discovered.
inventory.landroverusa.comis backed by the NetDirector GraphQL API (production-api-oregon.search-api.netdirector.auto). Single paginated endpoint returns all US Land Rover new + used inventory (~33k vehicles) with dealerciCodedirectly in the response. Replaces the per-dealer Cars Commerce scraping approach. - No manufacturer filter. ~40% of Land Rover vehicles have
nullin themanufacturerfield — filtering bymanufacturer: "Land Rover"drops them silently. Useconditiononly. - Equipment/features included. The
equipment[]field returns all vehicle options withcategory,fitted, andlabelin both list and single-vehicle queries. - SCS model enumerator is self-describing. No hardcoded version segments needed — the base nameplate URL 302-redirects to the current version, and the version-level no-view request enumerates all body styles. All 7 nameplates (l663, l460, l461, l550, l551, l462, l560) resolve live.
Candidate pagination params
- inventory:
currentPage(1-based),pageSize(up to 1000). UsegetCountquery to determine page count.
Fan-out enumerators
- dealer: retailer-locator multi-zip sweep (20 metros, radius 500mi), dedupe by
ciCode. Also available directly fromidentifiers.dealerIdin inventory response. - model/nameplate: known nameplate set -> base URL 302 -> version -> no-view bodystyle list -> per-bodystyle summary.
Fixtures (all real live captures)
projects/ai_jlr/tests/data/jlr_retailerlocator_sample.json— dealers (R0627 Land Rover Manhattan + neighbors)projects/ai_jlr/tests/data/jlr_retailerlocator_live_sample.json— dealers (national sweep, 3 real)projects/ai_jlr/tests/data/jlr_scs_sample.json— models + features (LIVE l663_k26, Generated 2026-05-26)projects/ai_jlr/tests/data/jlr_netdirector_sample.json— inventory (3 new vehicles, real VINs, from NetDirector national API)
Cross-source identity keys
- inventory->dealers:
identifiers.dealerId=ciCodedirectly in the response. - inventory->models: no shared code — NetDirector
modelCode(HQ550) != SCS5000Code/derivative. Fuzzy(model_name, trim, model_year)only. Genuine limitation -> OVERRIDE. - features->models: shared SCS response, FK =
programme_code(L663).