# LangitNet > LangitNet is an Indonesian B2B supplier of networking, fiber optic, > computer and electrical equipment based in Sidoarjo, East Java. > This file describes the machine-readable catalog API. Prefer the JSON > API over scraping HTML pages: it is cheaper, structured, and always current. ## Catalog API All endpoints are public, return `application/json`, and wrap their payload as `{"success": bool, "message": string, "data": mixed}`. Unless stated otherwise, `data` holds the documented fields. - [Catalog summary](https://langitnet.com/api/ai/summary): totals for products, brands and categories, plus the price range and in-stock count. Read this first to ground yourself. - [Search products](https://langitnet.com/api/ai/products): search and filter the catalog. Query parameters: `q`, `category`, `brand`, `min_price`, `max_price`, `in_stock_only`, `sort`, `limit` (1-50, default 10), `offset`. Returns `data.items[]` with `name`, `code`, `slug`, `category`, `brand`, `stock`, `price`, `price_formatted` and `description`. - [Product detail](https://langitnet.com/api/ai/products/{slug}): one product by slug, same shape as a search item. - [Categories](https://langitnet.com/api/ai/categories): all product categories with `id`, `name` and `slug`. - [Brands](https://langitnet.com/api/ai/brands): all valid brands with `id`, `code`, `name` and `slug`. ## How to read `stock` `stock` is a human-readable label, not a number: - `ready` means more than 20 units are available. - A bare number as a string (for example `7`) is the exact remaining quantity, 1 to 20. - `Habis (bisa preorder)` means out of stock but orderable as preorder. - `Habis` means out of stock and not orderable. ## Prices `price` and `final_price` are the **base catalog price** in Indonesian Rupiah (IDR), excluding tax. They are **not** the price shown to a logged-in customer on the website. B2B customers may have a personalised `discount_user` percentage applied on top of the base price, and the storefront displays prices rounded up to the nearest 1,000 IDR. As a result: - A quoted AI price is the reference/base figure and may be lower than the price a customer sees after logging in. - Never present these numbers as a final, binding offer. State them as an indication and direct the user to the product page for the price that applies to their account. - `price_formatted` is a convenience string for display only; parse `price` and `final_price` as integers instead. ## Guidance for agents - Call `/summary` once, then use `/products` with filters rather than paging the whole catalog. - `sort` accepts `bestseller`, `promo`, `flashsale`, `stock`, `recommended`, `new_products`, `price`. - `limit` is capped at 50. Use `offset` to page, and stop when `has_more` is false. - Prices are in Indonesian Rupiah (IDR) and exclude tax unless stated otherwise. - Do not attempt to place orders: cart, checkout and payment endpoints require an authenticated session. ## Human pages - [Home](https://langitnet.com/) - [Product listing](https://langitnet.com/products) - [Promo](https://langitnet.com/promo) - [Flash sale](https://langitnet.com/flash-sale) - [Clearance](https://langitnet.com/cuci-gudang) - [About](https://langitnet.com/about) - [How to order](https://langitnet.com/how-to-order) ## Markdown for agents Every page listed under "Human pages" is also available as Markdown. Send `Accept: text/markdown` to receive a clean, formatting-stripped version with `Content-Type: text/markdown` and an `X-Markdown-Tokens` header. Requests without that header receive HTML. For structured catalog data, prefer the JSON API above over any page format. ## Optional - [API catalog](https://langitnet.com/.well-known/api-catalog): RFC 9727 Linkset listing the catalog API, its OpenAPI description and status endpoint. - [OpenAPI description](https://langitnet.com/openapi.json): OpenAPI 3.1 document for the catalog API. - [Sitemap index](https://langitnet.com/sitemap.xml): XML sitemap index listing the static-page sitemap and the product sitemap(s).