# Zumper API

> Zumper returns rental listings and average rent data as a workflow and API.

Zumper searches rentals by required city or neighborhood, with optional rent, bedroom, pet, and property filters. Get average rents returns city median rents for studios through three-bedroom homes and monthly or yearly changes; it needs a city.

- Page: https://fous.com/tools/zumper
- Handle: `@zumper`
- Category: [Real estate](https://fous.com/tools/category/real-estate)
- Source website: https://zumper.com
- Last verified: Sep 29, 2026

## Methods

### Get average rents

Operation `get_average_rents`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Get current median monthly rents for studio through three-bedroom homes in a city, with monthly and yearly percentage changes. Figures are rolling 30-day city medians; national rank is included only when the same-month U.S. national report ranks the city by one-bedroom rent.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `city` | string | yes | `"Toronto, ON"` | City with state or province, for example Austin, TX. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "city"
  ],
  "properties": {
    "city": {
      "type": "string",
      "description": "City with state or province, for example Austin, TX.",
      "examples": [
        "Toronto, ON",
        "Austin, TX"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "city": "Toronto, ON"
    },
    {
      "city": "Austin, TX"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `city` | string | `"Toronto, ON"` | City and state or province. |
| `month` | string | `"2026-09"` | Month the city figures cover, YYYY-MM. |
| `currency` | string | `"CAD"` | Currency code for the monthly rents. |
| `report_page_link` | string | `"https://www.zumper.com/rent-research/toronto-on"` | City rent research report page. |
| `national_rent_rank` | integer or null | `55` | One-bedroom rent rank in the same-month U.S. national report, when listed. |
| `studio_median_monthly_rent` | number or null | `1729` | Median monthly rent. |
| `one_bedroom_median_monthly_rent` | number or null | `2099` | Median monthly rent. |
| `two_bedroom_median_monthly_rent` | number or null | `2730.5` | Median monthly rent. |
| `three_bedroom_median_monthly_rent` | number or null | `3595` | Median monthly rent. |
| `studio_change_vs_last_year_percent` | number or null | `-3.94` | Median rent change from last year, percent. |
| `studio_change_vs_last_month_percent` | number or null | `0.2906976744186047` | Median rent change from last month, percent. |
| `one_bedroom_change_vs_last_year_percent` | number or null | `-3.05` | Median rent change from last year, percent. |
| `two_bedroom_change_vs_last_year_percent` | number or null | `-2.31` | Median rent change from last year, percent. |
| `one_bedroom_change_vs_last_month_percent` | number or null | `-0.6746987951807228` | Median rent change from last month, percent. |
| `two_bedroom_change_vs_last_month_percent` | number or null | `1.234567901234568` | Median rent change from last month, percent. |
| `three_bedroom_change_vs_last_year_percent` | number or null | `4.2` | Median rent change from last year, percent. |
| `three_bedroom_change_vs_last_month_percent` | number or null | `-0.7170435741864313` | Median rent change from last month, percent. |

**Example input**

```json
{
  "city": "Toronto, ON"
}
```

**Example output**

```json
{
  "city": "Toronto, ON",
  "month": "2026-09",
  "currency": "CAD",
  "report_page_link": "https://www.zumper.com/rent-research/toronto-on",
  "national_rent_rank": null,
  "studio_median_monthly_rent": 1729,
  "one_bedroom_median_monthly_rent": 2099,
  "two_bedroom_median_monthly_rent": 2730.5,
  "three_bedroom_median_monthly_rent": 3595,
  "studio_change_vs_last_year_percent": -3.94,
  "studio_change_vs_last_month_percent": 0.2906976744186047,
  "one_bedroom_change_vs_last_year_percent": -3.05,
  "two_bedroom_change_vs_last_year_percent": -2.31,
  "one_bedroom_change_vs_last_month_percent": -0.6746987951807228,
  "two_bedroom_change_vs_last_month_percent": 1.234567901234568,
  "three_bedroom_change_vs_last_year_percent": 4.2,
  "three_bedroom_change_vs_last_month_percent": -0.7170435741864313
}
```

### Search rentals

Operation `search_rentals`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Search Zumper apartments and homes for rent by city or neighborhood, with price, bedroom, pet, and property filters. Rents and availability are those shown by Zumper; some listings omit these details.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `pets` | string | no | `"dogs_allowed"` | Pet policy to include. Example: dogs_allowed. |
| `location` | string | yes | `"Toronto, ON"` | City and state or province, or a neighborhood and city. Example: Chicago, IL. |
| `max_rent` | number | no | `2500` | Highest monthly rent in USD, or CAD for a Canadian location. Example: 2500. |
| `min_beds` | integer | no | `1` | Minimum bedrooms; 0 includes studios. Example: 2. |
| `max_results` | integer | no | `5` | Most listings to return. Example: 20. |
| `property_type` | string | no | `"apartment"` | Kind of rental. Example: apartment. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "location"
  ],
  "properties": {
    "pets": {
      "enum": [
        "any",
        "dogs_allowed",
        "cats_allowed"
      ],
      "type": "string",
      "default": "any",
      "description": "Pet policy to include. Example: dogs_allowed.",
      "examples": [
        "dogs_allowed"
      ]
    },
    "location": {
      "type": "string",
      "minLength": 2,
      "description": "City and state or province, or a neighborhood and city. Example: Chicago, IL.",
      "examples": [
        "Toronto, ON",
        "Chicago, IL",
        "River North, Chicago, IL"
      ]
    },
    "max_rent": {
      "type": "number",
      "minimum": 0,
      "description": "Highest monthly rent in USD, or CAD for a Canadian location. Example: 2500.",
      "examples": [
        2500,
        1
      ]
    },
    "min_beds": {
      "type": "integer",
      "default": 0,
      "minimum": 0,
      "description": "Minimum bedrooms; 0 includes studios. Example: 2.",
      "examples": [
        1,
        2
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 20,
      "maximum": 50,
      "minimum": 1,
      "description": "Most listings to return. Example: 20.",
      "x-fous-developer": true,
      "examples": [
        5,
        10
      ]
    },
    "property_type": {
      "enum": [
        "any",
        "apartment",
        "house",
        "condo",
        "room"
      ],
      "type": "string",
      "default": "any",
      "description": "Kind of rental. Example: apartment.",
      "examples": [
        "apartment"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "location": "Toronto, ON",
      "max_results": 5
    },
    {
      "pets": "dogs_allowed",
      "location": "Chicago, IL",
      "max_rent": 2500,
      "min_beds": 1,
      "max_results": 10,
      "property_type": "apartment"
    },
    {
      "location": "River North, Chicago, IL",
      "min_beds": 2,
      "max_results": 5
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `rentals` | array |  | Rentals in Zumper search order. |
| `rentals[].beds` | string or null | `"1–3"` | Bedrooms or range, including Studio |
| `rentals[].name` | string or null | `"The Diamond"` | Building or listing name |
| `rentals[].baths` | string or null | `"1–2"` | Bathrooms or range |
| `rentals[].address` | string or null | `"950 Lansdowne Ave, Toronto, ON M6H 0E6"` | Street address |
| `rentals[].currency` | string | `"CAD"` | Currency code (USD or CAD). |
| `rentals[].photo_link` | string or null | `"https://img.zumpercdn.com/882548237/1280x960"` | First listing photo |
| `rentals[].square_feet` | string or null | `"481–1,001"` | Square feet or range |
| `rentals[].listing_link` | string or null | `"https://www.zumper.com/apartment-buildings/p1624543/the-diamond-davenport-toronto-on"` | Zumper listing page |
| `rentals[].monthly_rent` | string or null | `"$2,124–$3,809"` | Monthly rent or range as listed |
| `rentals[].pets_allowed` | string or null | `"Cats and dogs allowed"` | Pet policy where stated |
| `rentals[].available_date` | string or null |  | Available date (YYYY-MM-DD or Available now) |
| `rentals[].zumper_listing_id` | string or null | `"60865974"` | Zumper listing ID |
| `rentals[].lowest_monthly_rent` | number or null | `2124` | Lowest listed monthly rent |

**Example input**

```json
{
  "location": "Toronto, ON",
  "max_results": 5
}
```

**Example output**

```json
{
  "rentals": [
    {
      "beds": "1–3",
      "name": "The Diamond",
      "baths": "1–2",
      "address": "950 Lansdowne Ave, Toronto, ON M6H 0E6",
      "currency": "CAD",
      "photo_link": "https://img.zumpercdn.com/882548237/1280x960",
      "square_feet": "481–1,001",
      "listing_link": "https://www.zumper.com/apartment-buildings/p1624543/the-diamond-davenport-toronto-on",
      "monthly_rent": "$2,124–$3,809",
      "pets_allowed": "Cats and dogs allowed",
      "available_date": null,
      "zumper_listing_id": "60865974",
      "lowest_monthly_rent": 2124
    },
    {
      "beds": "Studio–2",
      "name": "Mirvish Village",
      "baths": "1–2",
      "address": "748 Bathurst St, Toronto, ON M5S 2R6",
      "currency": "CAD",
      "photo_link": "https://img.zumpercdn.com/917895854/1280x960",
      "square_feet": "376–1,005",
      "listing_link": "https://www.zumper.com/apartment-buildings/p1113084/mirvish-village-south-annex-toronto-on",
      "monthly_rent": "$2,030–$4,285",
      "pets_allowed": "Cats and dogs allowed",
      "available_date": null,
      "zumper_listing_id": "65223969",
      "lowest_monthly_rent": 2030
    },
    {
      "beds": "1–3",
      "name": "Bela Square",
      "baths": "1–3",
      "address": "100 Eastdale Ave, Toronto, ON M4C 0B6",
      "currency": "CAD",
      "photo_link": "https://img.zumpercdn.com/922924167/1280x960",
      "square_feet": "463–1,293",
      "listing_link": "https://www.zumper.com/apartment-buildings/p1258466/bela-square-crescent-town-toronto-on",
      "monthly_rent": "$2,025–$4,050",
      "pets_allowed": "Cats and dogs allowed",
      "available_date": null,
      "zumper_listing_id": "57956212",
      "lowest_monthly_rent": 2025
    }
  ]
}
```

## Quick start

Replace `YOUR_API_KEY` with a Fous API key. To create one, open Developers at the bottom of Fous Studio, turn on Developer mode, then go to API keys (https://app.fous.com/keys). Change the values in `input` to run the same tool on new data.

```bash
curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 180 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@zumper",
  "visibility": "public",
  "operation": "get_average_rents",
  "version": 1,
  "input": {
    "city": "Toronto, ON"
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
import json
import urllib.error
import urllib.request

api_key = "YOUR_API_KEY"

body = json.loads("{\n  \"api\": \"@zumper\",\n  \"visibility\": \"public\",\n  \"operation\": \"get_average_rents\",\n  \"version\": 1,\n  \"input\": {\n    \"city\": \"Toronto, ON\"\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=180) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
const apiKey = "YOUR_API_KEY";

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(180_000),
  body: JSON.stringify({
  "api": "@zumper",
  "visibility": "public",
  "operation": "get_average_rents",
  "version": 1,
  "input": {
    "city": "Toronto, ON"
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

## Use from an AI assistant

Connect this tool to Claude Code, Claude Desktop, Cursor, VS Code, Codex and any MCP client as its own MCP server. Each method is a typed tool whose arguments are the method’s input.

- Server URL: `https://api.fous.com/mcp/tools/zumper`
- Authorization: `Authorization: Bearer <Fous API key>`

**Tools**

- `get_average_rents`: Get average rents. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `search_rentals`: Search rentals. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `fous_get_run`: the result of a run that was still going, by its `request_id`. Free.

Claude Code:

```bash
claude mcp add --scope user --transport http fous-zumper https://api.fous.com/mcp/tools/zumper --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"
```

To give the assistant every tool, connect `https://api.fous.com/mcp`: it finds one with `fous_search_tools` and runs it with `fous_run_tool`. Setup for other clients: https://fous.com/llms-full.txt.

## Use cases

- Compare rental prices across neighborhoods.
- Find listings that fit a monthly rent budget.
- Filter rentals by bedrooms, pets, or property type.
- Track city median rents over time.
- Review median rents by home size.

## FAQ

### Can I run it with my own inputs?

Yes. Change the inputs in Studio and press Run, or send new inputs from your code, or ask a connected AI assistant.

### Can I call this Zumper tool as an API?

Yes. Send a POST request to /v1/query with your Fous API key and the inputs, and get JSON back.

### How much does it cost?

Each completed run costs 1 credit. Failed runs without a completed receipt are free; completed work can remain charged if delivery is interrupted. With pay as you go, a credit costs 1¢. Monthly plans cost less per credit.

### Do I need a Zumper account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from zumper.com when you run it. Some results are reused for up to 24 hours, and results that use your account or key are never reused. It was last verified on Sep 29, 2026.

### What rentals are available in a city or neighborhood?

Search rentals returns Zumper listings for a required location, with optional price, bedroom, pet, and property filters.

### What is the median rent in a city?

Get average rents returns median monthly rents for studios through three-bedroom homes for a specified city.

### How have city rents changed month over month or year over year?

Get average rents returns monthly and yearly percentage changes for city median rents by home size.

## Related

- [Zillow API](https://fous.com/tools/zillow.md): Zillow provides homes for sale, rental listings, home details, estimates, and housing market figures; rental details, history, schools, estimates, and market figures may be missing or reflect different reporting dates.
- [Apartments.com API](https://fous.com/tools/apartments-com.md): Apartments.com returns U.S. apartments and homes matching location and optional filters, plus community details; rent and availability may be missing or change.
- [Zoopla API](https://fous.com/tools/zoopla.md): UK homes for sale and to rent.
- [HUD API](https://fous.com/tools/hud.md): Official HUD housing research and Fair Market Rent data.
- [Homes.com API](https://fous.com/tools/homes-com.md): Search homes for sale in the United States.
- [Realtor.com API](https://fous.com/tools/realtor-com.md): Realtor.com returns home listings for sale, rent, or recently sold, property details and estimates, and local agent profiles; some fields or sold prices may be missing.
- [ZipRecruiter API](https://fous.com/tools/ziprecruiter.md): ZipRecruiter returns up to 100 public job listings per search and U.S. job-title pay ranges and top-paying cities where public salary pages exist.
- [Redfin API](https://fous.com/tools/redfin.md): Redfin provides publicly listed homes, details, estimates, and latest area market figures with up to 12 months of sale prices; some data may be unavailable.
- [All Real estate tools](https://fous.com/tools/category/real-estate)
