# Paris.cl API — Chile's Paris department store and Marketplace: search, categories, normal / internet / Tarjeta Cencosud prices, variants, EAN, seller, stock per comuna, ratings and reviews

> Search Paris.cl (Cencosud, Chile) — Paris's own stock and its Marketplace shops. One page of products: id, name, brand, the search index's lowest price (`search_index_price`: the Tarjeta Cencosud price when there is one), discount %, seller and whether it is Paris or a Marketplace shop, product type, category path, rating, review count, image and every size/colour variant with its own SKU — plus the source's facet counts (brands, seller types, product types, price and discount bands). Filters: brand, seller_type, min_price, max_price, category; sort; page. By default the same in-stock view the site shows. For the three separate prices (normal / internet / card) call `product`. `query` is required.
> ReefAPI engine `paris-cl` · 6 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/paris-cl/v1/<action>` with a JSON body.
- **Auth:** header `x-api-key: <YOUR_REEFAPI_KEY>` — create one free (1,000 credits, no card): https://reefapi.com/signup
- **Response (every call):** `{ ok: boolean, data: ..., meta: { record_count, credits, ... }, error: { code, message } }` — branch on `ok`. Failed calls are free except verified SHEIN NOT_FOUND on product/detail and price (4 credits).
- **One key + one shared credit pool** across every ReefAPI API. Per-call credits are listed on each endpoint below.
- **Use it from an AI agent (MCP):** connect `https://api.reefapi.com/mcp` (remote streamable-http). Send the key as `Authorization: Bearer <key>`, or put it in the URL (`?key=<key>`) when the client has no header field, as ChatGPT does.

## Endpoints

### POST https://api.reefapi.com/paris-cl/v1/search — 3 credits
Search Paris.cl (Cencosud, Chile) — Paris's own stock and its Marketplace shops. One page of products: id, name, brand, the search index's lowest price (`search_index_price`: the Tarjeta Cencosud price when there is one), discount %, seller and whether it is Paris or a Marketplace shop, product type, category path, rating, review count, image and every size/colour variant with its own SKU — plus the source's facet counts (brands, seller types, product types, price and discount bands). Filters: brand, seller_type, min_price, max_price, category; sort; page. By default the same in-stock view the site shows. For the three separate prices (normal / internet / card) call `product`. `query` is required.

**Parameters:**
- `query` (string, required) — What to search for, as typed in the paris.cl search box (Spanish: notebook, zapatillas, sofá, perfume).
- `category` (string, optional) — Narrow the search to one category id (from `categories` or a row's `category_id`).
- `page` (integer, optional, default 1) — Result page. `last_page` in the answer is the last reachable page; the source stops counting at 10,000 results (`total_capped`).
- `page_size` (integer, optional, default 24) — Products per page (1-60; the site shows 24 on a phone).
- `sort` (enum, optional, default "relevance") — Order of the results. Price sorts use the search index's price (`search_index_price`). [one of: relevance, price_low, price_high, discount, newest, rating]
- `brand` (string, optional) — Only this brand, spelled exactly as in `facets` (case-sensitive at the source: 'Adidas' 2,317 sneakers, 'adidas' 0). One brand per call.
- `seller_type` (enum, optional) — Sold by Paris itself or by a Marketplace shop (notebook: 453 Paris, 5,975 Marketplace in the raw index). [one of: paris, marketplace]
- `min_price` (integer, optional) — Lowest search-index price (`search_index_price`) in whole CLP, e.g. 10000.
- `max_price` (integer, optional) — Highest search-index price (`search_index_price`) in whole CLP, e.g. 20000.
- `include_unavailable` (boolean, optional, default false) — false (default) = exactly what paris.cl lists: products with stock for delivery or pickup. true = the whole index, unavailable products included (notebook 837 vs 6,441).

**Returns:** query/category_id, total (the source's count), total_capped, page, page_size, last_page, beyond_last_page, returned, results[]{id, variation_id, name, brand, url, search_index_price, search_index_price_note, discount_pct, currency, seller, sellers[], seller_type, product_type, category, category_id, category_path[], rating, review_count, image, color, model, variant_count, variants[]{sku, size, color, search_index_price, image}, rank}, facets[]{name, label, values[]{value, label, count}}, categories[]{id, name, count}

**Example request body:**
```json
{
  "query": "notebook"
}
```

### POST https://api.reefapi.com/paris-cl/v1/category — 3 credits
Browse one Paris.cl category (e.g. tecCompNotebooks = Notebooks, tecnologia = Tecno) — the same rows, filters, sort and facets as `search`, without a keyword. Category ids come from `categories` or from a search row's `category_id`. `category` is required.

**Parameters:**
- `category` (string, required) — Category id exactly as `categories` returns it (case-sensitive: tecCompNotebooks, homModPoleras, tecnologia).
- `page` (integer, optional, default 1) — Result page. `last_page` in the answer is the last reachable page; the source stops counting at 10,000 results (`total_capped`).
- `page_size` (integer, optional, default 24) — Products per page (1-60; the site shows 24 on a phone).
- `sort` (enum, optional, default "relevance") — Order of the results. Price sorts use the search index's price (`search_index_price`). [one of: relevance, price_low, price_high, discount, newest, rating]
- `brand` (string, optional) — Only this brand, spelled exactly as in `facets` (case-sensitive at the source: 'Adidas' 2,317 sneakers, 'adidas' 0). One brand per call.
- `seller_type` (enum, optional) — Sold by Paris itself or by a Marketplace shop (notebook: 453 Paris, 5,975 Marketplace in the raw index). [one of: paris, marketplace]
- `min_price` (integer, optional) — Lowest search-index price (`search_index_price`) in whole CLP, e.g. 10000.
- `max_price` (integer, optional) — Highest search-index price (`search_index_price`) in whole CLP, e.g. 20000.
- `include_unavailable` (boolean, optional, default false) — false (default) = exactly what paris.cl lists: products with stock for delivery or pickup. true = the whole index, unavailable products included (notebook 837 vs 6,441).

**Returns:** query/category_id, total (the source's count), total_capped, page, page_size, last_page, beyond_last_page, returned, results[]{id, variation_id, name, brand, url, search_index_price, search_index_price_note, discount_pct, currency, seller, sellers[], seller_type, product_type, category, category_id, category_path[], rating, review_count, image, color, model, variant_count, variants[]{sku, size, color, search_index_price, image}, rank}, facets[]{name, label, values[]{value, label, count}}, categories[]{id, name, count}

**Example request body:**
```json
{
  "category": "tecCompNotebooks"
}
```

### POST https://api.reefapi.com/paris-cl/v1/categories — 2 credits
The Paris.cl category tree with product counts per category: the top departments, or the children of one `category`. Ids feed `category` and `search`.

**Parameters:**
- `category` (string, optional) — Return this category and its children. Omitted: the whole store from the root.
- `depth` (integer, optional, default 2) — How many levels of children to include (1-4).

**Returns:** parent, categories[]{id, name, count, child_count, children[]}

**Example request body:**
```json
{
  "category": "tecnologia"
}
```

### POST https://api.reefapi.com/paris-cl/v1/product — 2 credits
One Paris.cl product by id (as search rows return it), variant SKU or product URL: the three prices kept apart — normal (crossed) price, internet price and the Tarjeta Cencosud card price — with discount %, EAN, brand, model, seller (Paris or the Marketplace shop) and its legal name, category path, rating and review count, all images, description, the specification sheet, every attribute, extended-warranty offers with their price, and every size/colour variant with its own SKU, EAN and three prices. Stock per comuna: `stock`. One of `id`, `sku` or `url` is required.

**Parameters:**
- `id` (string, optional) — The product id exactly as a search row returns it (626082999, MKSQKNFQC9, 410889).
- `sku` (string, optional) — A variant SKU (a search row's `variation_id` or `variants[].sku`); returns the whole product.
- `url` (string, optional) — A www.paris.cl product page URL (…-<id>.html).

**Returns:** item{id, sku, ean, name, brand, url, slug, price, price_type, normal_price, internet_price, card_price, card_price_method, card_price_label, discount_pct, card_discount_pct, currency, seller, sellers[], seller_legal_name, seller_type, is_marketplace, product_type, category_path[], category_ids[], model, condition, warranty, commercial_warranty, country_of_origin, short_description, description, rating, review_count, images[], main_attributes[]{name, label, value}, specifications[]{group, name, value}, attributes[]{name, value}, extended_warranties[]{type, name, description, months, price, code}, collections[], variant_count, variants[]{sku, ean, size, size_code, color, color_code, price, price_type, normal_price, internet_price, card_price, ..., image}, published}

**Example request body:**
```json
{
  "id": "626082999"
}
```

### POST https://api.reefapi.com/paris-cl/v1/stock — 1 credit
Stock and delivery options of one or more Paris.cl SKUs for a Chilean comuna: whether it can be delivered/picked up there, the stock level (IN_STOCK, LOW_STOCK, OUT_OF_STOCK), the unit count the source publishes, and each shipping option (home delivery scheduled / next day, pickup at Copec or in store) with its own stock and order-by time. Up to 40 SKUs of the same call are answered by the source in one request. `sku` is required.

**Parameters:**
- `sku` (string, required) — A SKU (search row `variation_id`, product `sku` or `variants[].sku`), or up to 40 of them comma-separated.
- `comuna` (string, optional, default "13114") — Chilean comuna code (INE, 4-5 digits): 13114 Las Condes (the site's default), 13101 Santiago, 5101 Valparaíso, 1101 Iquique. Stock and options differ by comuna.

**Returns:** comuna, returned, results[]{sku, serviceable, in_stock, stock_level, network_stock_level, stock_quantity, total_stock_quantity, service_node, service_node_type, shipping_options[]{type, subtype, method, stock_level, stock_quantity, node_category, order_by}}

**Example request body:**
```json
{
  "sku": "626082999"
}
```

### POST https://api.reefapi.com/paris-cl/v1/reviews — 2 credits
Ratings and reviews of one Paris.cl product: average rating, review count, the 1-5 star distribution, the site's AI-written review summary, and the reviews (rating, title, text, reviewer nickname, month, recommended flag, helpful votes, photo count). `id` is required (the product id, not a variant SKU).

**Parameters:**
- `id` (string, required) — The product id as a search row returns it.
- `page` (integer, optional, default 1) — Page of reviews.
- `page_size` (integer, optional, default 20) — Reviews per page (1-100).
- `with_text_only` (boolean, optional, default false) — true = only reviews with a written text (Paris collects many star-only ratings: 53 of 75 on 626082999).
- `sort` (enum, optional, default "newest") — Order of the reviews. [one of: newest, rating_high, rating_low]

**Returns:** id, total, page, page_size, returned, statistics{average_rating, review_count, ratings_only_count, recommended_count, rating_distribution[]{rating, count}, first_review_at, last_review_at}, ai_summary, ai_summary_date, reviews[]{id, rating, rating_range, title, text, ratings_only, author, submitted, recommended, sku, helpful_votes, not_helpful_votes, photos, videos, moderation_status}

**Example request body:**
```json
{
  "id": "626082999"
}
```

## At scale
- **Volume:** 5M+ requests a day, measured at 60 requests a second across the fleet with no
  central bottleneck. Per-key limits are raised for high-volume accounts; volume pricing on request.
- **Missing a source:** tell us a site we do not cover and it becomes an engine. A customer asked
  for bestprice.gr on 21 Sep 2026 and it was in the catalog on 22 Sep.
- **Support:** 2 minute median time from a question in the live chat to the first answer. Setup
  help included, no support tier to buy.
- **One key, one credit pool** across every API. No per-site plans, no separate subscriptions.

## More
- Try it live, no code: https://reefapi.com/playground?engine=paris-cl
- Human docs page: https://reefapi.com/docs/paris-cl
- Overview page: https://reefapi.com/paris-cl-api
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
