Discover/kw API
live

kw APIkw.com

Search real estate listings on kw.com by geographic boundary. Retrieve pricing, address, images, status, and property details via a single endpoint.

This API takes change requests — .
Endpoint health
verified 2h ago
search_listings
1/1 passing latest checkself-healing
Endpoints
1
Updated
3h ago

What is the kw API?

The kw.com API provides access to Keller Williams real estate listings through 1 endpoint, search_listings, which returns up to 50 properties per page including pricing, address, images, listing status, and geometry data. Queries are scoped to a geographic boundary using kw.com's boundary identifier system, making it straightforward to pull listings for specific regions, metro areas, or international markets like México.

This call costs1 credit / call— charged only on success
Try it
Page number for pagination (1-indexed).
Field to sort results by.
Number of listings per page (1-50).
Geographic boundary identifier used by kw.com (e.g. '1030721389347824' for México). Obtainable from kw.com search URLs.
Sort direction.
Listing category filter.
api.parse.bot/scraper/6c0967b3-68a2-4deb-a02a-d43684ad2a95/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/6c0967b3-68a2-4deb-a02a-d43684ad2a95/search_listings?sort_by=listingUpdateDate&boundary_id=1030721389347824&sort_direction=asc&listing_category=sale' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace kw-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: Keller Williams Listings SDK — search listings by region."""
from parse_apis.kw_com_api import (
    KellerWilliams, ListingCategory, SortBy, SortDirection, InputFormatInvalid,
)

client = KellerWilliams()

# Search for-sale listings in México (boundary_id from kw.com URL), newest first.
for listing in client.listings.search(
    boundary_id="1030721389347824",
    listing_category=ListingCategory.SALE,
    sort_by=SortBy.LISTING_DATE,
    sort_direction=SortDirection.DESC,
    page_size=10,
    limit=5,
):
    addr = listing.address
    sale_price = listing.pricing.sale.amount
    print(
        f"{addr.display_address} | {listing.property_type} | "
        f"${sale_price} | {listing.facets.bedrooms}bd/{listing.facets.bathrooms}ba"
    )

# Drill into the first rental listing for detailed fields.
try:
    rental = client.listings.search(
        boundary_id="invalid!!",
        listing_category=ListingCategory.RENT,
        limit=1,
    ).first()
except InputFormatInvalid as e:
    print(f"Bad input: {e.message}")
    rental = None
else:
    pass  # rental found

# Retry with a valid boundary
if rental is None:
    rental = client.listings.search(
        boundary_id="1030721389347824",
        listing_category=ListingCategory.RENT,
        limit=1,
    ).first()

if rental is not None:
    print(f"\nRental: {rental.address.display_address}")
    print(f"  Listed: {rental.listing_date}")
    print(f"  Images: {len(rental.images)}")
    if rental.price_history:
        latest = rental.price_history[0]
        print(f"  Current price: {latest.current_list_price}")
    if rental.virtual_tours:
        print(f"  Virtual tour: {rental.virtual_tours[0].url}")

print("\nexercised: listings.search (sale + rent)")
All endpoints · 1 totalmissing one? ·

Search real estate listings within a geographic boundary on kw.com. Returns paginated results sorted by the chosen criteria. Each page returns up to 50 listings with full property details including pricing, address, facets, images, and status. The boundary_id identifies a geographic region (country, state, city, neighborhood, etc.) used by kw.com's search system.

Input
ParamTypeDescription
pageintegerPage number for pagination (1-indexed).
sort_bystringField to sort results by.
page_sizeintegerNumber of listings per page (1-50).
boundary_idrequiredstringGeographic boundary identifier used by kw.com (e.g. '1030721389347824' for México). Obtainable from kw.com search URLs.
sort_directionstringSort direction.
listing_categorystringListing category filter.
Response
{
  "type": "object",
  "fields": {
    "page": "current page number",
    "has_more": "boolean indicating whether more pages are available",
    "listings": "array of listing objects with full property details including pricing, address, facets, images, geometry, and status",
    "page_size": "number of results per page",
    "total_count": "total number of listings matching the query"
  },
  "sample": {
    "data": {
      "page": 1,
      "has_more": true,
      "listings": [
        {
          "id": "2149160051947828",
          "facets": {
            "lotSize": {
              "value": 150,
              "unitType": "SQ_MT"
            },
            "bedrooms": 2,
            "homeSize": {
              "value": 90.81,
              "unitType": "SQ_MT"
            },
            "bathrooms": 2
          },
          "images": [
            "https://storage.googleapis.com/attachment-listing-prod-5af4/2000032982/listing/f7ddd19613f89a8974cbff27/da1o56lpq4ac70pflb30.jpg"
          ],
          "is_vow": false,
          "mls_id": "KWW_KWMX",
          "address": {
            "city": "Mexicali",
            "state": "Baja California",
            "unitNo": null,
            "country": "MEX",
            "zipcode": null,
            "streetNo": null,
            "streetName": "Campeche",
            "displayAddress": "Campeche 1015, Mexicali, Baja California 21120",
            "primaryAddress": "Campeche 1015",
            "secondaryAddress": "Mexicali, Baja California 21120"
          },
          "pricing": {
            "rent": {
              "amount": 2650000,
              "currency": "MXN"
            },
            "sale": {
              "amount": 2650000,
              "currency": "MXN"
            },
            "sold": {
              "amount": null,
              "currency": "MXN"
            }
          },
          "courtesy": null,
          "geometry": {
            "type": "Point",
            "coordinates": [
              -115.4914057,
              32.653297
            ]
          },
          "url_path": "/property/Campeche-1015-Mexicali-Baja-California-21120/2149160051947828",
          "close_date": null,
          "mls_number": "O0-14056709",
          "open_house": null,
          "description": "Casa nueva de 2 recámaras con amplio Roof Top...",
          "open_houses": null,
          "listing_date": "2026-08-17T21:14:38.318Z",
          "price_history": [
            {
              "type": "listed",
              "percentChange": null,
              "priceUpdatedAt": "1787008246000",
              "daysSinceUpdate": null,
              "currentListPrice": 2650000,
              "previousListPrice": null,
              "isMostRecentChange": false
            }
          ],
          "property_type": "Single Family Detached",
          "virtual_tours": [],
          "listing_status": "active",
          "requires_login": false,
          "compliance_info": null,
          "mls_list_status": null,
          "has_virtual_tour": false,
          "listing_category": "sale",
          "energy_grade_level": null,
          "listing_publish_date_time": null
        }
      ],
      "page_size": 5,
      "total_count": 5468
    },
    "status": "success"
  }
}

About the kw API

What the API Returns

The search_listings endpoint queries active real estate listings on kw.com within a defined geographic region. Each response includes a listings array where every listing object carries full property details: pricing, street address, property facets (such as bed/bath counts and square footage), images, geometry coordinates, and listing status. The response also surfaces total_count, has_more, page, and page_size fields to support reliable pagination across large result sets.

Filtering and Sorting

The endpoint accepts a boundary_id (required) to define the geographic scope — for example, 1030721389347824 corresponds to México. Optional parameters include listing_category to filter by property type, sort_by and sort_direction to control result ordering, and page_size (1–50) alongside page for pagination. These controls let you walk through hundreds or thousands of listings in a given boundary in consistent, predictable batches.

Coverage and Scope

kw.com lists properties across Keller Williams' international network, so boundary identifiers can represent regions well beyond the United States. The geometry field on each listing enables map-based rendering or spatial analysis. Images are included directly in the listing object, reducing the need for secondary lookups to display property photos. The has_more boolean makes it simple to detect when additional pages exist without comparing counts manually.

Reliability & maintenanceVerified

The kw API is a managed, monitored endpoint for kw.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when kw.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official kw.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
2h ago
Latest check
1/1 endpoint passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a map view of for-sale properties in a given metro area using the geometry and address fields
  • Track listing price changes over time by polling total_count and pricing fields for a fixed boundary_id
  • Aggregate property facets (beds, baths, square footage) across a region for market analysis
  • Display a paginated property search UI using page, page_size, and has_more response fields
  • Filter listings by listing_category to separate residential from commercial inventory
  • Compile image galleries for property listings using the images field without additional lookups
  • Compare listing density across multiple geographic boundaries using total_count per boundary_id
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 req/min

Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does kw.com offer an official developer API?+
Keller Williams does not publish a documented public developer API for accessing kw.com listing data. Access to structured listing data is available through this Parse API.
What does the search_listings endpoint return for each property?+
Each listing object includes pricing, full address, property facets (such as bedroom and bathroom counts), images, geometry coordinates, and listing status. Pagination metadata — page, page_size, total_count, and has_more — is returned at the top level of each response.
How does geographic scoping work, and where do I get a boundary_id?+
Every query requires a boundary_id, which is kw.com's identifier for a geographic region. You can find a boundary_id by visiting a kw.com search URL — it appears in the URL path. For example, '1030721389347824' is the boundary for México. The identifier works for any region in kw.com's network.
Does the API support filtering by price range or property-specific criteria beyond listing_category?+
Currently the API exposes boundary_id, listing_category, sort_by, sort_direction, page, and page_size as filter and sort parameters. Price range filtering and criteria like minimum beds or square footage are not currently exposed. You can fork this API on Parse and revise it to add those filter parameters.
Is rental listing data available, or only for-sale properties?+
The endpoint includes a listing_category parameter that may cover different listing types depending on what kw.com surfaces for a given boundary. Dedicated rental-only search or lease-specific fields are not currently a distinct endpoint. You can fork this API on Parse and revise it to target rental listings specifically.
Page content last updated . Spec covers 1 endpoint from kw.com.
Related APIs in Real EstateSee all →
kv.ee API
Search and browse real estate listings from Estonia's largest property portal to find apartments, houses, and other properties with detailed information like prices, locations, and descriptions. View complete details for any listing including photos, specifications, and contact information for sellers.
realtor.com API
Search millions of real estate listings on Realtor.com, view detailed property information, find qualified agents in your area, and access market analytics to understand pricing trends. Get location suggestions and property insights all in one place to help you make informed decisions about buying, selling, or investing in real estate.
realtor.ca API
Search Canadian real estate listings and retrieve detailed property information including photos, prices, descriptions, and agent details from REALTOR.ca. Browse available properties with comprehensive listing data across Canada.
krisha.kz API
Search and browse real estate listings across Krisha.kz to find properties for sale, rent, or new developments, then access detailed information and contact details for each listing. Get comprehensive property data including prices, descriptions, and seller information to make informed decisions about properties in Kazakhstan.
exprealty.com API
Search eXp Realty property listings by location with pagination, and access detailed information like images, agent contacts, and property history for any listing. Discover new locations and browse available homes all in one integrated experience.
immowelt.de API
Search and browse real estate listings across Germany on Immowelt.de, with access to property details, images, and features for both rentals and sales. Filter results by location and sorting preferences to find properties that match your needs.
rew.ca API
Search rental and for-sale properties across Canada, get detailed listing information, explore neighbourhoods, and find real estate agents in your area. Access property details, agent profiles, and neighbourhood data all in one place.
ingatlan.com API
Search real estate listings and development projects on ingatlan.com to find properties with detailed information like prices, descriptions, and project details. Get comprehensive data on available homes and construction projects even when direct access is restricted.