DR Horton $1💰 New Homes, Communities & Move-In Listings avatar

DR Horton $1💰 New Homes, Communities & Move-In Listings

Pricing

from $1.00 / 1,000 result items

Go to Apify Store
DR Horton $1💰 New Homes, Communities & Move-In Listings

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

Abot API

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

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.

FieldExample
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 / originalPrice347900 / 355900
monthlyPayment1964.52
bedrooms / bathrooms / garages4 / 3 / 3
stories1
sqft2273
propertyType"Single Family"
series"Tradition Series"
lot"0000"
latitude / longitude33.0000 / -87.0000
pending / underContract / soldfalse / 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"
rawthe 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 coordinates and a location object (latitude/longitude). Move-in homes carry the same location. Floor plan records (recordType: "plan") add planName, planCode, brandName, sqft, bedrooms/bathrooms/garages, price, status, homeName and model (the plan name and code), configurationId, plus the community's own communityDescription, communityImage, communityImages (the community page photo gallery: absolute image URLs in page order, null when the page has none), communityId (the site's community GUID; null for rows collected from a pasted quick move-in home URL, where the page describes one home and not the community), 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

  1. Pick a mode: search (choose one or more US states) or url (paste drhorton.com state, market, city or community pages).
  2. Choose which record types to include: communities, quick move-in homes, and optionally floor plans (an extra detail-page fetch per community).
  3. Set Max records to control run size and cost, then click Start.
  4. 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"
]
}

URL mode accepts these URL shapes (http or https, with or without www, trailing slashes, tracking query strings and mixed-case paths are normalised; unsupported URLs are skipped with a warning in the log):

URL shapeExampleReturns
State pagehttps://www.drhorton.com/texasCommunities and move-in homes for the state
Market pagehttps://www.drhorton.com/texas/dallasCommunities and move-in homes for the market
City pagehttps://www.drhorton.com/texas/dallas/richardsonRecords for the city
Community pagehttps://www.drhorton.com/texas/dallas/richardson/greenwood-squareThat community (and its floor plans when enabled)
Communities APIhttps://www.drhorton.com/api/comms/direct/texas/dallasCommunities for the area
Move-in homes APIhttps://www.drhorton.com/api/qmis/direct/texas/dallasMove-in homes for the area (may be empty when the site lists none)

Default change: the startUrls field now defaults to the four page examples above (state, market, city, community), so a url-mode run with the field left untouched scrapes those four; the two API examples are prefilled but not defaulted because they resolve to the same market data as the market page (it used to stop with no records). Clear or replace the list to scrape only your own links. In search mode, the optional state field takes a single state name, plain or hyphenated (for example New-Hampshire), and adds it to states.

Filters (all optional, off by default, applied before records are saved; records missing a filtered value are left out when that filter is set): minPrice, maxPrice, minBedrooms, minBathrooms, minSqft, maxSqft, minGarages, minStories, propertyType, series.

Dataset views: Overview, Move-in homes, Communities, Floor plans, and Changes (incremental mode).

Run it from your code

Python:

from apify_client import ApifyClient
client = 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 classified NEW, UPDATED (with changedFields), UNCHANGED (suppressed and not billed unless emitUnchanged is on), REAPPEARED, or EXPIRED (only after a run that scanned every selected state/URL completely, and only with emitExpired). Compared: every output field, including the upstream raw object (prices, selling status, availability counts, beds/baths/sqft, pending/sold flags). Excluded from the comparison but still in the output: image and thumbnail links (including the community image and photo gallery on floor-plan rows), badge labels and amenity tag lists (also inside raw), because they rotate without a real listing change; ignoreFieldsForChanges adds more top-level fields (for example availableHomes). stateKey names or auto-derives the saved baseline from the search's own settings, so two differently configured searches never share one. Combining resumeFromRunId with incrementalMode on 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 different stateKey.

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.

  1. Authorize a connector once under Apify → Settings → Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
  3. For Notion, also set notionParentPageUrl to 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

ParameterTypeDefaultDescription
modestringsearchsearch iterates the states you pick; url scrapes specific drhorton.com pages you paste.
statesarray["Texas"]US states to scrape in search mode. Each state returns every community and quick move-in home D.R. Horton lists there.
includeCommunitiesbooleantrueOutput one record per community with price, bed, bath, sqft ranges, amenities, brand, status and coordinates.
includeQmiHomesbooleantrueOutput one record per move-in-ready home with a firm price, monthly payment estimate, exact address, lot, beds, baths and status.
includeFloorPlansbooleanfalseOutput one record per floor plan offered in each community. Fetches one extra page per community, so it is billed separately.
minPriceinteger(none)Optional price filters, applied to the records before they are saved.
maxPriceinteger(none)Optional price filters, applied to the records before they are saved.
minBedroomsnumber(none)Optional minimum beds / baths.
minBathroomsnumber(none)Optional minimum beds / baths.
minSqftinteger(none)Optional living-area bounds.
maxSqftinteger(none)Optional living-area bounds.
minGaragesinteger(none)Optional minimum garage spaces / stories.
minStoriesinteger(none)Optional minimum garage spaces / stories.
propertyTypestring(none)Optional text the property type or series/brand must contain. Filters are off by default; records missing the filtered value are left out when a filter is set.
seriesstring(none)Optional text the property type or series/brand must contain. Filters are off by default; records missing the filtered value are left out when a filter is set.
startUrlsarrayone example per URL shapedrhorton.com state, market, city or community URLs, or API endpoints, to scrape (url mode).
statestring(none)Single state name, plain or hyphenated, added to states (search mode).
maxItemsinteger20Stop after this many records across the whole run (0 = no limit, full coverage of every selected state).
proxyobjectApify datacenterConnection settings.
maxResidentialMBinteger0Residential 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).
resumeFromRunIdstring(none)Continue one interrupted crawl from a previous run or dataset ID.
incrementalModebooleanfalseRemember this search's baseline and classify records NEW/UPDATED/UNCHANGED/REAPPEARED/EXPIRED on repeat runs.
ignoreFieldsForChangesarray(none)Top-level output fields that never mark a record UPDATED or appear in changedFields (incremental mode only). Added to the built-in exclusions.
stateKeystring(none)Names the saved Incremental mode baseline. Leave empty to auto-derive one from the search's own settings.
emitUnchangedbooleanfalseAlso push rows classified UNCHANGED (bills extra rows).
emitExpiredbooleanfalsePush a synthetic EXPIRED row for records no longer found, after a complete scan (bills extra rows).
mcpConnectorsarray(none)Optional: send a summary of each record to apps you authorized under Integrations.
notionParentPageUrlstring(none)Notion connector only: page under which records are created.
maxNotifyListingsinteger50Cap 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 is the Apify datacenter proxy group, and the actor needs an Apify plan that includes proxy access. The default datacenter proxy group was measured to load the D.R. Horton data, so residential is not required. The actor rotates the exit on a refused request; if the account is refused outright it continues on a backup connection, and if that also fails the run stops with a clear message (see the FAQ) instead of returning an empty dataset. The residential proxy group is optional and is selected under Proxy & connection; Apify free plans do not include residential proxies. Use the residential traffic budget to cap what residential access costs.

FAQ

How much does it cost?

Billing uses three events: the actor start, one charge per record saved to the dataset, and one detail-enrichment charge per floor-plan record delivered (communities and quick move-in homes never trigger it; records that are suppressed, unchanged or failed are not charged). The Pricing tab shows which events are active and their current rates. Use Max records to cap the cost of any run.

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...
🏠 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...
🏠 RealestateCo NZ
Search and extract all real estate properties for sale, rent, and sold across New Zealand...
🏠 Property Finder UAE Scraper
Scrape PropertyFinder.ae listings at scale. Extract prices, property details, images...

👉 Browse all abotapi scrapers

💬 Support

  • 🐞 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 contact@abotapi.com.
  • ⭐ Enjoying it? A quick review on the actor page helps other users find it.