Semiconductor & Chip Industry Research Agent

Superhighway guides

The semiconductor industry is where a fab-capacity bet, a process-node decision, or an export-control ruling can reshape entire markets — and the signal turns on leading-edge node trajectories, equipment dependencies, and the geopolitics of where chips get made. This guide builds a Python agent for chip investors, fabless companies, EDA vendors, semiconductor equipment analysts, semiconductor competitive intelligence teams, and geopolitical researchers. It chains all four Superhighway endpoints — /research for the semiconductor landscape, /search against authoritative trade publications and the geopolitics/policy layer, /scrape for a specific analyst report or technology roadmap, and /news for fab announcements and export-control actions — then uses an LLM to emit a structured semiconductor brief as JSON.

Overview

The agent takes a chip, fab technology, market segment, or company — "TSMC 3nm leading-edge logic", "HBM4 memory supply chain", "RISC-V CPU ecosystem" — and produces a structured semiconductor brief:

Who it's for: chip investors, fabless companies, EDA vendors, semiconductor analysts, and geopolitical researchers.

How it works

Five endpoint calls feed one LLM synthesis:

  1. /research — deep synthesis of the semiconductor landscape: key players, technology maturity, industry challenges, and competitive dynamics.
  2. /search (trade publications) — chip technology, fab capacity, and product announcements scoped to EE Times, SemiEngineering, and IEEE Spectrum.
  3. /search (geopolitics/policy, time=year) — CHIPS Act funding, BIS export controls, TSMC/Intel/Samsung/ASML/SMIC competitive intelligence, FDI and allied semiconductor coordination.
  4. /scrape — one relevant URL, e.g. an analyst report, SEMI industry data page, IEEE technical brief, or company technology roadmap.
  5. /news (time=month) — recent fab announcements, M&A, earnings, export control actions, and supply disruptions.

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 semiconductor landscape
def research_market(query: str) -> str:
    """Semiconductor landscape, key players, technology maturity, competition."""
    r = requests.get(
        f"{BASE}/research",
        params={"q": f"{query} semiconductor chip industry"},
        headers=HEADERS,
    )
    data = r.json()
    return data.get("summary", "")[:3000]

# 2. Authoritative semiconductor trade publications
def search_trade(query: str) -> list[dict]:
    """Chip technology, fab capacity, and product announcements."""
    r = requests.get(
        f"{BASE}/search",
        params={
            "q": f"{query} site:eetimes.com OR site:semiengineering.com "
                 f"OR site:spectrum.ieee.org semiconductor chip fab technology",
        },
        headers=HEADERS,
    )
    return r.json().get("results", [])

# 3. Geopolitics / policy landscape (last year)
def search_geopolitics(query: str) -> list[dict]:
    """CHIPS Act, export controls, TSMC/Intel/Samsung/ASML/SMIC intelligence."""
    r = requests.get(
        f"{BASE}/search",
        params={
            "q": f"{query} CHIPS Act export controls TSMC Intel Samsung "
                 f"ASML SMIC semiconductor supply chain",
            "time": "year",
        },
        headers=HEADERS,
    )
    return r.json().get("results", [])

# 4. Scrape one relevant analyst report / data page / roadmap
def scrape_page(url: str) -> dict:
    """Pull an analyst report, SEMI data page, IEEE brief, or company roadmap."""
    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 semiconductor news: fabs, M&A, earnings, export controls (last month)
def get_news(query: str) -> list[dict]:
    """Fab announcements, M&A, earnings, export control actions, disruptions."""
    r = requests.get(
        f"{BASE}/news",
        params={
            "q": f"{query} semiconductor fab chip supply chain earnings",
            "time": "month",
        },
        headers=HEADERS,
    )
    return r.json().get("results", [])

def generate_brief(
    query: str,
    market: str,
    trade: list[dict],
    geopolitics: list[dict],
    scraped: dict | None,
    news: list[dict],
) -> dict | None:
    """Generate a structured semiconductor & chip industry brief as JSON."""

    trade_text = "\n".join(
        f"- {r.get('title', '')}: {r.get('snippet', '')} ({r.get('url', '')})"
        for r in trade[:6]
    )
    geopolitics_text = "\n".join(
        f"- {r.get('title', '')}: {r.get('snippet', '')}"
        for r in geopolitics[: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 a semiconductor industry analyst. Use ONLY the "
                    "provided sources. Do not invent fab capacity numbers, process "
                    "node specifications, market share figures, or company names — "
                    "if a detail is not in the sources, say 'not found in sources.' "
                    "Be precise about process nodes, equipment vendors, and export "
                    "control regulations, and flag when data may be analyst "
                    "estimates or industry averages."
                ),
            },
            {
                "role": "user",
                "content": f"""Write a semiconductor & chip industry brief for: {query}

Semiconductor Landscape (synthesis):
{market}

Semiconductor Trade Publications (EE Times / SemiEngineering / IEEE Spectrum):
{trade_text}

Geopolitics / Policy Landscape:
{geopolitics_text}

Scraped Analyst Report / Data Page / Technology Roadmap:
{scraped_text}

Recent Semiconductor News:
{news_text}

Return JSON with ALL of these fields:
- subject: chip, technology, market segment, or company being researched
- semiconductor_segment: "logic" | "memory" | "analog" | "power" | "rf-wireless" | "sensors-mems" | "advanced-packaging" | "equipment" | "materials" | "eda-design" | "mixed"
- fab_node: "leading-edge-<3nm" | "3-5nm" | "5-7nm" | "7-10nm" | "10-14nm" | "mature->=16nm" | "mixed" | "N/A"
- market_overview: market size, production volumes, key geographies, major players and market share
- technology_roadmap: process node trajectory, EUV/High-NA EUV adoption, chiplet/3D stacking, GAAFET transition, relevant memory architectures (HBM, LPDDR5X, CXL)
- competitive_landscape: key players, market share, TSMC dominance, Intel Foundry Services, Samsung Foundry, SMIC for mature nodes, fabless ecosystem
- supply_chain_and_materials: silicon wafers, photoresists, ALD precursors, CMP slurries; critical equipment (ASML EUV, AMAT, Lam Research, TEL); single-source risks
- geopolitical_and_export_controls: US BIS export rules, CHIPS Act implications, CFIUS FDI screening, China access constraints, ASML EUV restrictions, allied semiconductor coordination (US-Japan-Netherlands)
- investment_and_capex: fab announcements, government subsidies, VC/PE in fabless/chiplets, capex commitments
- end_market_demand: AI accelerators (H100/B200/TPUs), automotive (ADAS/autonomous), mobile/PC, data center, IoT, defense/aerospace
- data_quality: "high" | "medium" | "low" based on source coverage""",
            },
        ],
        response_format={"type": "json_object"},
    )

    try:
        return json.loads(response.choices[0].message.content)
    except (json.JSONDecodeError, KeyError):
        return None

def research_semiconductor(query: str) -> dict | None:
    """Run the full semiconductor & chip industry research pipeline."""
    print(f"Researching semiconductor: {query}")

    print("Synthesizing semiconductor landscape...")
    market = research_market(query)

    print("Searching semiconductor trade publications...")
    trade = search_trade(query)

    print("Searching geopolitics / policy landscape...")
    geopolitics = search_geopolitics(query)

    print("Scraping a relevant report / data page / roadmap...")
    scraped = None
    for result in trade + geopolitics:
        url = result.get("url")
        if url:
            scraped = scrape_page(url)
            if scraped.get("content"):
                break

    print("Pulling recent semiconductor news...")
    news = get_news(query)

    print("Generating semiconductor brief...")
    return generate_brief(query, market, trade, geopolitics, scraped, news)

def print_brief(brief: dict):
    if not brief:
        print("Could not generate brief.")
        return
    print(f"\n{'='*60}")
    print(f"Semiconductor & Chip Industry Brief")
    print(f"{'='*60}")
    print(f"\nSubject: {brief.get('subject', '')}")
    print(f"Segment: {brief.get('semiconductor_segment', '')}")
    print(f"Fab Node: {brief.get('fab_node', '')}")
    print(f"\nMarket Overview:\n{brief.get('market_overview', '')}")
    print(f"\nTechnology Roadmap:\n{brief.get('technology_roadmap', '')}")
    print(f"\nCompetitive Landscape:\n{brief.get('competitive_landscape', '')}")
    print(f"\nSupply Chain & Materials:\n{brief.get('supply_chain_and_materials', '')}")
    print(f"\nGeopolitical & Export Controls:\n{brief.get('geopolitical_and_export_controls', '')}")
    print(f"\nInvestment & Capex:\n{brief.get('investment_and_capex', '')}")
    print(f"\nEnd Market Demand:\n{brief.get('end_market_demand', '')}")
    print(f"\nData Quality: {brief.get('data_quality', '?')}")

if __name__ == "__main__":
    import sys
    query = sys.argv[1] if len(sys.argv) > 1 else "TSMC 3nm leading-edge logic fab capacity"
    brief = research_semiconductor(query)
    print_brief(brief)

Usage examples

Semiconductor market data, fab capacity figures, and export control regulations change rapidly. Verify process node specifications and capacity figures directly with company investor relations (annual reports, earnings calls) and SEMI industry reports for the most current data.

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 manufacturing research agent covers the adjacent production process automation and Industry 4.0 technology layer, including semiconductor wafer fabrication, and the supply chain research agent covers the critical materials and equipment dependencies that underpin chip production.