{
  "openapi": "3.0.1",
  "info": {
    "title": "Airbnb Review Scraper By Location Search",
    "description": "Airbnb Review Scraper extracts reviews from listings found by location search, including ratings, review text, dates, reviewer details, listing information, and URLs. Ideal for guest sentiment analysis, property research, competitor monitoring, and short-term rental market intelligence.",
    "version": "0.1",
    "x-build-id": "P3UqG9aB0AbbQnO2n"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/simpleapi~airbnb-review-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-simpleapi-airbnb-review-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/simpleapi~airbnb-review-scraper/runs": {
      "post": {
        "operationId": "runs-sync-simpleapi-airbnb-review-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/simpleapi~airbnb-review-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-simpleapi-airbnb-review-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": {
          "locationQuery": {
            "title": "📍 Locations To Search",
            "type": "array",
            "description": "One or more places to look up, for example a city, region or neighbourhood. Each entry is resolved to a real place before any listing is accepted; an entry that is not recognised as a place returns an empty result for that entry instead of unrelated homes.",
            "items": {
              "type": "string"
            }
          },
          "listingUrlsOrIds": {
            "title": "🏠 Listing URLs Or IDs (Optional)",
            "type": "array",
            "description": "Specific Airbnb listings to collect in the same run, as full URLs (https://www.airbnb.com/rooms/12937) or bare listing IDs (12937). Listings named here are always collected and are never removed by the screen below.",
            "items": {
              "type": "string"
            }
          },
          "maxListingsPerQuery": {
            "title": "🔢 Max Listings Per Location",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "How many of the listings published for each location to consider. They are considered in the order the location publishes them."
          },
          "minListingReviews": {
            "title": "📝 Minimum Reviews Per Listing",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "Skip a discovered listing unless it publishes at least this many reviews. Listings whose review count is not published yet are skipped whenever this is above 0."
          },
          "minListingRating": {
            "title": "⭐ Minimum Listing Rating",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Skip a discovered listing whose overall rating is below this value. A listing with no published rating is not removed on this rule alone."
          },
          "emitSkippedListings": {
            "title": "🧾 Report Skipped Listings",
            "type": "boolean",
            "description": "Add a row for every listing the screen removed, with its review count, its rating and the reason it was skipped."
          },
          "reviewsPerDiscoveredListing": {
            "title": "💬 Reviews Per Listing",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum number of reviews to collect from each listing. A listing with fewer published reviews returns all of them."
          },
          "sortOrder": {
            "title": "🔀 Review Order",
            "enum": [
              "MOST_RECENT",
              "RATING_DESC",
              "RATING_ASC",
              "BEST_QUALITY"
            ],
            "type": "string",
            "description": "The order reviews are read in. Newest first, highest rated and lowest rated all read a listing's history without repeating rows. Airbnb's own ranking repeats rows, so part of a long history may not be reachable under it."
          },
          "resultLanguage": {
            "title": "🌍 Review Language & Region",
            "enum": [
              "en-US",
              "az-AZ",
              "id-ID",
              "bs-BA",
              "ca-ES",
              "cs-CZ",
              "sr-ME",
              "da-DK",
              "de-DE",
              "de-AT",
              "de-CH",
              "de-LU",
              "et-EE",
              "en-AU",
              "en-CA",
              "en-GB",
              "en-GY",
              "en-IN",
              "en-IE",
              "en-NZ",
              "en-SG",
              "en-AE",
              "es-AR",
              "es-BZ",
              "es-BO",
              "es-CL",
              "es-CO",
              "es-CR",
              "es-EC",
              "es-SV",
              "es-ES",
              "es-US",
              "es-GT",
              "es-HN",
              "es-419",
              "es-MX",
              "es-NI",
              "es-PA",
              "es-PY",
              "es-PE",
              "es-VE",
              "fr-BE",
              "fr-CA",
              "fr-FR",
              "fr-CH",
              "fr-LU",
              "ga-IE",
              "hr-HR",
              "xh-ZA",
              "zu-ZA"
            ],
            "type": "string",
            "description": "Language used for the localized review fields. The language part of the choice is what changes the result; the region part is kept in the output so you can confirm what was requested."
          },
          "startUrls": {
            "title": "🔗 startUrls (Compatibility)",
            "type": "array",
            "description": "Same as Listing URLs Or IDs. Values from both fields are merged.",
            "items": {
              "type": "string"
            }
          },
          "maxComments": {
            "title": "🔢 maxComments (Compatibility)",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Same as Reviews Per Listing. Used when Reviews Per Listing is left empty."
          },
          "locale": {
            "title": "🗣️ locale (Compatibility)",
            "type": "string",
            "description": "Same as Review Language & Region. Used when that field is left empty."
          },
          "proxyConfiguration": {
            "title": "🌐 Connection",
            "type": "object",
            "description": "Controls how the run connects to the source. The default works for most runs.",
            "properties": {
              "useApifyProxy": {
                "title": "Use Apify Proxy",
                "type": "boolean",
                "description": "Route the run through Apify Proxy."
              },
              "apifyProxyGroups": {
                "title": "Proxy Groups",
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Optional group selection."
              },
              "apifyProxyCountry": {
                "title": "Country",
                "type": "string",
                "description": "Optional ISO-2 country code, for example US, GB or PT."
              }
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}