{
  "openapi": "3.0.1",
  "info": {
    "title": "Place Review Aggregator",
    "description": "Aggregate reviews for cafés, restaurants, shops, hotels and attractions from Google Maps, Yelp and Tripadvisor, plus Facebook recommendations and Swarm tips. Match one place across sources and export JSON or CSV with coverage notes.",
    "version": "0.0",
    "x-build-id": "JwLkmfMbAyreQOQwN"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/zen-studio~place-review-aggregator/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-zen-studio-place-review-aggregator",
        "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/zen-studio~place-review-aggregator/runs": {
      "post": {
        "operationId": "runs-sync-zen-studio-place-review-aggregator",
        "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/zen-studio~place-review-aggregator/run-sync": {
      "post": {
        "operationId": "run-sync-zen-studio-place-review-aggregator",
        "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": {
          "query": {
            "title": "Place name or link",
            "type": "string",
            "description": "Enter one place name, such as a café, restaurant, shop, hotel or attraction, or a full Google Maps, Yelp, Tripadvisor, Swarm, Foursquare or Facebook Page link. For a name, also enter its location below. Leave this empty if you provide an exact identity in the Exact matching section."
          },
          "location": {
            "title": "City or full address",
            "type": "string",
            "description": "Enter a city or street address when searching by name. A full address helps select the correct branch. This is optional for an exact link or ID; if supplied, it must agree with that place."
          },
          "maxReviews": {
            "title": "Maximum reviews across all sources",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Set the <b>total review limit for this place</b>, shared across matched sources. For example, 100 means up to 100 reviews combined. Fewer may be returned when reviews are unavailable or collection limits are reached. The actor first shares the limit across matched sources, then makes a bounded attempt to fill unused capacity from sources with more reviews. Repeated reviews are not charged twice. Swarm is limited to 1,000 tips. Facebook is capped at 1,000 recommendations and usually returns a much smaller public subset. Free-plan previews return up to 20 reviews per run, for five lifetime runs.",
            "default": 100
          },
          "sources": {
            "title": "Review sources",
            "minItems": 1,
            "maxItems": 5,
            "uniqueItems": true,
            "type": "array",
            "description": "Choose at least one source. Only selected sources contribute reviews. Facebook requires an exact Page URL and returns a limited public subset of recommendations, without star ratings. Swarm returns written tips without individual stars.",
            "items": {
              "type": "string",
              "enum": [
                "google",
                "yelp",
                "tripadvisor",
                "swarm",
                "facebook"
              ],
              "enumTitles": [
                "Google Maps",
                "Yelp",
                "Tripadvisor",
                "Swarm / Foursquare tips (no star ratings)",
                "Facebook Page recommendations (limited coverage)"
              ]
            },
            "default": [
              "google",
              "yelp",
              "tripadvisor"
            ]
          },
          "sort": {
            "title": "Review order",
            "enum": [
              "newest",
              "source_default"
            ],
            "type": "string",
            "description": "Newest uses recent activity on Google, including review edits, and newest on Yelp. Tripadvisor, Swarm and Facebook recency is not verified. Source default uses Google relevance, Yelp newest and the default order of other sources. Reviews are not sorted into one global ranking. The output reports the order and limitations for each source.",
            "default": "newest"
          },
          "sourceUrls": {
            "title": "Exact place links",
            "type": "object",
            "description": "Provide links for the same business when names are ambiguous. A single supported link can stand alone; clear the example name and address if they refer to another place. Links do not change selected review sources. Facebook Page links identify a Page; they are not independent proof of a physical location.",
            "properties": {
              "google": {
                "title": "Google Maps place link",
                "type": "string",
                "editor": "textfield",
                "description": "Use the full place link or a Google Maps share link."
              },
              "yelp": {
                "title": "Yelp business link",
                "type": "string",
                "editor": "textfield",
                "description": "Use the business listing URL containing /biz/."
              },
              "tripadvisor": {
                "title": "Tripadvisor place link",
                "type": "string",
                "editor": "textfield",
                "description": "Use the full hotel, restaurant or attraction listing URL."
              },
              "swarm": {
                "title": "Swarm / Foursquare place link",
                "type": "string",
                "editor": "textfield",
                "description": "Use a venue link, rather than a check-in or user profile link."
              },
              "facebook": {
                "title": "Facebook Page link",
                "type": "string",
                "editor": "textfield",
                "description": "Required when Facebook is selected. Use a Page URL such as https://www.facebook.com/ElementCoffeeUK. Post, group and share links are not supported. A Page may represent several locations; confirm its association below when combining it with a physical place."
              }
            },
            "default": {},
            "additionalProperties": false
          },
          "facebookPageConfirmed": {
            "title": "This Facebook Page represents this business location",
            "type": "boolean",
            "description": "Required only when combining a Facebook Page with a business name/address, another exact place identity or another source. Enable this after checking that the Page represents this specific location, not a brand with multiple locations. The output labels this association as user-confirmed. Leave it off for Facebook-only collection with just a Page link.",
            "default": false
          },
          "googlePlaceId": {
            "title": "Google Place ID",
            "pattern": "^[A-Za-z0-9_-]+$",
            "type": "string",
            "description": "Provide the exact Google Place ID as an alternative to a link. No name or address is required. Clear the example name and address if they refer to another place."
          },
          "countryCode": {
            "title": "Country code",
            "pattern": "^[A-Za-z]{2}$",
            "type": "string",
            "description": "Optionally narrow place matching with a two-letter country code, such as GB or US. This does not filter review languages."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}