NewHomeSource - New Homes, Floor Plans & Communities
Pricing
from $1.00 / 1,000 home results
NewHomeSource - New Homes, Floor Plans & Communities
Scrape new homes, floor plans, builders and communities from NewHomeSource.com. Search by US state or city, or paste URLs. Get prices, beds, baths, stories, garage, square footage, builder, location, amenities, community details and available plans.
Pricing
from $1.00 / 1,000 home results
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
0
Bookmarked
22
Total users
14
Monthly active users
13 days ago
Last modified
Categories
Share
NewHomeSource Scraper: New Construction Homes, Floor Plans, Builders and Communities
NewHomeSource Scraper turns NewHomeSource into a clean new-construction data feed. Pick a US state (optionally narrow to one city) and get every matching community and every home or floor plan inside it, or paste community, home, state or market links to scrape only those. Each result is one flat row with home specs, price, address, geo coordinates, community context and builder contact, ready for JSON, CSV, Excel or your own API.
Why This Scraper?
- Two ways to find data. Walk a whole state, optionally narrowed to one city, in search mode, or paste community, plan, spec-home, state or market links in URL mode. No need to build URLs by hand.
- One flat row per home. Every result carries the home's own specs, price and status alongside the community's price band, floor-plan count, quick-move-in count and address, and the builder's name, id and phone, all in one record.
- State-wide coverage on demand. Pick a state once and the actor walks its market areas, every community inside them, and every home or floor plan inside each community.
- Optional deep detail. Turn on full detail extraction to add the complete specification, photo gallery, videos, amenities, fees, school districts and sales-office contact per home, billed only for homes actually returned.
- Filters that narrow before you pay. Home type, price, bedroom, bathroom and size bounds apply to both search and URL mode, so filtered-out homes are never collected or charged.
- Built for monitoring, with views. The dataset has Homes, Home details and Changes views. Incremental mode tracks a search over time and returns only new and changed homes on recurring runs, and a run that could not reach the data source fails loudly instead of returning an empty dataset.
- Resume without re-paying. Continue an interrupted run from its run or dataset id and skip everything already collected there.
Use Cases
- Builder and market research: track price bands, floor-plan counts and quick-move-in inventory across a state or metro to see where builders are pricing and releasing homes.
- Real estate lead generation: collect builder and community contact details alongside home specs for outreach or CRM import.
- Listing and price monitoring: schedule the actor with incremental mode to catch new homes, price changes and homes that sell out.
- Market analytics and dashboards: feed home counts, price ranges and geo coordinates into a BI tool or map to visualize new-construction supply.
- Relocation and homebuying tools: power a search or comparison app with structured floor plan, price and school-district data.
Data You Get
Sample shape: values are illustrative placeholders, not from a live record.
| Field | Example |
|---|---|
homeId | 2787050 |
floorPlan | "The Pearson" |
bedrooms / bathrooms | 4 / 3 |
halfBathrooms / garageCount | 1 / 2 |
stories / homeSizeSqft | 2 / 2450 |
homePrice | 385990 |
status / homeType | "Active" / "Single Family" |
isSpec | false |
moveInDate | "2025-06-01" |
address | "123 Example Lane" |
city / state / zip | "Example City" / "TX" / "75001" |
latitude / longitude | "32.7767" / "-96.7970" |
communityId / communityName | 202479 / "Sample Community" |
communityMinHomePrice / communityMaxHomePrice | 320000 / 450000 |
totalFloorPlans / qmiCount | 8 / 3 |
builderId / builderName | 5501 / "Sample Builder Homes" |
phone | "555-0100" |
homeUrl | link to the home or floor plan page |
subtype | "floorplan" (also "qmi" or "basic") |
communityUrl | link to the community page |
schoolDistricts | [{"id": null, "name": "Example County Schools"}] |
changeType | "NEW" (incremental mode only) |
Turning on full detail extraction, or pasting a specific home link (see below), adds a larger set of fields to the same row: description and marketingDescription, lotSqft, the full photo gallery (images, imagesCount), videos, tourUrl and planViewerUrl, the builder's builderUrl, the sales office's salesOfficeAddress, salesOfficeEmail and salesOfficePhone, schools and a detailed schoolDistricts, agents, homeOptions, feesAndRates, utilities, amenities, customAmenities and planAmenities, plus the community's own communityImages, communityVideos, communityHours, communityDirections, communityMapUrl, communitySchoolDistricts, communitySchools and communityAgents. (The brand fields brandId, brandLogo and brandSiteUrl are already present on every record; full detail only refreshes them.) In incremental mode, changedFields, firstSeenAt and lastSeenAt are added alongside changeType.
How to Use
- Pick a mode:
search(walk a US state, optionally one city) orurl(paste specific community or home links). - Set the home type, price, bedroom, bathroom and size filters. They apply to both modes, and homes they exclude are never collected or charged.
- Optionally turn on Fetch full home details to add the full specification, photo gallery, amenities and sales-office contact per home, billed only for homes returned.
- Set Max items to cap run size and cost, then click Start.
Search a whole state:
{"mode": "search","state": "Texas","maxItems": 50}
Search one city with filters:
{"mode": "search","state": "Florida","city": "Orlando","homeTypes": ["qmi"],"minPrice": 350000,"maxPrice": 600000,"minBedrooms": 3,"maxItems": 100}
Paste community and home links:
{"mode": "url","urls": ["https://www.newhomesource.com/community/id/kuna/medallion-at-valor-by-tresidio-homes/202479","https://www.newhomesource.com/plan/the-pearson-smith-douglas-homes-columbiana-al/2787050"]}
Recurring monitoring with incremental mode:
{"mode": "search","state": "North Carolina","incrementalMode": true,"stateKey": "nc-monitor","maxItems": 0}
Run it from your code
Python:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("abotapi/newhomesource-scraper").call(run_input={"mode": "search", "state": "Texas", "maxItems": 50})for home in client.dataset(run["defaultDatasetId"]).iterate_items():print(home["floorPlan"], home["homePrice"], home["city"])
JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('abotapi/newhomesource-scraper').call({ mode: 'search', state: 'Texas', maxItems: 50 });const { items } = await client.dataset(run.defaultDatasetId).listItems();
Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.
Supported links
| Link shape | Example | Result |
|---|---|---|
| Community | /community/tx/austin/parten-65ft-lots-highland-homes/159524 | Every home and floor plan in the community |
| Plan | /plan/the-pearson-smith-douglas-homes-columbiana-al/2787050 | That floor plan, with full detail |
| Spec home | /specdetail/595-bird-hollow-austin-tx-78737/3317367 | That quick-move-in home, with full detail |
| Basic home | /basichome/... | That home, with full detail |
| State | /communities/tx, /state/texas or /new-homes/texas | Every community and home in the state |
| Market | /communities/tx/austin-area or /new-homes/texas/austin-area | Every community and home in the market area |
Links are resolved by their numeric id. A link the actor cannot resolve (for example an inactive community) logs a warning naming it and is skipped. The default urls value is four example links, one per shape (community, plan, spec home, market), so a URL-mode run with the field untouched scrapes those examples, bounded by Max items. Changing the field replaces the examples entirely.
Detail enrichment and billing
Turning on Fetch full home details adds one extra request per home for the full specification, gallery, videos, amenities, fees, utilities and sales-office contact, plus one request for the home's community details, each with a bounded per-home time budget so one slow home cannot stall the run. The detail-enrichment surcharge is charged one unit per home, at the moment that home is added to the dataset, so it is never lost if a run is stopped part-way; it applies only to homes that are both enriched and actually returned, never per fetch alone. A home suppressed by incremental mode because it is unchanged since the last run still has its detail page read to compute the comparison, but it is never billed the surcharge if it is not returned. Pasted single-home links (plan, specdetail, basichome) always fetch and return full detail and community context, and are always charged the surcharge, because those links only resolve through the detail endpoint; the toggle only controls whether homes found by a state or city search, or by a pasted community link, also fetch full detail per home.
Resume and recurring updates
- Resume (
resumeFromRunId): paste a previous run or dataset id to continue an interrupted run without returning or re-charging homes already collected there. - Incremental mode (
incrementalMode): for scheduled runs over the same search. Each home is classifiedNEWthe first time it is seen,UPDATED(withchangedFieldslisting what changed) when its data differs from the stored baseline, orUNCHANGED(suppressed and not billed unlessemitUnchangedis on). Turning onemitExpiredmarks homes no longer found asEXPIRED, but only once a run reaches the natural end of every scope it tracks, not when Max items or Max pages cut a walk short, and not on a Resume run; a partial run leaves the previous state untouched instead of guessing.REAPPEAREDis not a routine result: it only appears for a home that an earlier complete run, withemitExpiredon, had already markedEXPIRED, and that is then found again on a later run.stateKeynames or shares the stored state; leave it empty and the actor derives one automatically from the state, city, URLs and filters, so different searches never mix state with each other. - Ignore fields when detecting changes (
ignoreFieldsForChanges): list field names that must not count as a change. A name matches at any depth, including nested objects and lists; ignored fields stay in the output and are only left out of theUPDATEDcomparison andchangedFields. The scrape timestampscrapedAtis never compared. Every other output field (price, beds, baths, size, status, incentives, plans, specs and nested values) is compared.
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 home, 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 have not 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 walks a state (optionally one city); url scrapes only pasted links. |
state | string | Alabama | US state to walk in search mode. The default is just a starting example, pick any state. |
city | string | (none) | Optional. Narrow a state search to one city by plain name (e.g. Austin); a name that matches nothing logs a warning. Search mode only. |
urls | array | 4 example links (community, plan, spec, market) | NewHomeSource community, plan, /specdetail/, basic home, state (/communities/{st}, /state/{name} or /new-homes/{state}) or market (/communities/{st}/{market}-area or /new-homes/{state}/{market}-area) links, where {st} is the 2-letter state code. URL mode only. Behaviour note: in URL mode with this field untouched, the actor scrapes one example per link shape (bounded by Max items). Links it cannot resolve log a warning naming the link. |
startUrls | array | empty | Alias of urls, merged with it. Strings or {"url": ...} objects. Behaviour note: if you fill this field, the run switches to URL mode even when Mode says search, and when urls is left at its four example links only your startUrls run (the examples are not scraped or billed). |
homeTypes | array | ["floorplan", "qmi"] | Which kinds of listings to include: floor plans, QMI / spec homes, or both. |
minPrice | integer | (none) | Only keep homes priced at or above this amount. |
maxPrice | integer | (none) | Only keep homes priced at or below this amount. |
minBedrooms | integer | (none) | Only keep homes with at least this many bedrooms. |
minBathrooms | integer | (none) | Only keep homes with at least this many bathrooms. |
minSqft | integer | (none) | Only keep homes at least this many square feet. |
maxSqft | integer | (none) | Only keep homes at most this many square feet. |
fetchDetails | boolean | false | Fetch the full specification, gallery, videos and sales-office contact per home. Billed as a per-home surcharge for homes returned. |
maxItems | integer | 20 | Stop after this many home rows across all searches or URLs. 0 = unlimited. |
maxPages | integer | 0 | Optional hard cap on result pages walked per state, city or URL. 0 = unlimited. |
resumeFromRunId | string | (none) | Continue one interrupted run without re-collecting or re-charging its homes. |
incrementalMode | boolean | false | Turn on for recurring runs over the same search: classify homes as new, updated, unchanged, expired or reappeared. |
stateKey | string | (none) | Name or share an incremental-mode state. Leave empty to derive one automatically from the search setup. |
emitUnchanged | boolean | false | Also return (and bill) homes unchanged since the last run. Incremental mode only. |
emitExpired | boolean | false | Also return (and bill) homes no longer found, once a run completes a full scan. Incremental mode only. |
ignoreFieldsForChanges | array | [] | Field names (matched at any depth) that do not count as a change. Incremental mode only. |
proxy | object | Apify Proxy enabled | Connection settings. |
mcpConnectors | array | (none) | Optional: send a summary of each home to apps you authorized under Integrations. |
notionParentPageUrl | string | (none) | Notion connector only: page under which home pages 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 record.
{"homeId": 2787050,"planId": 145201,"specId": null,"floorPlan": "The Pearson","bedrooms": 4,"bathrooms": 3,"halfBathrooms": 1,"garageCount": 2,"stories": 2,"homeSizeSqft": 2450,"homePrice": 385990,"status": "Active","homeType": "Single Family","isSpec": false,"moveInDate": "2025-06-01","address": "123 Example Lane","city": "Example City","county": "Example County","state": "TX","zip": "75001","latitude": "32.7767","longitude": "-96.7970","communityId": 202479,"communityName": "Sample Community","communityMinHomePrice": 320000,"communityMaxHomePrice": 450000,"totalFloorPlans": 8,"qmiCount": 3,"builderId": 5501,"builderName": "Sample Builder Homes","phone": "555-0100","brandId": 12,"brandLogo": "https://example.com/logo.png","homeUrl": "https://www.newhomesource.com/plan-detail/2787050","communityUrl": "https://www.newhomesource.com/community/tx/example-city/sample-community/202479","searchMode": "search","schoolDistricts": [{ "id": null, "name": "Example County Schools" }]}
Plan Requirement
Keep Apify Proxy enabled under Proxy & connection; it is on by default and no extra proxy group is needed. The listing data is served by a separate data service, so every link is resolved through its numeric id instead of the bot-protected public pages. A blocked request is retried on a fresh connection, and if every attempt fails the run ends with a clear message rather than an empty success. If your account is not permitted to use the requested connection, the actor logs a warning and continues on a backup gateway for the rest of the run, where coverage may be limited; enable Apify Proxy or upgrade your plan to avoid that. An explicit proxy group you choose is always honored.
FAQ
How much does it cost?
You are charged per home returned in the dataset, plus a smaller per-home charge only for homes returned with full detail extraction enabled, plus a small per-run start charge. The Pricing tab on the actor page shows the current rates. Use Max items to cap the cost of any run.
Is it legal to scrape NewHomeSource?
This actor collects only publicly available new-construction listing data. You are responsible for how you use it: follow NewHomeSource's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Listing facts like price, specs and address are generally not protected, but photos, floor-plan renderings and marketing copy may be subject to third-party rights.
Can I get only new or changed homes on a schedule?
Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Later runs then return only new and updated homes, and unchanged homes are not billed unless you also turn on Emit unchanged.
Do pasted single-home links always come back with full detail?
Yes, and this is the most common source of confusion. A pasted plan, specdetail or basichome link only exists as a detail record on the storefront, so the actor always fetches and returns its full detail and community context for that link, and always applies the detail-enrichment surcharge, no matter how Fetch full home details is set. That toggle only controls whether homes found by a state or city search, or by a pasted community link, also get the extra fetch.
Why does a run sometimes fail instead of returning an empty dataset?
If every attempt to reach the listing service was blocked this run and no homes were scanned, the actor fails the run with a clear message instead of reporting a false empty success, so a saved incremental baseline is never corrupted by a single outage. Try again shortly, or switch the Proxy configuration. If the account's connection specifically was refused, the message says so; that points to a plan or connection-access limit, not an empty result.
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 a summary of results into Notion, Linear or Airtable.
π Want more real estate data?
Pair this actor with these related scrapers from the same team:
| π DR Horton From $1/1K. Extract new-home data from drhorton.com, Americaβs largest homebuilder. Pull... | π Lennar Homes, Communities & Floor Plans Scraper Scrape Lennar new-home communities, move-in-ready homes and floor plans. Extract prices... |
| π 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.com Scraper Scrape US property records from Homes.com. Pick a city, state or ZIP and a channel (for... | π Properstar Extract property listings from Properstar across global domains like .com, .co.uk, .ch... |
π 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.