יצירה והעלאה של פידים של נקודות עניין
כשיוצרים ומעלים פידים של נקודות עניין, צריך לפעול לפי ההוראות הבאות:
- פועלים לפי המפרט שמתואר בפיד של נקודות עניין עבור קובצי נתונים של נקודות עניין. מומלץ להשתמש בשמות ייחודיים של קובצי נתונים של נקודות עניין בכל העלאה. כוללים חותמת זמן בשם הקובץ, לדוגמה,
POI_1633621547.json. - העלאת פידים לשרת ה-SFTP של נקודות העניין המקומיות מדי יום כעדכונים מלאים.
- פרטי שרת SFTP מופיעים בקטע הגדרה > פידים בפורטל השותפים.
- אפשר לראות את סטטוס הטמעת הפיד בקטע הטמעה > היסטוריה בפורטל לשותפים.
מפרט הפיד
דרישות לגבי השדות
VssPoi
מייצג ישות יחידה של נקודת עניין (POI), למשל מלון או מסעדה.
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
poi_id | מחרוזת | חובה | חובה. מחרוזת שנוצרת על ידי השותף ומזהה נקודת עניין. |
name | אובייקט(Text) | חובה | חובה. שם נקודת העניין. |
telephone | מחרוזת | מספר הטלפון של איש הקשר בנקודת העניין, כולל קוד המדינה וקידומת האזור, למשל +14567891234. | |
url | מחרוזת | כתובת ה-URL של האתר הציבורי של נקודת העניין. הערה: הנתונים האלה ישמשו רק למטרות התאמה, ולא יוצגו. | |
location | אובייקט(GeoCoordinates) | חובה | חובה. המיקום של נקודת העניין. |
display_address | אובייקט(Text) | הכתובת שמוצגת בממשק המשתמש. | |
images | מערך של אובייקטים(Image) | תמונות של נקודת העניין. מספר התמונות המקסימלי: 5. | |
rating | number | הדירוג הממוצע של נקודת העניין. | |
num_ratings | number | מספר הדירוגים שתרמו לערך בשדה rating. | |
rating_scale | number | סולם הדירוג שמשמש בשדה rating. אם הדירוג המקסימלי הוא 5, אז הערך של rating_scale הוא 5. | |
category | enum(Category) | חובה | חובה. מייצג את הקטגוריה של נקודת העניין. |
description | אובייקט(Text) | תיאור של נקודת העניין. | |
| oneOf(additional_data) | חובה | אפשר להגדיר רק אחד מהשדות ב-oneOf הזה. |
טקסט
ייצוג של טקסט עם לוקליזציות.
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
localizations | מערך של אובייקטים(LocalizedString) | המחרוזות המותאמות לשוק המקומי. | |
default_locale | מחרוזת | הלוקאל שבו רוצים להשתמש כשפת ברירת המחדל חייב להיות קיים בלוקליזציות. |
LocalizedString
מייצג מחרוזת מקומית.
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
locale | מחרוזת | תג השפה של הטקסט, כמו en, en-US או sr-Latn. | |
text | מחרוזת | הטקסט בלוקאל שצוין. |
GeoCoordinates
הנתונים הגיאוגרפיים של מיקום, כולל קו רוחב, קו אורך וכתובת.
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
latitude | number | [-90, +90] מעלות (כולל). חובה אם האורך מוגדר, אחרת מומלץ. | |
longitude | number | [-180, +180] מעלות (כולל). חובה אם מוגדר קו רוחב, אחרת מומלץ. | |
| oneOf(addresses) | חובה | אפשר להגדיר רק אחד מהשדות ב-oneOf הזה. |
PostalAddress
הכתובת הפיזית של המיקום.
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
country | מחרוזת | חובה | חובה. המדינה, באמצעות קוד מדינה מסוג ISO 3166-1 alpha-2, למשל US. |
locality | מחרוזת | חובה | חובה. היישוב או העיר, למשל Mountain View. |
region | מחרוזת | האזור, המדינה או הפרובינציה, למשל CA. שדה החובה הזה נדרש רק במדינות שבהן האזור הוא בדרך כלל חלק מהכתובת. (אופציונלי) | |
postal_code | מחרוזת | חובה | חובה. המיקוד, לדוגמה: 94043. |
street_address | מחרוזת | חובה | חובה. הכתובת, למשל '1600 Amphitheatre Pkwy'. |
תמונה
מייצג תמונה של נקודת העניין.
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
url | מחרוזת | כתובת ה-URL של התמונה. Google תסרוק את המדיה שמתארחת בכתובת ה-URL הזו. אורך מקסימלי: 2,000. | |
alt_text | אובייקט(Text) | הטקסט החלופי שישמש לנגישות. |
HotelData
נתוני פיד ספציפיים למלון.
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
hotel_star_class | number | דירוג הכוכבים הרשמי של המלון. אפשר להשתמש בתווית כמו "מלון 5 כוכבים". הערך צריך להיות מספר שלם בין 1 ל-5. | |
brand_ids | מערך מחרוזות | המותגים שיכולים להציג את המלון הזה. אם השדה הזה ריק, המלון יכול להופיע בכל אחד מהמותגים שמשויכים לפיד. |
LocalData
נתוני פיד ספציפיים למוסד.
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
business_hours | אובייקט(BusinessHours) | שעות הפעילות הרגילות של העסק. | |
price_range | אובייקט(PriceRange) | טווח המחירים של השירותים שהעסק מציע. | |
establishment_category | אובייקט(Text) | סוג המוסד. | |
brand_landing_pages | מערך של אובייקטים(BrandLandingPages) | דפי הנחיתה של המותג. |
BusinessHours
מייצג את תקופות הזמן שבהן המיקום הזה פתוח לעסקים. מחזיק אוסף של מופעים של [TimeRange][madden.vss_poi_feed.TimeRange] דוגמה: העסק פתוח בימי שבת בין השעות 09:00 ל-12:00 ובין השעות 13:00 ל-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 } } דוגמה: העסק פתוח בימי שבת בין השעות 21:00 ליום ראשון בשעה 02:00: time_ranges { open_day: SATURDAY open_time: { hours: 21, minutes: 0 } close_day: SUNDAY close_time: { hours: 2, minutes: 0 } }
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
time_ranges | מערך של אובייקטים(TimeRange) | אוסף של שעות שבהן נקודת העניין הזו פתוחה לקהל. כל תקופה מייצגת טווח שעות שבו הנקודה פתוחה במהלך השבוע. |
TimeRange
מייצג טווח זמן שבו נקודת העניין פתוחה, החל משעת הפתיחה ביום הפתיחה שצוין ועד לשעת הסגירה ביום הסגירה שצוין. שעת הסגירה צריכה להיות אחרי שעת הפתיחה, למשל מאוחר יותר ביום הקנייה או ביום שלאחר מכן.
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
open_day | enum(DayOfWeek) | היום שבו מתחיל טווח הזמן. | |
open_time | אובייקט(TimeOfDay) | שעת הפתיחה של טווח הזמן. | |
close_day | enum(DayOfWeek) | היום שבו מסתיים טווח התאריכים. | |
close_time | אובייקט(TimeOfDay) | שעת הסגירה של טווח הזמן. |
TimeOfDay
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
hours | number | שעות ביום בפורמט של 24 שעות. הערך חייב להיות גדול מ-0 או שווה לו, ובדרך כלל הוא צריך להיות קטן מ-23 או שווה לו. יכול להיות שממשק API יאפשר את הערך '24:00:00' בתרחישים כמו שעת סגירת העסק. | |
minutes | number | מספר הדקות אחרי השעה השלמה. הערך חייב להיות גדול מ-0 או שווה לו, וקטן מ-59 או שווה לו. | |
seconds | number | שניות בדקה. הערך חייב להיות גדול מ-0 או שווה לו, ובדרך כלל קטן מ-59 או שווה לו. יכול להיות ש-API יאפשר את הערך 60 אם הוא מאפשר שניות מעוברות. | |
nanos | number | שברירי שניות, בננו-שניות. חייב להיות גדול מ-0 או שווה לו וקטן מ-999,999,999 או שווה לו. |
PriceRange
טווח המחירים של השירותים שמוצעים בנקודת העניין.
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
min_price | אובייקט(Money) | המחיר המינימלי של השירותים שמוצעים בנקודת העניין. | |
max_price | אובייקט(Money) | המחיר המקסימלי של השירותים שמוצעים בנקודת העניין. |
כסף
מייצג סכום כסף עם סוג המטבע.
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
currency_code | מחרוזת | קוד המטבע בן שלוש אותיות כפי שמוגדר בתקן ISO 4217. | |
units | number | מספר היחידות השלמות של הסכום.
לדוגמה: אם הערך של currencyCode הוא "USD", המשמעות היא ש-1 יחידה = 1 דולר ארה"ב. | |
nanos | number | מספר יחידות הננו (10^-9) של הסכום.
הערך חייב להיות בין -999,999,999 ל- +999,999,999, כולל.
אם הערך של units הוא חיובי, הערך של nanos חייב להיות חיובי או אפס.
אם הערך של units הוא אפס, הערך של nanos יכול להיות חיובי, אפס או שלילי.
אם הערך של units הוא שלילי, הערך של nanos חייב להיות שלילי או אפס.
לדוגמה, הסכום $-1.75 מיוצג כ-units=-1 וגם כ-nanos=-750,000,000. |
BrandLandingPages
דפי נחיתה מותאמים לשוק המקומי של מותג עבור נקודת עניין אחת.
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
brand_id | מחרוזת | המותג שההגדרה הזו חלה עליו. | |
localized_landing_pages | מערך של אובייקטים(LocalizedLandingPage) | דפי הנחיתה המותאמים לשוק המקומי. הערכים בשדות url ו-locales חייבים להיות ייחודיים בכל דפי הנחיתה המותאמים לשוק המקומי. | |
default_url | מחרוזת | כתובת ה-URL של דף הנחיתה שמוגדרת כברירת מחדל, שתשמש כששום אחת מכתובות ה-URL של דפי הנחיתה המותאמים לשפות שונות לא תואמת לשפה של המשתמש. |
LocalizedLandingPage
דף נחיתה מותאם לשפה המקומית של נקודת העניין.
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
url | מחרוזת | כתובת ה-URL של דף הנחיתה. אורך מקסימלי: 2,000. | |
locales | מערך מחרוזות | מגביל את הגישה לדף הזה למשתמשים עם העדפת השפה שצוינה. חייב להכיל תגי שפה, כמו en, en-US או sr-Latn. |
קטגוריה
מייצג את הקטגוריה של נקודת העניין.
הוא צריך להיות זהה לadditional_dataשדה oneof שבהמשך.
| שם | תיאור |
|---|---|
UNKNOWN_CATEGORY | |
HOTEL | |
LOCAL |
DayOfWeek
מייצג יום בשבוע.
| שם | תיאור |
|---|---|
DAY_OF_WEEK_UNSPECIFIED | לא צוין יום בשבוע. |
MONDAY | שני |
TUESDAY | שלישי |
WEDNESDAY | רביעי |
THURSDAY | חמישי |
FRIDAY | שישי |
SATURDAY | שבת |
SUNDAY | ראשון |
additional_data
חובה. שדות ספציפיים לקטגוריה.
הוא צריך להיות זהה לערך בשדה category שלמעלה.
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
hotel_data | אובייקט(HotelData) | המאפיין הזה לא יכול להיות משולב עם | שדות ספציפיים למלון. |
local_data | אובייקט(LocalData) | לא ניתן להשתמש בו עם | שדות ספציפיים לחנות מקומית. |
כתובות
חובה. כתובת של מיקום.
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
address | אובייקט(PostalAddress) | הכתובת הפיזית של המיקום. |
- פורמט: JPEG, PNG או WebP.
- גודל קובץ מקסימלי: עד 30MB לכל תמונה.
- מידות מקסימליות: פחות מ-75 מגה-פיקסל בסך הכול (רוחב x גובה < 75,000,000).
- סוג כתובת ה-URL: נתיב ישיר לנכס התמונה (למשל, מסתיים ב-.jpg).
- הרשאות: מוודאים ששרת האירוח מאפשר גישה ל-Googlebot או לסורקים, ואין קובץ robots.txt שחוסם את ספריות התמונות.
הגדרות
VssPoiFeed Definition
// Represents a Point of Interest (POI) data feed provided by a partner. export message VssPoiFeed { // The POIs in the feed. repeated VssPoi data = 1; }
הגדרה של 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; } }
הגדרת טקסט
// 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; }
הגדרה של 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; } }
הגדרה של 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; }
הגדרת התמונה
// 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; }
הגדרה של נתונים מקומיים
// 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; // The brand landing pages. repeated BrandLandingPages brand_landing_pages = 4; }
הגדרה של BrandLandingPages
// The Localized brand landing pages for a single Point of Interest (POI). message BrandLandingPages { // 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; // The default landing page url to be used when none of the localized // landing pages matches the user's language. string default_url = 3; }
דוגמאות
עדכון נקודות עניין
שם הקובץ: 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" }, { "brand_id": "delicious_eats_brand", "localized_landing_pages": [ { "url": "https://www.deliciouseats.com/en", "locales": ["en-US", "en-GB"] } ], "default_url": "https://www.deliciouseats.com" } ] } } ] }
פיד של נקודות עניין בשפות שונות
שם הקובץ: 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" }, { "brand_id": "delicious_eats_brand", "localized_landing_pages": [ { "url": "https://www.deliciouseats.com/fr", "locales": ["fr-FR", "fr-CA"] }, { "url": "https://www.deliciouseats.com/en", "locales": ["en-US", "en-GB"] } ], "default_url": "https://www.deliciouseats.com" } ] } } ] }