{
  "openapi": "3.0.1",
  "info": {
    "title": "Reclame AQUI Scraper",
    "description": "Scrape Reclame AQUI complaints and company reputation: full complaint text, status, consumer score and evaluation, the company's reply, city and state. Filter by status, date, category, problem or text, go past the 500-complaint limit, or monitor new complaints.",
    "version": "1.0",
    "x-build-id": "ASDREJt4OuH43Iqnf"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/trev0n~reclameaqui-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-trev0n-reclameaqui-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/trev0n~reclameaqui-scraper/runs": {
      "post": {
        "operationId": "runs-sync-trev0n-reclameaqui-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/trev0n~reclameaqui-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-trev0n-reclameaqui-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",
        "properties": {
          "mode": {
            "title": "What to scrape",
            "enum": [
              "complaints",
              "companies"
            ],
            "type": "string",
            "description": "Complaints returns one record per complaint. Company profiles returns one record per company with its Reclame AQUI reputation for every period, answer and solve rates, response time and what customers complain about most.",
            "default": "complaints"
          },
          "companies": {
            "title": "Companies",
            "type": "array",
            "description": "Company names as you would type them on Reclame AQUI (\"Nubank\", \"Magazine Luiza\"), their Reclame AQUI short names (\"magazine-luiza-loja-online\"), or links to their pages. A link to a filtered complaint list keeps its filters.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Reclame AQUI links",
            "type": "array",
            "description": "Company pages (/empresa/{company}/), complaint lists with filters, or single complaint pages. Same as \"Companies\", kept for links you already have.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxResultsPerCompany": {
            "title": "Max complaints per company",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many complaints for each company. 0 = everything the filters match (big companies have hundreds of thousands).",
            "default": 100
          },
          "status": {
            "title": "Status",
            "enum": [
              "all",
              "unanswered",
              "answered",
              "evaluated",
              "solved",
              "unsolved"
            ],
            "type": "string",
            "description": "The same tabs as on the company's complaint list.",
            "default": "all"
          },
          "dateFrom": {
            "title": "Only complaints since",
            "type": "string",
            "description": "A date (2026-01-31) or a window (\"7 days\", \"3 months\"). Complaints are read newest first, so a recent date makes runs short.",
            "default": ""
          },
          "searchTerm": {
            "title": "Text search",
            "type": "string",
            "description": "Only complaints that mention this text, e.g. \"pix\", \"estorno\", \"entrega\". Results come in relevance order.",
            "default": ""
          },
          "category": {
            "title": "Category",
            "type": "string",
            "description": "Category name as shown on the company's complaint list (\"Cartões de Crédito\", \"Bancos\"). Accents and case do not matter.",
            "default": ""
          },
          "problem": {
            "title": "Problem type",
            "type": "string",
            "description": "Problem name (\"Cobrança indevida\", \"Atraso na entrega\", \"Estorno do valor pago\").",
            "default": ""
          },
          "product": {
            "title": "Product",
            "type": "string",
            "description": "Product or service name (\"Cartão de crédito\", \"Conta\").",
            "default": ""
          },
          "splitLargeQueries": {
            "title": "Go past the 500-complaint limit",
            "type": "boolean",
            "description": "Reclame AQUI shows at most 500 complaints per list. When you ask for more, the scraper splits the list by category, problem and product to reach the rest.",
            "default": true
          },
          "includeCompanyReplies": {
            "title": "Add the company's replies",
            "type": "boolean",
            "description": "Opens every complaint page to add the full conversation: the company's reply, the consumer's answers and final comment. One extra page per complaint.",
            "default": false
          },
          "addCompanyReputation": {
            "title": "Add company reputation to each complaint",
            "type": "boolean",
            "description": "Adds the company's current reputation, score, solved % and answered % to every complaint. No extra cost.",
            "default": false
          },
          "descriptionFormat": {
            "title": "Text format",
            "enum": [
              "text",
              "html"
            ],
            "type": "string",
            "description": "How complaint texts and replies are written.",
            "default": "text"
          },
          "compact": {
            "title": "Compact output",
            "type": "boolean",
            "description": "Twelve essential fields per complaint instead of the full record.",
            "default": false
          },
          "excludeEmptyFields": {
            "title": "Skip empty fields",
            "type": "boolean",
            "description": "Leave out fields with no value.",
            "default": false
          },
          "incrementalMode": {
            "title": "Incremental monitoring",
            "type": "boolean",
            "description": "Remember what previous runs saw and emit only new complaints and complaints whose status changed (the company answered, the consumer evaluated). The first run stores a baseline; you pay only for what is emitted.",
            "default": false
          },
          "stateKey": {
            "title": "Monitoring state key",
            "type": "string",
            "description": "Name the baseline this run compares against. Leave empty to derive one from the companies and filters.",
            "default": ""
          },
          "emitUnchanged": {
            "title": "Also emit unchanged complaints",
            "type": "boolean",
            "description": "Emit every complaint, tagged NEW / UPDATED / UNCHANGED.",
            "default": false
          },
          "emitExpired": {
            "title": "Also emit complaints no longer seen",
            "type": "boolean",
            "description": "Emit complaints from the baseline that this run did not see (deleted, or fell outside the filters / limit).",
            "default": false
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "POSTs the run summary and emitted complaints as JSON.",
            "default": ""
          },
          "telegramBotToken": {
            "title": "Telegram bot token",
            "type": "string",
            "description": "Bot token from @BotFather. Stored encrypted."
          },
          "telegramChatId": {
            "title": "Telegram chat ID",
            "type": "string",
            "description": "Chat or channel that receives the message.",
            "default": ""
          },
          "discordWebhookUrl": {
            "title": "Discord webhook URL",
            "type": "string",
            "description": "Discord channel webhook.",
            "default": ""
          },
          "slackWebhookUrl": {
            "title": "Slack webhook URL",
            "type": "string",
            "description": "Slack incoming webhook.",
            "default": ""
          },
          "notifyOnlyChanges": {
            "title": "Notify only when something changed",
            "type": "boolean",
            "description": "Skip the message when a monitoring run found nothing new.",
            "default": true
          },
          "notificationLimit": {
            "title": "Complaints per message",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many complaints are listed in one notification.",
            "default": 10
          },
          "includeRunSummary": {
            "title": "Include run summary in the webhook",
            "type": "boolean",
            "description": "Adds the counts of new, updated and unchanged complaints to the webhook payload.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Companies in parallel",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "How many companies are read at the same time.",
            "default": 3
          },
          "detailConcurrency": {
            "title": "Complaint pages in parallel",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Used with \"Add the company's replies\".",
            "default": 3
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "No proxy is the default — the fastest and cheapest setting (measured: 300 complaints with replies for $0.002). Do not pick Apify's datacenter proxies: Reclame AQUI refuses most of their requests. If Reclame AQUI starts refusing requests, the run switches to residential proxies by itself (see below).",
            "default": {
              "useApifyProxy": false
            }
          },
          "proxyFallback": {
            "title": "Switch to residential proxies when blocked",
            "type": "boolean",
            "description": "After a few refused requests the rest of the run continues through Brazilian residential proxies instead of losing results.",
            "default": true
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}