Coppel APIcoppel.com ↗
Search and browse Coppel.com's product catalog via API. Get prices, images, SKUs, sale flags, and filter facets across Mexico's largest department store.
What is the Coppel API?
The Coppel.com API provides 2 endpoints to search and browse Mexico's largest department store catalog, returning structured product data including name, brand, SKU, pricing, sale status, and image URLs. The search_products endpoint accepts free-text queries and returns up to 48 products per page along with a category breakdown of how results distribute across departments. The get_product_listings endpoint supports category-level browsing with available filter facets.
curl -X GET 'https://api.parse.bot/scraper/544e0bcc-735b-4947-ab82-fe7e6cdd3933/search_products?page=1&query=Tenis&order_by=0&page_size=5' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace coppel-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Coppel SDK — search products, browse departments, compare prices."""
from parse_apis.Coppel_Product_Listings_API import Coppel, SortOrder, InvalidSortOrder
client = Coppel()
# Search for shoes sorted by price low-to-high, capped at 5 items.
for product in client.products.search(query="zapatos", sort=SortOrder.PRICE_LOW_HIGH, limit=5):
print(product.name, product.brand, product.price, product.currency)
# Browse a department and inspect the first result's delivery options.
laptop = client.products.browse(search_term="Laptops", sort=SortOrder.NEWEST, limit=1).first()
if laptop:
print(laptop.name, laptop.price, laptop.discounted_price)
print(laptop.delivery.shipment, laptop.delivery.store_pickup)
for badge in laptop.badges:
print(" badge:", badge)
# Handle invalid sort gracefully with a typed error catch.
try:
client.products.search(query="televisores", sort=SortOrder.RELEVANCE, limit=3).first()
except InvalidSortOrder as exc:
print(f"Sort rejected: {exc}")
# Browse Celulares with default sort to see seller and financing info.
for phone in client.products.browse(search_term="Celulares", limit=3):
print(phone.name, phone.seller, phone.installment_amount, phone.installment_duration)
print("exercised: products.search / products.browse / SortOrder enum / InvalidSortOrder / delivery fields")
Full-text search over Coppel.com product catalog by keyword. Returns paginated product listings with pricing, brand, badges, seller info, delivery options, and a category breakdown showing how results distribute across departments. Paginates via page number; each product exposes installment financing terms. Sorting controls relevance, price, or recency ordering.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number (1-based) |
| query | string | Search keyword (e.g., 'zapatos', 'laptops', 'iPhone') |
| order_by | string | Sort order for results |
| page_size | integer | Number of products per page (max ~48) |
{
"type": "object",
"fields": {
"page": "integer, current page number",
"query": "string, the search keyword used",
"products": "array of product objects with name, brand, sku, part_number, image_url, product_url, price, discounted_price, currency, is_on_sale, badges, seller, installment_amount, installment_duration, delivery",
"page_size": "integer, number of products per page",
"categories": "array of category objects with id, name, count, href",
"total_count": "integer, total number of matching products",
"total_pages": "integer, total number of pages available"
},
"sample": {
"data": {
"page": 1,
"query": "Tenis",
"products": [
{
"sku": "629218670",
"name": "Tenis para Correr Adidas Duramo Rc2 para Mujer",
"brand": "Adidas",
"price": 1499,
"badges": [],
"seller": "Adidas",
"currency": "MXN",
"delivery": {
"shipment": true,
"marketplace": true,
"store_pickup": false
},
"image_url": "https://cdn5.coppel.com/mkp/629218670-1.jpg",
"is_on_sale": false,
"part_number": "MKP-629218670",
"product_url": "https://www.coppel.com/pdp/tenis-para-correr-adidas-duramo-rc2-para-mujer-mkp-629218670",
"discounted_price": null,
"installment_amount": "91",
"installment_duration": "24"
}
],
"page_size": 5,
"categories": [
{
"id": "cat000774",
"href": "/ct/zapatos/cat000774",
"name": "Zapatos",
"count": "19632"
}
],
"total_count": 20479,
"total_pages": 4096
},
"status": "success"
}
}About the Coppel API
Endpoints and What They Return
The search_products endpoint accepts a query string (e.g., 'zapatos', 'iPhone') and returns paginated results with fields including name, brand, sku, part_number, image_url, product_url, price, discounted_price, currency, and is_on_sale. A categories array accompanies each response, listing related department names, their IDs, result counts, and hrefs — useful for understanding how a keyword distributes across Coppel's taxonomy. Pagination is controlled via page and page_size (max ~48 per page), with total_count and total_pages for result-set sizing.
Category Browsing and Filter Facets
The get_product_listings endpoint takes a search_term corresponding to a department or category name (e.g., 'Celulares', 'Televisores', 'Muebles') and returns the same product object shape as search, plus an available_filters object. That object maps filter category names — brands, colors, sizes, discounts, sellers, and product specs — to arrays of option objects each containing an id and count. This makes it practical to enumerate what filters exist before narrowing a query.
Sorting and Pagination
Both endpoints accept an order_by parameter to control result sort order, and both expose page, page_size, total_count, and total_pages in the response for straightforward cursor-free pagination. Products consistently carry price and discounted_price as separate fields alongside an is_on_sale boolean, so detecting promotional pricing requires no client-side comparison logic.
The Coppel API is a managed, monitored endpoint for coppel.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when coppel.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official coppel.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Track price drops on specific SKUs by polling
search_productsfordiscounted_priceandis_on_salechanges over time. - Build a price-comparison tool covering Mexican retail by pulling
priceandbrandfields for a shared product category. - Enumerate all brands available in a department using
available_filtersfromget_product_listingsbefore building a filtered product feed. - Aggregate
categoriesdistribution fromsearch_productsto map how Coppel organizes a product type across its taxonomy. - Populate a product feed with
image_urlandproduct_urlfields for affiliate or comparison site listings. - Monitor inventory breadth in a category by comparing
total_countacross multiplesearch_termvalues over time. - Identify sale concentration in a department by filtering the product list for
is_on_sale: trueand grouping bybrand.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Coppel have an official public developer API?+
What is the difference between `search_products` and `get_product_listings`?+
search_products is designed for free-text keyword queries and returns a categories array showing how results break down across departments. get_product_listings targets category or department names via search_term and returns an available_filters object with brand, color, size, discount, seller, and spec facets — data that search_products does not include.Does the API return individual product detail pages with full specifications or customer reviews?+
Are filter facets available when doing a keyword search?+
available_filters) are only returned by get_product_listings. The search_products endpoint returns a categories array instead, which shows result counts per department but does not include brand, color, or size facet breakdowns. If you need facets, use get_product_listings with a category name as the search_term.What pagination limits apply to these endpoints?+
page parameter. The page_size parameter caps at approximately 48 products per request. The response always includes total_count and total_pages so you can calculate how many requests are needed to walk a full result set.