# Toll Brothers Scraper (`crawlerbros/toll-brothers-scraper`) Actor

Scrape luxury new-construction home communities, floor plans, and quick-move-in homes from Toll Brothers across 78 US states and metro areas.

- **URL**: https://apify.com/crawlerbros/toll-brothers-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Real estate, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Toll Brothers Scraper

Scrape luxury new-construction home communities, floor plans, and quick-move-in (already-built, move-in-ready) homes from [Toll Brothers](https://www.tollbrothers.com), America's leading builder of luxury homes. No login, no cookies, no paid proxy required.

### What this actor does

- **Two modes:** browse communities by state or metro area, or pull every floor plan and quick-move-in home for specific communities
- **78 US states and metro areas** covered
- **Rich community data:** full address, county, school district, metro area, phone, price range, bedroom/bathroom/half-bath/sqft/garage ranges, home types, community amenities/types, quick-delivery-home counts, GPS coordinates
- **Floor plans:** plan name, home type, starting price, specs, story count, quick-move-in count for that plan, rendering photo
- **Quick move-in homes:** the exact street address, lot number, anticipated move-in date, exact price, and specs of a specific already-built home currently for sale
- **Filters:** price range, minimum bedrooms, quick-delivery-only, exclude future/not-yet-open communities, home type, community type
- **Sort:** order communities by price (low-to-high / high-to-low) or by most bedrooms before the `maxItems` cap is applied
- **Empty fields are omitted** — every record only contains data Toll Brothers actually returned

### Output per record

`recordType` distinguishes three shapes in the same dataset:

**`community`** (mode=byLocation)

- `communityId`, `name`, `description`, `badge` (e.g. "New Home Sites Just Released")
- `address` — `{ streetAddress, city, county, state, zipCode }`
- `metroName`, `phone`, `schoolDistrict`
- `priceFrom` / `priceTo` (USD)
- `bedrooms` / `bathrooms` / `halfBathrooms` / `sqft` / `garage` — `{ min, max }`
- `homeTypes[]`, `communityTypes[]` (e.g. "Amenities/Resort", "Golf", "Waterfront")
- `storyCounts[]` (e.g. `["1", "2"]`), `floorPlanCount`, `communityHighlights[]` (e.g. "Gated", "Top-Rated Education")
- `quickDeliveryHomeCount`, `comingSoonQuickDeliveryCount`, `hasQuickDeliveryHomes`, `isFutureCommunity`, `hasVirtualTour`
- `latitude`, `longitude`
- `imageUrl`, `logoUrl`
- `communityUrl`, `sourceUrl`

**`floorPlan`** (mode=communityDetails)

- `name`, `planId`, `homeType`, `collectionName`, `description`, `priceFrom`
- `bedrooms` / `bathrooms` / `halfBathrooms` — `{ min, max }`, `sqft`, `garage` — `{ min, max }`
- `stories`, `masterBedroomLocation`, `planHighlights[]`, `isComingSoon`, `isDecoratedModel`
- `quickMoveInCount` — how many already-built homes of this plan are for sale right now
- `floorPlanImageUrls[]`, `elevationImageUrls[]` — floor-plan diagram images and exterior elevation renderings
- `standardMortgageRatePercent`, `jumboMortgageRatePercent`, `jumboLoanLimit` (USD) — Toll Brothers' own published mortgage-calculator rates for this plan
- `latitude`, `longitude`
- `imageUrl`, `planUrl`, `communityName`, `communityUrl`, `sourceUrl`

**`quickMoveInHome`** (mode=communityDetails)

- `name`, `homeId`, `homeType`, `description`
- `address` — `{ street, city, state, zipCode, county }`, `lotNumber`
- `moveInDate` (anticipated), `price`
- `bedrooms`, `bathrooms`, `halfBathrooms` (exact counts for this specific home), `sqft`, `garage`, `stories`, `masterBedroomLocation`
- `planHighlights[]`, `communityHighlights[]`, `communityAmenities[]` (e.g. "Clubhouse", "Pool", "Fitness Center")
- `floorPlanImageUrls[]`, `elevationImageUrls[]`
- `standardMortgageRatePercent`, `jumboMortgageRatePercent`, `jumboLoanLimit` (USD)
- `latitude`, `longitude`
- `imageUrl`, `communityName`, `communityUrl`, `homeUrl`, `sourceUrl`

Every record also has `scrapedAt` (UTC ISO timestamp).

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | string | `byLocation` | `byLocation` or `communityDetails` |
| `location` | select | `Florida` | One of 78 US states / metro areas (mode=byLocation) |
| `communityUrls` | array | – | Toll Brothers community URLs (mode=communityDetails) |
| `includeFloorPlans` | boolean | `true` | Emit floor-plan records (mode=communityDetails) |
| `includeQuickMoveIns` | boolean | `true` | Emit quick-move-in home records (mode=communityDetails) |
| `minPrice` / `maxPrice` | number | – | Filter by price (USD) |
| `minBedrooms` | number | – | Minimum bedrooms |
| `qdhOnly` | boolean | `false` | Mode=byLocation: only communities with quick-delivery inventory |
| `excludeFuture` | boolean | `false` | Mode=byLocation: drop not-yet-open communities |
| `homeTypes` | array (select) | – | Mode=byLocation: only keep communities offering Single Family, Townhome, and/or Condo homes |
| `communityTypes` | array (select) | – | Mode=byLocation: only keep communities tagged Luxury Home, Amenities/Resort, Active Adult, Waterfront, Golf, City Living, and/or Future Community |
| `sortBy` | select | `default` | Mode=byLocation: order results by price or bedroom count before `maxItems` is applied |
| `maxItems` | integer | `100` | Hard cap on emitted records |

### Example input

```json
{
  "mode": "byLocation",
  "location": "Florida",
  "minBedrooms": 4,
  "maxItems": 100
}
```

```json
{
  "mode": "communityDetails",
  "communityUrls": [
    { "url": "https://www.tollbrothers.com/luxury-homes-for-sale/Florida/Bartram-Ranch" }
  ]
}
```

### Use cases

- **Market research** — track luxury new-construction pricing and inventory by state/metro
- **Lead generation** — find move-in-ready homes matching a buyer's exact address, budget, and bedroom needs
- **Competitive analysis** — compare community amenities, price ranges, and quick-delivery inventory across regions
- **Deal alerts** — surface communities and homes with active quick-delivery incentives

### FAQs

**Does this need a Toll Brothers account?**
No. It scrapes Toll Brothers' public, search-engine-indexed pages.

**What's the difference between a `floorPlan` record and a `quickMoveInHome` record?**
A `floorPlan` describes a home *design* available in a community — its own specs and starting price, plus how many already-built examples exist. A `quickMoveInHome` is one specific already-built house — with its exact street address, lot number, and price.

**Can I search by metro area instead of a whole state?**
Yes — `location` accepts both full states (`Florida`) and specific metros (`Orlando-FL`, `Austin-TX`, etc.); see the dropdown for all 78 supported values.

### Limitations

- `minPrice`/`maxPrice`/`minBedrooms` are only applied to records where Toll Brothers reports that data. A small share of communities (typically "coming soon" or not-yet-priced listings) have no `priceFrom`; those are still returned rather than silently dropped, since there's no way to confirm they don't match. `homeTypes`/`communityTypes`, by contrast, exclude any community Toll Brothers didn't tag with a matching type.
- Only US markets are covered (Toll Brothers does not currently sell internationally).
- The sitewide `/new-homes` search UI is disallowed by `robots.txt` and is never fetched by this actor; instead it reads the same underlying data from the allowed `/luxury-homes/<location>` and `/luxury-homes-for-sale/<state>/<community>` pages that Google itself indexes.
- `location` covers Toll Brothers' currently active state/metro pages; a market with no active communities returns zero records rather than an error.

# Actor input Schema

## `mode` (type: `string`):

What to fetch.

## `location` (type: `string`):

US state or metro area to search for communities.

## `communityUrls` (type: `array`):

Toll Brothers community page URLs, e.g. `https://www.tollbrothers.com/luxury-homes-for-sale/Florida/Bartram-Ranch` (use the `communityUrl` field from mode=byLocation output).

## `includeFloorPlans` (type: `boolean`):

Emit a record per available floor-plan model (mode=communityDetails).

## `includeQuickMoveIns` (type: `boolean`):

Emit a record per already-built, move-in-ready home currently for sale (mode=communityDetails).

## `minPrice` (type: `number`):

Drop records priced below this.

## `maxPrice` (type: `number`):

Drop records priced above this.

## `minBedrooms` (type: `number`):

Drop records with fewer bedrooms than this.

## `qdhOnly` (type: `boolean`):

Mode=byLocation only. Only keep communities that currently have quick-delivery/move-in-ready inventory.

## `excludeFuture` (type: `boolean`):

Mode=byLocation only. Drop communities still marked as upcoming/future.

## `homeTypes` (type: `array`):

Only keep communities offering at least one of these home types.

## `communityTypes` (type: `array`):

Only keep communities tagged with at least one of these community types.

## `sortBy` (type: `string`):

Order communities before applying maxItems.

## `maxItems` (type: `integer`):

Hard cap on emitted records.

## Actor input object example

```json
{
  "mode": "byLocation",
  "location": "Florida",
  "communityUrls": [],
  "includeFloorPlans": true,
  "includeQuickMoveIns": true,
  "qdhOnly": false,
  "excludeFuture": false,
  "homeTypes": [],
  "communityTypes": [],
  "sortBy": "default",
  "maxItems": 100
}
```

# Actor output Schema

## `homes` (type: `string`):

Dataset containing all scraped communities, floor plans, and quick-move-in homes.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mode": "byLocation",
    "location": "Florida",
    "communityUrls": [],
    "includeFloorPlans": true,
    "includeQuickMoveIns": true,
    "qdhOnly": false,
    "excludeFuture": false,
    "homeTypes": [],
    "communityTypes": [],
    "sortBy": "default",
    "maxItems": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/toll-brothers-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "mode": "byLocation",
    "location": "Florida",
    "communityUrls": [],
    "includeFloorPlans": True,
    "includeQuickMoveIns": True,
    "qdhOnly": False,
    "excludeFuture": False,
    "homeTypes": [],
    "communityTypes": [],
    "sortBy": "default",
    "maxItems": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/toll-brothers-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "byLocation",
  "location": "Florida",
  "communityUrls": [],
  "includeFloorPlans": true,
  "includeQuickMoveIns": true,
  "qdhOnly": false,
  "excludeFuture": false,
  "homeTypes": [],
  "communityTypes": [],
  "sortBy": "default",
  "maxItems": 100
}' |
apify call crawlerbros/toll-brothers-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,crawlerbros/toll-brothers-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/hJ9r8db47SojDrhm5/builds/dQ99j6BksPb25X14W/openapi.json
