Discover/RentCafe API
live

RentCafe APIrentcafe.com

Search RentCafe apartment listings by US city and state. Get rent ranges, bedroom counts, amenities, coordinates, and pagination metadata via one endpoint.

Endpoint health
verified 2h ago
search_apartments
1/1 passing latest checkself-healing
Endpoints
1
Updated
2h ago

What is the RentCafe API?

The RentCafe API exposes one endpoint, search_apartments, that returns up to 25 rental property records per page for any US city and state pair. Each record includes rent range, per-bedroom-type starting rents, address with coordinates, amenity details, bedroom and bathroom counts, and pagination context fields like last_page, has_more, and total_rentals — giving you the full scope of a city's RentCafe inventory without manual browsing.

This call costs3 credits / call— charged only on success
Try it
US city name as written on the site, e.g. "San Francisco". Spaces and punctuation are normalized into the site's URL slug.
1-based page number of 25 properties each. Must not exceed `last_page` from a previous response.
Two-letter US state code of the city, e.g. CA. Case-insensitive.
Maximum monthly rent in USD. Omitted = no upper bound.
Minimum monthly rent in USD. Omitted = no lower bound.
api.parse.bot/scraper/87ab5697-5f71-4407-9736-7ed40d42ce09/<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/87ab5697-5f71-4407-9736-7ed40d42ce09/search_apartments?city=San+Francisco&state=CA' \
  -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 rentcafe-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: RentCafe apartment search — bounded, re-runnable."""
from parse_apis.rentcafe_com_api import RentCafe, LocationNotFound

client = RentCafe()

# Search apartments in San Francisco with a price ceiling; cap total items.
for apt in client.apartments.search(city="San Francisco", state="CA", max_price=3000, limit=5):
    print(apt.name, apt.price_display, apt.beds_display)
    for fp in apt.floorplan_bed_prices:
        print(f"  {fp.beds}: {fp.rent}")

# Drill into the first result of a different search to inspect details.
apt = client.apartments.search(city="Austin", state="TX", limit=1).first()
if apt is not None:
    print(apt.name, apt.address_formatted)
    print(f"  Rent: {apt.min_rent}–{apt.max_rent}")
    print(f"  Rating: {apt.star_rating} ({apt.reviews_count} reviews)")
    print(f"  Amenities: {', '.join(apt.amenities)}")
    print(f"  Details: {apt.details_url}")

# Handle an invalid city/state gracefully.
try:
    client.apartments.search(city="Notacity", state="ZZ", limit=1).first()
except LocationNotFound:
    print("No listings found for that location.")

print("exercised: apartments.search / LocationNotFound")
All endpoints · 1 totalmissing one? ·

Returns one page of apartment rental properties listed on RentCafe for a US city, in the site's default order. Each result is a property (building/community) record with its rent range, bedroom/bathroom range, per-bedroom-type starting rents, address and coordinates, amenities, availability label, ratings, and a link to the property's detail page. Pages hold 25 properties; pass `page` to move through them (omitted = first page). `total_rentals` is the site's own count of matching rentals, while `last_page` is the highest page the site lets you browse (observed at most 10 pages, i.e. the top 250 properties, for an unfiltered city search); `has_more` is true while page < last_page. A `page` beyond `last_page` returns an empty `results` array with `has_more` false, or the site's own error passed through. Optional `min_price` / `max_price` are forwarded to the site's monthly-rent filter and change both the result set and the per-property rent figures shown (rents outside the range are dropped from the property's display). A city/state combination the site has no search page for returns a stale_input (input_not_found) error. Fields `baths_display` and `area_display` can be null when the property does not publish them. One request per call.

Input
ParamTypeDescription
cityrequiredstringUS city name as written on the site, e.g. "San Francisco". Spaces and punctuation are normalized into the site's URL slug.
pageinteger1-based page number of 25 properties each. Must not exceed `last_page` from a previous response.
staterequiredstringTwo-letter US state code of the city, e.g. CA. Case-insensitive.
max_priceintegerMaximum monthly rent in USD. Omitted = no upper bound.
min_priceintegerMinimum monthly rent in USD. Omitted = no lower bound.
Response
{
  "type": "object",
  "fields": {
    "city": "city as passed by the caller",
    "page": "page number served",
    "state": "upper-cased state code as passed by the caller",
    "title": "the site's heading for this search, e.g. \"Apartments for Rent in San Francisco, CA\"",
    "results": "array of property records",
    "has_more": "true when a following page exists",
    "last_page": "highest page number the site offers for this search",
    "page_size": "properties per page (25)",
    "total_rentals": "site-reported count of rentals matching the search (can exceed what last_page * page_size can reach)",
    "results[].max_beds": "maximum bedrooms",
    "results[].max_rent": "highest monthly rent in USD (integer) among displayed floorplans",
    "results[].min_beds": "minimum bedrooms (0 = studio)",
    "results[].min_rent": "lowest monthly rent in USD (integer) among displayed floorplans",
    "results[].amenities": "array of amenity names",
    "results[].details_url": "URL of the property's detail page on the site",
    "results[].property_id": "RentCafe property identifier (string)",
    "results[].star_rating": "average review rating 0-5 (0.0 when unrated)",
    "results[].area_display": "square-footage range text, null when not published",
    "results[].last_updated": "relative last-update label from the site, e.g. \"Today\"",
    "results[].baths_display": "bathroom range text, null when not published",
    "results[].card_amenities": "array of highlight labels shown on the listing card",
    "results[].units_available": "availability label as shown on the card, e.g. \"3 Units available\"",
    "results[].floorplan_bed_prices": "array of {beds, rent} starting-rent labels per bedroom type; rent may read \"Ask for pricing\""
  },
  "sample": {
    "data": {
      "city": "San Francisco",
      "page": 1,
      "state": "CA",
      "title": "Apartments for Rent in San Francisco, CA",
      "results": [
        {
          "city": "San Francisco",
          "name": "The Cornelia Suites",
          "phone": "+1 (555) 012-3456",
          "state": "CA",
          "address": "641 O Farrell Street",
          "latitude": 37.7852,
          "max_beds": 2,
          "max_rent": 2125,
          "min_beds": 0,
          "min_rent": 1675,
          "zip_code": "94109",
          "amenities": [
            "Dishwasher",
            "Hardwood Floors",
            "Fireplace"
          ],
          "has_price": true,
          "image_url": "https://cdngeneral.rentcafe.com/dmslivecafe/2/92441/Photo-04.jpg",
          "longitude": -122.4155,
          "details_url": "https://www.rentcafe.com/apartments/ca/san-francisco/the-cornelia-suites/default.aspx",
          "has_3d_tour": false,
          "photo_count": 37,
          "property_id": "160561",
          "star_rating": 3.5,
          "area_display": "275 - 818 Sqft",
          "beds_display": "Studio-2 Beds",
          "company_name": "Landmark Realty",
          "last_updated": "Today",
          "baths_display": "1 Bath",
          "price_display": "$1,675 - $2,125",
          "reviews_count": 2,
          "card_amenities": [
            "Apply online",
            "Pet friendly",
            "In unit laundry"
          ],
          "units_available": "Available",
          "address_formatted": "641 O Farrell Street, San Francisco, CA 94109",
          "has_online_leasing": true,
          "specials_available": false,
          "is_premium_featured": true,
          "floorplan_bed_prices": [
            {
              "beds": "Studio",
              "rent": "$1,675"
            }
          ]
        }
      ],
      "has_more": true,
      "last_page": 10,
      "page_size": 25,
      "total_rentals": 1373
    },
    "status": "success"
  }
}

About the RentCafe API

What the API Returns

The search_apartments endpoint accepts a required city string and two-letter state code, then returns a paginated list of apartment communities listed on RentCafe. The top-level response carries metadata: title (the site's heading for the search, e.g. "Apartments for Rent in San Francisco, CA"), total_rentals (the site-reported match count), last_page, has_more, and page_size (fixed at 25). Each entry in the results array is a full property record with fields including max_beds, rent range boundaries, per-bedroom-type starting rents, street address, geographic coordinates, and amenity tags.

Filtering and Pagination

Optional min_price and max_price integer parameters (monthly USD) narrow results to properties whose rent range falls within the specified bounds. Pagination is 1-based via the page parameter; you should not request a page number beyond last_page from a prior response. Note that total_rentals can exceed what last_page * page_size can reach — this reflects a cap the source places on browsable results rather than a data error.

Coverage and Scope

Coverage is limited to US cities that have listings on RentCafe. City names should be passed as they appear on the site (spaces and punctuation are normalized internally). The state code is case-insensitive and is returned upper-cased in the response. There is no sub-city filtering (neighborhood, ZIP code) in the current parameter set; filtering is by price range only.

Reliability & maintenanceVerified

The RentCafe API is a managed, monitored endpoint for rentcafe.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when rentcafe.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 rentcafe.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 city-level rent index by collecting total_rentals and rent range fields across multiple US metros.
  • Track per-bedroom-type starting rents over time for affordability research or rental market dashboards.
  • Aggregate property coordinates from results to plot apartment density maps for a given city.
  • Filter listings with min_price and max_price to surface inventory within a specific budget tier.
  • Feed property records including amenity tags into a recommendation engine for apartment seekers.
  • Monitor total_rentals changes week-over-week to detect shifts in rental supply in a target city.
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 RentCafe have an official developer API?+
RentCafe does not publish a public developer API or documentation for third-party data access. This Parse API provides structured access to the same listing data available on the site.
What does a single `search_apartments` result record include?+
Each record in the results array covers a full property community: rent range (min and max), per-bedroom-type starting rents, max_beds, bathroom range, street address, geographic coordinates, and amenity tags. The top-level response also returns total_rentals, last_page, has_more, and the page's title string.
Why does `total_rentals` sometimes exceed what all pages contain?+
RentCafe caps the number of browsable result pages regardless of how many total matches exist. last_page reflects that cap. total_rentals is the raw count the site reports for the query and can be higher than last_page * 25. Treat total_rentals as a market-size signal rather than a precise count of retrievable records.
Can I filter results by neighborhood, ZIP code, or property type?+
Not currently. The API filters by city, state, and optional monthly rent bounds (min_price, max_price). Sub-city geographic filters and property-type filters are not exposed. You can fork this API on Parse and revise it to add those parameters if the underlying data supports them for your target cities.
Does the API return individual unit listings or availability calendars?+
The API returns property-level records (apartment communities), not individual unit listings or real-time availability data. Rent figures are ranges or per-bedroom-type starting prices rather than unit-by-unit breakdowns. You can fork the API on Parse and revise it to add an individual property detail endpoint if that granularity is needed.
Page content last updated . Spec covers 1 endpoint from rentcafe.com.
Related APIs in Real EstateSee all →
rent.com API
Browse and extract rental property data from Rent.com. Search listings by location and filter by beds, baths, price, and pet policy. Retrieve full property details, floor plans, unit availability, amenities, nearby schools, points of interest, and active specials.
apartments.com API
Search thousands of apartment listings, view detailed property information including amenities and pricing, and discover properties managed by specific companies all in one place. Find your ideal rental by filtering through available apartments and learning more about the management companies behind them.
rentals.ca API
Search and browse rental listings across Canada by city or neighbourhood, and view detailed property information including prices, amenities, and availability. Find your next home by filtering thousands of rental properties on Rentals.ca in real-time.
streeteasy.com API
Search and browse NYC apartment rentals to find detailed property information including photos, amenities, pricing, and direct contact details for brokers and agents. Filter through available listings and access comprehensive rental data to help you discover your next home in New York City.
Craigslist Apartments API
Search and filter Craigslist apartment listings by neighborhood, bedroom count, price range, and image availability. Retrieve detailed listing information including full descriptions, contact details, photos, and location data.
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.
Pararius.nl API
Search and browse rental properties across the Netherlands from Pararius.nl, with filtering by city and detailed property information including pricing, location, and amenities. Access paginated listings to easily discover available rentals that match your needs.
onthemarket.com API
Search for rental homes on OnTheMarket.com by location, price, bedrooms, property type, and keywords to find your next place to live. Filter results across thousands of available rentals to narrow down properties that match your specific needs and budget.