{"slug":"auto_service_sofia","version":1,"entity_type":"garage","coverage":{"country":"BG","region":null,"city":"Sofia","scope":"city","label":"Sofia, Bulgaria"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://robotsdataset.com/schemas/auto_service_sofia/v1.json","title":"CarRepairShopSofia","type":"object","required":["id","name","address","district","geo","phone_e164"],"properties":{"id":{"type":"string","format":"uuid"},"slug":{"type":"string"},"name":{"type":"string"},"legal_name":{"type":["string","null"]},"external_ids":{"type":"object","properties":{"place_id":{"type":"string"},"eik":{"type":"string"}},"additionalProperties":false},"address":{"type":"string"},"district":{"type":"string"},"geo":{"type":"object","required":["lat","lng"],"properties":{"lat":{"type":"number"},"lng":{"type":"number"}}},"phone_e164":{"type":"array","items":{"type":"string","pattern":"^\\+[1-9][0-9]{6,14}$"},"minItems":1},"email":{"type":["string","null"]},"website":{"type":["string","null"],"format":"uri"},"booking_url":{"type":["string","null"],"format":"uri"},"hours":{"type":["object","null"],"propertyNames":{"enum":["mon","tue","wed","thu","fri","sat","sun"]},"additionalProperties":{"type":"array","items":{"type":"array","items":{"type":"string","pattern":"^[0-2][0-9]:[0-5][0-9]$"},"minItems":2,"maxItems":2}}},"languages":{"type":"array","items":{"type":"string","pattern":"^[a-z]{2}$"}},"brands":{"type":"array","items":{"type":"string"}},"services":{"type":"array","items":{"type":"string","enum":["oil_change","brake_pads","tyre_change","diagnostics","labour","ac_service","alignment","bodywork","electrics","engine","gearbox","inspection","towing"]}},"price":{"type":"object","properties":{"oil_change_eur":{"$ref":"#/$defs/priceRange"},"brake_pads_eur":{"$ref":"#/$defs/priceRange"},"tyre_change_eur":{"$ref":"#/$defs/priceRange"},"diagnostics_eur":{"$ref":"#/$defs/priceRange"},"labour_hour_eur":{"$ref":"#/$defs/priceRange"},"ac_service_eur":{"$ref":"#/$defs/priceRange"},"on_request":{"type":"boolean"},"observed_at":{"type":"string","format":"date-time"},"legacy_currency":{"type":"boolean"}}},"reputation":{"type":"object","properties":{"google_rating":{"type":"number","minimum":1,"maximum":5},"google_reviews_count":{"type":"integer","minimum":0}}},"equipment":{"type":"object","properties":{"dyno":{"type":"boolean"},"alignment_stand":{"type":"boolean"},"ac_station":{"type":"boolean"},"diagnostic_tools":{"type":"array","items":{"type":"string"}}}},"meta":{"type":"object","properties":{"completeness":{"type":"number"},"quality_score":{"type":"number"},"provenance":{"type":"object"},"freshness":{"type":"object"},"verified_owner":{"type":"boolean"}}},"postal_code":{"type":["string","null"]},"google":{"type":"object","description":"Google Places API fields (Essentials/Pro/Enterprise; Atmosphere never requested). place_id lives in external_ids.","properties":{"primary_type":{"type":"string"},"types":{"type":"array","items":{"type":"string"}},"business_status":{"type":"string","enum":["OPERATIONAL","CLOSED_TEMPORARILY","CLOSED_PERMANENTLY"]},"price_level":{"type":"integer","minimum":0,"maximum":4},"price_range":{"type":"object","properties":{"min":{"type":["number","null"]},"max":{"type":["number","null"]},"currency":{"type":["string","null"]}}},"maps_url":{"type":"string","format":"uri"},"plus_code":{"type":"string"},"utc_offset_minutes":{"type":"integer"},"accessibility":{"type":"object","additionalProperties":{"type":"boolean"}},"photos_count":{"type":"integer","minimum":0},"photo_names":{"type":"array","items":{"type":"string"},"description":"Places photo resource names (metadata only; images are fetched on demand with attribution)"},"secondary_hours":{"type":"array","items":{"type":"object","properties":{"type":{"type":["string","null"]},"hours":{"type":["object","null"]}}}},"pure_service_area_business":{"type":"boolean"}}}},"$defs":{"priceRange":{"type":["object","null"],"properties":{"min":{"type":"number","minimum":0},"max":{"type":"number","minimum":0},"note":{"type":"string","maxLength":120}},"anyOf":[{"required":["min"]},{"required":["max"]}]}}},"attributes":{"name":{"required":true,"freshness_sla_hours":2160,"weight":5,"sources":["registry","places","website"],"validation":null},"address":{"required":true,"freshness_sla_hours":2160,"weight":5,"sources":["places","website","registry"],"validation":null},"district":{"required":true,"freshness_sla_hours":2160,"weight":3,"sources":["derived"],"validation":null},"postal_code":{"required":false,"freshness_sla_hours":2160,"weight":1,"sources":["places","website"],"validation":null},"google":{"required":false,"freshness_sla_hours":720,"weight":2,"sources":["places"],"validation":null},"geo":{"required":true,"freshness_sla_hours":2160,"weight":3,"sources":["registry","places"],"validation":null},"phone_e164":{"required":true,"freshness_sla_hours":720,"weight":5,"sources":["website","places"],"validation":null},"website":{"required":false,"freshness_sla_hours":720,"weight":4,"sources":["places","registry","website"],"validation":null},"booking_url":{"required":false,"freshness_sla_hours":720,"weight":3,"sources":["website"],"validation":null},"hours":{"required":false,"freshness_sla_hours":720,"weight":4,"sources":["website","places"],"validation":null},"languages":{"required":false,"freshness_sla_hours":2160,"weight":2,"sources":["website"],"validation":null},"brands":{"required":false,"freshness_sla_hours":2160,"weight":4,"sources":["website"],"validation":null},"services":{"required":false,"freshness_sla_hours":720,"weight":4,"sources":["website","price_page","pdf"],"validation":null},"price.oil_change_eur":{"required":false,"freshness_sla_hours":720,"weight":5,"sources":["price_page","pdf"],"validation":{"min":20,"max":400}},"price.brake_pads_eur":{"required":false,"freshness_sla_hours":720,"weight":4,"sources":["price_page","pdf"],"validation":{"min":30,"max":600}},"price.tyre_change_eur":{"required":false,"freshness_sla_hours":720,"weight":4,"sources":["price_page","pdf"],"validation":{"min":10,"max":150}},"price.diagnostics_eur":{"required":false,"freshness_sla_hours":720,"weight":3,"sources":["price_page","pdf"],"validation":{"min":10,"max":150}},"price.labour_hour_eur":{"required":false,"freshness_sla_hours":720,"weight":4,"sources":["price_page","pdf"],"validation":{"min":15,"max":150}},"price.ac_service_eur":{"required":false,"freshness_sla_hours":720,"weight":2,"sources":["price_page","pdf"],"validation":{"min":20,"max":300}},"price.on_request":{"required":false,"freshness_sla_hours":720,"weight":1,"sources":["price_page","pdf"],"validation":null},"reputation.google_rating":{"required":false,"freshness_sla_hours":168,"weight":3,"sources":["places"],"validation":null},"reputation.google_reviews_count":{"required":false,"freshness_sla_hours":168,"weight":3,"sources":["places"],"validation":null},"equipment":{"required":false,"freshness_sla_hours":2160,"weight":2,"sources":["website"],"validation":null}},"filters":{"q":{"type":"string","description":"full-text search (words are prefix-matched: 'мляк' finds 'мляко')"},"near":{"type":"string","description":"lat,lng,km"},"sort":{"type":"string","description":"quality|-quality|updated|<attr>|-<attr> (numbers numerically, strings as text)"},"limit":{"type":"integer","maximum":100,"description":"per page (format=csv|ndjson with a key: up to 1000)"},"cursor":{"type":"string","description":"opaque, from next_cursor"},"fields":{"type":"string","description":"comma list of attribute paths to return (id/slug always)"},"total":{"type":"boolean","description":"true = add `total` (count of every match)"},"ids":{"type":"string","description":"comma list of ids or slugs (batch lookup)"},"updated_since":{"type":"string","description":"ISO datetime: records refreshed after it"},"min_quality":{"type":"number","description":"quality_score at least (0..1)"},"name":{"type":"string","description":"equals (case-insensitive; comma = any of)"},"like_name":{"type":"string","description":"contains substring"},"not_name":{"type":"string","description":"not equal (comma = none of)"},"has_name":{"type":"boolean","description":"attribute present"},"legal_name":{"type":"string","description":"equals (case-insensitive; comma = any of)"},"like_legal_name":{"type":"string","description":"contains substring"},"not_legal_name":{"type":"string","description":"not equal (comma = none of)"},"has_legal_name":{"type":"boolean","description":"attribute present"},"external_ids.place_id":{"type":"string","description":"equals (case-insensitive; comma = any of)"},"like_external_ids.place_id":{"type":"string","description":"contains substring"},"not_external_ids.place_id":{"type":"string","description":"not equal (comma = none of)"},"has_external_ids.place_id":{"type":"boolean","description":"attribute present"},"external_ids.eik":{"type":"string","description":"equals (case-insensitive; comma = any of)"},"like_external_ids.eik":{"type":"string","description":"contains substring"},"not_external_ids.eik":{"type":"string","description":"not equal (comma = none of)"},"has_external_ids.eik":{"type":"boolean","description":"attribute present"},"address":{"type":"string","description":"equals (case-insensitive; comma = any of)"},"like_address":{"type":"string","description":"contains substring"},"not_address":{"type":"string","description":"not equal (comma = none of)"},"has_address":{"type":"boolean","description":"attribute present"},"district":{"type":"string","description":"equals (case-insensitive; comma = any of)"},"like_district":{"type":"string","description":"contains substring"},"not_district":{"type":"string","description":"not equal (comma = none of)"},"has_district":{"type":"boolean","description":"attribute present"},"min_geo.lat":{"type":"number"},"max_geo.lat":{"type":"number"},"has_geo.lat":{"type":"boolean","description":"attribute present"},"min_geo.lng":{"type":"number"},"max_geo.lng":{"type":"number"},"has_geo.lng":{"type":"boolean","description":"attribute present"},"phone_e164":{"type":"string","description":"array contains value (comma = any of)"},"has_phone_e164":{"type":"boolean","description":"attribute present"},"email":{"type":"string","description":"equals (case-insensitive; comma = any of)"},"like_email":{"type":"string","description":"contains substring"},"not_email":{"type":"string","description":"not equal (comma = none of)"},"has_email":{"type":"boolean","description":"attribute present"},"website":{"type":"string","description":"equals (case-insensitive; comma = any of)"},"like_website":{"type":"string","description":"contains substring"},"not_website":{"type":"string","description":"not equal (comma = none of)"},"has_website":{"type":"boolean","description":"attribute present"},"booking_url":{"type":"string","description":"equals (case-insensitive; comma = any of)"},"like_booking_url":{"type":"string","description":"contains substring"},"not_booking_url":{"type":"string","description":"not equal (comma = none of)"},"has_booking_url":{"type":"boolean","description":"attribute present"},"has_hours":{"type":"boolean","description":"attribute present"},"languages":{"type":"string","description":"array contains value (comma = any of)"},"has_languages":{"type":"boolean","description":"attribute present"},"brands":{"type":"string","description":"array contains value (comma = any of)"},"has_brands":{"type":"boolean","description":"attribute present"},"services":{"type":"string","description":"array contains value (comma = any of)","enum":["oil_change","brake_pads","tyre_change","diagnostics","labour","ac_service","alignment","bodywork","electrics","engine","gearbox","inspection","towing"]},"has_services":{"type":"boolean","description":"attribute present"},"min_price.oil_change_eur":{"type":"number"},"max_price.oil_change_eur":{"type":"number"},"has_price.oil_change_eur":{"type":"boolean","description":"attribute present"},"min_price.brake_pads_eur":{"type":"number"},"max_price.brake_pads_eur":{"type":"number"},"has_price.brake_pads_eur":{"type":"boolean","description":"attribute present"},"min_price.tyre_change_eur":{"type":"number"},"max_price.tyre_change_eur":{"type":"number"},"has_price.tyre_change_eur":{"type":"boolean","description":"attribute present"},"min_price.diagnostics_eur":{"type":"number"},"max_price.diagnostics_eur":{"type":"number"},"has_price.diagnostics_eur":{"type":"boolean","description":"attribute present"},"min_price.labour_hour_eur":{"type":"number"},"max_price.labour_hour_eur":{"type":"number"},"has_price.labour_hour_eur":{"type":"boolean","description":"attribute present"},"min_price.ac_service_eur":{"type":"number"},"max_price.ac_service_eur":{"type":"number"},"has_price.ac_service_eur":{"type":"boolean","description":"attribute present"},"price.on_request":{"type":"boolean"},"has_price.on_request":{"type":"boolean","description":"attribute present"},"price.observed_at":{"type":"string","description":"equals (case-insensitive; comma = any of)"},"like_price.observed_at":{"type":"string","description":"contains substring"},"not_price.observed_at":{"type":"string","description":"not equal (comma = none of)"},"has_price.observed_at":{"type":"boolean","description":"attribute present"},"price.legacy_currency":{"type":"boolean"},"has_price.legacy_currency":{"type":"boolean","description":"attribute present"},"min_reputation.google_rating":{"type":"number"},"max_reputation.google_rating":{"type":"number"},"has_reputation.google_rating":{"type":"boolean","description":"attribute present"},"min_reputation.google_reviews_count":{"type":"number"},"max_reputation.google_reviews_count":{"type":"number"},"has_reputation.google_reviews_count":{"type":"boolean","description":"attribute present"},"equipment.dyno":{"type":"boolean"},"has_equipment.dyno":{"type":"boolean","description":"attribute present"},"equipment.alignment_stand":{"type":"boolean"},"has_equipment.alignment_stand":{"type":"boolean","description":"attribute present"},"equipment.ac_station":{"type":"boolean"},"has_equipment.ac_station":{"type":"boolean","description":"attribute present"},"equipment.diagnostic_tools":{"type":"string","description":"array contains value (comma = any of)"},"has_equipment.diagnostic_tools":{"type":"boolean","description":"attribute present"},"postal_code":{"type":"string","description":"equals (case-insensitive; comma = any of)"},"like_postal_code":{"type":"string","description":"contains substring"},"not_postal_code":{"type":"string","description":"not equal (comma = none of)"},"has_postal_code":{"type":"boolean","description":"attribute present"},"google.primary_type":{"type":"string","description":"equals (case-insensitive; comma = any of)"},"like_google.primary_type":{"type":"string","description":"contains substring"},"not_google.primary_type":{"type":"string","description":"not equal (comma = none of)"},"has_google.primary_type":{"type":"boolean","description":"attribute present"},"google.types":{"type":"string","description":"array contains value (comma = any of)"},"has_google.types":{"type":"boolean","description":"attribute present"},"google.business_status":{"type":"string","description":"equals (case-insensitive; comma = any of)","enum":["OPERATIONAL","CLOSED_TEMPORARILY","CLOSED_PERMANENTLY"]},"not_google.business_status":{"type":"string","description":"not equal (comma = none of)"},"has_google.business_status":{"type":"boolean","description":"attribute present"},"min_google.price_level":{"type":"number"},"max_google.price_level":{"type":"number"},"has_google.price_level":{"type":"boolean","description":"attribute present"},"min_google.price_range.min":{"type":"number"},"max_google.price_range.min":{"type":"number"},"has_google.price_range.min":{"type":"boolean","description":"attribute present"},"min_google.price_range.max":{"type":"number"},"max_google.price_range.max":{"type":"number"},"has_google.price_range.max":{"type":"boolean","description":"attribute present"},"google.price_range.currency":{"type":"string","description":"equals (case-insensitive; comma = any of)"},"like_google.price_range.currency":{"type":"string","description":"contains substring"},"not_google.price_range.currency":{"type":"string","description":"not equal (comma = none of)"},"has_google.price_range.currency":{"type":"boolean","description":"attribute present"},"google.maps_url":{"type":"string","description":"equals (case-insensitive; comma = any of)"},"like_google.maps_url":{"type":"string","description":"contains substring"},"not_google.maps_url":{"type":"string","description":"not equal (comma = none of)"},"has_google.maps_url":{"type":"boolean","description":"attribute present"},"google.plus_code":{"type":"string","description":"equals (case-insensitive; comma = any of)"},"like_google.plus_code":{"type":"string","description":"contains substring"},"not_google.plus_code":{"type":"string","description":"not equal (comma = none of)"},"has_google.plus_code":{"type":"boolean","description":"attribute present"},"min_google.utc_offset_minutes":{"type":"number"},"max_google.utc_offset_minutes":{"type":"number"},"has_google.utc_offset_minutes":{"type":"boolean","description":"attribute present"},"has_google.accessibility":{"type":"boolean","description":"attribute present"},"min_google.photos_count":{"type":"number"},"max_google.photos_count":{"type":"number"},"has_google.photos_count":{"type":"boolean","description":"attribute present"},"google.photo_names":{"type":"string","description":"array contains value (comma = any of)"},"has_google.photo_names":{"type":"boolean","description":"attribute present"},"has_google.secondary_hours":{"type":"boolean","description":"attribute present"},"google.pure_service_area_business":{"type":"boolean"},"has_google.pure_service_area_business":{"type":"boolean","description":"attribute present"}},"public_fields":["name","district","website","services","brands","reputation.google_rating"],"tools":[{"name":"garage.search","description":"Find car repair shops in Sofia by service, brand, max price (EUR), district, rating.","params":{"procedure":{"type":"string","description":"service key","default":null,"enum":null,"enum_from":"taxonomy","items":null,"max":null,"filter":null},"max_price_eur":{"type":"number","description":null,"default":null,"enum":null,"enum_from":null,"items":null,"max":null,"filter":null},"brand":{"type":"string","description":null,"default":null,"enum":null,"enum_from":null,"items":null,"max":null,"filter":null},"district":{"type":"string","description":null,"default":null,"enum":null,"enum_from":null,"items":null,"max":null,"filter":null},"near":{"type":"string","description":"lat,lng,km","default":null,"enum":null,"enum_from":null,"items":null,"max":null,"filter":null},"min_rating":{"type":"number","description":null,"default":null,"enum":null,"enum_from":null,"items":null,"max":null,"filter":null},"limit":{"type":"integer","description":null,"default":10,"enum":null,"enum_from":null,"items":null,"max":50,"filter":null}},"price_usd":0.02},{"name":"garage.get","description":"","params":{"id":{"type":"string","description":null,"default":null,"enum":null,"enum_from":null,"items":null,"max":null,"filter":null}},"price_usd":0.05},{"name":"garage.prices","description":"","params":{"id":{"type":"string","description":null,"default":null,"enum":null,"enum_from":null,"items":null,"max":null,"filter":null},"procedure":{"type":"string","description":null,"default":null,"enum":null,"enum_from":null,"items":null,"max":null,"filter":null}},"price_usd":0.05},{"name":"garage.compare","description":"","params":{"ids":{"type":"array","description":null,"default":null,"enum":null,"enum_from":null,"items":"string","max":5,"filter":null},"procedure":{"type":"string","description":null,"default":null,"enum":null,"enum_from":null,"items":null,"max":null,"filter":null}},"price_usd":0.1},{"name":"market.stats","description":"","params":{"procedure":{"type":"string","description":null,"default":null,"enum":null,"enum_from":null,"items":null,"max":null,"filter":null},"district":{"type":"string","description":null,"default":null,"enum":null,"enum_from":null,"items":null,"max":null,"filter":null}},"price_usd":0.1}],"taxonomy":{"oil_change":{"bg":"Смяна на масло и филтри","en":"Oil change"},"brake_pads":{"bg":"Смяна на накладки","en":"Brake pads"},"tyre_change":{"bg":"Смяна на гуми","en":"Tyre change"},"diagnostics":{"bg":"Компютърна диагностика","en":"Diagnostics"},"labour":{"bg":"Труд (час)","en":"Labour hour"},"ac_service":{"bg":"Обслужване на климатик","en":"A/C service"},"alignment":{"bg":"Реглаж","en":"Wheel alignment"},"bodywork":{"bg":"Автобояджийски и тенекеджийски","en":"Bodywork"},"electrics":{"bg":"Автоелектрика","en":"Electrics"},"engine":{"bg":"Ремонт на двигател","en":"Engine repair"},"gearbox":{"bg":"Скоростна кутия","en":"Gearbox"},"inspection":{"bg":"Годишен технически преглед","en":"Inspection (MOT)"},"towing":{"bg":"Пътна помощ","en":"Towing"}}}