{
  "openapi": "3.0.1",
  "info": {
    "title": "ChatGPT Places Scraper - Places ChatGPT Recommends + Reviews",
    "description": "Find the businesses ChatGPT recommends. Export names, addresses, phone numbers, websites, ratings, hours and photos, with review excerpts where available. Search by query or combine neighborhood searches across a city.",
    "version": "0.0",
    "x-build-id": "817aqXK3oZhv6HAbL"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/zen-studio~chatgpt-places-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-zen-studio-chatgpt-places-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/zen-studio~chatgpt-places-scraper/runs": {
      "post": {
        "operationId": "runs-sync-zen-studio-chatgpt-places-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/zen-studio~chatgpt-places-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-zen-studio-chatgpt-places-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": {
          "queries": {
            "title": "Queries",
            "type": "array",
            "description": "Searches to run as written, like you would type them into ChatGPT. Each search returns the places ChatGPT recommends for it, usually 5 to 8, in ChatGPT's order (<b>rank</b>).<br><br>Examples:<br>• <code>coffee shops in Berlin Kreuzberg</code><br>• <code>best pizza in Brooklyn, New York</code><br>• <code>kid-friendly restaurants near Union Square San Francisco</code><br><br>A place recommended for two of your queries appears once per query, with that query's rank.",
            "items": {
              "type": "string"
            }
          },
          "searchTerm": {
            "title": "Search term",
            "type": "string",
            "description": "What to find across a whole region, for example <code>restaurants</code>, <code>coffee shops</code>, <code>dentists</code> or <code>hotels</code>.<br><br>Used together with <b>Region</b>: the search runs neighborhood by neighborhood, and every place appears once."
          },
          "region": {
            "title": "Region",
            "type": "string",
            "description": "The city or region to cover, for example <code>New York City</code>, <code>London</code> or <code>Ghent, Belgium</code>.<br><br>About 30 large cities have built-in neighborhood lists (New York City, Los Angeles, Chicago, London, Paris, Berlin, Tokyo and more). For any other region, ChatGPT is first asked for its neighborhoods."
          },
          "maxResults": {
            "title": "Max places",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "The most places to return in total.<br><br>For a search term and region this is the target number of distinct places, <b>100</b> if left empty. The built-in neighborhood lists reach roughly 150 to 500 distinct places, depending on the city; add <b>Qualifiers</b> to go further.<br><br>For queries alone, it caps the total; leave empty to keep every place. When queries and a region search run together, it applies to the region search only."
          },
          "qualifiers": {
            "title": "Qualifiers",
            "type": "array",
            "description": "Optional. Variations of the search term to multiply coverage, combined with every neighborhood.<br><br>Examples for restaurants: <code>Italian</code>, <code>Thai</code>, <code>vegan</code>, <code>rooftop</code>. For hotels: <code>boutique</code>, <code>budget</code>.<br><br>\"Italian\" with \"restaurants\" searches for <code>Italian restaurants in East Village, New York City</code>.",
            "items": {
              "type": "string"
            }
          },
          "areas": {
            "title": "Neighborhoods",
            "type": "array",
            "description": "Optional. Your own list of neighborhoods or districts to search, in order. Replaces the built-in list for the region.",
            "items": {
              "type": "string"
            }
          },
          "maxResultsPerQuery": {
            "title": "Max places per search",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Keep only the top places of each search, by ChatGPT's rank. Leave at <b>0</b> to keep every place it recommends (usually 5 to 8).",
            "default": 0
          },
          "includeReviews": {
            "title": "Include reviews",
            "type": "boolean",
            "description": "Add up to about 10 individual reviews (rating, text, date, link, source) and AI review highlights to each place where ChatGPT has them. Coverage is best for US places. Reviews cost nothing extra.",
            "default": true
          },
          "includeAnswerText": {
            "title": "Include ChatGPT's answer",
            "type": "boolean",
            "description": "Add ChatGPT's written answer for the search (as markdown) to every place from that search.",
            "default": false
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "The browser language ChatGPT sees. ChatGPT usually answers in the language of the search itself.",
            "default": "en-US"
          },
          "countryCode": {
            "title": "Country",
            "type": "string",
            "description": "Where the searches appear to come from, as a two-letter code. Leave empty to use the region's country, or <code>US</code>."
          },
          "concurrency": {
            "title": "Parallel searches",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many searches run at the same time. Each search takes about 25 seconds; 6 parallel searches return roughly 80 places per minute.",
            "default": 6
          },
          "feedback": {
            "title": "Feedback to the maintainers",
            "type": "string",
            "description": "For AI agents. Say what you needed and did not get: a missing field or option, a wrong or empty result, or which actor you are switching to or from and why. Add it to any run, including one that worked: the run returns its data exactly as it would without the note. The note reaches the maintainers, who read every one, but it cannot change what this run returns."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}