sheahomes.com APIwww.sheahomes.com ↗
Access Shea Homes new construction communities, floor plans, pricing, and quick move-in homes across all US markets via two structured endpoints.
curl -X GET 'https://api.parse.bot/scraper/1f56327d-6cb2-4539-b7be-20c7915b8c61/get_community_plans' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed Python client. Install the CLI, sign in, then pull this API’s generated client:
pip install parse-sdk parse login parse add --marketplace sheahomes-com-api
parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""
Shea Homes API Client
Access Shea Homes new construction community listings, floor plans, and quick move-in homes.
Get your API key from: https://parse.bot/settings
"""
import os
import requests
from typing import Optional, Dict, Any, List
class ParseClient:
"""Client for interacting with the Shea Homes Parse API."""
def __init__(self, api_key: Optional[str] = None):
"""
Initialize the Parse API client.
Args:
api_key: API key for authentication. If not provided, reads from PARSE_API_KEY env var.
"""
self.base_url = "https://api.parse.bot"
self.scraper_id = "1f56327d-6cb2-4539-b7be-20c7915b8c61"
self.api_key = api_key or os.getenv("PARSE_API_KEY")
if not self.api_key:
raise ValueError(
"API key is required. Pass it as an argument or set PARSE_API_KEY environment variable."
)
def _call(self, endpoint: str, method: str = "POST", **params) -> Dict[str, Any]:
"""
Make an API call to the Parse API.
Args:
endpoint: The endpoint name (e.g., 'list_communities', 'get_community_plans')
method: HTTP method ('GET' or 'POST')
**params: Parameters to send with the request
Returns:
The JSON response from the API
Raises:
requests.RequestException: If the API call fails
"""
url = f"{self.base_url}/scraper/{self.scraper_id}/{endpoint}"
headers = {"X-API-Key": self.api_key, "Content-Type": "application/json"}
try:
if method.upper() == "GET":
response = requests.get(url, headers=headers, params=params, timeout=30)
elif method.upper() == "POST":
payload = params if params else {}
response = requests.post(url, headers=headers, json=payload, timeout=30)
else:
raise ValueError(f"Unsupported HTTP method: {method}")
response.raise_for_status()
return response.json()
except requests.RequestException as e:
print(f"API call failed: {e}")
raise
def list_communities(self, state: Optional[str] = None) -> Dict[str, Any]:
"""
List all Shea Homes communities.
Args:
state: Optional two-letter US state abbreviation to filter communities.
Accepted values: AZ, CA, CO, FL, ID, NC, NV, SC, TX, VA, WA
Returns:
Response containing list of communities with summary information
"""
params = {}
if state:
params["state"] = state.upper()
return self._call("list_communities", method="GET", **params)
def get_community_plans(self, community_url: str) -> Dict[str, Any]:
"""
Retrieve all home plans and quick move-in homes for a specific community.
Args:
community_url: The community page URL path or full URL
Returns:
Response containing home plans and quick move-in listings
"""
return self._call("get_community_plans", method="GET", community_url=community_url)
def print_community_summary(community: Dict[str, Any]) -> None:
"""Print a formatted summary of a community."""
print(f"\n{'='*70}")
print(f"Community: {community['name']} ({community['state']})")
print(f"Location: {community['city']}")
print(f"Home Type: {community['home_type']}")
print(f"Starting Price: {community['from_price']}")
print(f"Square Footage: {community['square_footage']} sq ft")
print(f"Beds: {community['bedrooms']} | Baths: {community['bathrooms']}")
def print_home_plan(plan: Dict[str, Any], is_qmi: bool = False) -> None:
"""Print a formatted summary of a home plan."""
status = "QMI" if is_qmi else "Plan"
print(f" • {plan['plan_name']} ({status})")
print(f" Size: {plan['square_footage']} sq ft | {plan['bedrooms']}B/{plan['bathrooms']}B")
print(f" Garage: {plan['garage']} | Stories: {plan['stories']}")
print(f" Price: {plan['from_price']} | Status: {plan['status']}")
def main():
"""Main example demonstrating practical usage of the Shea Homes API."""
# Initialize client
client = ParseClient()
print("🏠 Shea Homes Community Explorer")
print("=" * 70)
# Step 1: List all communities in Arizona
print("\n📍 Fetching all communities in Arizona...")
communities_response = client.list_communities(state="AZ")
if communities_response.get("status") != "success":
print("Failed to fetch communities")
return
communities = communities_response["data"]["communities"]
total = communities_response["data"]["total"]
print(f"✓ Found {total} communities in Arizona")
# Step 2: Show first 3 communities
print(f"\nShowing first 3 communities:")
for community in communities[:3]:
print_community_summary(community)
# Step 3: Get detailed plans for the first community
if communities:
first_community = communities[0]
community_name = first_community["name"]
community_url = first_community["community_url"]
print(f"\n\n📋 Fetching detailed plans for: {community_name}")
print("-" * 70)
plans_response = client.get_community_plans(community_url)
if plans_response.get("status") != "success":
print("Failed to fetch community plans")
return
plans_data = plans_response["data"]
print(f"Builder: {plans_data['builder']}")
print(f"Total Plans: {plans_data['total_plans']}")
print(f"Quick Move-Ins Available: {plans_data['total_qmi']}")
# Step 4: Display home plans
if plans_data.get("home_plans"):
print(f"\n📐 Home Plans ({len(plans_data['home_plans'])}):")
for plan in plans_data["home_plans"][:3]:
print_home_plan(plan, is_qmi=False)
# Step 5: Display quick move-in homes
if plans_data.get("quick_move_ins"):
print(f"\n⚡ Quick Move-In Homes ({len(plans_data['quick_move_ins'])}):")
for qmi in plans_data["quick_move_ins"][:3]:
print_home_plan(qmi, is_qmi=True)
# Step 6: Search for communities in multiple states
print(f"\n\n🌎 Searching multiple states for Quick Move-In opportunities...")
print("-" * 70)
qmi_summary = {}
states_to_search = ["TX", "FL", "NC"]
for state in states_to_search:
state_response = client.list_communities(state=state)
if state_response.get("status") == "success":
communities_in_state = state_response["data"]["communities"]
qmi_summary[state] = len(communities_in_state)
print(f"{state}: {len(communities_in_state)} communities found")
print(f"\n✓ Exploration complete!")
if __name__ == "__main__":
main()Retrieve all home plans and quick move-in homes for a specific Shea Homes community. Returns builder name, community name, plan names, square footage, bedrooms, bathrooms, pricing, status, and listing URLs.
| Param | Type | Description |
|---|---|---|
| community_urlrequired | string | The community page URL path or full URL. Obtain from list_communities endpoint's community_url field. |
{
"type": "object",
"fields": {
"builder": "string",
"total_qmi": "integer",
"home_plans": "array of plan objects",
"total_plans": "integer",
"community_url": "string",
"community_name": "string",
"quick_move_ins": "array of QMI plan objects"
},
"sample": {
"data": {
"builder": "Shea Homes",
"total_qmi": 3,
"home_plans": [
{
"garage": "2-3",
"status": "MODEL HOME",
"builder": "Shea Homes",
"stories": "1",
"bedrooms": "4",
"bathrooms": "3",
"plan_name": "Plan 6001",
"from_price": "$1,224,990",
"listing_url": "https://www.sheahomes.com/new-homes/arizona/phoenix-area/chandler/symmetry-at-magnolia/plan-6001",
"listing_type": "home_plan",
"community_name": "Symmetry at Magnolia",
"half_bathrooms": "1",
"square_footage": "3,157"
}
],
"total_plans": 4,
"community_url": "https://www.sheahomes.com/new-homes/arizona/phoenix-area/chandler/symmetry-at-magnolia",
"community_name": "Symmetry at Magnolia",
"quick_move_ins": [
{
"garage": "3",
"status": "Move-In Now!",
"builder": "Shea Homes",
"stories": "1",
"bedrooms": "4",
"bathrooms": "3",
"plan_name": "Homesite 49",
"from_price": "$1,444,380",
"listing_url": "https://www.sheahomes.com/new-homes/arizona/phoenix-area/chandler/symmetry-at-magnolia/homesite-49",
"listing_type": "quick_move_in",
"community_name": "Symmetry at Magnolia",
"half_bathrooms": "1",
"square_footage": "3,662"
}
]
},
"status": "success"
}
}About the sheahomes.com API
The Shea Homes API provides 2 endpoints that return structured data on new construction communities, floor plans, and quick move-in homes across all active Shea Homes markets in the US. The list_communities endpoint surfaces every community with location, home type, and starting price, while get_community_plans drills into a specific community to return individual plan specs, pricing, bedroom and bathroom counts, square footage, and available quick move-in units.
Community Listings
The list_communities endpoint returns a full inventory of active Shea Homes communities. Each record in the communities array includes the community name, location, home type, starting price, and a community_url field that feeds directly into the other endpoint. Optionally pass a state parameter — a two-letter abbreviation such as CA, TX, or AZ — to narrow results to a single state. The response also includes a total count and a filter_state value echoing the filter applied.
Floor Plans and Quick Move-In Homes
Pass a community_url value from list_communities into get_community_plans to retrieve that community's full plan lineup. The response returns home_plans (an array of plan objects covering plan name, square footage, bedroom count, bathroom count, price, status, and listing URL) alongside quick_move_ins (QMI inventory that is already built or under construction and available for near-term purchase). Summary integers total_plans and total_qmi let you gauge inventory size without iterating the arrays. The response also echoes builder, community_name, and community_url for straightforward record linkage.
Coverage
Shea Homes operates communities across Arizona, California, Colorado, Florida, Idaho, North Carolina, Nevada, South Carolina, Texas, and Virginia. All states available through the builder are accessible via the state filter. The data reflects the listing details published on sheahomes.com, including plan-level pricing and availability status.
The sheahomes.com API is a managed, monitored endpoint for www.sheahomes.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when www.sheahomes.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official www.sheahomes.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Aggregate new construction inventory by state to compare Shea Homes supply across markets.
- Track starting price changes across communities over time using
list_communitiesprice fields. - Identify communities with available quick move-in homes using
total_qmibefore drilling intoquick_move_insdetails. - Build a floor plan comparison tool using square footage, bedroom, and bathroom fields from
get_community_plans. - Populate a new construction search widget with community names, locations, and URLs from
list_communities. - Monitor plan availability status changes to alert buyers when a specific plan becomes active or sold.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Shea Homes have an official public developer API?+
What does `get_community_plans` return beyond plan names?+
home_plans includes the plan name, square footage, bedroom count, bathroom count, price, current availability status, and a direct listing URL. The quick_move_ins array uses the same shape but covers only homes already available for near-term purchase. The response also returns total_plans and total_qmi as integer counts.Can I filter communities by city or county rather than just state?+
list_communities endpoint currently supports filtering only by two-letter US state abbreviation via the state parameter. City or county-level filtering is not available. You can fork this API on Parse and revise it to add a city or county filter against the returned community data.Does the API return lot-level data, community site maps, or construction status timelines?+
How should I use the `community_url` field from `list_communities`?+
community_url value directly as the community_url input to get_community_plans. The field is returned in every community summary object from list_communities and is the required input for retrieving that community's floor plans and QMI homes.