{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/google-maps/json-schema/google-maps-places-find-place-from-text-response-schema.json",
  "title": "PlacesFindPlaceFromTextResponse",
  "x-generated": "2026-11-05",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/google-maps-platform-openapi.yml#/components/schemas/PlacesFindPlaceFromTextResponse",
  "type": "object",
  "required": [
    "candidates",
    "status"
  ],
  "properties": {
    "candidates": {
      "description": "Contains an array of Place candidates.\n<div class=\"caution\">Place Search requests return a subset of the fields that are returned by Place Details requests. If the field you want is not returned by Place Search, you can use Place Search to get a place_id, then use that Place ID to make a Place Details request.</div>\n",
      "type": "array",
      "items": {
        "$ref": "#/$defs/Place"
      }
    },
    "status": {
      "description": "Contains the status of the request, and may contain debugging information to help you track down why the request failed.",
      "$ref": "#/$defs/PlacesSearchStatus"
    },
    "error_message": {
      "description": "When the service returns a status code other than `OK<`, there may be an additional `error_message` field within the response object. This field contains more detailed information about thereasons behind the given status code. This field is not always returned, and its content is subject to change.\n",
      "type": "string"
    },
    "info_messages": {
      "description": "When the service returns additional information about the request specification, there may be an additional `info_messages` field within the response object. This field is only returned for successful requests. It may not always be returned, and its content is subject to change.\n",
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "$defs": {
    "AddressComponent": {
      "title": "AddressComponent",
      "type": "object",
      "required": [
        "long_name",
        "short_name",
        "types"
      ],
      "properties": {
        "long_name": {
          "description": "The full text description or name of the address component as returned by the Geocoder.",
          "type": "string"
        },
        "short_name": {
          "description": "An abbreviated textual name for the address component, if available. For example, an address component for the state of Alaska may have a long_name of \"Alaska\" and a short_name of \"AK\" using the 2-letter postal abbreviation.",
          "type": "string"
        },
        "types": {
          "description": "An array indicating the type of the address component. See the list of [supported types](https://developers.google.com/maps/documentation/places/web-service/supported_types).",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "Bounds": {
      "title": "Bounds",
      "type": "object",
      "description": "A rectangle in geographical coordinates from points at the southwest and northeast corners.",
      "required": [
        "northeast",
        "southwest"
      ],
      "properties": {
        "northeast": {
          "$ref": "#/$defs/LatLngLiteral"
        },
        "southwest": {
          "$ref": "#/$defs/LatLngLiteral"
        }
      }
    },
    "Geometry": {
      "type": "object",
      "title": "Geometry",
      "description": "An object describing the location.",
      "required": [
        "location",
        "viewport"
      ],
      "properties": {
        "location": {
          "$ref": "#/$defs/LatLngLiteral"
        },
        "viewport": {
          "$ref": "#/$defs/Bounds"
        }
      }
    },
    "LatLngLiteral": {
      "type": "object",
      "title": "LatLngLiteral",
      "description": "An object describing a specific location with Latitude and Longitude in decimal degrees.",
      "required": [
        "lat",
        "lng"
      ],
      "properties": {
        "lat": {
          "type": "number",
          "description": "Latitude in decimal degrees"
        },
        "lng": {
          "type": "number",
          "description": "Longitude in decimal degrees"
        }
      }
    },
    "Place": {
      "type": "object",
      "title": "Place",
      "description": "Attributes describing a place. Not all attributes will be available for all place types.",
      "properties": {
        "address_components": {
          "description": "An array containing the separate components applicable to this address.",
          "type": "array",
          "items": {
            "$ref": "#/$defs/AddressComponent"
          }
        },
        "adr_address": {
          "description": "A representation of the place's address in the [adr microformat](http://microformats.org/wiki/adr).",
          "type": "string"
        },
        "business_status": {
          "description": "Indicates the operational status of the place, if it is a business. If no data exists, `business_status` is not returned.\n",
          "type": "string",
          "enum": [
            "OPERATIONAL",
            "CLOSED_TEMPORARILY",
            "CLOSED_PERMANENTLY"
          ]
        },
        "curbside_pickup": {
          "description": "Specifies if the business supports curbside pickup.",
          "type": "boolean"
        },
        "current_opening_hours": {
          "description": "Contains the hours of operation for the next seven days (including today). The time period starts at midnight on the date of the request and ends at 11:59 pm six days later. This field includes the `special_days` subfield of all hours, set for dates that have exceptional hours.",
          "$ref": "#/$defs/PlaceOpeningHours"
        },
        "delivery": {
          "description": "Specifies if the business supports delivery.",
          "type": "boolean"
        },
        "dine_in": {
          "description": "Specifies if the business supports indoor or outdoor seating options.",
          "type": "boolean"
        },
        "editorial_summary": {
          "description": "Contains a summary of the place. A summary is comprised of a textual overview, and also includes the language code for these if applicable. Summary text must be presented as-is and can not be modified or altered.",
          "$ref": "#/$defs/PlaceEditorialSummary"
        },
        "formatted_address": {
          "description": "A string containing the human-readable address of this place.\n\nOften this address is equivalent to the postal address. Note that some countries, such as the United Kingdom, do not allow distribution of true postal addresses due to licensing restrictions.\n\nThe formatted address is logically composed of one or more address components. For example, the address \"111 8th Avenue, New York, NY\" consists of the following components: \"111\" (the street number), \"8th Avenue\" (the route), \"New York\" (the city) and \"NY\" (the US state).\n\nDo not parse the formatted address programmatically. Instead you should use the individual address components, which the API response includes in addition to the formatted address field.\n",
          "type": "string"
        },
        "formatted_phone_number": {
          "description": "Contains the place's phone number in its [local format](http://en.wikipedia.org/wiki/Local_conventions_for_writing_telephone_numbers).",
          "type": "string"
        },
        "geometry": {
          "description": "Contains the location and viewport for the location.",
          "$ref": "#/$defs/Geometry"
        },
        "icon": {
          "description": "Contains the URL of a suggested icon which may be displayed to the user when indicating this result on a map.",
          "type": "string"
        },
        "icon_background_color": {
          "description": "Contains the default HEX color code for the place's category.",
          "type": "string"
        },
        "icon_mask_base_uri": {
          "description": "Contains the URL of a recommended icon, minus the `.svg` or `.png` file type extension.",
          "type": "string"
        },
        "international_phone_number": {
          "description": "Contains the place's phone number in international format. International format includes the country code, and is prefixed with the plus, +, sign. For example, the international_phone_number for Google's Sydney, Australia office is `+61 2 9374 4000`.",
          "type": "string"
        },
        "name": {
          "description": "Contains the human-readable name for the returned result. For `establishment` results, this is usually the canonicalized business name.",
          "type": "string"
        },
        "opening_hours": {
          "description": "Contains the regular hours of operation.",
          "$ref": "#/$defs/PlaceOpeningHours"
        },
        "permanently_closed": {
          "deprecated": true,
          "description": "Use `business_status` to get the operational status of businesses.",
          "type": "boolean"
        },
        "photos": {
          "description": "An array of photo objects, each containing a reference to an image. A request may return up to ten photos. More information about place photos and how you can use the images in your application can be found in the [Place Photos](https://developers.google.com/maps/documentation/places/web-service/photos) documentation.",
          "type": "array",
          "items": {
            "$ref": "#/$defs/PlacePhoto"
          }
        },
        "place_id": {
          "description": "A textual identifier that uniquely identifies a place. To retrieve information about the place, pass this identifier in the `place_id` field of a Places API request. For more information about place IDs, see the [place ID overview](https://developers.google.com/maps/documentation/places/web-service/place-id).",
          "type": "string"
        },
        "plus_code": {
          "description": "An encoded location reference, derived from latitude and longitude coordinates, that represents an area: 1/8000th of a degree by 1/8000th of a degree (about 14m x 14m at the equator) or smaller. Plus codes can be used as a replacement for street addresses in places where they do not exist (where buildings are not numbered or streets are not named). See [Open Location Code](https://en.wikipedia.org/wiki/Open_Location_Code) and [plus codes](https://plus.codes/).\n",
          "$ref": "#/$defs/PlusCode"
        },
        "price_level": {
          "description": "The price level of the place, on a scale of 0 to 4. The exact amount indicated by a specific value will vary from region to region. Price levels are interpreted as follows:\n- 0 Free\n- 1 Inexpensive\n- 2 Moderate\n- 3 Expensive\n- 4 Very Expensive\n",
          "type": "number"
        },
        "rating": {
          "description": "Contains the place's rating, from 1.0 to 5.0, based on aggregated user reviews.",
          "type": "number"
        },
        "reference": {
          "deprecated": true,
          "type": "string"
        },
        "reservable": {
          "description": "Specifies if the place supports reservations.",
          "type": "boolean"
        },
        "reviews": {
          "description": "A JSON array of up to five reviews. By default, the reviews are sorted in order of relevance. Use the `reviews_sort` request parameter to control sorting.\n\n- For `most_relevant` (default), reviews are sorted by relevance; the service will bias the results to return reviews originally written in the preferred language.\n- For `newest`, reviews are sorted in chronological order; the preferred language does not affect the sort order.\nGoogle recommends indicating to users whether results are ordered by `most_relevant` or `newest`.\n",
          "type": "array",
          "items": {
            "$ref": "#/$defs/PlaceReview"
          }
        },
        "serves_beer": {
          "description": "Specifies if the place serves beer.",
          "type": "boolean"
        },
        "serves_breakfast": {
          "description": "Specifies if the place serves breakfast.",
          "type": "boolean"
        },
        "serves_brunch": {
          "description": "Specifies if the place serves brunch.",
          "type": "boolean"
        },
        "serves_dinner": {
          "description": "Specifies if the place serves dinner.",
          "type": "boolean"
        },
        "serves_lunch": {
          "description": "Specifies if the place serves lunch.",
          "type": "boolean"
        },
        "serves_vegetarian_food": {
          "description": "Specifies if the place serves vegetarian food.",
          "type": "boolean"
        },
        "serves_wine": {
          "description": "Specifies if the place serves wine.",
          "type": "boolean"
        },
        "scope": {
          "deprecated": true,
          "type": "string"
        },
        "secondary_opening_hours": {
          "description": "Contains an array of entries for the next seven days including information about secondary hours of a business. Secondary hours are different from a business's main hours. For example, a restaurant can specify drive through hours or delivery hours as its secondary hours. This field populates the `type` subfield, which draws from a predefined list of opening hours types (such as `DRIVE_THROUGH`, `PICKUP`, or `TAKEOUT`) based on the types of the place. This field includes the `special_days` subfield of all hours, set for dates that have exceptional hours.",
          "$ref": "#/$defs/PlaceOpeningHours"
        },
        "takeout": {
          "description": "Specifies if the business supports takeout.",
          "type": "boolean"
        },
        "types": {
          "description": "Contains an array of feature types describing the given result. See the list of [supported types](https://developers.google.com/maps/documentation/places/web-service/supported_types#table2).",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "url": {
          "description": "Contains the URL of the official Google page for this place. This will be the Google-owned page that contains the best available information about the place. Applications must link to or embed this page on any screen that shows detailed results about the place to the user.",
          "type": "string"
        },
        "user_ratings_total": {
          "description": "The total number of reviews, with or without text, for this place.",
          "type": "number"
        },
        "utc_offset": {
          "description": "Contains the number of minutes this place’s current timezone is offset from UTC. For example, for places in Sydney, Australia during daylight saving time this would be 660 (+11 hours from UTC), and for places in California outside of daylight saving time this would be -480 (-8 hours from UTC).",
          "type": "number"
        },
        "vicinity": {
          "description": "For establishment (`types:[\"establishment\", ...])` results only, the `vicinity` field contains a simplified address for the place, including the street name, street number, and locality, but not the province/state, postal code, or country.\n\nFor all other results, the `vicinity` field contains the name of the narrowest political (`types:[\"political\", ...]`) feature that is present in the address of the result.\n\nThis content is meant to be read as-is. Do not programmatically parse the formatted address.\n",
          "type": "string"
        },
        "website": {
          "description": "The authoritative website for this place, such as a business' homepage.",
          "type": "string"
        },
        "wheelchair_accessible_entrance": {
          "description": "Specifies if the place has an entrance that is wheelchair-accessible.",
          "type": "boolean"
        }
      }
    },
    "PlaceEditorialSummary": {
      "type": "object",
      "title": "PlaceEditorialSummary",
      "description": "Contains a summary of the place. A summary is comprised of a textual overview, and also includes the language code for these if applicable. Summary text must be presented as-is and can not be modified or altered.",
      "properties": {
        "overview": {
          "description": "A medium-length textual summary of the place.",
          "type": "string"
        },
        "language": {
          "description": "The language of the previous fields. May not always be present.",
          "type": "string"
        }
      }
    },
    "PlaceOpeningHours": {
      "type": "object",
      "title": "PlaceOpeningHours",
      "description": "An object describing the opening hours of a place.",
      "properties": {
        "open_now": {
          "description": "A boolean value indicating if the place is open at the current time.",
          "type": "boolean"
        },
        "periods": {
          "description": "An array of opening periods covering seven days, starting from Sunday, in chronological order.\n",
          "type": "array",
          "items": {
            "$ref": "#/$defs/PlaceOpeningHoursPeriod"
          }
        },
        "special_days": {
          "description": "An array of up to seven entries corresponding to the next seven days.\n",
          "type": "array",
          "items": {
            "$ref": "#/$defs/PlaceSpecialDay"
          }
        },
        "type": {
          "description": "A type string used to identify the type of secondary hours (for example, `DRIVE_THROUGH`, `HAPPY_HOUR`, `DELIVERY`, `TAKEOUT`, `KITCHEN`, `BREAKFAST`, `LUNCH`, `DINNER`, `BRUNCH`, `PICKUP`, `SENIOR_HOURS`). Set for `secondary_opening_hours` only.",
          "type": "string"
        },
        "weekday_text": {
          "description": "An array of strings describing in human-readable text the hours of the place.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "PlaceOpeningHoursPeriod": {
      "type": "object",
      "title": "PlaceOpeningHoursPeriod",
      "required": [
        "open"
      ],
      "properties": {
        "open": {
          "description": "Contains a pair of day and time objects describing when the place opens.",
          "$ref": "#/$defs/PlaceOpeningHoursPeriodDetail"
        },
        "close": {
          "description": "May contain a pair of day and time objects describing when the place closes. If a place is always open, the close section will be missing from the response. Clients can rely on always-open being represented as an open period containing day with value `0` and time with value `0000`, and no `close`.\n",
          "$ref": "#/$defs/PlaceOpeningHoursPeriodDetail"
        }
      }
    },
    "PlaceOpeningHoursPeriodDetail": {
      "type": "object",
      "title": "PlaceOpeningHoursPeriodDetail",
      "required": [
        "day",
        "time"
      ],
      "properties": {
        "date": {
          "description": "A date expressed in RFC3339 format in the local timezone for the place, for example 2010-12-31.",
          "type": "string"
        },
        "day": {
          "description": "A number from 0–6, corresponding to the days of the week, starting on Sunday. For example, 2 means Tuesday.",
          "type": "number"
        },
        "time": {
          "description": "May contain a time of day in 24-hour hhmm format. Values are in the range 0000–2359. The time will be reported in the place’s time zone.",
          "type": "string"
        },
        "truncated": {
          "description": "True if a given period was truncated due to a seven-day cutoff, where the period starts before midnight on the date of the request and/or ends at or after  midnight on the last day. This property indicates that the period for open or close can extend past this seven-day cutoff.",
          "type": "boolean"
        }
      }
    },
    "PlacePhoto": {
      "type": "object",
      "title": "PlacePhoto",
      "description": "A photo of a Place. The photo can be accesed via the [Place Photo](https://developers.google.com/places/web-service/photos) API using an url in the following pattern:\n\n```\nhttps://maps.googleapis.com/maps/api/place/photo?maxwidth=400&photo_reference=photo_reference&key=YOUR_API_KEY\n```\n\nSee [Place Photos](https://developers.google.com/places/web-service/photos) for more information.\n",
      "required": [
        "photo_reference",
        "html_attributions",
        "width",
        "height"
      ],
      "properties": {
        "height": {
          "description": "The height of the photo.",
          "type": "number"
        },
        "width": {
          "description": "The width of the photo.",
          "type": "number"
        },
        "html_attributions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The HTML attributions for the photo."
        },
        "photo_reference": {
          "description": "A string used to identify the photo when you perform a Photo request.",
          "type": "string"
        }
      }
    },
    "PlaceReview": {
      "type": "object",
      "title": "PlaceReview",
      "description": "A review of the place submitted by a user.",
      "required": [
        "author_name",
        "rating",
        "relative_time_description",
        "time"
      ],
      "properties": {
        "author_name": {
          "description": "The name of the user who submitted the review. Anonymous reviews are attributed to \"A Google user\".",
          "type": "string"
        },
        "author_url": {
          "description": "The URL to the user's Google Maps Local Guides profile, if available.",
          "type": "string"
        },
        "profile_photo_url": {
          "description": "The URL to the user's profile photo, if available.",
          "type": "string"
        },
        "language": {
          "description": "An IETF language code indicating the language of the returned review.\nThis field contains the main language tag only, and not the secondary tag indicating country or region. For example, all the English reviews are tagged as 'en', and not 'en-AU' or 'en-UK' and so on.\nThis field is empty if there is only a rating with no review text. \n",
          "type": "string"
        },
        "original_language": {
          "description": "An IETF language code indicating the original language of the review. If the review has been translated, then `original_language` != `language`.\nThis field contains the main language tag only, and not the secondary tag indicating country or region. For example, all the English reviews are tagged as 'en', and not 'en-AU' or 'en-UK' and so on.\nThis field is empty if there is only a rating with no review text.\n",
          "type": "string"
        },
        "rating": {
          "description": "The user's overall rating for this place. This is a whole number, ranging from 1 to 5.",
          "type": "number"
        },
        "relative_time_description": {
          "description": "The time that the review was submitted in text, relative to the current time.",
          "type": "string"
        },
        "text": {
          "description": "The user's review. When reviewing a location with Google Places, text reviews are considered optional. Therefore, this field may be empty. Note that this field may include simple HTML markup. For example, the entity reference `&amp;` may represent an ampersand character.",
          "type": "string"
        },
        "time": {
          "description": "The time that the review was submitted, measured in the number of seconds since since midnight, January 1, 1970 UTC.",
          "type": "number"
        },
        "translated": {
          "description": "A boolean value indicating if the review was translated from the original language it was written in.\nIf a review has been translated, corresponding to a value of true, Google recommends that you indicate this to your users. For example, you can add the following string, “Translated by Google”, to the review.\n",
          "type": "boolean"
        }
      }
    },
    "PlaceSpecialDay": {
      "type": "object",
      "title": "PlaceSpecialDay",
      "properties": {
        "date": {
          "description": "A date expressed in RFC3339 format in the local timezone for the place, for example 2010-12-31.",
          "type": "string"
        },
        "exceptional_hours": {
          "description": "True if there are exceptional hours for this day. If `true`, this means that there is at least one exception for this day. Exceptions cause different values to occur in the subfields of `current_opening_hours` and `secondary_opening_hours` such as `periods`, `weekday_text`, `open_now`. The exceptions apply to the hours, and the hours are used to generate the other fields.",
          "type": "boolean"
        }
      }
    },
    "PlacesSearchStatus": {
      "type": "string",
      "title": "PlacesSearchStatus",
      "description": "Status codes returned by service.\n- `OK` indicating the API request was successful.\n- `ZERO_RESULTS` indicating that the search was successful but returned no results. This may occur if the search was passed a `latlng` in a remote location.\n- `INVALID_REQUEST` indicating the API request was malformed, generally due to missing required query parameter (`location` or `radius`).\n- `OVER_QUERY_LIMIT` indicating any of the following:\n  - You have exceeded the QPS limits.\n  - Billing has not been enabled on your account.\n  - The monthly $200 credit, or a self-imposed usage cap, has been exceeded.\n  - The provided method of payment is no longer valid (for example, a credit card has expired).\n  See the [Maps FAQ](https://developers.google.com/maps/faq#over-limit-key-error) for more information about how to resolve this error.\n- `REQUEST_DENIED` indicating that your request was denied, generally because:\n  - The request is missing an API key.\n  - The `key` parameter is invalid.\n- `UNKNOWN_ERROR` indicating an unknown error.\n",
      "enum": [
        "OK",
        "ZERO_RESULTS",
        "INVALID_REQUEST",
        "OVER_QUERY_LIMIT",
        "REQUEST_DENIED",
        "UNKNOWN_ERROR"
      ]
    },
    "PlusCode": {
      "type": "object",
      "title": "PlusCode",
      "description": "An encoded location reference, derived from latitude and longitude coordinates, that represents an area, 1/8000th of a degree by 1/8000th of a degree (about 14m x 14m at the equator) or smaller. Plus codes can be used as a replacement for street addresses in places where they do not exist (where buildings are not numbered or streets are not named).",
      "required": [
        "global_code"
      ],
      "properties": {
        "compound_code": {
          "description": "The `compound_code` is a 6 character or longer local code with an explicit location (`CWC8+R9, Mountain View, CA, USA`). Some APIs may return an empty string if the `compound_code` is not available.",
          "type": "string"
        },
        "global_code": {
          "description": "The `global_code` is a 4 character area code and 6 character or longer local code (`849VCWC8+R9`).",
          "type": "string"
        }
      }
    }
  }
}