Skip to main content
RapidDev - Software Development Agency
bubble-integrationsBubble API Connector

Realtor.com

Realtor.com has no official public API, but you can access residential property listings, home values, and neighborhood data through the Realtor.com API provider on the RapidAPI marketplace. In Bubble, configure the API Connector with your RapidAPI key in two Private shared headers — Bubble proxies all calls server-side. Cache results aggressively because RapidAPI bills per call.

What you'll learn

  • How Realtor.com developer access works through the RapidAPI marketplace (and why there is no official direct API)
  • How to subscribe to the Realtor.com API on RapidAPI and get your API key
  • How to configure Bubble's API Connector with RapidAPI's dual-header authentication as Private fields
  • How to build a property search form that calls the listings endpoint with city, zip, and price filters
  • How to display listing cards in a Bubble repeating group with photos, price, and bedroom details
  • How to implement a result cache in Bubble's database to minimize per-call RapidAPI billing
Book a free consultation
4.9Clutch rating
600+Happy partners
17+Countries served
190+Team members
Beginner17 min read1–2 hoursReal Estate & IndustryLast updated July 2026RapidDev Engineering Team
TL;DR

Realtor.com has no official public API, but you can access residential property listings, home values, and neighborhood data through the Realtor.com API provider on the RapidAPI marketplace. In Bubble, configure the API Connector with your RapidAPI key in two Private shared headers — Bubble proxies all calls server-side. Cache results aggressively because RapidAPI bills per call.

Quick facts about this guide
FactValue
ToolRealtor.com
CategoryReal Estate & Industry
MethodBubble API Connector
DifficultyBeginner
Time required1–2 hours
Last updatedJuly 2026

Realtor.com + Bubble: Build a Residential Property Search App

Realtor.com is one of the most-visited real estate platforms in the United States, and many Bubble developers want to power their property search apps with Realtor.com data — active listings, recent sales, home values, and neighborhood statistics. The challenge: Realtor.com does not offer a first-party public developer API. There is no official developer portal and no API key you can generate directly from realtor.com.

The practical solution is the RapidAPI marketplace. RapidAPI hosts a third-party Realtor.com API provider at realtor-com4.p.rapidapi.com that exposes residential listing search, property details, and home value estimates via a standard REST JSON interface. You subscribe to the provider, get a single X-RapidAPI-Key that works across all RapidAPI providers, and connect Bubble to it through the API Connector.

In Bubble's API Connector, you set two shared headers — X-RapidAPI-Key (your secret key) and X-RapidAPI-Host (the provider identifier) — both marked Private. Bubble proxies every call server-side, so your key never reaches the browser and there are no CORS complications.

One important constraint: RapidAPI charges per API call. Even the Pro plan has monthly call limits. Building a Bubble app that calls the API on every search without caching will produce unexpected bills quickly. The right architecture for production is a result cache: store search results in a Bubble database table with a query hash and an expires_at timestamp, and only call the RapidAPI endpoint when the cache is stale or the search parameters are new.

Also note: RapidAPI providers are third-party maintainers, not Realtor.com itself. Data freshness and accuracy are generally good for active listings but may lag for recently sold or delisted properties. For investment-grade applications that need verified, licensed data, ATTOM Data Solutions (attomdata.com) is a more authoritative alternative with a self-serve developer portal.

Integration method

Bubble API Connector

Connect via Bubble's API Connector to the Realtor.com API on RapidAPI (base URL: https://realtor-com4.p.rapidapi.com) using X-RapidAPI-Key and X-RapidAPI-Host as Private shared headers.

Prerequisites

  • A RapidAPI account (free to create at rapidapi.com)
  • A subscription to the Realtor.com API provider on RapidAPI (at minimum a Basic or Pro plan for production use — the free tier has very low call limits)
  • Your X-RapidAPI-Key from the RapidAPI developer dashboard
  • A Bubble app with the API Connector plugin installed
  • Basic familiarity with Bubble's API Connector, Workflow editor, and repeating groups

Step-by-step guide

1

Step 1: Subscribe to the Realtor.com API on RapidAPI

Go to rapidapi.com and create an account if you don't have one. In the search bar, search for 'Realtor.com' or navigate directly to the Realtor.com API provider at rapidapi.com/marketplace. You will see several Realtor.com API providers listed. The most commonly used one for residential listings is the provider with the host **realtor-com4.p.rapidapi.com** — look for a provider that shows endpoints for property search, property detail, and home value estimates. Click the provider → click **Subscribe to Test** or **Pricing** → choose a plan. The free Basic plan is only suitable for development (it allows roughly 10 requests per month — you will exhaust this within minutes during testing). For a real user-facing app, subscribe to at least the Basic Pro plan. Once subscribed, go to the **Dashboard** → **My Apps** (or **Security**) → copy your **X-RapidAPI-Key**. This single key works for all RapidAPI providers you subscribe to. Keep it secure — anyone with this key can consume your RapidAPI credits. Note the host value for the Realtor.com provider: **realtor-com4.p.rapidapi.com** — you will need both the key and the host in the next step.

Pro tip: Test the API in RapidAPI's built-in playground (the 'Test Endpoint' panel on each endpoint page) before configuring Bubble. This lets you see the exact response structure — including nested field paths — before you map them in the API Connector.

Expected result: You have an active RapidAPI subscription to the Realtor.com provider and have copied your X-RapidAPI-Key and noted the host value realtor-com4.p.rapidapi.com.

2

Step 2: Configure the API Connector with RapidAPI Headers

In your Bubble editor, click **Plugins** in the left sidebar → **Add plugins** → search 'API Connector' (by Bubble) → click **Install** if not already installed. Open the API Connector → click **Add another API** → name it 'Realtor.com (RapidAPI)'. Set the **Authentication** to **None** (authentication is handled via headers, not Bubble's built-in auth). Under **Shared headers**, add two headers: **Header 1:** - Name: X-RapidAPI-Key - Value: [paste your key here] - Private: **checked** (click the eye-slash icon — this keeps the key server-side only) **Header 2:** - Name: X-RapidAPI-Host - Value: realtor-com4.p.rapidapi.com - Private: **checked** (this identifies the provider and should also stay private) With both headers set to Private, Bubble will proxy every API call through its own servers. Your RapidAPI key never reaches the user's browser, and CORS is not an issue — Bubble makes all the calls from the server side.

realtor-com-api-connector-config.json
1{
2 "api_name": "Realtor.com (RapidAPI)",
3 "base_url": "https://realtor-com4.p.rapidapi.com",
4 "shared_headers": {
5 "X-RapidAPI-Key": "<your_rapidapi_key_private>",
6 "X-RapidAPI-Host": "realtor-com4.p.rapidapi.com_private"
7 }
8}

Pro tip: Both X-RapidAPI-Key and X-RapidAPI-Host should be marked Private. While X-RapidAPI-Host is not a secret in isolation, marking it Private ensures neither header appears in browser network requests, which keeps your integration pattern clean.

Expected result: The API Connector shows the Realtor.com (RapidAPI) entry with two Private shared headers configured. No 'Test' button is needed yet — proceed to add individual calls in the next step.

3

Step 3: Add and Initialize the Property Search Call

Within the Realtor.com (RapidAPI) entry in the API Connector, click **New call**. Configure the call: - **Name**: Property Search - **Method**: GET - **Endpoint** (appended to base URL): /properties/search-with-filters Click **Add parameter (query)** to add the search parameters that users will fill in from form inputs. Add these parameters (leave them as dynamic variables, not fixed values): - **city** — the city name to search in - **state_code** — two-letter state abbreviation (e.g., CA) - **price_min** — minimum list price (number) - **price_max** — maximum list price (number) - **beds_min** — minimum bedrooms - **property_type** — type filter (e.g., single_family, condo) Set the **Use as** dropdown to **Data** — this tells Bubble to expect a list of records from this call. Now click **Initialize call**. This step is critical — Bubble uses the response from a real API call to detect the data structure. You must provide real test values in the parameter fields: - city: San Diego - state_code: CA - price_min: 400000 - price_max: 800000 - beds_min: 2 Click **Initialize**. Wait for Bubble to return a successful response. Bubble will detect response fields like results[].property_id, results[].location.address.line, results[].list_price, results[].description.beds, results[].photos[].href. If you see 'There was an issue setting up your call', check: (1) your X-RapidAPI-Key is correct, (2) you are subscribed to this specific provider on RapidAPI, (3) the endpoint path is exactly /properties/search-with-filters with the right parameter names.

realtor-com-property-search-call.json
1{
2 "call_name": "Property Search",
3 "method": "GET",
4 "endpoint": "/properties/search-with-filters",
5 "params": {
6 "city": "<dynamic_city>",
7 "state_code": "<dynamic_state_code>",
8 "price_min": "<dynamic_price_min>",
9 "price_max": "<dynamic_price_max>",
10 "beds_min": "<dynamic_beds_min>",
11 "property_type": "<dynamic_property_type>"
12 },
13 "use_as": "Data"
14}

Pro tip: If the Initialize call succeeds but Bubble detects only a few fields, it may be because the test response contained listings with missing optional fields. Re-initialize with different search parameters that return more complete listing objects to get a fuller field map.

Expected result: Bubble successfully initializes the Property Search call and detects response fields including property_id, address, list_price, beds, bathrooms, and photo URL. The call appears in the API Connector ready to be used in workflows and data sources.

4

Step 4: Build the Property Search Form and Listing Cards

With the API call initialized, build the search experience on your Bubble page. **Add search form inputs:** Place the following inputs on your page: - A text input named 'City Input' (placeholder: 'Enter city name') - A dropdown named 'State Dropdown' with U.S. state options and their two-letter codes - A range slider or two number inputs for price_min and price_max - A dropdown for beds_min (1, 2, 3, 4, 5+) - A search button **Create the search workflow:** Click the search button → add a workflow. Inside the workflow, add the action **Plugins → Realtor.com (RapidAPI) - Property Search**. Connect each parameter to the corresponding input: - city → City Input's value - state_code → State Dropdown's value - price_min → Price Min input's value - price_max → Price Max input's value - beds_min → Beds Min dropdown's value Store the result in a custom state (type: Realtor.com (RapidAPI) Property Search, allow list) on the page element. Name the state 'Search Results'. **Build the repeating group:** Add a Repeating Group to the page: - Type of content: Realtor.com (RapidAPI) Property Search - Data source: Current page's Search Results state - Layout: Grid or list, 2-3 columns Inside the repeating group's cell, add: - A Dynamic Image element → source: Current cell's Realtor.com Property Search's photos first item href - A Text element for address: Current cell's location address line - A Text element for price: 'From $' + Current cell's list_price formatted as number - A Text element for beds/baths: Current cell's description beds + 'bd / ' + Current cell's description baths + 'ba' - A button 'View Details' that stores the current cell's property_id in a page state for the detail popup **Add a loading state:** Add a visual indicator (spinner or loading text) that shows while the search workflow is running and hides when the custom state is populated.

Pro tip: Set the repeating group's data source to the custom state (not a 'Get data from external API' dynamic data source). Custom state means the search only runs when the button is clicked — not on every page load or interaction, which would burn through RapidAPI call limits rapidly.

Expected result: Clicking the search button triggers the Realtor.com API call, populates the custom state, and displays listing cards in the repeating group with photo, address, price, and bedroom count.

5

Step 5: Add a Cache Layer to Manage RapidAPI Costs

RapidAPI bills per call. A production app without caching will quickly exhaust monthly plan limits, especially if users perform repeated or similar searches. Implement a simple cache in Bubble's database. **Create a data type:** Go to Data tab → Data types → New type → name it 'PropertySearchCache'. Add fields: - query_hash (text) — a unique string representing the search parameters - result_json (text) — the full search result stored as a JSON string - expires_at (date) — set to 'Current date/time + 1 hour' when the record is created - search_city (text) — the city parameter (for display and debugging) **Modify the search workflow to check cache first:** In your search button workflow, insert a conditional check before the API call: 1. First, construct the query_hash — a Toolbox JavaScript expression that creates a consistent string from the search parameters: `[city]+[state]+[price_min]+[price_max]+[beds_min]` concatenated. Store this in a custom state. 2. Add a 'Only when' condition to the API call step: 'Do a search for PropertySearchCache where query_hash = [hash] and expires_at > Current date/time' has 0 results. This means the API only runs on a cache miss. 3. After the API call (on cache miss), add workflow steps: (a) Create a new PropertySearchCache record with the query_hash, result_json (store the raw result), and expires_at = Current date/time + 60 minutes. (b) Update the 'Search Results' custom state with the API result. 4. Add a parallel branch: if the cache record exists and is not expired, load the Search Results from the cached result_json instead of calling the API. An hour cache window is appropriate for active listings — property data changes daily but not minute-to-minute. Adjust the expires_at window based on how fresh your users need the data. **Also add a property detail cache:** Create a PropertyDetailCache type for individual property lookups (keyed by property_id). Listings viewed from search results generate individual detail API calls — caching these saves a call per property page view.

realtor-com-cache-key-generator.js
1// Toolbox Run JavaScript — generate query hash for cache key
2var city = properties.city || '';
3var state = properties.state_code || '';
4var priceMin = properties.price_min || '0';
5var priceMax = properties.price_max || '0';
6var beds = properties.beds_min || '0';
7return (city + '_' + state + '_' + priceMin + '_' + priceMax + '_' + beds).toLowerCase().replace(/\s+/g, '_');

Pro tip: Display a 'Results cached — last updated [expires_at minus 1 hour]' note near the search results. Users appreciate knowing when data was fetched, and it sets expectations for listing freshness.

Expected result: Repeat searches with the same parameters load from the Bubble database cache within 1 hour, skipping the RapidAPI call entirely. Cache misses and new searches still call the API and store results. RapidAPI monthly call usage drops significantly compared to uncached implementation.

6

Step 6: Build the Property Detail Popup

Listing cards show summary data. Users will want to see full property details — more photos, full address, listing description, and price history. Add a detail popup triggered from the repeating group. **Add a second API call:** In the API Connector, within the Realtor.com (RapidAPI) entry, click **New call**. Configure: - Name: Property Detail - Method: GET - Endpoint: /properties/detail/{property_id} Add property_id as a dynamic path parameter or query parameter (depending on the provider's endpoint format — check in RapidAPI's playground). Initialize with a known property_id from a recent search result. **Add a Popup element:** Drag a Popup element onto the page. Set its width and design. Inside, add: - A Slideshow element for photos (data source: Current page's SelectedProperty's photos, image URL: Current photo's href) - Text elements for full address, list price, bedrooms, bathrooms, square footage, year built - A text description block (listing description field) - A 'Close' button that closes the popup **Connect the repeating group row:** In the repeating group cell, add a workflow on the 'View Details' button click: 1. Store the current cell's property_id in a page custom state named 'SelectedPropertyID' 2. Call the Property Detail API using the stored ID 3. Store the result in a 'SelectedProperty' custom state 4. Show the popup This way the popup always shows fresh detail data from the API (or from the PropertyDetailCache if you implemented caching in Step 5), rather than relying on the limited fields available in the search result. RapidDev's team has built real estate search Bubble apps connecting to RapidAPI providers including Realtor.com, Zillow, and ATTOM — if you need help with the data structure mapping or want a faster build, book a free scoping call at rapidevelopers.com/contact.

realtor-com-property-detail-call.json
1{
2 "call_name": "Property Detail",
3 "method": "GET",
4 "endpoint": "/properties/detail",
5 "params": {
6 "property_id": "<dynamic_property_id>"
7 },
8 "use_as": "Data"
9}

Pro tip: After calling the Property Detail endpoint, add the result to the PropertyDetailCache (Step 5) keyed by property_id. If a user returns to the same listing within the cache window, the popup loads instantly from the database instead of calling the API again.

Expected result: Clicking 'View Details' on a listing card opens a popup with full property information including a photo slideshow, complete address, price, and listing description — loaded from the Realtor.com API (or from cache on repeat views).

Common use cases

Residential Property Search App

Build a Bubble app where users enter a city, zip code, and price range to search active residential listings. Results display in a repeating group as listing cards showing photo, address, price, bedroom count, and a link to the detail view. Ideal for buyer-facing tools, neighborhood guides, or relocation apps.

Bubble Prompt

Copy this prompt to try it in Bubble

Home Value Estimator

Create an address-based home value lookup tool — users enter a property address, the app calls the Realtor.com API's estimate endpoint, and displays an estimated market value alongside comparable recent sales. Useful for homeowner portals, mortgage pre-qualification tools, or investor deal analysis apps.

Bubble Prompt

Copy this prompt to try it in Bubble

Neighborhood Market Dashboard

Build a zip-code-level market dashboard showing median list price, days on market, and active listing count for a neighborhood. Fetch the data from the Realtor.com API, store it in Bubble's database with a refresh timestamp, and display a clean market snapshot that updates weekly.

Bubble Prompt

Copy this prompt to try it in Bubble

Troubleshooting

Initialize call shows 'There was an issue setting up your call' with no further detail

Cause: The X-RapidAPI-Key is incorrect, the RapidAPI subscription to this provider is not active, or the endpoint path or parameter names are wrong.

Solution: First, test the exact same call in RapidAPI's built-in playground at rapidapi.com — if it fails there, the issue is your API key or subscription, not Bubble. If it works in the playground, compare the endpoint path and parameter names character-by-character with what you entered in the Bubble API Connector. A common mistake is omitting the leading slash (use /properties/search-with-filters, not properties/search-with-filters).

Search returns an empty results list even though the city and state are valid

Cause: The parameter names or values don't match what the RapidAPI provider expects. RapidAPI providers vary — some use city, others use location or city_name. Price parameters may expect integers, not strings.

Solution: Open RapidAPI's playground for the search endpoint and test the same parameters there. Note the exact parameter names from the playground — they must match exactly in Bubble's API Connector query parameters. Also verify that number parameters (price_min, beds_min) are passed as numbers, not text strings, from Bubble's input elements.

RapidAPI returns 429 Too Many Requests after a few searches

Cause: The free or low-tier RapidAPI plan has been exhausted. Free tier plans often allow as few as 10 requests per month; some Basic plans allow 10 per day.

Solution: Upgrade your RapidAPI subscription to a plan that matches your expected usage. In the meantime, implement the cache layer from Step 5 to reduce API calls per search. Check your current usage in the RapidAPI dashboard under 'Analytics' to see how many calls you've made this month.

The Dynamic Image element in the repeating group shows a broken image for listings without photos

Cause: Some listings have empty or missing photo arrays. Accessing photos first item's href on an empty list returns empty, which causes a broken image display.

Solution: In the Dynamic Image element's source, add a conditional: 'When Current cell's Realtor.com Property Search photos count is 0, display a placeholder image URL instead'. Go to the element's Properties → Conditional → Add condition → set a fallback image URL (upload a placeholder listing image to Bubble's file manager and use that URL).

Bubble privacy rules block the PropertySearchCache data type from being read on the page

Cause: If you added default-deny privacy rules to all data types, the cache data type needs an explicit rule allowing the current user to read their own searches.

Solution: Go to Data tab → Privacy → PropertySearchCache → add a rule: 'Everyone can see' (cache results contain no PII and are fine to read). Alternatively: 'When Current User is logged in → all fields visible'. The cache type does not contain sensitive user data, so an open read rule is appropriate.

Best practices

  • Always mark both X-RapidAPI-Key and X-RapidAPI-Host as Private in Bubble's API Connector. Bubble proxies calls server-side by default, but marking headers Private also prevents them from appearing in Bubble's visual editor previews and log outputs.
  • Implement a database cache layer for all search queries before launching to real users. RapidAPI bills per call — a cache that reuses results for 1 hour turns hundreds of API calls into tens, which is the difference between a sustainable monthly bill and a surprise overage charge.
  • Test RapidAPI endpoints in the RapidAPI playground before building Bubble workflows. The playground shows exact parameter names, response shapes, and error messages — mapping these in Bubble's API Connector is much faster when you already know what the API expects and returns.
  • Display a 'Last updated' timestamp alongside search results so users understand data freshness. Realtor.com listing data can lag for recently listed, price-changed, or delisted properties, especially via third-party API providers.
  • Upgrade your RapidAPI plan before opening the app to real users. The free tier (roughly 10 requests per month) will be exhausted during your own testing. Check the RapidAPI provider's pricing page for per-call rates and monthly limits that match your expected traffic.
  • Use custom states (not a database search) as the data source for your repeating group. This means the API is only called when the user explicitly searches — not on every page load, scroll, or interaction — which directly controls your RapidAPI call usage.
  • Consider ATTOM Data Solutions (attomdata.com) as an alternative if you need investment-grade data quality. ATTOM has a self-serve developer portal, licensed data, and more reliable freshness than third-party RapidAPI providers. The API Connector configuration is similar: a single X-APIKey Private header.

Alternatives

Frequently asked questions

Why doesn't Realtor.com offer a direct public API?

Realtor.com has not launched a public developer program for third-party access. The company's strategy has been to keep listing data within its own platform and controlled partnerships. The RapidAPI marketplace providers fill this gap by offering structured API access to Realtor.com data, though they are third-party maintainers, not Realtor.com itself.

Is using the RapidAPI Realtor.com provider against Realtor.com's Terms of Service?

You should not scrape Realtor.com's website directly or call their internal undocumented endpoints — that clearly violates their ToS. The RapidAPI marketplace providers operate independently and take responsibility for their data sourcing. Using a RapidAPI provider is the accepted developer path for Realtor.com data access. Do not attempt to call realtor.com directly via browser automation or undocumented endpoints from Bubble.

How many API calls does a typical property search Bubble app make per user visit?

Without caching: every search action triggers at least one call, and clicking on a property listing triggers another. A user session might use 3-10 calls. With the cache layer from Step 5, repeat searches within the 1-hour window use 0 additional API calls. For a 100-user-per-day app, uncached usage can easily reach 500-1,000 calls per day — plan your RapidAPI tier accordingly.

Can I use the same RapidAPI key for other real estate API providers?

Yes. Your X-RapidAPI-Key is a single key that authenticates you across all RapidAPI providers — Zillow, ATTOM, Realtor.com, and others. You subscribe to each provider separately (each has its own pricing), but the key itself is shared. In Bubble's API Connector, you can set up multiple API entries (one per provider) all using the same X-RapidAPI-Key in their Private headers.

How fresh is the Realtor.com data from RapidAPI?

RapidAPI providers update at varying frequencies — typically within 24-48 hours for active listings. Recently listed properties may not appear immediately, and recently delisted or under-contract properties may still show up for a period. For investment-grade accuracy, ATTOM Data Solutions (with a directly licensed data feed) is more reliable than third-party RapidAPI providers.

Do I need a paid Bubble plan to connect to Realtor.com via RapidAPI?

No. The API Connector calls work on Bubble's free plan. A paid Bubble plan is only required if you want Backend Workflows for scheduled tasks (e.g., a daily cache refresh workflow). For a user-triggered property search app, the free Bubble plan is sufficient — you only need a paid RapidAPI subscription for adequate call volume.

RapidDev

Talk to an Expert

Our team has built 600+ apps. Get personalized help with your project.

Book a free consultation

Integrations are where projects stall

We wire Bubble integrations like this one every week — auth, webhooks, edge cases included. Fixed-price builds from $13K, delivered in 6–10 weeks.

Talk to an integration engineer

We put the rapid in RapidDev

Need a dedicated strategic tech and growth partner? Discover what RapidDev can do for your business! Book a call with our team to schedule a free, no-obligation consultation. We'll discuss your project and provide a custom quote at no cost.