Skip to content
Lexical

Developers

Lexical for developers and AI agents

The Lexical product catalogue and business facts as plain JSON, for programs and AI agents. Public, read-only, no key.

Public

Only what a visitor sees on this website without signing in: products, categories, pages and the company's details.

Read-only

Every request is a GET. Nothing here changes anything, and nothing can be sent to us through it.

No key

There is nothing to sign up for and no token to send. Any program, or any web page, may call it.

Rate limited

About 300 requests every 10 minutes from one address. Answers are cached for a minute, so repeating one costs nothing.

What it is for

Lexical makes small electrical home appliances in China and exports them, wholesale and under OEM and private label, to distributors in more than 100 countries. A buyer, a price-comparison tool or an AI assistant helping someone source appliances often needs the same few things: which lines Lexical sells, how a line is packed in its carton, and how to reach the export desk.

This API gives those answers as JSON, in the same words and with the same figures as the website, so a program does not have to read the pages. Each line comes with the address of its page, and every product has a link that opens the quote form with the line already filled in.

What it does not include

Prices are not published: they are quoted per order, through the export desk. Barcodes, HS codes and anything kept for verified customers are not available through this API, and neither are lines the website no longer shows.

Where to start

  • /openapi.json: the OpenAPI 3.1 description of every endpoint, with its parameters and the shape of every answer. Load it into an API client or hand it to an agent as a tool definition.
  • /llms.txt and /llms-full.txt: the whole website in plain text for language models, with the pages and the products.
  • /.well-known/mcp: the MCP server. A browser or a script that asks for it with GET sees a short description of the server; an MCP client connects with POST.
  • Base address of the API: https://project-26u0v.vercel.app/api/v1

Endpoints

Every endpoint answers with JSON and accepts an optional lang parameter (en, de, es, fr, pt, ru, zh, fa or ar) for names. The examples are shortened; the figures in them are only for illustration.

List products

GET/api/v1/products

The public catalogue, the same lines the Products page shows, in the site's order. Each line has its SKU, name, category, page address, photo and the carton's packing figures. Lines without a SKU are not listed.

ParameterTypeWhat it does
categorystringKeep one category. Use a name from the categories endpoint.
qstringKeep lines whose name, SKU or category contains this text.
langstringLanguage for names. Default en.
limitintegerLines per page, 1 to 100. Default 24.
offsetintegerLines to skip. Pass nextOffset from the last answer to read on; it is null on the last page.

Example request

curl "https://project-26u0v.vercel.app/api/v1/products?category=Air%20Fryers&limit=1"

Example response

{
  "lang": "en",
  "total": 7,
  "count": 1,
  "offset": 0,
  "limit": 1,
  "nextOffset": 1,
  "products": [
    {
      "sku": "LAF-3068",
      "name": "Air Fryer",
      "brand": "Lexical",
      "category": "Air Fryers",
      "categoryLabel": "Air Fryers",
      "url": "https://project-26u0v.vercel.app/products/air-fryer-laf-3068",
      "photoUrl": "https://project-26u0v.vercel.app/api/image/…?w=960",
      "carton": {
        "piecesPerCarton": 4,
        "netWeightKg": 11,
        "grossWeightKg": 12,
        "volumeCbm": 0.65,
        "dimensions": null
      }
    }
  ]
}

Get one product

GET/api/v1/products/{sku}

One line by its SKU, with everything the list gives and, besides, the description, whether it is marked New, whether CE documentation is on file, and the address that opens the quote form for it. An unknown SKU is a 404.

ParameterTypeWhat it does
skustring, in the pathThe SKU, for example LAF-3068. Case does not matter.
langstringLanguage for the name and the page address. Default en.

Example request

curl "https://project-26u0v.vercel.app/api/v1/products/LAF-3068"

Example response

{
  "sku": "LAF-3068",
  "name": "Air Fryer",
  "brand": "Lexical",
  "category": "Air Fryers",
  "categoryLabel": "Air Fryers",
  "url": "https://project-26u0v.vercel.app/products/air-fryer-laf-3068",
  "photoUrl": "https://project-26u0v.vercel.app/api/image/…?w=960",
  "carton": {
    "piecesPerCarton": 4,
    "netWeightKg": 11,
    "grossWeightKg": 12,
    "volumeCbm": 0.65,
    "dimensions": null
  },
  "description": null,
  "isNew": false,
  "ceDocumented": true,
  "lang": "en",
  "quoteUrl": "https://project-26u0v.vercel.app/contact?sku=LAF-3068&product=Air%20Fryer#quote"
}

List categories

GET/api/v1/categories

The categories on sale today with the number of lines in each, most lines first. The name of a category is what the category parameter above takes.

ParameterTypeWhat it does
langstringLanguage for category names. Default en.

Example request

curl "https://project-26u0v.vercel.app/api/v1/categories"

Example response

{
  "lang": "en",
  "count": 2,
  "categories": [
    {
      "name": "Air Fryers",
      "label": "Air Fryers",
      "count": 4,
      "url": "https://project-26u0v.vercel.app/products?category=Air%20Fryers"
    },
    {
      "name": "Kettles",
      "label": "Kettles",
      "count": 3,
      "url": "https://project-26u0v.vercel.app/products?category=Kettles"
    }
  ]
}

Company facts

GET/api/v1/company

The business details the website prints: legal name, the head office and showroom address with its opening hours, the shop in the Yiwu International Trade City, and how to reach the export desk.

Example request

curl "https://project-26u0v.vercel.app/api/v1/company"

Example response

{
  "name": "Lexical",
  "legalName": "Yiwu Lexical Electrical Appliances Co., Ltd.",
  "website": "https://project-26u0v.vercel.app",
  "headquarters": {
    "description": "Head office and showroom",
    "street": "571 Chouzhou North Road",
    "city": "Yiwu",
    "country": "China",
    "timeZone": "Asia/Shanghai",
    "hours": [
      {
        "days": "Monday – Saturday",
        "opens": "09:00",
        "closes": "24:00",
        "text": "09:00 – 24:00"
      }
    ]
  },
  "contact": {
    "email": "contact@lexical.com.cn",
    "quoteForm": "https://project-26u0v.vercel.app/contact#quote"
  }
}

Errors

Every error is JSON in one shape, with the HTTP status that fits. The hint says what to do next.

CodeStatusMeaning
bad_request400A parameter is missing or not valid, for example a limit above 100 or an unknown language.
not_found404No product has that SKU in the public catalogue.
rate_limited429Too many requests from this address. The Retry-After header says how many seconds to wait.
server_error500The catalogue could not be read just now. Try again in a minute.

Example

{
  "error": {
    "code": "not_found",
    "message": "No product with SKU XYZ-0000 in the public catalogue.",
    "hint": "List the SKUs the catalogue holds with GET /api/v1/products."
  }
}

MCP server

AI agents that speak the Model Context Protocol can use the catalogue directly. The server uses the Streamable HTTP transport, needs no authentication and keeps no session. It answers every request with one JSON object.

Its address is https://project-26u0v.vercel.app/.well-known/mcp, and the same server answers at https://project-26u0v.vercel.app/api/mcp. Add it to an MCP client with a configuration like this one, or with one command:

{
  "mcpServers": {
    "lexical-catalogue": {
      "type": "http",
      "url": "https://project-26u0v.vercel.app/.well-known/mcp"
    }
  }
}
claude mcp add --transport http lexical-catalogue https://project-26u0v.vercel.app/.well-known/mcp

Tools

Each tool does what the endpoint of the same purpose does and returns its JSON as text.

ToolWhat it does
search_catalogueSearch products, categories, pages and sections.
list_productsList the catalogue, with category, text, language, limit and offset.
get_productOne line by SKU.
list_categoriesThe categories and their line counts.
get_company_infoAddress, hours and how to reach the export desk.

Or try the handshake by hand:

curl -X POST "https://project-26u0v.vercel.app/.well-known/mcp" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"curl","version":"1.0.0"}}}'

The server speaks protocol versions 2025-11-25, 2025-06-18, 2025-03-26.

Questions

Talk to the export desk

For prices, OEM and private label, or anything this API does not answer, write to the export desk by email or WhatsApp.

Request a quoteBack to the cataloguecontact@lexical.com.cn