diff --git a/homeharvest/core/scrapers/realtor/__init__.py b/homeharvest/core/scrapers/realtor/__init__.py index 086e66a..40d5f88 100644 --- a/homeharvest/core/scrapers/realtor/__init__.py +++ b/homeharvest/core/scrapers/realtor/__init__.py @@ -1137,7 +1137,7 @@ query GetHomeDetails {{ data = self._graphql_post(query, {}, "GetHomeDetails") - if "data" not in data: + if "data" not in data or data["data"] is None: # If we got a 400 error with "Required parameter is missing", raise to trigger retry if data and "errors" in data: error_msgs = [e.get("message", "") for e in data.get("errors", [])] @@ -1146,6 +1146,6 @@ query GetHomeDetails {{ return {} properties = data["data"] - return {data.replace('home_', ''): properties[data] for data in properties if properties[data]} + return {key.replace('home_', ''): properties[key] for key in properties if properties[key]} diff --git a/homeharvest/core/scrapers/realtor/queries.py b/homeharvest/core/scrapers/realtor/queries.py index 0fb4e0e..1258824 100644 --- a/homeharvest/core/scrapers/realtor/queries.py +++ b/homeharvest/core/scrapers/realtor/queries.py @@ -379,7 +379,188 @@ _SEARCH_HOMES_DATA_BASE = """{ HOME_FRAGMENT = """ fragment HomeDetailsFragment on Home { + __typename + pending_date + listing_id property_id + href + permalink + list_date + status + mls_status + last_sold_price + last_sold_date + last_status_change_date + last_update_date + list_price + list_price_max + list_price_min + price_per_sqft + tags + open_houses { + start_date + end_date + description + time_zone + dst + href + methods + } + details { + category + text + parent_category + } + pet_policy { + cats + dogs + dogs_small + dogs_large + __typename + } + units { + availability { + date + __typename + } + description { + baths_consolidated + baths + beds + sqft + __typename + } + photos(https: true) { + title + href + tags { + label + } + } + list_price + __typename + } + flags { + is_contingent + is_pending + is_new_construction + } + description { + type + sqft + beds + baths_full + baths_half + lot_sqft + year_built + garage + type + name + stories + text + } + source { + id + listing_id + } + hoa { + fee + } + location { + address { + street_direction + street_number + street_name + street_suffix + line + unit + city + state_code + postal_code + coordinate { + lon + lat + } + } + county { + name + fips_code + } + neighborhoods { + name + } + parcel { + parcel_id + } + } + tax_record { + cl_id + public_record_id + last_update_date + apn + tax_parcel_id + } + primary_photo(https: true) { + href + } + photos(https: true) { + title + href + tags { + label + } + } + advertisers { + email + broker { + name + fulfillment_id + } + type + name + fulfillment_id + builder { + name + fulfillment_id + } + phones { + ext + primary + type + number + } + office { + name + email + fulfillment_id + href + phones { + number + type + primary + ext + } + mls_set + } + corporation { + specialties + name + bio + href + fulfillment_id + } + mls_set + nrds_id + state_license + rental_corporation { + fulfillment_id + } + rental_management { + name + href + fulfillment_id + } + } nearbySchools: nearby_schools(radius: 5.0, limit_per_level: 3) { __typename schools { district { __typename id name } } } @@ -395,11 +576,6 @@ fragment HomeDetailsFragment on Home { last_n_days } } - location { - parcel { - parcel_id - } - } taxHistory: tax_history { __typename tax year assessment { __typename building land total } } property_history { date @@ -424,6 +600,18 @@ fragment HomeDetailsFragment on Home { text category } + estimates { + __typename + currentValues: current_values { + __typename + source { __typename type name } + estimate + estimateHigh: estimate_high + estimateLow: estimate_low + date + isBestHomeValue: isbest_homevalue + } + } } """ diff --git a/pyproject.toml b/pyproject.toml index 4200536..6f0c219 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "homeharvest" -version = "0.8.8" +version = "0.8.9" description = "Real estate scraping library" authors = ["Zachary Hampton ", "Cullen Watson "] homepage = "https://github.com/ZacharyHampton/HomeHarvest"