{
  "openapi": "3.0.1",
  "info": {
    "title": "OLX Brasil Scraper - New Ads & Price Drop Monitor",
    "description": "For car dealers, resellers, property brokers and deal-alert bots: turn on monitor mode and schedule it → get only new OLX Brasil ads and price drops, with the old price. Cars, motos, imóveis, phones and more by keyword, state, price and seller type. BRL price, city, bairro, photos. JSON, CSV, Excel.",
    "version": "0.1",
    "x-build-id": "eAEyccCYhZ5XJWYUQ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neverempty~olx-brasil-new-ads-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neverempty-olx-brasil-new-ads-monitor",
        "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/neverempty~olx-brasil-new-ads-monitor/runs": {
      "post": {
        "operationId": "runs-sync-neverempty-olx-brasil-new-ads-monitor",
        "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/neverempty~olx-brasil-new-ads-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-neverempty-olx-brasil-new-ads-monitor",
        "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": {
          "monitorMode": {
            "title": "Monitor mode: only new ads and price drops",
            "type": "boolean",
            "description": "Turn on monitor mode and schedule it → get only new ads and price drops. Each run returns only ads that are new since the last run, ads whose price changed (with the previous price) and, on short lists read to the end, ads taken down. The first run returns the current ads as the starting point."
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Optional. Words as you would type them in the OLX search box, for example iphone 13, hilux, apartamento 2 quartos, bicicleta aro 29. Each keyword is its own search. Empty = every ad of the category and place below.",
            "items": {
              "type": "string"
            }
          },
          "category": {
            "title": "Category",
            "enum": [
              "all",
              "cars",
              "motorcycles",
              "vehicle-parts",
              "vehicles-all",
              "property-sale",
              "property-rent",
              "apartments-sale",
              "houses-sale",
              "apartments-rent",
              "houses-rent",
              "land",
              "property-all",
              "phones",
              "electronics-and-phones",
              "computers",
              "video-games",
              "appliances",
              "furniture",
              "home-and-garden",
              "bicycles",
              "sports-and-leisure",
              "fashion-and-beauty",
              "pets",
              "agro-and-industry",
              "kids-items",
              "music-and-hobbies",
              "building-materials"
            ],
            "type": "string",
            "description": "The OLX category to search. Empty = all categories. With every search field empty the run searches cars in São Paulo (SP) as an example."
          },
          "state": {
            "title": "State",
            "enum": [
              "AC",
              "AL",
              "AP",
              "AM",
              "BA",
              "CE",
              "DF",
              "ES",
              "GO",
              "MA",
              "MT",
              "MS",
              "MG",
              "PA",
              "PB",
              "PR",
              "PE",
              "PI",
              "RJ",
              "RN",
              "RS",
              "RO",
              "RR",
              "SC",
              "SP",
              "SE",
              "TO"
            ],
            "type": "string",
            "description": "The state (estado) to search. Empty = all of Brazil."
          },
          "region": {
            "title": "Region",
            "type": "string",
            "description": "Optional. An OLX region inside the state, written as in OLX addresses, for example sao-paulo-e-regiao, grande-campinas, rio-de-janeiro-e-regiao, belo-horizonte-e-regiao. Needs the state. For a city or neighbourhood, open it on OLX and paste the address in Search URLs."
          },
          "minPrice": {
            "title": "Minimum price (R$)",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Lowest price in Brazilian reais (BRL), applied by OLX the same way as its own price filter."
          },
          "maxPrice": {
            "title": "Maximum price (R$)",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Highest price in Brazilian reais (BRL)."
          },
          "sellerType": {
            "title": "Seller",
            "enum": [
              "all",
              "private",
              "business"
            ],
            "type": "string",
            "description": "Optional. Only ads from private sellers or only from businesses, the same as the OLX filter. Empty = all."
          },
          "searchUrls": {
            "title": "OLX search URLs",
            "type": "array",
            "description": "Optional. Paste the address of any OLX Brasil search page with your filters set, for example https://www.olx.com.br/autos-e-pecas/carros-vans-e-utilitarios/estado-sp. Each one is its own search, always newest first.",
            "items": {
              "type": "string"
            }
          },
          "maxResultsPerSearch": {
            "title": "Max ads per search",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "How many of the newest ads to read per search (1 to 5000; OLX shows one search up to 5000 ads). Empty = 100. In monitor mode this is the window checked for new ads and price changes on each run."
          },
          "includePriceDrops": {
            "title": "Return price drops",
            "type": "boolean",
            "description": "In monitor mode, return ads you already received whose price went down, with the previous price. Empty = yes."
          },
          "includePriceIncreases": {
            "title": "Return price increases",
            "type": "boolean",
            "description": "In monitor mode, also return ads you already received whose price went up. Empty = no."
          },
          "minPriceChangePercent": {
            "title": "Smallest price change (%)",
            "minimum": 0,
            "maximum": 90,
            "type": "number",
            "description": "Optional. In monitor mode, ignore price changes smaller than this percentage (0 to 90). Empty = every change."
          },
          "includeRemoved": {
            "title": "Return removed ads",
            "type": "boolean",
            "description": "In monitor mode, return ads you already received that are gone from the list on two checks in a row. Only for searches whose whole list fits in the window, so nothing is called removed just because newer ads pushed it out. Empty = yes."
          },
          "includeUnchanged": {
            "title": "Also return unchanged ads",
            "type": "boolean",
            "description": "In monitor mode, also return ads already received that did not change (each one is charged). Empty = no."
          },
          "watchName": {
            "title": "Watch name",
            "type": "string",
            "description": "Optional. Give each schedule its own name (letters, digits, dot, dash, underscore) so separate schedules keep separate memories. Empty = default."
          },
          "resetMonitoringState": {
            "title": "Start this watch again",
            "type": "boolean",
            "description": "Forget what this watch remembered, so this run is a first check again."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}