# D.R. Horton \[$1💰] New-Home Listings, Prices & Communities (`memo23/drhorton-scraper`) Actor

Elevate your real estate game with our DR Horton scraper. Uncover exclusive listings, detailed property insights, and market trends at lightning speed—your shortcut to smarter, faster decisions. Rent or buy and transform your property research today!

- **URL**: https://apify.com/memo23/drhorton-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Real estate, Automation, Lead generation
- **Stats:** 5 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#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

### Overview

Discover detailed DR Horton listings effortlessly with our scraper. Designed for drhorton.com, it gathers comprehensive data on communities and homes—from property details and floor plans to pricing and images. Simply configure your settings to access up-to-date DR Horton real estate data, empowering you to analyze market trends and make informed decisions.

Unlock comprehensive DR Horton data—from community names and addresses to home features and pricing—all with a simple configuration.

***

### Features

- **State-Based Filtering**
  Select your target state from an extensive list (default set to “Alabama”) to filter listings for your specific market.

- **Detailed Community Extraction**
  Retrieve community IDs, names, descriptions, URLs, geographic coordinates, full addresses, image galleries, and contact phone numbers.

- **Comprehensive Home Data**
  Collect key details for each home including unique home IDs, plan names and codes, floor plans, square footage, number of bedrooms, bathrooms, garages, pricing, and exact location coordinates.

- **Configurable Scraping Settings**
  Customize the maximum number of listings per crawl, set concurrency levels, and define request retry limits for reliable performance.

- **Proxy Integration**
  Use proxy settings (e.g., useApifyProxy with RESIDENTIAL groups) to help mask your origin and bypass scraping restrictions.

***

### How to Use

1. **Set Up**
   - Create an account on Apify if you have not already.
   - Locate the DR Horton Real Estate Listings Scraper actor on the Apify platform.

2. **Configure Input Data**
   - Copy your configuration into the actor’s input field using the JSON format provided below.
   - Adjust the state selection, maximum items, concurrency levels, and proxy settings as needed.

3. **Run the Scraper**
   - Launch the scraper from your Apify console.
   - Monitor the scraping process via the Apify dashboard.

4. **Data Collection**
   - Once complete, the extracted data (in JSON format) can be downloaded or exported in your preferred format (e.g., CSV, Excel) for further analysis.

***

### Input Data

Provide input data in JSON format to configure your scraping settings. For example:

```json
{
    "state": {
        "default": "Alabama",
        "description": "Select your state",
        "editor": "select",
        "enum": [
            "Alabama",
            "Alaska",
            "Arizona",
            "Arkansas",
            "California",
            "Colorado",
            "Connecticut",
            "Delaware",
            "Florida",
            "Georgia",
            "Hawaii",
            "Idaho",
            "Illinois",
            "Indiana",
            "Iowa",
            "Kansas",
            "Kentucky",
            "Louisiana",
            "Maine",
            "Maryland",
            "Massachusetts",
            "Michigan",
            "Minnesota",
            "Mississippi",
            "Missouri",
            "Montana",
            "Nebraska",
            "Nevada",
            "New-Hampshire",
            "New-Jersey",
            "New-Mexico",
            "New-York",
            "North-Carolina",
            "North-Dakota",
            "Ohio",
            "Oklahoma",
            "Oregon",
            "Pennsylvania",
            "Rhode-Island",
            "South-Carolina",
            "South-Dakota",
            "Tennessee",
            "Texas",
            "Utah",
            "Vermont",
            "Virginia",
            "Washington",
            "West-Virginia",
            "Wisconsin",
            "Wyoming"
        ],
        "enumTitles": [
            "Alabama",
            "Alaska",
            "Arizona",
            "Arkansas",
            "California",
            "Colorado",
            "Connecticut",
            "Delaware",
            "Florida",
            "Georgia",
            "Hawaii",
            "Idaho",
            "Illinois",
            "Indiana",
            "Iowa",
            "Kansas",
            "Kentucky",
            "Louisiana",
            "Maine",
            "Maryland",
            "Massachusetts",
            "Michigan",
            "Minnesota",
            "Mississippi",
            "Missouri",
            "Montana",
            "Nebraska",
            "Nevada",
            "New Hampshire",
            "New Jersey",
            "New Mexico",
            "New York",
            "North Carolina",
            "North Dakota",
            "Ohio",
            "Oklahoma",
            "Oregon",
            "Pennsylvania",
            "Rhode Island",
            "South Carolina",
            "South Dakota",
            "Tennessee",
            "Texas",
            "Utah",
            "Vermont",
            "Virginia",
            "Washington",
            "West Virginia",
            "Wisconsin",
            "Wyoming"
        ],
        "title": "State",
        "type": "string"
    },
    "maxItems": {
        "title": "Max items/listings to scrape per crawl",
        "type": "integer",
        "description": "Maximum number of items/listings to scrape.",
        "default": 20
    },
    "maxConcurrency": {
        "title": "Max Concurrency",
        "type": "integer",
        "description": "Maximum number of pages that can be processed at the same time.",
        "default": 100
    },
    "minConcurrency": {
        "title": "Min Concurrency",
        "type": "integer",
        "description": "Minimum number of pages that will be processed at the same time.",
        "default": 1
    },
    "maxRequestRetries": {
        "title": "Max Request Retries",
        "type": "integer",
        "description": "Number of times the crawler will retry a failed request before giving up.",
        "default": 20
    },
    "proxy": {
        "sectionCaption": "Proxy configuration",
        "title": "Proxy configuration",
        "type": "object",
        "description": "Specifies proxy servers that will be used by the scraper to hide its origin. For details, see the [Proxy configuration](https://apify.com/apify/web-scraper#proxy-configuration) in the README.",
        "prefill": {
            "useApifyProxy": true,
            "apifyProxyGroups": [
                "RESIDENTIAL"
            ]
        },
        "default": {
            "useApifyProxy": true,
            "apifyProxyGroups": [
                "RESIDENTIAL"
            ]
        },
        "editor": "proxy"
    }
}
```

***

### Output Structure

The scraper returns data as a nested JSON structure containing detailed community, home, and additional information. A sample output item is structured as follows:

```json
{
    "community": {
        "communityId": "3E263DBC-8363-4C5F-B6E3-4AE84B55C736",
        "communityName": "Nahele at Hoopili",
        "communityDescription": "Find a new home in Ewa Beach, Hawaii! See all the D.R. Horton home floor plans, houses under construction, and move-in ready homes available in the Ewa Beach area.",
        "url": "https://www.drhorton.com/hawaii/oahu/ewa-beach/nahele-at-hoopili",
        "location": "21.36124,-158.0488",
        "address": {
            "addresslocality": "Ewa Beach",
            "addressregion": "HI",
            "postalcode": "96706",
            "streetaddress": "91-3641 Iwikuamo'o Street #5105",
            "full_address": "91-3641 Iwikuamo'o Street #5105, Ewa Beach, HI 96706"
        },
        "images": [
            "https://www.drhorton.com/-/media/drhorton/productcatalog/910-hawaii/93089-hoopili/...png",
            "... more image URLs ..."
        ],
        "image": "https://www.drhorton.com/-/media/drhorton/productcatalog/910-hawaii/93089-hoopili/...png",
        "phone": "(808) 693-8004"
    },
    "home": {
        "homeId": "ccf05cbe-d61e-4507-be39-24ac894e6067",
        "homeName": "PLAN A31A",
        "description": "About this home ...",
        "url": "https://www.drhorton.com/hawaii/oahu/ewa-beach/nahele-at-hoopili/qmis/913641-iwikuamoo-st-2211",
        "JdeBrandName": "DR Horton",
        "PlanName": "PLAN A31A",
        "PlanCode": "A31A",
        "model": "PLAN A31A",
        "images": [
            "https://www.drhorton.com/-/media/drhorton/productcatalog/910-hawaii/93089-hoopili/...png",
            "... more image URLs ..."
        ],
        "address": {
            "Adress": "91-3641 Iwikuamo'o St. #2211",
            "CityStateZip": "EWA BEACH HI, 96706",
            "city": "EWA BEACH",
            "state": "HI",
            "zip": "96706"
        },
        "SquareFootage": 1231,
        "NumberOfBedrooms": 3,
        "NumberOfBathrooms": 2,
        "NumberOfGarages": 1,
        "NumberOfStories": 1,
        "Price": 667075,
        "location": "21.36124,-158.0488"
    },
    "otherData": {
        "community": { /* additional community metadata and details */ },
        "home": { /* extended home details including financing, status, and schema.org data */ }
    }
}
```

***

### Output Explanation

- **community**:
  - **communityId**: Unique identifier for the community.
  - **communityName** & **communityDescription**: Title and description of the DR Horton community.
  - **url** & **location**: Direct link and geographical coordinates for the community.
  - **address**: Structured address details including locality, region, postal code, street address, and a full concatenated address.
  - **images** & **image**: Array of image URLs and a primary image representing the community.
  - **phone**: Contact number for the community’s sales office.

- **home**:
  - **homeId**, **homeName**, **description**: Unique identifier, title, and detailed description of the home.
  - **url**: Direct link to the home’s detail page on drhorton.com.
  - **JdeBrandName**, **PlanName**, **PlanCode**, **model**: Branding and plan-specific information for the home.
  - **images**: List of image URLs showcasing various aspects of the home.
  - **address**: Home address information split into components (city, state, zip).
  - **SquareFootage**, **NumberOfBedrooms**, **NumberOfBathrooms**, **NumberOfGarages**, **NumberOfStories**, **Price**: Key property specifications and pricing details.
  - **location**: Latitude and longitude coordinates for the home.

- **otherData**:
  - Contains additional metadata for both community and home, such as schema.org details, unique URIs, and supplementary images or descriptions.

***

### Explore More Scrapers

If you found this Zillow Cheerio Scraper useful, be sure to check out our other powerful scrapers and actors at [memo23's Apify profile](https://apify.com/memo23). We offer a wide range of tools to enhance your web scraping and automation needs across various platforms and use cases.

### Support

- For issues or feature requests, please use the [Issues](https://console.apify.com/actors/CrtAGwgI5gNhHTCKL/issues) section of this actor.
- If you need customization or have questions, feel free to contact the author:
  - Author's website: <https://muhamed-didovic.github.io/>
  - Email: <muhamed.didovic@gmail.com>

### Additional Services

- Request customization or whole dataset: <muhamed.didovic@gmail.com>
- If you need anything else scraped, or this actor customized, email: <muhamed.didovic@gmail.com>
- For API services of this scraper (no Apify fee, just usage fee for the API), contact: <muhamed.didovic@gmail.com>

### 🤖 For AI Agents & LLM Apps

Compact reference for AI agents calling this actor via the [Apify MCP server](https://mcp.apify.com) or the Apify API (actor: `memo23/drhorton-scraper`).

**Purpose:** scrape new-construction communities and homes from drhorton.com for a chosen US state into structured JSON, with community details, per-home specs (beds/baths/garages/price/square footage), addresses, and map coordinates.

**Minimal input:**

```json
{ "state": "Texas", "maxItems": 20 }
```

**Output:** dataset rows nested by `community` (communityId, communityName, communityDescription, url, location, address, images, phone), `home` (homeId, homeName, description, url, PlanName, PlanCode, model, images, address, SquareFootage, NumberOfBedrooms, NumberOfBathrooms, NumberOfGarages, NumberOfStories, Price, location), and `otherData` (schema.org metadata).

**Behaviors an agent should know:**

- `state` is required (one state per run, chosen from the fixed enum; whole state is crawled). Always set `maxItems` to cap the run.
- Residential proxy is enabled by default; no login or cookies are needed.
- Billing is pay-per-event — see the Pricing tab on the actor page.

### ⚠️ Disclaimer

This actor is not affiliated with, endorsed by, or sponsored by D.R. Horton, Inc. It only accesses publicly available data that any visitor can see in a browser, and it does not bypass authentication or access controls. You are solely responsible for how you use the extracted data and for complying with applicable laws, the target website's terms of service, and data-protection regulations in your jurisdiction. Use reasonable request rates. If you plan to republish or commercialize scraped data, obtain independent legal advice first.

### SEO Keywords

drhorton scraper, dr horton scraper, drhorton.com scraper, dr horton homes data, new construction homes scraper, new home listings api, home builder data extraction, dr horton communities scraper, new construction real estate data, home floor plans scraper, us new homes data, homebuilder listings scraper

# Actor input Schema

## `state` (type: `string`):

Select your state

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

Maximum number of items/listings to scrape.

## `maxConcurrency` (type: `integer`):

Maximum number of pages that can be processed at the same time.

## `minConcurrency` (type: `integer`):

Minimum number of pages that will be processed at the same time.

## `maxRequestRetries` (type: `integer`):

Number of times the crawler will retry a failed request before giving up.

## `proxy` (type: `object`):

Specifies proxy servers that will be used by the scraper in order to hide its origin.<br><br>For details, see <a href='https://apify.com/apify/web-scraper#proxy-configuration' target='_blank' rel='noopener'>Proxy configuration</a> in README.

## Actor input object example

```json
{
  "state": "Alabama",
  "maxItems": 20,
  "maxConcurrency": 100,
  "minConcurrency": 1,
  "maxRequestRetries": 20,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/drhorton-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 = { "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    } }

# Run the Actor and wait for it to finish
run = client.actor("memo23/drhorton-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 '{
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call memo23/drhorton-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,memo23/drhorton-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/PL1C5FawFdumTSBvY/builds/g5ys2OtPKIX6amzae/openapi.json
