Skip to content
    ↑↓ to choose · Enter to open

    · 12 min read

    Zumper Scraper: 30 Data Fields, Up to 1,000 Free Results/Month (2026)

    By CrawlerBros Engineering Team

    This high-fidelity data collector extracts up to 30 output fields directly from public rental listings in the US and Canada, including exact rent ranges, unit layouts, building amenities, geo-coordinates, and advertiser contact info. Every record contains critical pricing structures like the minimum and maximum rent alongside property types, pet policies, and high-resolution image URLs. At the free-plan price of $5.00 per 1,000 results, you can build live feeds of rental markets without managing proxies or sessions. This is designed for real estate analysts, proptech developers, and relocation platforms; it is not for users who need historical lease transactions or offline historical sales registries, which Zumper does not publish.

    Try it: open Zumper Scraper on Apify, sign in on the free plan and run the prefilled example.

    Can you try Zumper Scraper before paying?

    Yes. Apify's free plan includes $5.00 of prepaid usage every month and asks for no credit card. At $0.005 per result, that covers up to 1,000 results of Zumper Scraper a month, before run-start charges and platform usage.

    The example request further down caps maxItems at 20, so a first run returns at most 20 results and costs at most $0.10 in result charges. That is enough to see the real shape of the data before deciding anything.

    Zumper Scraper was last updated on 2026-09-10. It is one of 1,724 Actors CrawlerBros publishes on Apify, which together have 728,503 lifetime public runs and an average rating of 4.63 out of 5 across 416 reviews.

    What does it cost to run Zumper Scraper?

    Each result costs $0.005 on Apify's free plan, which is $5.00 per 1,000 results. Starting a run is charged separately at $0.005 per GB of Actor memory. Apify also bills the platform usage each run consumes, at the rates of your Apify plan, on top of these charges.

    Apify plan Per result Per 1,000 results
    FREE $0.005 $5.00
    BRONZE $0.00433 $4.33
    SILVER $0.00367 $3.67
    GOLD $0.003 $3.00
    PLATINUM $0.003 $3.00
    DIAMOND $0.003 $3.00

    Your biggest cost driver is the maxItems setting, which directly limits the total results written to the dataset. To keep your initial testing cost down to at most $0.10 in result charges, leave the example input capped at 20 items. This allows you to verify the structure of your target city's listings before increasing the volume and running larger sweeps.

    How do you run Zumper Scraper from the API?

    The schema marks 1 of its 6 controls as required: mode. Nothing in the payload below is illustrative. Those are the schema's prefilled defaults for Zumper Scraper, so the request works once your token is in place.

    Call the synchronous endpoint to start a run and receive dataset items in one request:

    curl -X POST "https://api.apify.com/v2/acts/crawlerbros~zumper-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{"mode":"searchRentals","city":"San Francisco","state":"CA","listingUrls":[],"maxItems":20}'
    

    The same run from Python, using the official client:

    from apify_client import ApifyClient
    
    client = ApifyClient("<YOUR_APIFY_TOKEN>")
    
    run_input = {
      "mode": "searchRentals",
      "city": "San Francisco",
      "state": "CA",
      "listingUrls": [],
      "maxItems": 20
    }
    
    run = client.actor("crawlerbros~zumper-scraper").call(run_input=run_input)
    
    for item in client.dataset(run["defaultDatasetId"]).iterate_items():
        print(item)
    

    And from Node.js:

    import { ApifyClient } from 'apify-client'
    
    const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' })
    
    const input = {
      "mode": "searchRentals",
      "city": "San Francisco",
      "state": "CA",
      "listingUrls": [],
      "maxItems": 20
    }
    
    const run = await client.actor('crawlerbros~zumper-scraper').call(input)
    const { items } = await client.dataset(run.defaultDatasetId).listItems()
    console.log(items)
    

    Because the call is synchronous, your client waits for the whole run. Keep it for exploration. For scheduled work, start the run without waiting and collect the dataset afterwards, so network trouble costs you a retry rather than the results.

    Which Zumper Scraper inputs matter, and which can you skip?

    The mode parameter dictates the scraping behavior, letting you choose between searching by geographic region or extracting deep metadata from specific URLs. Most users should set this to searchRentals alongside a defined city and state, leaving the listingUrls array entirely empty for search-based runs.

    • mode (string): What to scrape. Default: "searchRentals".
    • city (string): City name (e.g. San Francisco, New York, Chicago). Used in searchRentals and searchByCity modes. Default: "San Francisco".
    • state (string): US/Canada state or province code (e.g. CA, NY, TX, ON). Used in searchRentals mode. Default: "CA".
    • bedrooms (integer): Number of bedrooms filter. 0 = studio.
    • listingUrls (array): List of Zumper listing URLs for detail scraping. Default: [].
    • maxItems (integer): Maximum number of listings to return. Default: 20.

    Fixed-choice controls: mode accepts searchRentals (Search rentals by city & state), listingDetails (Listing details by URL), searchByCity (Search by city name (auto-format URL)); state accepts 60 values (default CA), including CA (California), AL (Alabama), AK (Alaska), AZ (Arizona).

    What does Zumper Scraper return?

    The resulting dataset provides detailed inventory summaries, including coordinate boundaries, price spreads, and available amenities. It conspicuously lacks historical transaction archives, past tenant reviews, and internal platform communication logs.

    • listingId - Zumper listing ID
    • name - building or listing name
    • address - street address
    • city, state, zipCode
    • neighborhood
    • minPrice, maxPrice - monthly rent range; equal values mean a single fixed rent
    • minBedrooms, maxBedrooms - bedroom range across available units
    • minBathrooms, maxBathrooms - bathroom range
    • squareFeet - unit size (mode=listingDetails)
    • propertyType - e.g. apartment, condo, house
    • leaseType - long-term, short-term, or similar
    • petsAllowed - pet policy as advertised
    • amenities - in-unit amenities
    • buildingAmenities - shared building amenities
    • rating - Zumper rating, where one exists
    • phone, agentName, brokerageName - listing contact
    • latitude, longitude
    • imageUrl - primary listing photo
    • listingUrl - listing page on Zumper
    • searchCity, searchState - the search that produced the record
    • scrapedAt

    These are the documented fields. Optional ones can be empty on a given record, so measure how often each field your deliverable depends on is populated across a real sample before automating the handoff.

    How do you build the workflow end to end?

    Open Zumper Scraper and work through these in order. Each step ends with something to check, so a bad configuration surfaces on a small run rather than a scheduled one.

    1. Select the mode control and set it to searchRentals for a standard location-based run.
    2. Type the target city name into the city text field and select the matching two-letter US or Canada code in the state dropdown.
    3. Set the maxItems limit to 20 for an initial test run to keep costs under $0.10 in result charges.
    4. Run the Actor and open the default dataset once the status changes to succeeded.
    5. Verify that the minPrice and maxPrice fields contain expected numeric values for the chosen metropolitan market.
    6. Switch the mode to listingDetails and copy several listingUrl values into the listingUrls array to test deep detail retrieval.
    7. Run the Actor again to check that detailed fields like squareFeet and buildingAmenities populate correctly in the final output.

    How do you apply it? Three worked playbooks

    These are Zumper Scraper's own documented use cases, each worked through as an operating pattern rather than a description.

    Use case 1: Rental market analysis

    Outcome: Track asking rents by city, neighbourhood, and bedroom count

    Configure: Set mode to "searchRentals", city to "Chicago", state to "IL", and maxItems to 500.

    Working method: Execute the scraper for your target city, export the dataset as a CSV, and group the records by neighborhood. Calculate the median of minPrice and maxPrice for each distinct neighborhood, then segment these averages by the minBedrooms value to establish a baseline of rental costs per square foot.

    Deliverable: A structured CSV spreadsheet containing rental price distributions, bedroom ranges, and neighborhood tags for Chicago.

    Stop condition: The returned dataset contains fewer than 10 listings for a major metropolitan neighborhood.

    Use case 2: Relocation and HR tools

    Outcome: Surface available units within a budget near a workplace

    Configure: Set mode to "searchByCity", city to "Vancouver", state to "BC", bedrooms to 1, and maxItems to 200.

    Working method: Run the query for the destination city with the required bedroom count. Filter the resulting dataset programmatically to keep only listings where maxPrice is below your candidate's budget limit, then calculate the distance between the latitude and longitude coordinates of each listing and the office address.

    Deliverable: A JSON feed of qualified one-bedroom listings in Vancouver with exact geo-coordinates, prices, and direct listingUrl links.

    Stop condition: The latitude and longitude fields are missing from more than 15% of the retrieved listings.

    Use case 3: Property investment

    Outcome: Benchmark comparable rents before acquiring a building

    Configure: Set mode to "listingDetails" and populate the listingUrls array with specific competitor listing URLs from the target neighborhood.

    Working method: Compile a list of active Zumper URLs representing buildings immediately adjacent to your target acquisition. Run the scraper in listingDetails mode to extract deep listing records, then compare their squareFeet, amenities, and buildingAmenities fields against your underwriting model.

    Deliverable: A comparative analysis table mapping specific property URLs to their exact rent ranges, square footage, and pet policies.

    Stop condition: The squareFeet field returns empty or null for more than half of the targeted competitor URLs.

    What breaks, and how do you design around it?

    When querying massive cities that exceed the maximum item limit, split your requests by bedroom count using the bedrooms parameter. This lets you bypass the 1,000-listing limit by running separate, smaller queries for studios, one-beds, and two-beds to capture the full market.

    When should you not use Zumper Scraper?

    Do not use this Actor if you are focusing exclusively on the German market, where Immowelt Scraper or WG-Gesucht Flatshare & Room Listings Scraper will provide localized coverage. If you are specifically tracking mid-term furnished rentals across corporate markets, Furnished Finder Scraper is a more specialized fit. For comprehensive coverage across all of Quebec's official real estate brokerage listings rather than consumer classifieds, you should use Centris Real Estate Scraper. Finally, if you require a wider distribution of US listings that includes detailed multi-family apartment community floorplans, choose Apartments.com Scraper instead.

    What should you check before trusting the output?

    • Confirm that minPrice is not null and is greater than zero on all returned records.
    • Check that latitude and longitude are both populated with valid decimal values before feeding coordinates to mapping tools.
    • Verify that the city and state fields match your input parameters to ensure the auto-slug resolver did not default to an incorrect market.
    • Monitor the presence of the phone and agentName fields, and trigger an alert if contact detail extraction drops below your expected baseline ratio.
    • Stop scheduled runs immediately if the dataset returns zero items when querying a high-density area, which indicates a layout change on the portal.

    None of this proves a record is correct. It gives a scheduled Zumper Scraper run defined points where it should stop instead of quietly passing bad data downstream.

    Frequently asked questions

    How much does it cost to extract 10,000 Zumper listings?

    Extracting 10,000 results costs $50.00 in result charges on the free plan, based on the free-plan price of $5.00 per 1,000 results. Paid Apify plans reduce this rate further. You will also be billed for the standard platform usage consumed by the Actor runs, which varies based on memory and run time.

    Can I try this scraper without entering a credit card?

    Yes. Apify's free plan includes $5.00 of monthly usage with no credit card required. This monthly credit completely covers up to 1,000 results of this Actor, allowing you to run several test sweeps at zero cost.

    Why are some contact fields like phone and agentName empty?

    The Actor omits empty fields when they are not present on the live site. Private landlords frequently choose to receive inquiries through Zumper's internal messaging portal rather than publishing a public phone number or brokerage name.

    What is the difference between searchRentals and searchByCity?

    The searchRentals mode requires both the city name and a two-letter state or province code to target a precise market. The searchByCity mode is more flexible, resolving the city name automatically and generating the appropriate location slug on Zumper without needing the exact state code up front.

    Does this scraper support Canadian provinces?

    Yes. The state input dropdown includes Canadian province codes like ON, BC, QC, and SK. You can search cities like Toronto or Vancouver by pairing the city name with the correct province code in searchRentals mode.

    Where to go next

    When you are ready to run it, open Zumper Scraper on Apify; the free plan covers up to 1,000 results a month.

    Start with the Zumper Scraper Actor page for the current input schema, pricing tier, and run history.

    Other Actors we maintain for related data:

    Related guides:

    Resources

    • Actor documentation, input schema, and pricing: verified against the published Actor on 2026-10-04.

    • Actor last updated by its maintainers on 2026-09-10.

    • Run outcome figures cover the 30 day public window ending 2026-10-04.

    • Zumper Scraper on Apify

    Featured actors

    Zumper Scraper

    Scrape Zumper - US and Canada's leading rental platform. Search apartments, rooms, houses, condos, and townhomes by city and state. Get price, address, bedrooms, bathrooms, amenities, pet policy, floor size, and more.

    Run on Apify ↗