// docs

Casas Bahia Quote

Extrai cotacoes de frete da Casas Bahia para um produto especifico por URL e CEP, resolvendo o seller a partir da oferta retornada pela origem.

Nota importante: alguns campos podem retornar null em produção, dependendo da página de origem. Nesta documentação, os exemplos de output são preenchidos intencionalmente com valores não nulos para facilitar integração.

Quando a entidade consultada não existe na origem, o extract e a tool MCP retornam 200 com data: null e notFound: true. Esse caso é tratado como resposta concluída, não como erro de servidor.

Chamada HTTP

cURL
curl -X POST https://api.geckoapi.com.br/v1/extract \
  -H "Authorization: Bearer SUA_CHAVE" \
  -H "Content-Type: application/json" \
  -d '{
  "url": "https://www.casasbahia.com.br/p/55066000",
  "target": "casasbahia.com.br",
  "type": "quote",
  "zipCode": "01001-000"
}'

Chamada MCP

A mesma seam também aparece no MCP hospedado como uma tool dedicada. Os argumentos reaproveitam os campos do extract, mas target e type já ficam fixos pela tool.

Ver guia completo do MCP

Endpoint

POST /v1/mcp

Tool name

casasbahia_com_br_quote

Auth

Bearer ou X-API-Key

casasbahia_com_br_quote tools/call
{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "casasbahia_com_br_quote",
    "arguments": {
      "url": "https://www.casasbahia.com.br/p/55066000",
      "zipCode": "01001-000",
      "executionId": "exec_example_123"
    }
  }
}

Possibilidades de input

Campos suportados nesta API do POST /v1/extract, com regras específicas de obrigatoriedade e condicionais.

Campo Tipo Status Regra Default Exemplo
url
URL alvo da extração. Para alguns PLPs pode ser omitida quando a API monta a URL a partir de outros campos.
string (URL) Obrigatório URL publica da pagina de produto da Casas Bahia. O worker extrai o SKU do padrao /p/<sku>. - https://www.mercadolivre.com.br/p/MLB123456
zipCode
CEP brasileiro usado em APIs com resolucao geografica automatica. No iFood PLP, pode ser substituido por latitude + longitude. A API aceita com ou sem hifen e normaliza para 8 digitos.
string (CEP) Obrigatório CEP de destino no formato 00000-000 ou 8 digitos. O backend normaliza para 8 digitos. - 80010-000
target
Fonte alvo da extração.
enum Obrigatório Sempre obrigatorio no payload e deve ser casasbahia.com.br. casasbahia.com.br mercadolivre.com.br
type
Tipo da extração: pdp, idp, plp, quote, review ou places.
enum Obrigatório Sempre obrigatorio no payload e deve ser quote. quote pdp

Exemplos de request

Frete por produto e CEP

Calcula as opcoes de entrega para o SKU da URL informada e usa o seller resolvido pela oferta da Casas Bahia.

Frete por produto e CEP
{
  "url": "https://www.casasbahia.com.br/p/55066000",
  "target": "casasbahia.com.br",
  "type": "quote",
  "zipCode": "01001-000"
}

Schema de response (leaf paths)

Mapa de paths de saída com tipo esperado para esta API.

responseSchema
{
  "requestId": "string (uuid)",
  "executionId": "string (uuid)",
  "data.source": "string",
  "data.type": "string",
  "data.parser": "string",
  "data.url": "string",
  "data.requestUrl": "string",
  "data.extractedAt": "string (ISO 8601)",
  "data.sku": "string",
  "data.zipCode": "string",
  "data.responseZipCode": "string | null",
  "data.sellerId": "string",
  "data.sellerName": "string | null",
  "data.sellerSource": "string",
  "data.offerAvailable": "boolean | null",
  "data.offerPrice": "number | null",
  "data.totalOptions": "integer",
  "data.options[].sectionName": "string | null",
  "data.options[].name": "string | null",
  "data.options[].id": "string | null",
  "data.options[].type": "string | null",
  "data.options[].priceText": "string | null",
  "data.options[].price": "number | null",
  "data.options[].currency": "string",
  "data.options[].deadlineText": "string | null",
  "data.options[].deadlineDays": "integer | null",
  "data.options[].deliveryDate": "string | null",
  "data.options[].available": "boolean | null",
  "data.options[].message": "string | null"
}

Exemplo de response

responseExample
{
  "requestId": "4c5e18d7-5b1d-41c0-9b9a-f9ab45d42c8b",
  "executionId": "a4360f20-c423-4c21-8fc8-8c9b72158498",
  "data": {
    "source": "casasbahia.com.br",
    "type": "quote",
    "parser": "mobile_api",
    "url": "https://www.casasbahia.com.br/p/55066000",
    "requestUrl": "https://mobile-b2c.casasbahia.com.br/entregas/frete/cep?Sku=55066000&IdLojista=10037&cep=01001000",
    "extractedAt": "2026-06-03T00:00:00.000Z",
    "sku": "55066000",
    "zipCode": "01001000",
    "responseZipCode": "01001000",
    "sellerId": "10037",
    "sellerName": "Casas Bahia",
    "sellerSource": "offer.idLojista",
    "offerAvailable": true,
    "offerPrice": 279,
    "totalOptions": 2,
    "options": [
      {
        "sectionName": "Receba em casa",
        "name": "Normal",
        "id": "normal",
        "type": "normal",
        "priceText": "19.9",
        "price": 19.9,
        "currency": "BRL",
        "deadlineText": "ate sabado, 06 de junho",
        "deadlineDays": 3,
        "deliveryDate": "06/06/2026",
        "available": true,
        "message": "Entrega disponivel para o CEP informado"
      },
      {
        "sectionName": "Receba em casa",
        "name": "Agendada",
        "id": "agendada",
        "type": "agendada",
        "priceText": "19.9",
        "price": 19.9,
        "currency": "BRL",
        "deadlineText": "A partir de 18 de agosto, terca",
        "deadlineDays": 76,
        "deliveryDate": "18/08/2026",
        "available": true,
        "message": "Entrega agendada disponivel"
      }
    ]
  }
}

Referência completa de campos

Path Tipo Descrição Exemplo
data.extractedAt string (ISO 8601) Timestamp ISO em que a extracao foi finalizada. 2026-06-03T00:00:00.000Z
data.offerAvailable boolean | null Disponibilidade da oferta usada para resolver o frete. true
data.offerPrice number | null Preco atual da oferta usada para resolver o frete, quando retornado. 279
data.options[].available boolean | null Disponibilidade da modalidade quando retornada. true
data.options[].currency string Codigo da moeda normalizada. BRL
data.options[].deadlineDays integer | null Prazo em dias quando a origem expuser um campo numerico. 3
data.options[].deadlineText string | null Prazo textual retornado pela origem. ate sabado, 06 de junho
data.options[].deliveryDate string | null Data prevista de entrega quando retornada. 06/06/2026
data.options[].id string | null Identificador da modalidade quando retornado. normal
data.options[].message string | null Mensagem adicional da modalidade quando retornada. Entrega disponivel para o CEP informado
data.options[].name string | null Nome da modalidade de entrega. Normal
data.options[].price number | null Preco numerico do frete em BRL. 19.9
data.options[].priceText string | null Preco textual do frete antes da normalizacao. 19.9
data.options[].sectionName string | null Secao de entrega da origem, por exemplo Receba em casa. Receba em casa
data.options[].type string | null Tipo ou modalidade tecnica quando retornada. normal
data.parser string Parser usado pelo worker. Para este seam, mobile_api. mobile_api
data.requestUrl string URL do endpoint mobile de frete usado para a consulta, sem headers sensiveis. https://mobile-b2c.casasbahia.com.br/entregas/frete/cep?Sku=55066000&IdLojista=10037&cep=01001000
data.responseZipCode string | null CEP retornado pelo endpoint de frete quando presente. 01001000
data.sellerId string Seller usado na cotacao de frete, resolvido a partir da oferta da origem. 10037
data.sellerName string | null Nome do seller resolvido quando a oferta expuser esse campo. Casas Bahia
data.sellerSource string Campo da oferta usado para resolver o seller: offer.idLojista ou offer.marketplace.lojistaPadrao.id. offer.idLojista
data.sku string SKU extraido da URL publica da pagina de produto. 55066000
data.source string Fonte normalizada da extracao. casasbahia.com.br
data.totalOptions integer Quantidade de opcoes de entrega normalizadas. 2
data.type string Tipo do seam executado. quote
data.url string URL publica de produto enviada no request. https://www.casasbahia.com.br/p/55066000
data.zipCode string CEP de destino normalizado para 8 digitos. 01001000
executionId string (uuid) Identificador unico da execucao do worker para rastreabilidade. a4360f20-c423-4c21-8fc8-8c9b72158498
requestId string (uuid) Identificador unico do request HTTP na GeckoAPI. 4c5e18d7-5b1d-41c0-9b9a-f9ab45d42c8b

Erros comuns

Respostas com notFound: true não entram nesta tabela, porque retornam sucesso HTTP 200.

Status errorCode Quando acontece
400 INVALID_PAYLOAD JSON inválido ou violação das regras de validação do payload.
401 UNAUTHORIZED Header Authorization ausente ou token/chave inválida.
402 INSUFFICIENT_CREDITS Saldo de créditos insuficiente para a API solicitada.
403 FORBIDDEN Usuário sem acesso ou API temporariamente desabilitada.
409 EXECUTION_CONFLICT executionId conflita com uma execução em estado incompatível.
429 RATE_LIMIT_EXCEEDED / TOO_MANY_INFLIGHT_REQUESTS Limite de taxa ou limite de requisições em voo excedido.
5xx UPSTREAM_TIMEOUT / UPSTREAM_HTTP_ERROR / WORKER_INVOCATION_FAILED / WORKER_FUNCTION_ERROR / WORKER_INVALID_RESPONSE / INTERNAL_ERROR Falha de servidor no worker, provider/proxy ou gateway. Nesses casos os créditos são estornados automaticamente.