New Construction Property Scraper (Cheap)
Pricing
from $3.99 / 1,000 results
New Construction Property Scraper (Cheap)
New construction properties list tool that extracts new builds and pre-construction real estate, giving investors access to fresh developer inventory instantly.
Pricing
from $3.99 / 1,000 results
Rating
0.0
(0)
Developer
Data API
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
New Construction Property Scraper

Tracking new builds usually means refreshing builder websites one by one, or paying a portal for a feed you can barely export. This scraper does that legwork for you. Hand it a ZIP code or a state and it returns the homes that are newly built or still going up, each as a clean row: asking price, full street address, beds and baths, square footage, completion year, builder contacts, coordinates, and photos. One run gives you a new-construction dataset you can drop straight into a spreadsheet or a model.
What you get
Every property comes back as one flat row, so the columns line up the moment you load results into a sheet or database. The fields fall into a handful of groups:
- Identity and status —
propertyId,listingId,listingSlug,listingStatus,isNewBuild, plus lifecycle flags likeisPending,isContingent,isAuction,isFreshListing,isPriceReduced - Price and dates —
askingPrice,closingPrice,priceDropAmount,listedOn,closedOn - Property details —
homeCategory,homeSubCategory,bedroomCount,bathroomCount,interiorArea,lotArea,yearCompleted,garageSpaces,hasMatterport - Location —
streetAddress,cityName,stateName,stateCode,zipCode,geoLat,geoLng,countyName,countyFips,streetViewUrl - Media —
heroPhotoUrl,photoCount,photoGallery - Builder and source —
builderName,builderEmail,builderPhones,coListerName,brandLabel,feedName,communityPromotions,openHouseDates
Quick start
- Press Try for free to open the input form.
- Type a location into at least one of ZIP code, City, or State abbreviation.
- Add any filters you want, such as price range, bedroom count, or home category.
- Set a Total listings cap to control spend, pick a proxy, then press Start.
- When the run finishes, export the data as JSON, CSV, Excel, or XML.

Use cases
- Buyer matching — pull every active new build in one ZIP code and pair clients with floor plans that fit their budget
- Builder lead lists — gather builder names, emails, and phone numbers tied to fresh developments in your market
- Inventory tracking — schedule a daily run to catch new construction the moment it lists across your target areas
- Pricing research — export
askingPrice,interiorArea, andyearCompletedto benchmark new-build pricing per square foot - Investment screening — filter by price, beds, square footage, and completion year to shortlist builds that match your model
- Mortgage and lending outreach — find newly completed homes and reach buyers early in their financing window
Input
| Field | Type | Required | Description |
|---|---|---|---|
zipCode | string | One of zipCode, cityName, stateCode, or addressLine | Single 5-digit US ZIP code, the tightest location filter. Example 78613. |
stateCode | string | One of zipCode, cityName, stateCode, or addressLine | Two-letter US state code, best paired with another filter. Prefilled TX. |
cityName | string | One of zipCode, cityName, stateCode, or addressLine | Exact city name; pair with stateCode for clean results. Prefilled Austin. |
streetName | string | Optional | Limit results to homes on one named street, e.g. Builder Way. |
addressLine | string | Optional | One precise street address line. |
homeCategories | array of strings | No | Keep only chosen property categories, e.g. single_family, condo_townhome. |
featureKeywords | array of strings | No | Filter by amenities such as pool, central_air, hardwood_floors. |
bedroomsFrom / bedroomsTo | integer | No | Smallest and largest bedroom counts to keep. |
bathroomsFrom / bathroomsTo | integer | No | Smallest and largest bathroom counts to keep. |
askingPriceFrom / askingPriceTo | integer | No | Asking price range in USD. |
closingPriceFrom / closingPriceTo | integer | No | Closing price range in USD. |
closedOnFrom / closedOnTo | string | No | Closed-sale date window, written YYYY-MM-DD. |
interiorAreaFrom / interiorAreaTo | integer | No | Interior living area range in square feet. |
lotAreaFrom / lotAreaTo | integer | No | Lot size range in square feet. |
yearCompletedFrom / yearCompletedTo | integer | No | Completion year range; raise the floor to focus on the newest builds. |
hoaFeeCap | integer | No | Largest monthly HOA fee to allow. |
skipHoa | boolean | No | Return only homes with no HOA fee. Default false. |
openHouseFrom / openHouseTo | string | No | Open-house date window, written YYYY-MM-DD. |
pageSize | integer | No | Listings fetched per request. Default 150. |
startOffset | integer | No | Position where pagination begins. Default 0. |
resultsLimit | integer | No | Hard cap on total listings collected. Default 3000. |
runTimeoutSeconds | integer | No | Whole-run time budget in seconds. Default 360. |
requestTimeoutSeconds | integer | No | Per-request time budget in seconds. Default 45. |
proxyConfiguration | object | No | Proxies used for requests. Defaults to US datacenter. |
Example input
{"stateCode": "TX","cityName": "Austin","homeCategories": ["single_family", "condo_townhome"],"askingPriceTo": 850000,"bedroomsFrom": 3,"yearCompletedFrom": 2023,"resultsLimit": 200,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyCountry": "US"}}
Output
Each new-construction home becomes one flat JSON row. Every declared field is present on a normal row, and unavailable values come back as null or empty so your dataset stays rectangular.
Example output
{"feedAttribution": true,"propertyId": "9482736150","listingId": "2967451308","listingSlug": "1200-Model-Home-Blvd_Austin_TX_78613_M94827-36150","listingStatus": "for_sale","askingPrice": 549000,"closingPrice": null,"priceDropAmount": 10000,"listedOn": "2026-05-18","closedOn": "","homeCategory": "single_family","homeSubCategory": "","bedroomCount": 4,"bathroomCount": "3","interiorArea": 2480,"lotArea": 6100,"yearCompleted": 2025,"garageSpaces": 2,"streetAddress": "1200 Model Home Blvd","cityName": "Austin","stateName": "Texas","stateCode": "TX","zipCode": "78613","geoLat": 30.5052,"geoLng": -97.8203,"countyName": "Williamson County","countyFips": "48491","streetViewUrl": "https://maps.googleapis.com/maps/api/streetview?location=30.5052,-97.8203","heroPhotoUrl": "https://ap.rdcpix.com/example/cover-2x.jpg","photoCount": 28,"photoGallery": ["https://ap.rdcpix.com/example/photo-1.jpg","https://ap.rdcpix.com/example/photo-2.jpg"],"hasMatterport": true,"isComingSoon": false,"isFreshListing": true,"isPriceReduced": false,"isNewBuild": true,"isPending": false,"isContingent": false,"isAuction": false,"isFractionalOwnership": false,"feedId": "ACTRIS","feedName": "Austin Board of Realtors","feedType": "mls","feedListingId": "T1234567","offersAgentContact": true,"marketSegment": "for_sale","leadCategory": "advantage","isVaEligible": true,"productTags": ["co_broke"],"productBrand": "essentials","builderRole": "seller","builderName": "Highland Homes","builderEmail": "sales@highlandhomes.example.com","builderOffice": "Highland Homes Cedar Park","builderPhones": ["5125550142"],"coListerRole": null,"coListerName": null,"coListerEmail": null,"coListerOffice": null,"coListerPhones": [],"brandLabel": "Highland Homes","searchPromotions": [],"communityPromotions": [{"headline": "Move-in ready incentives","promotion_type": "incentive"}],"openHouseDates": [{"start_date": "2026-06-07T17:00:00Z","end_date": "2026-06-07T20:00:00Z","description": "Model home tour","time_zone": "America/Chicago"}],"collectedAt": "2026-06-29T12:00:00.000000+00:00","errorMessage": null}
Output fields
| Field | Type | Description |
|---|---|---|
feedAttribution | boolean | Source attribution flag from the listing feed |
propertyId | string | Stable internal identifier for the property |
listingId | string | Identifier of the specific listing |
listingSlug | string | URL slug for the listing |
listingStatus | string | Current state, such as for_sale or ready_to_build |
askingPrice | integer | Current listed asking price in USD |
closingPrice | integer | Final closing price in USD, on closed homes only |
priceDropAmount | integer | How far the asking price has been reduced, in USD |
listedOn | string | ISO 8601 date the listing went live |
closedOn | string | ISO 8601 date the sale closed, when applicable |
homeCategory | string | Top-level property type, e.g. single_family |
homeSubCategory | string | Finer property classification |
bedroomCount | integer | Number of bedrooms |
bathroomCount | string | Consolidated bathroom count |
interiorArea | integer | Interior living area in square feet |
lotArea | integer | Outdoor lot size in square feet |
yearCompleted | integer | Year construction was finished |
garageSpaces | integer | Number of garage spaces |
streetAddress | string | Full street address line |
cityName | string | City the property sits in |
stateName | string | Full state name |
stateCode | string | Two-letter US state code |
zipCode | string | ZIP or postal code |
geoLat | number | Latitude of the property |
geoLng | number | Longitude of the property |
countyName | string | County the property falls under |
countyFips | string | County FIPS code |
streetViewUrl | string | Link to a street-level map preview |
heroPhotoUrl | string | Direct link to the headline photo |
photoCount | integer | How many photos accompany the listing |
photoGallery | array | Direct image URLs for the property |
hasMatterport | boolean | True when a Matterport 3D tour is attached |
isComingSoon | boolean | True when marked coming soon |
isFreshListing | boolean | True when flagged as a recently added listing |
isPriceReduced | boolean | True when the price recently dropped |
isNewBuild | boolean | True when the home is newly constructed |
isPending | boolean | True when the sale is pending |
isContingent | boolean | True when the sale is contingent |
isAuction | boolean | True when sold at auction |
isFractionalOwnership | boolean | True when ownership is fractional |
feedId | string | Identifier of the originating feed |
feedName | string | Name of the originating feed, e.g. the local MLS or builder feed |
feedType | string | Type of the originating feed |
feedListingId | string | Listing ID in the source feed |
offersAgentContact | boolean | Whether a contact-an-agent action is offered |
marketSegment | string | Lead market classification |
leadCategory | string | Lead type for the listing |
isVaEligible | boolean | True when flagged Veterans United eligible |
productTags | array | Distribution products attached to the listing |
productBrand | string | Brand name tied to the products |
builderRole | string | Role of the primary listing party |
builderName | string | Name of the primary listing party, often the builder |
builderEmail | string | Email for the primary listing party |
builderOffice | string | Office handling the primary listing party |
builderPhones | array | Phone numbers for the primary listing party |
coListerRole | string | Role of the secondary listing party |
coListerName | string | Name of the secondary listing party |
coListerEmail | string | Email for the secondary listing party |
coListerOffice | string | Office handling the secondary listing party |
coListerPhones | array | Phone numbers for the secondary listing party |
brandLabel | string | Affiliated agent or builder branding label |
searchPromotions | array | Search-level promotions attached to the listing |
communityPromotions | array | Community-level promotions, common on new developments |
openHouseDates | array | Scheduled open house entries with times and notes |
collectedAt | string | ISO 8601 timestamp of when the row was captured |
errorMessage | string | Reason a row failed; null on success |
Tips for best results
- Always set a location. Give the scraper at least one of
zipCode,cityName,stateCode, oraddressLine, or it has nothing to search against. - Start small. Drop
resultsLimitto 50 or so on your first run to confirm the fields match your pipeline before pulling thousands. - Combine
cityNamewithstateCode. A city on its own can match across several states; pairing the two keeps results tight. - Raise the
yearCompletedFromfloor to the current year or last year when you only want the freshest builds. - Switch proxy tiers if requests start failing. US datacenter clears most runs; move to residential if you hit repeated errors.
- Give slower proxies more headroom by pushing
requestTimeoutSecondstoward 60 to 90 and looseningrunTimeoutSecondsfor large states.
How can I use new construction property data?
How can I use the New Construction Property Scraper to build a buyer match list?
Enter a target ZIP code or city and the scraper returns every active new build there, each with the street address, asking price, beds and baths, completion year, and the builder's name, email, and phone. Filter by homeCategories and price range, then export the rows straight into your CRM to pair clients with the right floor plans.
How can I track new construction inventory across a whole state?
Pass a stateCode such as TX, raise resultsLimit, and the scraper paginates through the available inventory and hands back one row per home. Sort by listedOn or watch isFreshListing to surface the homes that just hit the market.
How can I research new-build pricing per square foot?
Pull askingPrice, interiorArea, and yearCompleted for your area, then divide price by interior area to compare builders and neighborhoods. Group the rows by cityName or zipCode to see where new construction is priced highest.
How can I monitor new developments automatically?
Save your filters and schedule the run on Apify to repeat daily. Each run captures collectedAt along with flags like isFreshListing and isNewBuild, so you can diff against yesterday's dataset and flag freshly listed builds as they appear.
Is it legal to scrape data?
Our actors are ethical and do not extract any private user data, such as email addresses or private contact information. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.
However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.
You can also read Apify's blog post on the legality of web scraping.
Support
Questions, feature requests, or a field you'd like added? Reach out at data.apify@proton.me and we'll get back to you.