DR Horton $1💰 New Homes, Communities & Move-In Listings
Pricing
from $1.00 / 1,000 result items
DR Horton $1💰 New Homes, Communities & Move-In Listings
From $1/1K. Extract new-home data from drhorton.com, America’s largest homebuilder. Pull communities and quick move-in homes by state with prices, payment estimates, floor plans, square footage, amenities, and map coordinates.
Pricing
from $1.00 / 1,000 result items
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
D.R. Horton Scraper: New-Home Communities, Move-In Homes & Floor Plans
D.R. Horton Scraper turns drhorton.com into a clean new-construction data feed. Get whole-state coverage of new-home communities (price, bed, bath and square-footage ranges, amenities), quick move-in homes with firm prices and monthly payment estimates, and floor plans with specs and sales-office contact details, for America's largest homebuilder. Search by US state, or paste specific drhorton.com state, market, city or community links, then export to JSON, CSV or Excel, or read the results through the API.
Why This Scraper?
- Three record types in one run: communities (neighbourhood summaries with price, bed, bath and sqft ranges), quick move-in homes (firm prices, monthly payment estimates), and floor plans (model name, code, specs).
- Whole states in a couple of requests: one state search returns every community and every quick move-in home D.R. Horton lists there, often hundreds of records.
- Price-drop visibility: every quick move-in home carries both its current and original price, so a repeat run shows exactly which homes dropped in price and by how much.
- Search or paste links: pick one or more states from a list, or paste any drhorton.com state, market, city or community page.
- Floor plans on demand: switch on a detail crawl per community to add plan name, plan code, specs and the community's sales-office contact info, without paying for it on every run.
- Resume and recurring monitoring: continue an interrupted crawl from a previous run, or turn on Incremental mode to get only NEW, UPDATED, REAPPEARED or EXPIRED records on a schedule.
- A refused run fails loudly: a connection problem is reported as a connection problem, never confused with "no homes found in this state."
Use Cases
- Homebuilder market research: track community counts, price ranges and amenities across states to benchmark D.R. Horton against other builders.
- Real estate investment and site selection: monitor which markets are opening new communities and where available-home counts are growing or shrinking.
- Homebuyer lead generation and alerts: get notified of new quick move-in homes or price drops in specific states or communities.
- Real estate data products and dashboards: feed live new-construction listings into your own site, app or spreadsheet.
- Pricing and appraisal analytics: compare firm prices, monthly payment estimates and price per square foot across communities and floor plans.
Data You Get
Sample shape: values are illustrative placeholders, not from a live listing.
| Field | Example |
|---|---|
recordType | "home" (also "community", "plan") |
id | "home:/texas/dallas/sample-community/qmis/100-sample-drive" |
state | "Texas" |
communityName | "Sample Community" |
address | "100 Sample Drive" |
city / market | "Sample City" / "Sample Market" |
price / originalPrice | 347900 / 355900 |
monthlyPayment | 1964.52 |
bedrooms / bathrooms / garages | 4 / 3 / 3 |
stories | 1 |
sqft | 2273 |
propertyType | "Single Family" |
series | "Tradition Series" |
lot | "0000" |
latitude / longitude | 33.0000 / -87.0000 |
pending / underContract / sold | false / false / false |
amenities | ["Pool", "Playground"] |
url | "https://www.drhorton.com/texas/dallas/sample-community/qmis/100-sample-drive" |
communityUrl | "https://www.drhorton.com/texas/dallas/sample-community" |
raw | the complete source object |
Community records (recordType: "community") share the same id/state/url shape and add brand, sellingStatus, availableHomes, minBeds/maxBeds, minBaths/maxBaths, minSqft/maxSqft, minPrice/maxPrice, amenities and coordinates. Floor plan records (recordType: "plan") add planName, planCode, brandName, sqft, bedrooms/bathrooms/garages, price, status, plus the community's own communityPhone, communityAddressDetail and communityHours read from the same community page. Every record, of every type, also carries a raw object with the complete original source fields, so nothing is ever lost.
How to Use
- Pick a mode:
search(choose one or more US states) orurl(paste drhorton.com state, market, city or community pages). - Choose which record types to include: communities, quick move-in homes, and optionally floor plans (an extra detail-page fetch per community).
- Set Max records to control run size and cost, then click Start.
- Download the dataset as JSON, CSV or Excel, or read it through the API.
Scrape one state (communities + move-in homes):
{"mode": "search","states": ["Texas"],"includeCommunities": true,"includeQmiHomes": true}
Scrape several states, move-in homes only:
{"mode": "search","states": ["Florida", "Georgia", "South Carolina"],"includeCommunities": false,"includeQmiHomes": true}
Add floor plans (detail crawl):
{"mode": "search","states": ["Arizona"],"includeFloorPlans": true}
Scrape specific pages (URL mode):
{"mode": "url","startUrls": ["https://www.drhorton.com/texas/dallas","https://www.drhorton.com/florida"]}
Run it from your code
Python:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("abotapi/drhorton-scraper").call(run_input={"mode": "search", "states": ["Texas"]})for record in client.dataset(run["defaultDatasetId"]).iterate_items():print(record["recordType"], record.get("communityName") or record.get("address"))
JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('abotapi/drhorton-scraper').call({ mode: 'search', states: ['Texas'] });const { items } = await client.dataset(run.defaultDatasetId).listItems();
Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.
How Max records shapes a run
Each selected state can return hundreds of communities and quick move-in homes. Communities and move-in homes are pulled first, one request each, before any floor plans, and with several states selected the record cap is split evenly across them so an early state cannot use up the whole budget before later ones are reached. To collect everything, set Max records to 0.
Resume and recurring updates
- Resume (
resumeFromRunId) continues ONE interrupted crawl: paste a previous run or dataset ID and the actor skips every record already collected there, so you don't pay twice. - Incremental mode (
incrementalMode) is for a search you run on a schedule. Each record is classifiedNEW,UPDATED(withchangedFields),UNCHANGED(suppressed and not billed unlessemitUnchangedis on),REAPPEARED, orEXPIRED(only after a run that scanned every selected state/URL completely, and only withemitExpired).stateKeynames or auto-derives the saved baseline from the search's own settings, so two differently configured searches never share one. CombiningresumeFromRunIdwithincrementalModeon a search that already has saved state fails the run rather than charging for a mixed result; use one feature or the other, or start a fresh Incremental mode campaign with a differentstateKey.
Send results into your apps (MCP connectors)
Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape: the Apify dataset is never changed.
What gets written to the connector: a condensed, human-readable summary of each record, not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.
- Authorize a connector once under Apify → Settings → Integrations (Notion, Linear, Airtable, or Apify).
- Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
- For Notion, also set
notionParentPageUrlto the page where items should be created.
The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | search | search iterates the states you pick; url scrapes specific drhorton.com pages you paste. |
states | array | ["Texas"] | US states to scrape in search mode. Each state returns every community and quick move-in home D.R. Horton lists there. |
includeCommunities | boolean | true | Output one record per community with price, bed, bath, sqft ranges, amenities, brand, status and coordinates. |
includeQmiHomes | boolean | true | Output one record per move-in-ready home with a firm price, monthly payment estimate, exact address, lot, beds, baths and status. |
includeFloorPlans | boolean | false | Output one record per floor plan offered in each community. Fetches one extra page per community, so it is billed separately. |
startUrls | array | (none) | drhorton.com state, market, city or community URLs to scrape (url mode). |
maxItems | integer | 20 | Stop after this many records across the whole run (0 = no limit, full coverage of every selected state). |
proxy | object | Apify datacenter | Connection settings. |
maxResidentialMB | integer | 0 | Residential traffic budget in MB. Only applies when the proxy group is residential; after this many MB the run switches to the cheaper connection tier for the rest of the run (0 = no cap). |
resumeFromRunId | string | (none) | Continue one interrupted crawl from a previous run or dataset ID. |
incrementalMode | boolean | false | Remember this search's baseline and classify records NEW/UPDATED/UNCHANGED/REAPPEARED/EXPIRED on repeat runs. |
stateKey | string | (none) | Names the saved Incremental mode baseline. Leave empty to auto-derive one from the search's own settings. |
emitUnchanged | boolean | false | Also push rows classified UNCHANGED (bills extra rows). |
emitExpired | boolean | false | Push a synthetic EXPIRED row for records no longer found, after a complete scan (bills extra rows). |
mcpConnectors | array | (none) | Optional: send a summary of each record to apps you authorized under Integrations. |
notionParentPageUrl | string | (none) | Notion connector only: page under which records are created. |
maxNotifyListings | integer | 50 | Cap on items written to each connector per run. |
Output Example
Sample shape: values are illustrative placeholders, not from a live listing.
{"recordType": "home","id": "home:/texas/dallas/sample-community/qmis/100-sample-drive","state": "Texas","address": "100 Sample Drive","lot": "0000","url": "https://www.drhorton.com/texas/dallas/sample-community/qmis/100-sample-drive","communityName": "Sample Community","communityUrl": "https://www.drhorton.com/texas/dallas/sample-community","price": 347900,"originalPrice": 355900,"monthlyPayment": 1964.52,"bedrooms": 4,"bathrooms": 3,"garages": 3,"stories": 1,"sqft": 2273,"propertyType": "Single Family","series": "Tradition Series","city": "Sample City","market": "Sample Market","latitude": 33.0,"longitude": -87.0,"pending": false,"underContract": false,"sold": false}
Plan Requirement
The default connection setting works out of the box, and the actor manages retries and connection rotation automatically when a request is refused. For large states or frequent runs, the residential proxy group gives more headroom against occasional blocks; pick it under Connection, and use the residential traffic budget to cap what it costs.
FAQ
How much does it cost?
You pay per record returned. Floor-plan records can also carry a detail-enrichment charge, counted only on floor-plan records actually delivered (communities and quick move-in homes never trigger it). The Pricing tab shows which events are active and their current rates. Use Max records to cap the cost of any run.
Is it legal to scrape D.R. Horton's website?
This actor collects only publicly available new-home listing data. You are responsible for how you use it: follow drhorton.com's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution.
Can I get only new or changed listings on a schedule?
Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new, updated, reappeared and (if enabled) expired records; unchanged ones are not billed unless you turn that on too.
Why did floor plans not show up in my run?
Floor plans are off by default. Turn on Include floor plans (detail crawl) to add them; it fetches one extra page per community, so it costs more and takes longer than the community and move-in home overview alone.
Why did my run fail instead of returning an empty dataset?
If every request to drhorton.com is refused, the run fails with a clear connection message instead of quietly returning nothing, so "no homes in this state" is never confused with "nothing could be read." Run it again in a few minutes, or switch to the residential proxy group.
Can I use it with AI agents or MCP?
Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.
🔗 Want more real estate data?
Pair this actor with these related scrapers from the same team:
| 🏠 Lennar Homes, Communities & Floor Plans Scraper Scrape Lennar new-home communities, move-in-ready homes and floor plans. Extract prices... | 🏠 NewHomeSource Scrape new homes, floor plans, builders and communities from NewHomeSource.com. Search by... |
| 🏠 Redfin Scraper Scrape redfin.com home listings: price, beds, baths, sqft, lot, year built, coordinates... | 🏠 Rent.com Scraper Extract rental listings from rent.com. Get comprehensive data including monthly rent... |
| 🏠 Homes.co.nz Scraper Scrape Homes.co.nz listings by location or URL with pagination. Extract property details... | 🏠 Propertyfinder UAE From $0.8/1K. Extract property listings from propertyfinder.ae at scale. Get... |
💬 Support & custom scrapers
- 🐞 Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
- 🛠️ Need another site, extra fields or a private build? Email abotapi@proton.me or message Telegram @abotapi.
- ⭐ Enjoying it? A quick review on the actor page helps other users find it.