Caruso Homes
Caruso Homes' own live community and Build-on-Your-Lot floor-plan listings, plus each community's own 'Schedule a Tour' form — reads the real field schema…
Caruso Homes' own live community and Build-on-Your-Lot floor-plan listings, plus each community's own 'Schedule a Tour' form — reads the real field schema and assembles a validated, ready-to-submit tour request. Never submits it.
Domain: carusohomes.com
Also known as: Caruso Homes, carusohomes.com
Call it directly
bowmark.providers.carusohomes.searchCommunities(args: SearchCommunitiesArgs): Promise<CarusoCommunity[]>
bowmark.providers.carusohomes.searchFloorPlans(args: SearchFloorPlansArgs): Promise<CarusoFloorPlan[]>
bowmark.providers.carusohomes.getTourAppointmentSchema(args: GetTourAppointmentSchemaArgs): Promise<CarusoTourAppointmentSchema>
bowmark.providers.carusohomes.assembleTourRequest(args: AssembleTourRequestArgs): Promise<AssembledTourRequest>Functions
| Function | What it does |
|---|---|
searchCommunities | Every live community on one of Caruso Homes' market listing pages — name, address, geo, image, description and the site's own best-effort starting-price band. |
searchFloorPlans | Every floor-plan card on a market's listing — community-attached by default, or Build-on-Your-Lot when buildOnYourLot is true — with price, beds, baths and square footage. |
getTourAppointmentSchema | One community's own live 'Schedule a Tour' form: every visible field (type, required-ness, real enumerated options) plus that community's item_of_interest_id. |
assembleTourRequest | Validates a caller's tour request against a community's live form schema and maps it onto the site's own field names, ready to submit to /xhr/schedule-appointment/. Never submits it. |
Types
interface CarusoCommunity {
name: string;
url: string;
listingId: string | null;
streetAddress: string | null;
city: string | null;
state: string | null;
postalCode: string | null;
latitude: number | null;
longitude: number | null;
description: string;
images: string[];
startingPriceLabel: string | null;
}
interface CarusoFloorPlan {
name: string;
url: string;
listingId: string | null;
collection: string | null;
priceLabel: string | null;
priceValue: number | null;
beds: number | null;
baths: number | null;
sqft: number | null;
buildOnYourLot: boolean;
}
interface CarusoFormFieldOption {
value: string;
label: string;
}
interface CarusoFormField {
name: string;
label: string;
type: "text" | "email" | "tel" | "date" | "checkbox" | "select";
required: boolean;
options?: CarusoFormFieldOption[];
}
interface CarusoTourAppointmentSchema {
entryUrl: string;
communityName: string;
itemOfInterestId: string;
fields: CarusoFormField[];
}
interface SearchCommunitiesArgs {
market: string; // e.g. "md/maryland", "nc/charlotte" — the path segment carusohomes.com uses under /new-homes/<market>/
}
interface SearchFloorPlansArgs {
market: string;
buildOnYourLot?: boolean; // true -> the market's Build-on-Your-Lot listing; false/omitted -> community-attached plans
}
interface GetTourAppointmentSchemaArgs {
communityUrl: string; // a community URL from searchCommunities, e.g. "https://www.carusohomes.com/new-homes/md/ellicott-city/mill-creek/18641/"
}
interface AssembleTourRequestArgs {
communityUrl: string;
firstName: string;
lastName: string;
email: string;
phone?: string;
desiredPriceRangeMinimum?: string;
desiredPriceRangeMaximum?: string;
whenToMove?: string;
preferredAppointmentDate?: string; // "YYYY-MM-DD"
message?: string;
textOptIn?: boolean;
}
interface AssembledTourRequest {
valid: boolean;
errors: string[];
entryUrl: string;
formFields: Record<string, string>;
summary: string;
}Examples
const communities = await bowmark.providers.carusohomes.searchCommunities({ market: "md/maryland" });
return communities.map((c) => ({ name: c.name, startingPrice: c.startingPriceLabel, url: c.url }));const plans = await bowmark.providers.carusohomes.searchFloorPlans({ market: "md/maryland", buildOnYourLot: true });
return plans.filter((p) => (p.priceValue ?? Infinity) < 250_000);