Tạo và tải nguồn cấp dữ liệu địa điểm yêu thích lên
Khi tạo và tải nguồn cấp dữ liệu địa điểm yêu thích lên, hãy làm theo các hướng dẫn sau:
- Tuân theo quy cách được mô tả trong nguồn cấp dữ liệu POI
đối với tệp dữ liệu POI. Bạn nên sử dụng tên tệp dữ liệu POI riêng biệt cho mỗi lần tải lên. Thêm dấu thời gian vào tên tệp, ví dụ:
POI_1633621547.json. - Tải nguồn cấp dữ liệu lên máy chủ SFTP của địa điểm yêu thích tại địa phương hằng ngày dưới dạng nội dung làm mới đầy đủ.
- Bạn có thể tìm thấy thông tin chi tiết về máy chủ SFTP trong mục Cấu hình > Nguồn cấp dữ liệu của Partner Portal.
- Xem trạng thái nhập nguồn cấp dữ liệu trong phần Nhập > Nhật ký của Partner Portal.
Nguyên tắc đóng gói tệp
Để đảm bảo quá trình nhập thành công, hãy tuân thủ các yêu cầu sau về việc đóng gói:
- Tệp lưu trữ JSON tổng hợp duy nhất (Bắt buộc): Kết hợp tất cả các bản ghi thực thể thành một tệp JSON duy nhất. Bạn nên nén tệp đó thành một tệp lưu trữ GZIP duy nhất rồi tải lên.
- Cảnh báo về mẫu chống lại: Không sử dụng một tệp cho mỗi thực thể hoặc nhiều tệp được phân tách theo quốc gia trong cùng một kho lưu trữ. Cách này không được hỗ trợ và sẽ khiến quá trình trích xuất không thành công.
Hỗ trợ đa ngôn ngữ
Nguồn cấp dữ liệu Điểm yêu thích hỗ trợ việc cung cấp nội dung được bản địa hoá cho một số trường cụ thể. Các trường sau đây thuộc loại Text và hỗ trợ bản địa hoá:
namedescriptiondisplay_address
Để cung cấp nội dung bằng nhiều ngôn ngữ, bạn phải chỉ định một default_locale trong trường và cung cấp các chuỗi đã bản địa hoá trong danh sách localizations.
Cung cấp tất cả thông tin bản địa hoá cho một thực thể trong một mục nhập địa điểm yêu thích duy nhất. Đừng chia một thực thể duy nhất thành nhiều tệp JSON ngôn ngữ.
Ví dụ:
"name": {
"localizations": [
{
"locale": "en",
"text": "Tasty Bites Test Restaurant"
},
{
"locale": "es",
"text": "Restaurante de prueba Tasty Bites"
}
],
"default_locale": "en"
}
Nguyên tắc về hình ảnh
- Định dạng: Phải là JPEG, PNG hoặc WebP.
- Kích thước tệp tối đa: Dưới 30 MB mỗi hình ảnh.
- Kích thước tối đa: Tổng kích thước dưới 75 Megapixel (chiều rộng x chiều cao < 75.000.000).
- Loại URL: Đường dẫn trực tiếp đến thành phần hình ảnh (ví dụ: có đuôi .jpg).
- Quyền: Đảm bảo máy chủ lưu trữ cho phép Googlebot hoặc Trình thu thập thông tin truy cập và không có tệp robots.txt nào chặn các thư mục hình ảnh.
- Tìm kiếm an toàn: Hình ảnh phải tuân thủ chính sách tìm kiếm an toàn của Google.
Quy cách nguồn cấp dữ liệu
Yêu cầu về trường
VssPoi
Biểu thị một thực thể Địa điểm yêu thích (POI), ví dụ: khách sạn hoặc nhà hàng.
| Tên trường | Loại | Yêu cầu | Mô tả |
|---|---|---|---|
poi_id | chuỗi | Bắt buộc | Bắt buộc. Một chuỗi do đối tác tạo ra để xác định một địa điểm yêu thích. |
name | object(Text) | Bắt buộc | Bắt buộc. Tên của địa điểm yêu thích. |
telephone | chuỗi | Số điện thoại liên hệ của địa điểm yêu thích, bao gồm cả mã quốc gia và mã vùng, ví dụ: +14567891234. | |
url | chuỗi | URL của trang web công khai của địa điểm yêu thích. Lưu ý: Thông tin này chỉ được dùng cho mục đích so khớp, không dùng để hiển thị. | |
location | object(GeoCoordinates) | Bắt buộc | Bắt buộc. Vị trí của POI. |
display_address | object(Text) | Địa chỉ hiển thị trên giao diện người dùng. | |
images | mảng đối tượng(Image) | Hình ảnh về địa điểm yêu thích. Số lượng hình ảnh tối đa: 5. | |
rating | số | Điểm xếp hạng trung bình cho địa điểm yêu thích. | |
num_ratings | số | Số lượng điểm xếp hạng đóng góp cho trường rating. | |
rating_scale | số | Thang điểm xếp hạng dùng cho trường rating. Nếu điểm xếp hạng tối đa là 5, thì
rating_scale là 5. | |
category | enum(Category) | Bắt buộc | Bắt buộc. Đại diện cho danh mục của địa điểm yêu thích. |
description | object(Text) | Nội dung mô tả về địa điểm yêu thích. | |
| oneOf(additional_data) | Bắt buộc | Bạn chỉ có thể đặt một trong các trường trong oneOf này. |
Văn bản
Đại diện cho một văn bản có bản dịch.
| Tên trường | Loại | Yêu cầu | Mô tả |
|---|---|---|---|
localizations | mảng đối tượng(LocalizedString) | Các chuỗi được bản địa hoá. | |
default_locale | chuỗi | Địa điểm sử dụng làm ngôn ngữ mặc định phải có trong bản bản địa hoá. |
LocalizedString
Biểu thị một chuỗi được bản địa hoá.
| Tên trường | Loại | Yêu cầu | Mô tả |
|---|---|---|---|
locale | chuỗi | Thẻ ngôn ngữ của văn bản, chẳng hạn như "en", "en-US" hoặc "sr-Latn". | |
text | chuỗi | Văn bản theo ngôn ngữ đã chỉ định. |
GeoCoordins
Dữ liệu địa lý của một vị trí, bao gồm vĩ độ, kinh độ và địa chỉ.
| Tên trường | Loại | Yêu cầu | Mô tả |
|---|---|---|---|
latitude | số | [-90, +90] độ (bao gồm). Bắt buộc nếu bạn đặt kinh độ, nếu không thì không bắt buộc. | |
longitude | số | [-180, +180] độ (bao gồm cả 2 giá trị này). Bắt buộc nếu bạn đặt vĩ độ, nếu không thì bạn nên đặt. | |
| oneOf(addresses) | Bắt buộc | Bạn chỉ có thể đặt một trong các trường trong oneOf này. |
PostalAddress
Địa chỉ bưu chính của địa điểm.
| Tên trường | Loại | Yêu cầu | Mô tả |
|---|---|---|---|
country | chuỗi | Bắt buộc | Bắt buộc. Quốc gia, sử dụng mã quốc gia ISO 3166-1 alpha-2, ví dụ: "US". |
locality | chuỗi | Bắt buộc | Bắt buộc. Địa phương/thành phố, ví dụ: "Mountain View". |
region | chuỗi | Khu vực/tiểu bang/tỉnh, ví dụ: "CA". Trường này chỉ bắt buộc ở những quốc gia thường có khu vực trong địa chỉ. (không bắt buộc) | |
postal_code | chuỗi | Bắt buộc | Bắt buộc. Mã bưu chính, ví dụ: "94043". |
street_address | chuỗi | Bắt buộc | Bắt buộc. Địa chỉ đường phố, ví dụ: "1600 Amphitheatre Pkwy". |
Hình ảnh
Đại diện cho hình ảnh của Địa điểm yêu thích (POI).
| Tên trường | Loại | Yêu cầu | Mô tả |
|---|---|---|---|
url | chuỗi | URL của hình ảnh. Google sẽ thu thập dữ liệu nội dung nghe nhìn được lưu trữ tại URL này. Độ dài tối đa: 2000. | |
alt_text | object(Text) | Văn bản thay thế sẽ được dùng để hỗ trợ tiếp cận. |
HotelData
Dữ liệu cụ thể của nguồn cấp dữ liệu khách sạn.
| Tên trường | Loại | Yêu cầu | Mô tả |
|---|---|---|---|
hotel_star_class | số | Giá trị sao chính thức của hạng khách sạn. Có thể dùng trong nhãn như "khách sạn 5 sao". Giá trị này phải là một số nguyên từ 0 đến 5. Bạn nên sử dụng điểm xếp hạng là 0 nếu không có điểm xếp hạng hoặc không chỉ định điểm xếp hạng. Khi được đặt thành 0, người dùng sẽ không thấy hạng sao nào trên giao diện người dùng. | |
brand_ids | mảng chuỗi | Những thương hiệu có thể đăng khách sạn này. Nếu trường này trống, khách sạn có thể xuất hiện trong bất kỳ thương hiệu nào được liên kết với nguồn cấp dữ liệu. |
LocalData
Dữ liệu nguồn cấp dữ liệu cụ thể của cơ sở.
| Tên trường | Loại | Yêu cầu | Mô tả |
|---|---|---|---|
business_hours | object(BusinessHours) | Giờ hoạt động thông thường của cơ sở. | |
price_range | object(PriceRange) | Khoảng giá của các dịch vụ do cơ sở cung cấp. | |
establishment_category | object(Text) | Loại cơ sở. | |
brand_landing_pages | mảng đối tượng(BrandLandingPages) | Bắt buộc | Bắt buộc. Trang đích của thương hiệu. Bạn phải cung cấp ít nhất một thông tin. |
BusinessHours
Cho biết khoảng thời gian địa điểm này mở cửa kinh doanh. Chứa một tập hợp các thực thể [TimeRange][madden.vss_poi_feed.TimeRange]. Ví dụ: Mở cửa vào thứ Bảy từ 09:00 đến 12:00 và từ 13:00 đến 17:00: time_ranges { open_day: SATURDAY open_time: { hours: 9, minutes: 0 } close_day: SATURDAY close_time: { hours: 12, minutes: 0 } } time_rages { open_day: SATURDAY open_time: { hours: 13, minutes: 0 } close_day: SATURDAY close_time: { hours: 17, minutes: 0 } } Ví dụ: Mở cửa vào thứ Bảy từ 21:00 đến 2:00 Chủ Nhật: time_ranges { open_day: SATURDAY open_time: { hours: 21, minutes: 0 } close_day: SUNDAY close_time: { hours: 2, minutes: 0 } }
| Tên trường | Loại | Yêu cầu | Mô tả |
|---|---|---|---|
time_ranges | mảng đối tượng(TimeRange) | Tập hợp các khung giờ mà địa điểm yêu thích này mở cửa hoạt động. Mỗi khoảng thời gian đại diện cho một khoảng giờ mà địa điểm yêu thích mở cửa trong tuần. |
TimeRange
Biểu thị khoảng thời gian mà địa điểm yêu thích mở cửa, bắt đầu vào ngày/giờ mở cửa được chỉ định và kết thúc vào ngày/giờ đóng cửa được chỉ định. Giờ đóng cửa phải sau giờ mở cửa, ví dụ: muộn hơn trong cùng ngày hoặc vào ngày tiếp theo.
| Tên trường | Loại | Yêu cầu | Mô tả |
|---|---|---|---|
open_day | enum(DayOfWeek) | Ngày mở cửa trong phạm vi thời gian. | |
open_time | object(TimeOfDay) | Giờ mở cửa của phạm vi thời gian. | |
close_day | enum(DayOfWeek) | Ngày kết thúc của phạm vi thời gian. | |
close_time | object(TimeOfDay) | Giờ đóng của phạm vi thời gian. |
TimeOfDay
| Tên trường | Loại | Yêu cầu | Mô tả |
|---|---|---|---|
hours | số | Giờ trong ngày theo định dạng 24 giờ. Phải lớn hơn hoặc bằng 0 và thường phải nhỏ hơn hoặc bằng 23. Một API có thể chọn cho phép giá trị "24:00:00" cho các trường hợp như giờ đóng cửa của doanh nghiệp. | |
minutes | số | Số phút trong một giờ. Phải lớn hơn hoặc bằng 0 và nhỏ hơn hoặc bằng 59. | |
seconds | số | Số giây trong một phút. Phải lớn hơn hoặc bằng 0 và thường phải nhỏ hơn hoặc bằng 59. Một API có thể cho phép giá trị 60 nếu API đó cho phép giây nhuận. | |
nanos | số | Phần giây, tính bằng nano giây. Phải lớn hơn hoặc bằng 0 và nhỏ hơn hoặc bằng 999.999.999. |
PriceRange
Khoảng giá của các dịch vụ do địa điểm yêu thích cung cấp.
| Tên trường | Loại | Yêu cầu | Mô tả |
|---|---|---|---|
min_price | object(Money) | Giá tối thiểu của các dịch vụ mà địa điểm yêu thích cung cấp. | |
max_price | object(Money) | Giá tối đa của các dịch vụ mà địa điểm yêu thích cung cấp. |
Tiền
Biểu thị số tiền kèm theo loại đơn vị tiền tệ.
| Tên trường | Loại | Yêu cầu | Mô tả |
|---|---|---|---|
currency_code | chuỗi | Mã tiền tệ gồm 3 chữ cái được xác định trong ISO 4217. | |
units | số | Đơn vị nguyên của số tiền.
Ví dụ: nếu currencyCode là "USD", thì 1 đơn vị là 1 đô la Mỹ. | |
nanos | số | Số đơn vị nano (10^-9) của số tiền.
Giá trị phải nằm trong khoảng từ -999.999.999 đến +999.999.999, kể cả hai số này.
Nếu units là số dương, thì nanos phải là số dương hoặc bằng 0.
Nếu units bằng 0, thì nanos có thể là số dương, số 0 hoặc số âm.
Nếu units là số âm, thì nanos phải là số âm hoặc bằng 0.
Ví dụ: -1,75 USD được biểu thị là units=-1 và nanos=-750.000.000. |
BrandLandingPages
Trang đích thương hiệu được bản địa hoá cho một Địa điểm yêu thích (POI).
| Tên trường | Loại | Yêu cầu | Mô tả |
|---|---|---|---|
brand_id | chuỗi | Bắt buộc | Bắt buộc. Thương hiệu áp dụng cấu hình này. |
localized_landing_pages | mảng đối tượng(LocalizedLandingPage) | Trang đích được bản địa hoá. Giá trị của các trường url và ngôn ngữ phải là duy nhất trên tất cả các trang đích được bản địa hoá. | |
default_url | chuỗi | Bắt buộc | Bắt buộc. URL trang đích mặc định được sử dụng khi không có trang đích nào được bản địa hoá có trang đích phù hợp với ngôn ngữ của người dùng. |
LocalizedLandingPage
Trang đích được bản địa hoá cho Địa điểm yêu thích (POI).
| Tên trường | Loại | Yêu cầu | Mô tả |
|---|---|---|---|
url | chuỗi | URL của trang đích. Độ dài tối đa: 2.000. | |
locales | mảng chuỗi | Giới hạn trang này cho những người dùng có ngôn ngữ ưu tiên được chỉ định. Phải chứa thẻ ngôn ngữ, chẳng hạn như "en", "en-US" hoặc "sr-Latn". |
Danh mục
Biểu thị danh mục của địa điểm yêu thích.
Trường này phải khớp với trường additional_data oneof bên dưới.
| Tên | Mô tả |
|---|---|
UNKNOWN_CATEGORY | |
HOTEL | |
LOCAL |
DayOfWeek
Biểu thị một ngày trong tuần.
| Tên | Mô tả |
|---|---|
DAY_OF_WEEK_UNSPECIFIED | Ngày trong tuần không được chỉ định. |
MONDAY | Thứ Hai |
TUESDAY | Tuesday (thứ Ba) |
WEDNESDAY | Wednesday (thứ Tư) |
THURSDAY | Thursday (thứ Năm) |
FRIDAY | Friday (thứ Sáu) |
SATURDAY | Saturday (thứ Bảy) |
SUNDAY | Chủ Nhật |
additional_data
Bắt buộc. Các trường dành riêng cho danh mục.
Tên này phải khớp với trường category ở trên.
| Tên trường | Loại | Yêu cầu | Mô tả |
|---|---|---|---|
hotel_data | object(HotelData) | Loại trừ lẫn nhau với | Các trường dành riêng cho khách sạn. |
local_data | object(LocalData) | Không dùng được với | Các trường dành riêng cho địa phương. |
địa chỉ
Bắt buộc. Địa chỉ của một vị trí.
| Tên trường | Loại | Yêu cầu | Mô tả |
|---|---|---|---|
address | object(PostalAddress) | Địa chỉ bưu chính của vị trí. |
Định nghĩa
Định nghĩa VssPoiFeed
// Represents a Point of Interest (POI) data feed provided by a partner. export message VssPoiFeed { // The POIs in the feed. repeated VssPoi data = 1; }
Định nghĩa VssPoi
// Represents a single Point of Interest (POI) entity e.g. a hotel or // restaurant. export message VssPoi { // Required. A string generated by the partner that identifies a POI. string poi_id = 1; // The entity name, telephone, url and location are used to support // matching partner inventory with entities already present on Google. // Required. The name of the POI. Text name = 2; // The contact telephone number of the POI including its country and // area codes, e.g. +14567891234. string telephone = 3 [(datapol.semantic_type) = ST_PHONE_NUMBER]; // The url of the POI's public website. // Note: This will be used just for matching purposes, not for display. string url = 4; // Required. The location of the POI. GeoCoordinates location = 5; // The address displayed on the UI. Text display_address = 17; // Images of the POI. // Max number of images: 5. repeated Image images = 6; // Average rating for the POI. float rating = 12; // The number of contributing ratings for the `rating` field. int64 num_ratings = 13; // The rating scale used for the `rating` field. If max rating is 5, then // rating_scale is 5. int32 rating_scale = 14; // Represents the category of the POI. // It should match the `additional_data` oneof field below. export enum Category { LOCAL = 4; } // Required. Represents the category of the POI. Category category = 9; // A description of the POI. Text description = 16; // Required. Category specific fields. // It should match the `category` field above. oneof additional_data { // Local specific fields. LocalData local_data = 15; } }
Định nghĩa văn bản
// Represents a text with localizations. message Text { // Represents a localized string. message LocalizedString { // The text's language tag, such as "en", "en-US" or "sr-Latn". string locale = 1; // The text in the specified locale. string text = 2; } // The localized strings. repeated LocalizedString localizations = 1; // The locale to use as the default language it must be present in the // localizations. string default_locale = 2; }
Định nghĩa về GeoCoordinates
// The Geo data of a location, including latitude, longitude, and address. message GeoCoordinates { option (datapol.msg_semantic_type) = ST_LOCATION; // [-90, +90] degrees (inclusive). // Required if longitude is set, otherwise nice to have. double latitude = 1; // [-180, +180] degrees (inclusive). // Required if latitude is set, otherwise nice to have. double longitude = 2; // Required. Address for a location. oneof addresses { // Postal address of the location. PostalAddress address = 3; } }
Định nghĩa PostalAddress
// The postal address for the location. message PostalAddress { option (datapol.msg_semantic_type) = ST_LOCATION; // Required. The country, using ISO 3166-1 alpha-2 country code, e.g. "US". string country = 1; // Required. The locality/city, e.g. "Mountain View". string locality = 2; // The region/state/province, e.g. "CA". This field is only required in // countries where region is commonly a part of the address. (optional) string region = 3; // Required. The postal code, e.g. "94043". string postal_code = 4; // Required. The street address, e.g. "1600 Amphitheatre Pkwy". string street_address = 5; }
Độ nét hình ảnh
// Represents an image of the Point of Interest (POI). export message Image { // The url of the image. Google will crawl the media hosted at this URL. // Max length: 2000. string url = 1; // The alternative text to be used for accessibility. Text alt_text = 2; }
Định nghĩa LocalData
// Establishment specific feed data. message LocalData { // The regular business hours of the establishment. BusinessHours business_hours = 1; // Price range of the services offered by the establishment. PriceRange price_range = 2; // The type of establishment. Text establishment_category = 3; // Required. The brand landing pages. At least one must be provided. repeated BrandLandingPages brand_landing_pages = 4; }
Định nghĩa BrandLandingPages
// The Localized brand landing pages for a single Point of Interest (POI). message BrandLandingPages { // Required. The brand this configuration applies to. string brand_id = 1 [(datapol.semantic_type) = ST_PARTNER_ID]; // Localized landing page for the Point of Interest (POI). message LocalizedLandingPage { // The url of the landing page. // Max length: 2000. string url = 1; // Restricts this page to users with the specified language preference. // Must contain language tags, such as "en", "en-US" or "sr-Latn". repeated string locales = 3; } // The localized landing pages. // The url and locales fields values must be unique across all the localized // landing pages. repeated LocalizedLandingPage localized_landing_pages = 2; // Required. The default landing page url to be used when none of the // localized landing pages matches the user's language. string default_url = 3; }
Mẫu
Nguồn cấp dữ liệu địa điểm yêu thích
Tên tệp: poi_1707240000.json
{ "data": [ { "poi_id": "test_restaurant_1", "name": { "localizations": [ { "locale": "en", "text": "Tasty Bites Test Restaurant" } ], "default_locale": "en" }, "telephone": "+1234567890", "url": "https://www.tastybitestest.com", "location": { "latitude": 37.422, "longitude": -122.084, "address": { "country": "US", "locality": "Mountain View", "postal_code": "94043", "street_address": "1600 Amphitheatre Pkwy" } }, "display_address": { "localizations": [ { "locale": "en", "text": "1600 Amphitheatre Pkwy, Mountain View, CA 94043" } ], "default_locale": "en" }, "images": [ { "url": "https://www.tastybitestest.com/images/interior.jpg", "alt_text": { "localizations": [ { "locale": "en", "text": "Cozy dining area of Tasty Bites" } ], "default_locale": "en" } } ], "rating": 4.7, "num_ratings": 150, "rating_scale": 5, "category": "LOCAL", "description": { "localizations": [ { "locale": "en", "text": "A mock restaurant for testing the POI feed ingestion." } ], "default_locale": "en" }, "local_data": { "establishment_category": { "localizations": [ { "locale": "en", "text": "Restaurant" } ], "default_locale": "en" }, "price_range": { "min_price": { "currency_code": "USD", "units": 15, "nanos": 0 }, "max_price": { "currency_code": "USD", "units": 45, "nanos": 0 } }, "business_hours": { "time_ranges": [ { "open_day": "MONDAY", "open_time": { "hours": 11, "minutes": 0 }, "close_day": "MONDAY", "close_time": { "hours": 21, "minutes": 0 } }, { "open_day": "TUESDAY", "open_time": { "hours": 11, "minutes": 0 }, "close_day": "TUESDAY", "close_time": { "hours": 21, "minutes": 0 } }, { "open_day": "WEDNESDAY", "open_time": { "hours": 11, "minutes": 0 }, "close_day": "WEDNESDAY", "close_time": { "hours": 21, "minutes": 0 } }, { "open_day": "THURSDAY", "open_time": { "hours": 11, "minutes": 0 }, "close_day": "THURSDAY", "close_time": { "hours": 22, "minutes": 0 } }, { "open_day": "FRIDAY", "open_time": { "hours": 11, "minutes": 0 }, "close_day": "FRIDAY", "close_time": { "hours": 23, "minutes": 0 } }, { "open_day": "SATURDAY", "open_time": { "hours": 10, "minutes": 0 }, "close_day": "SATURDAY", "close_time": { "hours": 23, "minutes": 0 } }, { "open_day": "SUNDAY", "open_time": { "hours": 10, "minutes": 0 }, "close_day": "SUNDAY", "close_time": { "hours": 20, "minutes": 0 } } ] }, "brand_landing_pages": [ { "brand_id": "tasty_bites_brand", "localized_landing_pages": [ { "url": "https://www.tastybitestest.com/en", "locales": ["en-US", "en-GB"] } ], "default_url": "https://www.tastybitestest.com" } ] } } ] }
Nguồn cấp dữ liệu địa điểm yêu thích đa ngôn ngữ
Tên tệp: poi_multilingual.json
{ "data": [ { "poi_id": "test_restaurant_1", "name": { "localizations": [ { "locale": "en", "text": "Tasty Bites Test Restaurant" }, { "locale": "fr", "text": "Restaurant de test Tasty Bites" } ], "default_locale": "en" }, "telephone": "+1234567890", "url": "https://www.tastybitestest.com", "location": { "latitude": 37.422, "longitude": -122.084, "address": { "country": "US", "locality": "Mountain View", "postal_code": "94043", "street_address": "1600 Amphitheatre Pkwy" } }, "display_address": { "localizations": [ { "locale": "en", "text": "1600 Amphitheatre Pkwy, Mountain View, CA 94043" }, { "locale": "fr", "text": "1600 Amphitheatre Pkwy, Mountain View, CA 94043" } ], "default_locale": "en" }, "images": [ { "url": "https://www.tastybitestest.com/images/interior.jpg", "alt_text": { "localizations": [ { "locale": "en", "text": "Cozy dining area of Tasty Bites" }, { "locale": "fr", "text": "Espace salle à manger accueillant de Tasty Bites" } ], "default_locale": "en" } } ], "rating": 4.7, "num_ratings": 150, "rating_scale": 5, "category": "LOCAL", "description": { "localizations": [ { "locale": "en", "text": "A mock restaurant for testing the POI feed ingestion." }, { "locale": "fr", "text": "Un faux restaurant pour tester l'ingestion de flux de points d'intérêt." } ], "default_locale": "en" }, "local_data": { "establishment_category": { "localizations": [ { "locale": "en", "text": "Restaurant" }, { "locale": "fr", "text": "Restaurant" } ], "default_locale": "en" }, "price_range": { "min_price": { "currency_code": "USD", "units": 15, "nanos": 0 }, "max_price": { "currency_code": "USD", "units": 45, "nanos": 0 } }, "business_hours": { "time_ranges": [ { "open_day": "MONDAY", "open_time": { "hours": 11, "minutes": 0 }, "close_day": "MONDAY", "close_time": { "hours": 21, "minutes": 0 } }, { "open_day": "TUESDAY", "open_time": { "hours": 11, "minutes": 0 }, "close_day": "TUESDAY", "close_time": { "hours": 21, "minutes": 0 } }, { "open_day": "WEDNESDAY", "open_time": { "hours": 11, "minutes": 0 }, "close_day": "WEDNESDAY", "close_time": { "hours": 21, "minutes": 0 } }, { "open_day": "THURSDAY", "open_time": { "hours": 11, "minutes": 0 }, "close_day": "THURSDAY", "close_time": { "hours": 22, "minutes": 0 } }, { "open_day": "FRIDAY", "open_time": { "hours": 11, "minutes": 0 }, "close_day": "FRIDAY", "close_time": { "hours": 23, "minutes": 0 } }, { "open_day": "SATURDAY", "open_time": { "hours": 10, "minutes": 0 }, "close_day": "SATURDAY", "close_time": { "hours": 23, "minutes": 0 } }, { "open_day": "SUNDAY", "open_time": { "hours": 10, "minutes": 0 }, "close_day": "SUNDAY", "close_time": { "hours": 20, "minutes": 0 } } ] }, "brand_landing_pages": [ { "brand_id": "tasty_bites_brand", "localized_landing_pages": [ { "url": "https://www.tastybitestest.com/fr", "locales": ["fr-FR", "fr-CA"] }, { "url": "https://www.tastybitestest.com/en", "locales": ["en-US", "en-GB"] } ], "default_url": "https://www.tastybitestest.com" } ] } } ] }