Automotive & EV Research Agent
The automotive industry is mid-transition: a century-old ICE business reorganizing around batteries, charging networks, software, and a redrawn map of OEMs, suppliers, and policy. Decisions turn on EV penetration curves, battery chemistry economics, charging-standard wars (NACS vs. CCS), IRA domestic-content rules, and Section 301 tariff exposure. This guide builds a Python agent for automotive industry analysts, EV startup founders and investors, OEM strategy teams, automotive engineers and product managers, fleet operators weighing electrification, battery and charging infrastructure investors, and automotive policy researchers. It chains all four Superhighway endpoints — /research for the market structure, /search against authoritative automotive trade publications and the EV ecosystem, /scrape for a specific OEM investor page or spec comparison, and /news for production, recall, and charging updates — then uses an LLM to emit a structured automotive brief as JSON.
Overview
The agent takes a vehicle model, OEM, technology, or market segment — "Tesla Model Y competitive positioning 2024", "China EV market BYD CATL competitive landscape" — and produces a structured automotive and EV brief:
- Synthesizes the market structure: OEM landscape, technology maturity, competitive dynamics, and historical context
- Searches authoritative automotive trade publications — WardsAuto, Automotive News, Motor Trend, Car and Driver — for production volumes, OEM strategy, dealer dynamics, sales data, recall information, and vehicle specs and comparisons
- Searches the EV ecosystem — battery technology (BEV/PHEV/FCEV), charging infrastructure (DCFC/L2), range anxiety data, adoption curves by market, IRA EV tax credit impact, EU ELV and emission standards, autonomous driving progress, and connected-vehicle tech (OTA, V2X)
- Scrapes one relevant page: an OEM investor relations page, an EV range and spec comparison, a charging network coverage map, or a Ward's auto sales report
- Pulls recent news: production disruptions, sales data, EV launches, recall announcements, charging network expansions, OEM partnerships, battery supply chain updates, and regulatory actions
- Uses an LLM to generate a structured brief — OEM landscape, EV adoption metrics, technology, regulation and policy, supply chain, dealer dynamics, and financial signals as JSON
Who it's for: automotive industry analysts, EV startup founders and investors, OEM strategy teams, automotive engineers and product managers, fleet operators considering EV transition, battery and charging infrastructure investors, and automotive policy researchers.
How it works
Five endpoint calls feed one LLM synthesis:
/research— deep synthesis of the market: structure, OEM landscape, technology maturity, competitive dynamics, and historical context./search(trade publications) — production volumes, OEM strategy, dealer dynamics, sales data, recalls, and vehicle specs scoped to WardsAuto, Automotive News, Motor Trend, and Car and Driver./search(EV ecosystem,time=year) — battery technology, charging infrastructure, range anxiety, adoption curves, IRA tax credit impact, EU standards, autonomous driving, and connected-vehicle tech./scrape— one relevant URL, e.g. an OEM investor relations page, an EV range and spec comparison, a charging network coverage map, or a Ward's auto sales report./news(time=month) — recent production disruptions, sales data, EV launches, recalls, charging expansions, OEM partnerships, and battery supply chain updates.
Full example
pip install openai requests python-dotenv
Create a .env file with your two keys:
SUPERHIGHWAY_API_KEY=your_key_here
OPENAI_API_KEY=your_key_here
import requests, os, json
from openai import OpenAI
SUPERHIGHWAY_KEY = os.getenv("SUPERHIGHWAY_API_KEY")
BASE = "https://superhighway.walls.sh"
HEADERS = {"Authorization": f"Bearer {SUPERHIGHWAY_KEY}"}
llm = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
# 1. Deep synthesis of the automotive market structure
def research_market(query: str) -> str:
"""OEM landscape, technology maturity, competitive dynamics, history."""
r = requests.get(
f"{BASE}/research",
params={"q": f"{query} automotive electric vehicle market technology"},
headers=HEADERS,
)
data = r.json()
return data.get("summary", "")[:3000]
# 2. Authoritative automotive trade publications
def search_trade(query: str) -> list[dict]:
"""Production volumes, OEM strategy, dealer dynamics, sales, recalls, specs."""
r = requests.get(
f"{BASE}/search",
params={
"q": f"{query} site:motortrend.com OR site:caranddriver.com "
f"OR site:wardsauto.com OR site:automotive.com "
f"automotive sales production OEM",
},
headers=HEADERS,
)
return r.json().get("results", [])
# 3. EV ecosystem: battery, charging, adoption (last year)
def search_ev(query: str) -> list[dict]:
"""Battery tech, charging infrastructure, adoption curves, policy impact."""
r = requests.get(
f"{BASE}/search",
params={
"q": f"{query} electric vehicle EV battery charging infrastructure "
f"adoption market share",
"time": "year",
},
headers=HEADERS,
)
return r.json().get("results", [])
# 4. Scrape one relevant OEM IR page / spec comparison / charging map / sales report
def scrape_page(url: str) -> dict:
"""Pull an OEM investor page, EV spec comparison, charging map, or sales report."""
r = requests.post(
f"{BASE}/scrape",
json={"url": url, "mode": "markdown"},
headers=HEADERS,
)
data = r.json()
return {
"url": url,
"title": data.get("title", ""),
"content": data.get("markdown", data.get("text", ""))[:2500],
}
# 5. Recent automotive news: production, recalls, EV launches (last month)
def get_news(query: str) -> list[dict]:
"""Production, sales, EV launches, recalls, charging, battery supply chain."""
r = requests.get(
f"{BASE}/news",
params={
"q": f"{query} automotive recall production sales EV charging battery",
"time": "month",
},
headers=HEADERS,
)
return r.json().get("results", [])
def generate_brief(
query: str,
market: str,
trade: list[dict],
ev: list[dict],
scraped: dict | None,
news: list[dict],
) -> dict | None:
"""Generate a structured automotive & EV brief as JSON."""
trade_text = "\n".join(
f"- {r.get('title', '')}: {r.get('snippet', '')} ({r.get('url', '')})"
for r in trade[:6]
)
ev_text = "\n".join(
f"- {r.get('title', '')}: {r.get('snippet', '')}"
for r in ev[:6]
)
news_text = "\n".join(
f"- {n.get('title', '')}: {n.get('snippet', '')}"
for n in news[:6]
)
scraped_text = ""
if scraped and scraped.get("content"):
scraped_text = f"{scraped['title']}\n{scraped['content']}"
response = llm.chat.completions.create(
model="gpt-4o-mini",
messages=[
{
"role": "system",
"content": (
"You are an automotive and EV market analyst. Use ONLY the "
"provided sources. Do not invent sales volumes, EV penetration "
"rates, range figures, or battery specs — if a detail is not in "
"the sources, say 'not found in sources.' Be precise about "
"powertrain type, market share, and policy status, and flag when "
"figures may be estimates or sector averages."
),
},
{
"role": "user",
"content": f"""Write an automotive & EV brief for: {query}
Market Structure (synthesis):
{market}
Automotive Trade Publications (WardsAuto / Automotive News / Motor Trend / Car and Driver):
{trade_text}
EV Ecosystem (battery / charging / adoption):
{ev_text}
Scraped OEM Page / Spec Comparison / Charging Map / Sales Report:
{scraped_text}
Recent Automotive News:
{news_text}
Return JSON with ALL of these fields:
- subject: vehicle model, OEM, technology, or market segment being researched
- powertrain_type: "BEV" | "PHEV" | "FCEV" | "mild-hybrid" | "ICE" | "mixed"
- vehicle_segment: "passenger-car" | "SUV-crossover" | "pickup-truck" | "commercial-van" | "heavy-truck" | "two-wheeler" | "mixed"
- oem_landscape: key manufacturers and their market position — e.g., Tesla Model Y market share in BEV SUV; legacy OEM EV ramp vs. Tesla; BYD/SAIC for China market; Stellantis/VW/GM strategy
- ev_adoption_metrics: EV penetration rate by market (US/EU/China), YoY growth, leading EV markets by region, fleet electrification timelines, consumer adoption barriers (range, cost, charging)
- technology_landscape: battery chemistry (LFP vs. NMC), pack energy density trends, solid-state timeline, charging speeds (NACS/CCS/CHAdeMO standards), OTA software update capability, autonomous driving (SAE Levels, ADAS features), V2X / Vehicle-to-Grid
- regulatory_and_policy: EPA CAFE standards, IRA EV tax credit eligibility and domestic content requirements, EU ELV regulations and CO2 fleet targets, ZEV mandates (California/EU), China NEV credits, tariff exposure (Section 301 tariffs on Chinese EVs)
- supply_chain_and_battery: critical mineral dependencies (lithium, cobalt, nickel, manganese), cell sourcing (CATL/LG/Panasonic/Samsung), gigafactory locations and capacity, nearshoring/IRA domestic content pressure, recycling ecosystem
- dealer_and_distribution: dealer network dynamics, direct-to-consumer vs. franchise dealer model tension (Tesla vs. legacy OEMs), fleet sales vs. retail, auction/wholesale market data
- financial_signals: OEM revenue/margin trends, EV profitability inflection timeline, VC/PE in EV startups (charging, battery, software), SPAC legacy concerns, comparable EV pure-play multiples
- data_quality: "high" | "medium" | "low" — based on coverage from automotive trade publications and public market data""",
},
],
response_format={"type": "json_object"},
)
try:
return json.loads(response.choices[0].message.content)
except (json.JSONDecodeError, KeyError):
return None
def research_automotive(query: str) -> dict | None:
"""Run the full automotive & EV research pipeline."""
print(f"Researching automotive: {query}")
print("Synthesizing market structure...")
market = research_market(query)
print("Searching automotive trade publications...")
trade = search_trade(query)
print("Searching EV ecosystem...")
ev = search_ev(query)
print("Scraping a relevant OEM page / spec comparison / sales report...")
scraped = None
for result in trade + ev:
url = result.get("url")
if url:
scraped = scrape_page(url)
if scraped.get("content"):
break
print("Pulling recent automotive news...")
news = get_news(query)
print("Generating automotive brief...")
return generate_brief(query, market, trade, ev, scraped, news)
def print_brief(brief: dict):
if not brief:
print("Could not generate brief.")
return
print(f"\n{'='*60}")
print(f"Automotive & EV Brief")
print(f"{'='*60}")
print(f"\nSubject: {brief.get('subject', '')}")
print(f"Powertrain Type: {brief.get('powertrain_type', '')}")
print(f"Vehicle Segment: {brief.get('vehicle_segment', '')}")
print(f"\nOEM Landscape:\n{brief.get('oem_landscape', '')}")
print(f"\nEV Adoption Metrics:\n{brief.get('ev_adoption_metrics', '')}")
print(f"\nTechnology Landscape:\n{brief.get('technology_landscape', '')}")
print(f"\nRegulatory & Policy:\n{brief.get('regulatory_and_policy', '')}")
print(f"\nSupply Chain & Battery:\n{brief.get('supply_chain_and_battery', '')}")
print(f"\nDealer & Distribution:\n{brief.get('dealer_and_distribution', '')}")
print(f"\nFinancial Signals:\n{brief.get('financial_signals', '')}")
print(f"\nData Quality: {brief.get('data_quality', '?')}")
if __name__ == "__main__":
import sys
query = sys.argv[1] if len(sys.argv) > 1 else "Tesla Model Y competitive positioning 2024"
brief = research_automotive(query)
print_brief(brief)
Usage examples
- "Tesla Model Y competitive positioning 2024" — maps BEV SUV segment share, compares Tesla vs. Hyundai Ioniq 5 / VW ID.4 / GM Equinox EV on pricing and range, traces NACS adoption by competitors, surfaces FSD revenue contribution and Q2 delivery data, and flags IRA eligibility.
- "China EV market BYD CATL competitive landscape" — profiles BYD vs. NIO/Li Auto/Xpeng positioning, traces CATL battery supply to global OEMs, covers Chinese EV exports to the EU and emerging markets, weighs Section 301 tariff impact, and explains the NEV credit system and domestic content advantages.
- "EV charging infrastructure investment landscape" — covers the DCFC network (ChargePoint/EVgo/Blink vs. Tesla Supercharger and NACS opening), grid interconnection bottlenecks, utility V2G programs, charging-as-a-service business models, and DOE/NEVI funding allocation.
Automotive market data and EV adoption metrics evolve rapidly with regulatory changes and production ramp-ups. Verify sales volumes, EV penetration rates, and policy details directly with industry sources (WardsAuto, S&P Global Mobility, BloombergNEF, IEA EV Outlook) for the most current figures.
Getting your API key
Grab a free Superhighway key at /pricing (1,000 calls/month, no credit card). For an agent that provisions its own access, skip the key entirely with x402: it pays $0.002 per call in USDC on Base — no signup, no key management. See the x402 pay-per-call guide for the wallet setup.
See also
The supply chain research agent applies the same four-endpoint pattern to suppliers and logistics risk across the automotive value chain, and the manufacturing research agent covers production technology and automation in the adjacent factory floor.