Zumper Scraper — US Apartments & Houses for Rent avatar

Zumper Scraper — US Apartments & Houses for Rent

Pricing

from $4.00 / 1,000 listing scrapeds

Go to Apify Store
Zumper Scraper — US Apartments & Houses for Rent

Zumper Scraper — US Apartments & Houses for Rent

Scrape Zumper rental listings by US city, Zumper search URL or area, with rent range, beds, baths, square feet, address, geo, building name, images and listing URL. Map tiling pages past Zumper's 200-per-view cap, with no login.

Pricing

from $4.00 / 1,000 listing scrapeds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 days ago

Last modified

Share

What is Zumper Scraper — Apartments & Houses for Rent Data?

Zumper Scraper is an Apify Actor for rental-market workflows that accepts a US city, a Zumper search URL, or both. It returns one record per rental listing, where each record represents a building or property and includes the fields Zumper publishes for that listing, such as rent range, bedrooms, bathrooms, square footage, address, geo-coordinates, building name, image metadata, and the property URL. The dataset is suited for spreadsheet review, market analysis, lead building, and Apify MCP usage.

Best fit and connected workflows

This Actor fits workflows that start with a Zumper city page and end with structured rental data.

Common routing patterns include:

  • city-level inventory pulls for a single US market
  • batch scraping from multiple Zumper search URLs
  • rent-band review using the price filters
  • bed-count targeting for apartment and house searches
  • downstream enrichment or analysis using the propertyUrl, coordinates, and stable IDs

Zumper Scraper — Apartments & Houses for Rent Data is designed as a focused workflow.

Practical scenario

A relocation specialist is reviewing Austin rental inventory for a client who wants 1-2 bedroom homes and apartments in a monthly rent band. They start with location: "Austin, TX" and set minBedrooms, maxBedrooms, minPrice, and maxPrice. The returned dataset includes buildingName, address, minPrice, maxPrice, minBedrooms, maxBedrooms, latitude, longitude, and propertyUrl. The specialist sorts the results by price and distance, then opens selected propertyUrl entries to review listing detail pages and share options with the client.

Input fields

FieldTypePurpose
locationstringUS city in "City, ST" or "City, State" form, or a Zumper city slug such as austin-tx.
startUrlsarrayOne or more Zumper search URLs. Each resolves to a city and can be combined with location for batching.
maxResultsintegerMaximum number of listings across all locations. Used as a cost cap.
minPriceintegerKeep listings whose rent range reaches at least this monthly amount in USD.
maxPriceintegerKeep listings whose rent range starts at or below this monthly amount in USD.
minBedroomsintegerKeep listings with at least this many bedrooms. Studios count as 0.
maxBedroomsintegerKeep listings with at most this many bedrooms.
proxyConfigurationobjectProxy settings for the run. The input schema pre-fills Apify Proxy with the US Residential group.

Focused JSON example

{
"location": "Austin, TX",
"maxResults": 500,
"minPrice": 1200,
"maxPrice": 3000,
"minBedrooms": 1,
"maxBedrooms": 2
}

Output fields

Each dataset record represents one scraped rental listing.

FieldTypeMeaning
listingIdinteger or nullListing identifier from Zumper.
buildingIdinteger or nullBuilding identifier from Zumper.
buildingNamestring or nullProperty or building name.
addressstring or nullStreet address.
citystring or nullCity name.
statestring or nullState abbreviation or name.
zipcodestring or nullZIP code.
neighborhoodstring or nullNeighborhood name when available.
latitudenumber or nullListing latitude.
longitudenumber or nullListing longitude.
minPriceinteger or nullMinimum rent in USD.
maxPriceinteger or nullMaximum rent in USD.
minBedroomsinteger or nullMinimum bedrooms across published floorplans.
maxBedroomsinteger or nullMaximum bedrooms across published floorplans.
minBathroomsnumber or nullMinimum bathrooms across published floorplans.
maxBathroomsnumber or nullMaximum bathrooms across published floorplans.
minSquareFeetinteger or nullMinimum square feet across published floorplans.
maxSquareFeetinteger or nullMaximum square feet across published floorplans.
floorplanCountinteger or nullNumber of distinct floorplans.
isHouseboolean or nullWhether the listing represents a house.
hasFeesboolean or nullWhether Zumper flags fees.
isMessageableboolean or nullWhether the listing is messageable.
feedNamestring or nullSource feed name.
imageCountinteger or nullNumber of images.
imageIdsarray or nullRaw image IDs.
featureCodesarray or nullAmenity or feature codes.
listedAtstring or nullListing timestamp.
modifiedAtstring or nullLast modified timestamp.
propertyUrlstring or nullAbsolute Zumper property URL.
citySlugstring or nullResolved Zumper city slug.

Illustrative JSON record

{
"listingId": 123456789,
"buildingId": 987654321,
"buildingName": "Camden Example",
"address": "123 Example St",
"city": "Austin",
"state": "TX",
"zipcode": "78701",
"neighborhood": "Downtown",
"latitude": 30.2711,
"longitude": -97.7437,
"minPrice": 1800,
"maxPrice": 2600,
"minBedrooms": 1,
"maxBedrooms": 2,
"minBathrooms": 1,
"maxBathrooms": 2,
"minSquareFeet": 700,
"maxSquareFeet": 1100,
"floorplanCount": 4,
"isHouse": false,
"hasFees": true,
"isMessageable": true,
"feedName": "zumper",
"imageCount": 12,
"imageIds": [111, 222, 333],
"featureCodes": ["pool", "gym"],
"listedAt": "2026-01-01T12:00:00Z",
"modifiedAt": "2026-01-03T15:30:00Z",
"propertyUrl": "https://www.zumper.com/apartments-for-rent/example",
"citySlug": "austin-tx"
}

How it works

The Actor resolves each provided city or Zumper search URL into a city slug and GeoJSON bounds. It then queries Zumper's internal maplist/pins API over HTTP. When a box contains more than 200 listings, the Actor splits the area into smaller tiles and continues recursively, which lets it move past Zumper's 200-per-view cap. Listings are deduplicated by ID, filtered client-side by price and bedroom criteria, and pushed to the dataset until maxResults is reached.

Pricing

This Actor uses Apify Pay per event pricing with Apify platform usage included. The charged events in the live contract are:

  • Actor start
  • Listing scraped

The Listing scraped event is charged per rental listing returned in the dataset. A 200-listing run means 200 listing events plus one Actor start event. For the latest live pricing details, open the Pricing tab on the Actor page.

Use with AI agents (MCP)

Zumper Scraper is an Apify Actor usable through Apify MCP. The MCP tool call takes a compact input and returns structured rental listings that agents can read field by field.

Exact Actor identity: khadinakbar/zumper-scraper

Tool description: scrape Zumper rentals from a US city or Zumper search URL and return one structured record per listing with rent, beds, baths, square feet, address, coordinates, and listing URL.

Find rental listings for Austin, TX from Zumper. Return buildings, rent ranges, bed and bath ranges, coordinates, and property URLs. Limit the run to 300 listings and keep the results in JSON so I can rank them by price and neighborhood.

Output interpretation:

  • read each dataset item as one rental listing record
  • use buildingName, address, city, and state for display
  • use minPrice and maxPrice to understand the published rent range
  • use minBedrooms, maxBedrooms, minBathrooms, and maxBathrooms to compare unit mix
  • use propertyUrl as the source listing link
  • use listingId, buildingId, and citySlug for stable joins

Provenance and scope:

  • records come from Zumper listing pages and map data exposed through the Actor
  • the Actor is focused on US rental listings
  • pagination is handled automatically through map tiling when the city view exceeds the 200-per-view cap
  • maxResults acts as the run-level cost cap

Cost guidance:

  • MCP calls follow the same pay-per-event model as regular runs
  • raising maxResults allows deeper coverage while keeping billing capped at that value

Apify API example

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({
token: process.env.APIFY_TOKEN,
});
const run = await client.actor('khadinakbar/zumper-scraper').call({
location: 'Austin, TX',
maxResults: 300,
minBedrooms: 1,
});
console.log('Dataset ID:', run.defaultDatasetId);
const dataset = client.dataset(run.defaultDatasetId);
const items = await dataset.listItems();
for (const item of items.items) {
console.log(item.buildingName, item.minPrice, item.maxPrice, item.propertyUrl);
}

Set APIFY_TOKEN in your environment before running the example.

Best results and outcome guidance

Use a city-level location when you want one market, and use startUrls when you want to batch multiple Zumper search pages in one run. Set maxResults to the coverage level you want for the run, then add price and bedroom filters when you already know the target segment. Review propertyUrl for listing detail pages and use latitude and longitude when you need map-based analysis or distance sorting.

Continue the workflow

Design note

I found that the live dataset contract exposes isMessageable and feedName alongside the core rent and location fields, which makes it practical to preserve source and contact-related context in downstream workflows.

FAQ

Can I start from a city name or a Zumper search page?
Yes. The Actor accepts location, startUrls, or both.

What kind of record does each dataset row represent?
Each row represents one rental listing, which is the building or property level object returned by Zumper.

How can I work across several cities in one run?
Add multiple Zumper search URLs in startUrls. The Actor merges them with location when both are supplied.

How do I focus on a price band or bedroom count?
Use minPrice, maxPrice, minBedrooms, and maxBedrooms to filter the returned listings.

What should I use for the next review step?
Use propertyUrl for the listing detail page and listingId or buildingId for stable joins in your own systems.

Responsible use

Use this Actor for lawful rental-market, research, and automation workflows. Respect Zumper's terms, the data source's access rules, and applicable privacy and platform policies. Keep downstream usage aligned with the public listing data returned by the Actor and with the scope you set in your inputs.