Centauro APIcentauro.com.br ↗
Search Centauro's Brazilian sports retail catalog and retrieve product details: colors, Brazilian sizing, per-size stock, seller names, and BRL prices via 2 endpoints.
What is the Centauro API?
The Centauro API provides 2 endpoints for accessing the centauro.com.br sports retail catalog. Use search_products to run keyword searches across footwear, apparel, and accessories with facet filters for size, brand, gender, and seller, then call get_product_details to retrieve full colorway records including Brazilian sizes, per-size stock status, seller attribution, and card, Pix, and original prices in BRL.
curl -X GET 'https://api.parse.bot/scraper/fbcc7442-419a-4d5f-8acc-d316a4c96154/search_products?size=41&query=tenis+corrida' \ -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 centauro-com-br-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: Centauro sports catalog — search, browse, and drill into product details."""
from parse_apis.centauro_com_br_api import Centauro, SortOrder, ProductNotFound
client = Centauro()
# Search for running shoes sorted by discount, capped at 5 results.
for summary in client.product_summaries.search(query="tenis corrida", sort=SortOrder.DISCOUNT_DESC, limit=5):
print(summary.name, summary.brand, f"R${summary.card_price_brl}", f"-{summary.discount_percent}%")
# Drill into the first hit's full detail via the typed summary→detail link.
hit = client.product_summaries.search(query="chuteira society", limit=1).first()
if hit is not None:
product = hit.details()
print(product.name, product.color, product.gender)
# Explore available sizes and per-size pricing.
for sz in product.sizes:
if sz.in_stock:
print(f" Size {sz.size}: card R${sz.card_price_brl}, pix R${sz.pix_price_brl}, seller {sz.seller_name}")
# Browse color variants of the same model.
for cv in product.colors:
print(f" Color: {cv.color} — {cv.url}")
# Scalar search_page gives access to facet filters alongside the product list.
result = client.product_summaries.search_page(query="meia corrida", per_page=3)
print(f"{result.total_results} results across {result.total_pages} pages")
for f in result.filters:
print(f" Filter '{f.attribute}': {[v.label for v in f.values[:3]]}")
# Point lookup by a known product_id, with typed error handling.
try:
detail = client.products.get(product_id="9976EA31")
print(detail.name, detail.brand, f"{len(detail.images)} images")
except ProductNotFound:
print("Product not found on the Centauro catalog.")
print("exercised: search / search_page / get / details / sizes / colors / filters")
Searches the Centauro catalog by keyword and returns one page of product summaries (one row per product colorway, e.g. one row per shoe model+color). Each row carries the product_id consumed by get_product_details, the product page URL, seller name, the card price (current price paid by card), the explicitly labelled Pix price (null when the seller offers no Pix discount), the original price before promotion, and discount percentage. Facet filters (size, brand, gender, seller, or any raw attribute:value pair in `filters`) are applied by the site and combined with AND across attributes; the response's `filters` list exposes every facet the site offers for the current result set with its wire value and count, so unknown slugs can be discovered from a first unfiltered call. Shoe sizes are Brazilian numeric sizes (e.g. 41); apparel sizes are letter sizes (P, M, G, GG); socks are usually listed under range labels (e.g. 39-43), so for socks filter by `produto:meia` through `filters` and read the exact size range from the product name or get_product_details. Pagination is page-based: `page` (1-based) and `per_page` (max 100); `total_results` and `total_pages` come from the site, `has_more` tells whether a next page exists. A search term with no matching products returns an empty `products` list with total_results 0 (valid empty result). One round trip per call.
| Param | Type | Description |
|---|---|---|
| page | integer | 1-based page number. |
| size | string | Size facet (Tamanho). Brazilian shoe size such as 41 or 41.5, or apparel letter size such as G; comma-separated values select several sizes. Case-insensitive; matched exactly against the site's size facet. |
| sort | string | Result ordering, mirroring the site's sort menu. |
| brand | string | Brand facet slug (Marca) as the site encodes it: lowercase, no spaces or accents (e.g. nike, newbalance). Comma-separated values select several brands. Discover slugs from `filters[attribute=Marca].values[].value` in a response. |
| queryrequired | string | Free-text search term, in Portuguese as used on the site (e.g. tenis corrida, shorts corrida, regata, meia). |
| gender | string | Gender facet (Gênero) slug: masculino, feminino or unissex (values confirmed from the site's facet list). |
| seller | string | Seller facet slug (Vendido por), e.g. centauro for products sold by Centauro itself; marketplace sellers use their own slug discoverable from `filters[attribute=Vendido por].values[].value`. |
| filters | string | Comma-separated raw facet pairs in attribute:value form taken from `filters[].values[].facet` of a previous response (e.g. produto:meia,preco:r300r400). Lets callers apply any facet the site offers beyond the named parameters. |
| per_page | integer | Products per page; values above 100 are clamped to 100. |
{
"type": "object",
"fields": {
"page": "page returned (1-based)",
"sort": "sort key applied",
"query": "echo of the search term",
"filters": "array of facets offered by the site for this result set: attribute label and values [{label, value, facet, count, selected}]",
"has_more": "true when a next page exists",
"per_page": "page size actually used by the site",
"products": "array of product summaries: product_id (model+color id, input of get_product_details), model_code, color_id, name, brand, url, status, seller_name, card_price_brl, pix_price_brl (null when no Pix discount), original_price_brl, discount_percent, installment {quantity, price}, categories, tags, colors_count, sizes_count, skus, image",
"total_pages": "number of pages at this page size",
"total_results": "total products matching on the site (source count)",
"applied_filters": "list of attribute:value facet pairs sent to the site"
},
"sample": {
"data": {
"page": 1,
"sort": "relevance",
"query": "tenis corrida",
"filters": [
{
"values": [
{
"count": 124,
"facet": "marca:nike",
"label": "Nike",
"value": "nike",
"selected": false
}
],
"attribute": "Marca"
},
{
"values": [
{
"count": 4601,
"facet": "tamanho:41",
"label": "41",
"value": "41",
"selected": true
}
],
"attribute": "Tamanho"
}
],
"has_more": true,
"per_page": 3,
"products": [
{
"url": "https://www.centauro.com.br/tenis-de-corrida-unissex-under-armour-starlight-2-m18cjo-mktp.html?cor=04",
"name": "Tênis de Corrida Unissex Under Armour Starlight 2",
"skus": [
"M18CJO040347",
"M18CJO040354",
"M18CJO040446"
],
"tags": [],
"brand": "Under Armour",
"image": "https://imgcentauro-a.akamaihd.net/230x230/M18CJO04A1.jpg",
"status": "available",
"color_id": "04",
"categories": [
"Corrida / Caminhada",
"Calçados",
"Tênis"
],
"model_code": "M18CJO",
"product_id": "M18CJO04",
"installment": {
"price": 100,
"quantity": 3
},
"seller_name": "Under Armour",
"sizes_count": 11,
"colors_count": 1,
"pix_price_brl": 269.99,
"card_price_brl": 299.99,
"discount_percent": 40,
"original_price_brl": 449.99
}
],
"total_pages": 1534,
"total_results": 4601,
"applied_filters": [
"tamanho:41"
]
},
"status": "success"
}
}About the Centauro API
Search and Filter the Centauro Catalog
The search_products endpoint accepts a required query parameter (in Portuguese, e.g. tenis corrida, shorts corrida) and returns paginated product summaries. Optional facet parameters — size (Brazilian shoe sizes like 41, 41.5, or apparel letter sizes like G), brand (lowercase slug, e.g. nike, newbalance), gender (masculino, feminino, unissex), and seller — narrow results before they come back. The response includes total_results, total_pages, has_more, and a filters array of available facets with label, value, facet slug, count, and selected state, which you can feed back into subsequent requests via the filters parameter to chain refinements.
Product Detail Records
get_product_details takes a product_id exactly as returned in search_products results (a model+color identifier such as 9976EA31) and returns a single colorway record. The sizes array covers every Brazilian size offered for that color, with fields for size, size_code, sku, ean, in_stock, is_available, is_marketplace, seller_name, seller_code, and the three price points — card price, Pix price, and original (list) price — all in BRL. The colors array lists alternate colorways with their own product_id values, letting you traverse the full color range without a new search.
Coverage and Data Shape
Response fields include brand, group (e.g. Calçados), gender, color (in Portuguese), tags for promotional labels, and images with high-resolution URLs. The applied_filters field echoes the facet pairs actually sent, which is useful for debugging multi-filter queries. Pagination is 1-based via the page parameter, and sort mirrors the site's sort menu options.
The Centauro API is a managed, monitored endpoint for centauro.com.br — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when centauro.com.br 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 centauro.com.br 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 card vs. Pix vs. original price differences across Nike and Adidas footwear on Centauro
- Monitor per-size stock availability for specific shoe models to alert when a size comes back in stock
- Build a size-availability aggregator by querying multiple brands with the
sizefacet filter - Compare seller prices for the same product across Centauro and marketplace sellers using
is_marketplaceandseller_namefields - Index Centauro's catalog by gender and product group for a Brazilian sports gear discovery app
- Extract EAN codes from the
sizesarray to cross-reference products against other Brazilian retailers - Enumerate all colorways of a product model by traversing the
colorsarray returned by get_product_details
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Centauro offer an official public developer API?+
What price fields does get_product_details return, and are they per-size?+
sizes array. Each size entry carries a card price (the current promoted price), a Pix price, and an original price, all in BRL. This means the same product colorway can have different effective prices depending on which seller fulfils a given size, reflected in the is_marketplace and seller_name fields on each size row.How do facet filters work across multiple search calls?+
search_products response includes a filters array of available facets for that result set, with each value carrying a facet slug. You can pass those slugs back as comma-separated attribute:value pairs in the filters parameter on a follow-up request to stack refinements. The applied_filters field in the response echoes what was actually applied, so you can verify the filter round-trip.Does the API include customer reviews or ratings for products?+
Is product data limited to items sold directly by Centauro, or does it include marketplace sellers?+
seller filter parameter accepts centauro for first-party listings or marketplace seller slugs to isolate third-party offers. At the size level in get_product_details, the is_marketplace boolean and seller_name field identify which seller fulfils each size, so a single colorway can mix first-party and marketplace stock across its size run.