{
  "openapi": "3.0.1",
  "info": {
    "title": "Casas Bahia Brazil Electronics & Home Goods Scraper",
    "description": "Scrape products from Casas Bahia Brazil by keyword, department, or URL. Filter by brand, price, discount, rating, and instalment terms. Extract SKUs, titles, brands, current and original prices, Pix offers, BRL instalment plans, stock, pickup options, images, variants, specifications, and reviews.",
    "version": "1.0",
    "x-build-id": "eeRaSSZjXtCDwx9LX"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~casasbahia-com-br-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-casasbahia-com-br-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/abotapi~casasbahia-com-br-scraper/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-casasbahia-com-br-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/abotapi~casasbahia-com-br-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-casasbahia-com-br-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "url"
            ],
            "type": "string",
            "description": "Choose 'search' to search the catalogue by keyword and filters, or 'url' to scrape pasted links: product pages, department pages, search result pages and bare product codes are all accepted.",
            "default": "search"
          },
          "queries": {
            "title": "Search keywords",
            "type": "array",
            "description": "Only used when mode = search, ignored in url mode. One or more keywords, for example geladeira (fridge), notebook or smart tv. Leave empty to browse by Department alone.",
            "items": {
              "type": "string"
            }
          },
          "urls": {
            "title": "Store links or product codes",
            "type": "array",
            "description": "Only used when mode = url, ignored in search mode. Mix freely: product pages under /p/<code>, search pages such as /geladeira/b, department pages under /c/..., or a bare product code such as 1558278013.",
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "Department",
            "uniqueItems": true,
            "type": "array",
            "description": "Optional. Keep only products in these store departments. Combine with a keyword, or use on its own to browse a whole department. Selecting several returns products from any of them.",
            "items": {
              "type": "string",
              "enum": [
                "c1",
                "c13",
                "c29",
                "c38",
                "c56",
                "c73",
                "c93",
                "c102",
                "c336",
                "c371",
                "c418",
                "c448",
                "c484",
                "c827",
                "c836",
                "c977",
                "c983",
                "c1017",
                "c1141",
                "c1639",
                "c1732",
                "c1733",
                "c1734",
                "c1813",
                "c1886",
                "c2031",
                "c2042",
                "c2168",
                "c2294",
                "c2339",
                "c2547",
                "c2596",
                "c2701",
                "c2809",
                "c3279",
                "c3285",
                "c3359"
              ],
              "enumTitles": [
                "TV & video",
                "Home appliances",
                "Cameras, camcorders & drones",
                "Phones & mobiles",
                "Computing",
                "Small kitchen appliances",
                "Furniture",
                "Beauty & health",
                "Games",
                "Household goods",
                "Sport & leisure",
                "Footwear",
                "Books",
                "Tools",
                "Automotive",
                "Toys",
                "Baby",
                "Agriculture, industry & trade",
                "Marketplace",
                "Stationery",
                "Bed, bath & table",
                "Watches",
                "Fashion",
                "Luggage & backpacks",
                "Perfume & cosmetics",
                "Tablets",
                "Christmas",
                "Jewellery",
                "Pet shop",
                "Food",
                "Home & building",
                "Drinks",
                "Gift cards",
                "Air & ventilation",
                "Audio",
                "Accessories & innovations",
                "Decor"
              ]
            }
          },
          "brands": {
            "title": "Brand",
            "uniqueItems": true,
            "type": "array",
            "description": "Optional. Keep only products from these brands, written the way the store writes them, for example Consul, Electrolux, Brastemp, Samsung. Names are matched against the store's own brand list for your search, ignoring case and accents. If none of the names you enter exist in that list the run returns nothing rather than silently ignoring the filter.",
            "items": {
              "type": "string"
            }
          },
          "minPrice": {
            "title": "Minimum price (BRL)",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Keep only products priced at or above this amount, in Brazilian reais. Applied by the store itself, so it narrows the result count at the source."
          },
          "maxPrice": {
            "title": "Maximum price (BRL)",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Keep only products priced at or below this amount, in Brazilian reais. Applied by the store itself, so it narrows the result count at the source."
          },
          "minDiscountPercent": {
            "title": "Minimum discount (%)",
            "minimum": 0,
            "maximum": 99,
            "type": "integer",
            "description": "Optional. Keep only products discounted by at least this percentage off their pre-discount price. Applied by the store itself, so it narrows the result count at the source."
          },
          "minRating": {
            "title": "Minimum average rating",
            "enum": [
              "0",
              "1",
              "2",
              "3",
              "4",
              "5"
            ],
            "type": "string",
            "description": "Optional. Keep only products the store rates at this many stars or more. The store groups products into whole-star buckets by their rounded average, and this asks it for every bucket at or above your choice, so a product averaging 3.8 counts as 4 stars. Products with no rating at all are excluded when this is set.",
            "default": "0"
          },
          "minInstallments": {
            "title": "Minimum interest-free-eligible instalments",
            "minimum": 0,
            "maximum": 36,
            "type": "integer",
            "description": "Optional. Keep only products the store will split into at least this many instalments, for example 12 for '12x sem juros'. The store publishes no filter for instalments, so this is applied by this actor after reading each product's payment terms."
          },
          "interestFreeInstallmentsOnly": {
            "title": "Only interest-free instalments",
            "type": "boolean",
            "description": "Optional. Keep only products with at least one interest-free ('sem juros') instalment plan. Combine with Minimum instalments to require, for example, 12x with no interest. Applied by this actor after reading each product's payment terms.",
            "default": false
          },
          "inStockOnly": {
            "title": "Only products that can be ordered",
            "type": "boolean",
            "description": "Optional. Keep only products the store will currently accept an order for. Applied by this actor after reading each product's live availability.",
            "default": false
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "popularity",
              "best_selling",
              "price_asc",
              "price_desc"
            ],
            "type": "string",
            "description": "The order the store returns results in. All five are the store's own orderings.",
            "default": "relevance"
          },
          "fetchDetails": {
            "title": "Fetch product details",
            "type": "boolean",
            "description": "Read each product's own page to add the description, the full specification table, the colour, model and capacity variants with their own addresses, the manufacturer and warranty information, the full image gallery, the pickup-in-store signal and every instalment plan the store offers. Turn off for a faster, cheaper run that returns catalogue and price fields only.",
            "default": true
          },
          "includeReviews": {
            "title": "Include customer reviews",
            "type": "boolean",
            "description": "Add each product's customer reviews: average rating, the per-star breakdown, the share of reviewers who recommend it, the store's own review summary, and the individual reviews (author, date, rating, text and helpful counts). Shopper-uploaded review photos and clips are not returned. Requires Fetch product details and costs no extra request. A product with no reviews returns an empty reviews list.",
            "default": true
          },
          "maxReviewsPerProduct": {
            "title": "Max reviews per product",
            "minimum": 0,
            "type": "integer",
            "description": "Cap on how many individual reviews are returned per product. The average rating, review count and per-star breakdown are always complete regardless of this cap. Use 0 for every review the product page publishes.",
            "default": 20
          },
          "maxItems": {
            "title": "Max products",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of products to return across the whole run. This is the run's cap. Use 0 for unlimited.",
            "default": 20
          },
          "maxPages": {
            "title": "Max result pages per keyword or link",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of result pages read per keyword, department or link. 0 means no limit, which is the default: the run then stops only at Max products, at the end of the results, or when a page returns nothing new.",
            "default": 0
          },
          "resumeFromRunId": {
            "title": "Resume from a previous run",
            "type": "string",
            "description": "Paste a previous run ID or dataset ID to continue a large catalogue pull without returning or charging for products already collected there. Use this after an interrupted run. For recurring daily monitoring of the same search, use Incremental mode below instead."
          },
          "incrementalMode": {
            "title": "Incremental changes for scheduled runs",
            "type": "boolean",
            "description": "Turn this on for daily or recurring monitoring. The first run returns every matching product as NEW. Later runs normally return only NEW, UPDATED and REAPPEARED products, which is how a price cut or a stock change is spotted. Turn on Emit unchanged or Emit expired only when you also want those rows returned (and billed). State is kept separately for each search, filter and detail setup; use State key to name or deliberately share a monitoring campaign. To continue one specific interrupted run instead, use Resume from a previous run above.",
            "default": false
          },
          "stateKey": {
            "title": "State key (optional, incremental mode only)",
            "type": "string",
            "description": "Optional. Name this monitoring campaign to keep its state stable, or to deliberately share state across differently configured runs. Leave empty to let the actor derive a key automatically from the search, filters and detail settings, so different searches never mix state with each other."
          },
          "emitUnchanged": {
            "title": "Emit unchanged products (incremental mode only)",
            "type": "boolean",
            "description": "Off by default. Turn on to also return products that have not changed since the last run, marked UNCHANGED. This returns, and bills, extra rows you already have, so leave it off unless you want the full snapshot every run.",
            "default": false
          },
          "emitExpired": {
            "title": "Emit expired products (incremental mode only)",
            "type": "boolean",
            "description": "Off by default. Turn on to also return products that were present in a previous run but are no longer found, marked EXPIRED. Only produced once a run has fully scanned the tracked search, so never when Max products capped it or when Resume was used. This returns, and bills, extra synthetic rows, so leave it off unless you need expiry tracking.",
            "default": false
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "The standard pool is the default and handles catalogue search, pricing and product pages. This store refuses individual exits from time to time rather than whole pools, and a refused request is retried on a fresh exit automatically. If a run still cannot read any results, switching to the RESIDENTIAL group with country BR usually clears it, at a higher price per gigabyte.",
            "default": {
              "useApifyProxy": true
            }
          },
          "mcpConnectors": {
            "title": "Pipe results into your apps (optional)",
            "type": "array",
            "description": "Optionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify, Settings, API & Integrations, then select it here. Notion gets a rich page-per-item export; other connectors get a best-effort write or digest. Leave empty to skip; never changes the dataset output. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com)."
          },
          "notionParentPageUrl": {
            "title": "Notion parent page (Notion connector only)",
            "type": "string",
            "description": "URL or id of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors."
          },
          "maxNotifyListings": {
            "title": "Max items to export per connector",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap on items written to each connector per run. Does not affect the dataset.",
            "default": 50
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}