{
  "openapi": "3.0.1",
  "info": {
    "title": "Chotot.com Scraper: Chợ Tốt Vietnam (search, filters, alerts)",
    "description": "Chotot.com scraper for Chợ Tốt (Cho Tot), Vietnam's largest classifieds: search by keyword, category, region and price. Flat rows with VND price, category, city, district, ward, coordinates, seller type, photos and attributes (brand, model, mileage). Monitor mode alerts on new ads and price cuts.",
    "version": "0.1",
    "x-build-id": "u1FoxMsXrOuYpjtAJ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/datahamster~chotot-vn-listings/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-datahamster-chotot-vn-listings",
        "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/datahamster~chotot-vn-listings/runs": {
      "post": {
        "operationId": "runs-sync-datahamster-chotot-vn-listings",
        "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/datahamster~chotot-vn-listings/run-sync": {
      "post": {
        "operationId": "run-sync-datahamster-chotot-vn-listings",
        "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": {
          "queries": {
            "title": "Search queries",
            "type": "array",
            "description": "Keywords to search, Vietnamese or English, one string per phrase, each paginated separately. Example: [\"iphone\", \"xe may\"]. Leave empty only if you pass categoryId.",
            "default": [
              "iphone"
            ],
            "items": {
              "type": "string"
            }
          },
          "categoryId": {
            "title": "Category id",
            "minimum": 1,
            "type": "integer",
            "description": "Chợ Tốt category id (the cg parameter on chotot.com). Examples: 1000 real estate, 2000 vehicles, 2010 cars, 2020 motorbikes, 5000 electronics, 5010 phones, 8000 jobs. Optional."
          },
          "regionId": {
            "title": "Region id",
            "minimum": 1,
            "type": "integer",
            "description": "Chợ Tốt region_v2 id. Examples: 13000 (Tp Ho Chi Minh), 12000 (Ha Noi), 3000 (Da Nang). Optional."
          },
          "priceFrom": {
            "title": "Min price (VND)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum price in Vietnamese dong (VND), whole number. Example: 5000000 for 5 million VND. Optional."
          },
          "priceTo": {
            "title": "Max price (VND)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum price in Vietnamese dong (VND), whole number. Example: 20000000. Optional."
          },
          "adType": {
            "title": "Ad type",
            "enum": [
              "s",
              "k",
              "all"
            ],
            "type": "string",
            "description": "Listing type: s = for sale (can ban), k = wanted (can mua), all = both. Example: \"s\".",
            "default": "s"
          },
          "sortBy": {
            "title": "Sort",
            "enum": [
              "newest",
              "relevance",
              "price_asc",
              "price_desc"
            ],
            "type": "string",
            "description": "Result order: newest (newest first), relevance, price_asc (cheapest first), price_desc. Example: \"newest\".",
            "default": "newest"
          },
          "maxPages": {
            "title": "Pages per query",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "How many result pages to fetch per query, 50 listings per page. Example: 4.",
            "default": 4
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "type": "integer",
            "description": "Stop the run after this many listings; you are charged only for listings actually pushed. Example: 20.",
            "default": 20
          },
          "mode": {
            "title": "Mode",
            "enum": [
              "scrape",
              "monitor"
            ],
            "type": "string",
            "description": "scrape = return all matching listings; monitor = return only listings that are new or changed price since the previous run of this saved Task. Example: \"scrape\".",
            "default": "scrape"
          },
          "monitorKey": {
            "title": "Monitor key",
            "type": "string",
            "description": "Optional state key for monitor mode when the actor is started directly instead of from a saved Task; any stable string, e.g. \"iphone-hcm\"."
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "Optional HTTPS URL that receives a POST with the monitor-mode change summary (JSON). Example: \"https://hooks.example.com/chotot\"."
          },
          "telegramBotToken": {
            "title": "Telegram bot token",
            "type": "string",
            "description": "Optional Telegram bot token used to send monitor-mode change summaries. Format: \"123456789:AA...\"."
          },
          "telegramChatId": {
            "title": "Telegram chat id",
            "type": "string",
            "description": "Optional Telegram chat id that receives monitor-mode summaries. Example: \"-1001234567890\"."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}