Discover/Toll Brothers API
live

Toll Brothers APItollbrothers.com

Retrieve home designs and quick move-in homes from Toll Brothers community pages. Access floor plans, pricing, bed/bath counts, and square footage via one endpoint.

This API takes change requests — .
Endpoint health
verified 6d ago
get_community_homes
1/1 passing latest checkself-healing
Endpoints
1
Updated
11d ago

What is the Toll Brothers API?

The Toll Brothers API exposes 1 endpoint, get_community_homes, that returns every home design and quick move-in (QMI) listing from a given Toll Brothers community page. Each result includes 8 structured fields per home: builder name, community name, plan name, square footage, bedroom and bathroom counts, starting price, and QMI price where applicable. This makes it straightforward to pull structured new-construction inventory directly from Toll Brothers community URLs.

This call costs1 credit / call— charged only on success
Try it
The Toll Brothers community page URL path, e.g. '/luxury-homes-for-sale/California/Metro-Heights/Viewpoint'. Full URLs starting with https://www.tollbrothers.com are also accepted.
api.parse.bot/scraper/fc75b6ab-bf75-4c1e-bc61-c3631a2194e3/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/fc75b6ab-bf75-4c1e-bc61-c3631a2194e3/get_community_homes?community_url=%2Fluxury-homes-for-sale%2FCalifornia%2FMetro-Heights%2FViewpoint' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace tollbrothers-com-api

uv run 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.

"""
Toll Brothers Community Homes API Client

This module provides a Python client for the Parse API to retrieve home designs
and quick move-in homes from Toll Brothers community pages.

Get your API key from: https://parse.bot/settings
"""

import os
import requests
from typing import Optional


class ParseClient:
    """Client for interacting with the 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, will use PARSE_API_KEY env var.
        """
        self.base_url = "https://api.parse.bot"
        self.scraper_id = "fc75b6ab-bf75-4c1e-bc61-c3631a2194e3"
        self.api_key = api_key or os.getenv("PARSE_API_KEY")
        
        if not self.api_key:
            raise ValueError("API key must be provided or set in PARSE_API_KEY environment variable")
    
    def _call(self, endpoint: str, method: str = "POST", **params) -> dict:
        """
        Make a request to the Parse API.
        
        Args:
            endpoint: The API endpoint name
            method: HTTP method (GET or POST)
            **params: Parameters to pass to the endpoint
            
        Returns:
            JSON response from the API
        """
        url = f"{self.base_url}/scraper/{self.scraper_id}/{endpoint}"
        headers = {
            "X-API-Key": self.api_key,
            "Content-Type": "application/json"
        }
        
        if method == "GET":
            response = requests.get(url, headers=headers, params=params)
        elif method == "POST":
            response = requests.post(url, headers=headers, json=params)
        else:
            raise ValueError(f"Unsupported HTTP method: {method}")
        
        response.raise_for_status()
        return response.json()
    
    def get_community_homes(self, community_url: str) -> dict:
        """
        Retrieve all home designs and quick move-in homes from a Toll Brothers community page.
        
        Args:
            community_url: The Toll Brothers community page URL path or full URL
                          e.g., '/luxury-homes-for-sale/California/Metro-Heights/Viewpoint'
        
        Returns:
            Dictionary containing community name, homes list, and total count
        """
        return self._call("get_community_homes", method="GET", community_url=community_url)


def main():
    """Main function demonstrating practical usage of the Toll Brothers API client."""
    
    # Initialize the client
    client = ParseClient()
    
    # List of Toll Brothers communities to analyze
    communities_to_search = [
        "/luxury-homes-for-sale/California/Metro-Heights/Viewpoint",
        "/luxury-homes-for-sale/Pennsylvania/Philadelphia-Area/Moorland",
    ]
    
    print("=" * 80)
    print("TOLL BROTHERS COMMUNITY HOMES ANALYSIS")
    print("=" * 80)
    
    all_homes = []
    total_communities = 0
    
    # Fetch homes from each community
    for community_url in communities_to_search:
        try:
            print(f"\nFetching homes from: {community_url}")
            response = client.get_community_homes(community_url)
            
            if response.get("status") == "success":
                community_data = response.get("data", {})
                community_name = community_data.get("community_name", "Unknown")
                homes = community_data.get("homes", [])
                total = community_data.get("total", 0)
                
                print(f"Community: {community_name}")
                print(f"Total homes found: {total}")
                
                total_communities += 1
                
                # Process each home
                for idx, home in enumerate(homes, 1):
                    all_homes.append(home)
                    
                    # Print home details
                    print(f"\n  Home {idx}:")
                    print(f"    Plan: {home.get('plan_name', 'N/A')}")
                    print(f"    Builder: {home.get('builder_name', 'N/A')}")
                    print(f"    Bedrooms: {home.get('bedrooms', 'N/A')}")
                    print(f"    Bathrooms: {home.get('bathrooms', 'N/A')}")
                    print(f"    Square Footage: {home.get('square_footage', 'N/A'):,}")
                    print(f"    Starting Price: ${home.get('starting_price', 0):,}")
                    
                    if home.get("is_qmi"):
                        qmi_price = home.get("qmi_price")
                        print(f"    Quick Move-In: YES - ${qmi_price:,}")
                    else:
                        print(f"    Quick Move-In: NO")
                    
                    print(f"    URL: {home.get('listing_url', 'N/A')}")
            else:
                print(f"Error: {response.get('message', 'Unknown error')}")
        
        except requests.exceptions.RequestException as e:
            print(f"Error fetching community {community_url}: {e}")
        except Exception as e:
            print(f"Unexpected error processing {community_url}: {e}")
    
    # Summary analysis
    print("\n" + "=" * 80)
    print("SUMMARY ANALYSIS")
    print("=" * 80)
    
    if all_homes:
        print(f"Total communities searched: {total_communities}")
        print(f"Total homes found: {len(all_homes)}")
        
        # Calculate statistics
        prices = [h.get("starting_price", 0) for h in all_homes if h.get("starting_price")]
        if prices:
            avg_price = sum(prices) / len(prices)
            min_price = min(prices)
            max_price = max(prices)
            print(f"\nPrice Statistics:")
            print(f"  Average Price: ${avg_price:,.0f}")
            print(f"  Minimum Price: ${min_price:,}")
            print(f"  Maximum Price: ${max_price:,}")
        
        # Count QMI homes
        qmi_homes = [h for h in all_homes if h.get("is_qmi")]
        print(f"\nQuick Move-In Homes: {len(qmi_homes)} out of {len(all_homes)}")
        
        # Bedroom distribution
        bedroom_counts = {}
        for home in all_homes:
            bedrooms = home.get("bedrooms", "Unknown")
            bedroom_counts[bedrooms] = bedroom_counts.get(bedrooms, 0) + 1
        
        print(f"\nBedroom Distribution:")
        for bedrooms, count in sorted(bedroom_counts.items()):
            print(f"  {bedrooms} bedrooms: {count} homes")
    else:
        print("No homes found in any community.")


if __name__ == "__main__":
    main()
All endpoints · 1 totalmissing one? ·

Retrieve all home designs and quick move-in (QMI) homes listed on a Toll Brothers community page. Returns each floor plan with builder name, community name, plan name, square footage, bedroom count, bathroom count, starting/from price, QMI price (if applicable), and the listing URL. Supports both individual community pages and master community pages which aggregate multiple sub-communities.

Input
ParamTypeDescription
community_urlrequiredstringThe Toll Brothers community page URL path, e.g. '/luxury-homes-for-sale/California/Metro-Heights/Viewpoint'. Full URLs starting with https://www.tollbrothers.com are also accepted.
Response
{
  "type": "object",
  "fields": {
    "homes": "array of home objects with builder_name, community_name, plan_name, square_footage, bedrooms, bathrooms, starting_price, qmi_price, is_qmi, listing_url",
    "total": "integer",
    "community_name": "string"
  },
  "sample": {
    "data": {
      "homes": [
        {
          "is_qmi": false,
          "bedrooms": "5-6",
          "bathrooms": "5-6",
          "plan_name": "Compass",
          "qmi_price": null,
          "listing_url": "https://www.tollbrothers.com/luxury-homes-for-sale/California/Metro-Heights/Viewpoint/Compass",
          "builder_name": "Toll Brothers",
          "community_name": "Viewpoint at Metro Heights",
          "square_footage": 2962,
          "starting_price": 1758000
        },
        {
          "is_qmi": true,
          "bedrooms": "5",
          "bathrooms": "5",
          "plan_name": "Compass Contemporary Craftsman",
          "qmi_price": 1758000,
          "listing_url": "https://www.tollbrothers.com/luxury-homes-for-sale/California/Metro-Heights/Viewpoint/Quick-Move-In/284366",
          "builder_name": "Toll Brothers",
          "community_name": "Viewpoint at Metro Heights",
          "square_footage": 2962,
          "starting_price": 1758000
        }
      ],
      "total": 6,
      "community_name": "Viewpoint at Metro Heights"
    },
    "status": "success"
  }
}

About the Toll Brothers API

What the API Returns

The get_community_homes endpoint accepts a single required parameter, community_url, which is the path portion of a Toll Brothers community page (for example, /luxury-homes-for-sale/California/Metro-Heights/Viewpoint). The response contains a homes array, a total integer reflecting the count of listings found, and a community_name string identifying the community.

Home Object Fields

Each object in the homes array includes builder_name, community_name, plan_name, square_footage, bedrooms, bathrooms, starting_price, and qmi_price. The starting_price field reflects the base from-price for a standard home design, while qmi_price is populated only when that specific unit is a quick move-in home with an assigned price. Floor plans without a QMI designation will return null or an empty value for qmi_price.

Coverage and Scope

The endpoint is scoped to a single community page per request. To aggregate data across multiple Toll Brothers communities, you call the endpoint once per community URL. The community_url parameter maps directly to Toll Brothers' URL structure, so any publicly accessible community page can be queried. Data reflects what is currently published on that community's listing page, including both available home designs and any active quick move-in homes.

Reliability & maintenanceVerified

The Toll Brothers API is a managed, monitored endpoint for tollbrothers.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when tollbrothers.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 tollbrothers.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.

Last verified
6d ago
Latest check
1/1 endpoint passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Track starting price changes for specific Toll Brothers floor plans across communities over time
  • Build a new-construction home search tool filtered by bedroom count and square footage
  • Identify which communities currently have quick move-in homes available by checking qmi_price
  • Aggregate square footage and pricing data across multiple Toll Brothers communities for market analysis
  • Compare bedroom and bathroom configurations across floor plans within a single community
  • Alert buyers when a new QMI home appears in a target community
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 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.

Frequently asked questions
Does Toll Brothers offer an official developer API?+
Toll Brothers does not publish a public developer API or documented data feed. There is no official API key program or developer portal available at tollbrothers.com.
How does the `get_community_homes` endpoint distinguish quick move-in homes from standard floor plans?+
Standard floor plan listings populate the starting_price field and return a null or empty qmi_price. Quick move-in homes carry a specific assigned price in the qmi_price field, which you can use to filter QMI-only results from a community's full listing.
Can I query multiple communities in one request?+
No. Each call to get_community_homes covers one community URL. To collect data across communities, you make one request per community_url value. The total field in each response tells you how many homes were returned for that community.
Does the API return lot-level details, GPS coordinates, or home images?+
Not currently. The API covers plan-level fields: builder name, community name, plan name, square footage, bedroom and bathroom counts, starting price, and QMI price. Lot numbers, site maps, coordinates, and image URLs are not part of the current response shape. You can fork this API on Parse and revise it to add those fields.
Does the API cover Toll Brothers communities outside the United States or in every US state?+
Coverage is limited to publicly accessible Toll Brothers community pages. The endpoint works for any valid community_url path on tollbrothers.com, but communities behind login walls or not yet published publicly will not return data. If a specific region's pages are not accessible, the response will reflect that. You can fork this API on Parse and revise it to handle additional regional URL patterns or community discovery.
Page content last updated . Spec covers 1 endpoint from tollbrothers.com.
Related APIs in Real EstateSee all →
zillow.com API
Search for homes for sale, rent, or recently sold listings on Zillow while accessing detailed property information, Zestimates, agent profiles, and current mortgage rates all in one place. Streamline your real estate research by gathering comprehensive property details, agent information, and financing options without navigating multiple pages.
zoopla.co.uk API
Search for properties available for sale or rent, view detailed listing information, check sold house prices, and find local estate agents all in one place. Get access to live marketplace data to help you research properties, compare prices, and connect with agents on the Zoopla platform.
domain.com.au API
Search and compare property listings for sale, rent, or sold properties across Australia, view detailed property information and agent profiles, and explore suburb insights to make informed real estate decisions. Access comprehensive data on agents, neighborhoods, and properties all in one place.
funda.nl API
Search for property listings on Funda.nl, the largest Dutch real estate platform. Access prices, addresses, property details, and agent contact information across Dutch cities and neighbourhoods. Supports paginated browsing and bulk retrieval of listings by area.
loopnet.com API
Access LoopNet's commercial real estate data programmatically. Search listings by location, property type, and transaction type; retrieve full listing details including pricing and property facts; and find and profile commercial real estate brokers.
homes.com API
Search for real estate agents and properties available for sale or rent, while accessing detailed agent profiles with their 1-year transaction history, active listings, and performance statistics. Get comprehensive property details and agent information all in one place to help you find the right agent or property that matches your needs.
cbre.com API
Search CBRE's commercial real estate listings by location, property type, and transaction (lease or sale) to find available properties and spaces that match your criteria. Access detailed property information including pricing, agent contacts, and specific space details to evaluate investment or leasing opportunities.
immobiliare.it API
Search Italian property listings for sale or rent, browse real estate agencies, and explore price trends across Italian cities — all via immobiliare.it.