REW APIrew.ca ↗
Search rental and for-sale listings, get property details, browse neighbourhoods, and find real estate agents across Canada via the REW.ca API.
What is the REW API?
The REW.ca API covers 6 endpoints for accessing Canadian real estate data, including rental listings, for-sale properties, neighbourhood directories, and agent profiles. The search_rental_listings endpoint accepts filters like bedrooms, bathrooms, square footage, furnished status, and city area slug, returning paginated results with price, address, neighbourhood, and agent name per listing.
curl -X GET 'https://api.parse.bot/scraper/f86f34d8-ec8e-41a9-8207-b755a31cdc49/search_rental_listings?page=1&sort=latest&bedrooms=2&bathrooms=1&city_area=vancouver-bc' \ -H 'X-API-Key: $PARSE_API_KEY'
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 rew-ca-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.
"""
REW.ca Real Estate API - Usage Example
Get your API key from: https://parse.bot/settings
"""
from parse_apis.rew_ca_real_estate_api import REW, RentalSort, SaleSort, City, AgentSummary
rew = REW()
# Browse rental listings in Vancouver sorted by lowest price
vancouver = rew.city("vancouver-bc")
for listing in vancouver.rental_listings(sort=RentalSort.LOWEST_PRICE, bedrooms="2", limit=5):
print(listing.price, listing.address, listing.beds, listing.neighbourhood)
# Get full details for a listing
for sale in vancouver.sale_listings(sort=SaleSort.LATEST, max_price="1000000", limit=2):
print(sale.price, sale.address, sale.property_type, sale.sqft)
detail = sale.details()
print(detail.price, detail.address, detail.description)
for school in detail.nearby_schools:
print(school.name, school.distance)
# List neighbourhoods in the city
for hood in vancouver.neighbourhoods(limit=5):
print(hood.name, hood.slug)
# Search agents and get full profile
for agent_summary in vancouver.agents(last_name_initial="A", limit=2):
print(agent_summary.name, agent_summary.brokerage)
full_agent = agent_summary.details()
print(full_agent.name, full_agent.bio, full_agent.stats)
Search rental listings in a Canadian city/area. Supports filters for price range, bedrooms, bathrooms, square footage, pet-friendliness, furnished status, and in-suite laundry. Returns up to 20 listings per page, ordered by the chosen sort. Pagination via integer page counter; total_listings reports the full result count.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| sort | string | Sort order for results. |
| bedrooms | string | Number of bedrooms to filter by (e.g. '1', '2', '3', '4', '5'). |
| max_sqft | string | Maximum square footage. |
| min_sqft | string | Minimum square footage. |
| bathrooms | string | Number of bathrooms to filter by (e.g. '1', '2', '3', '4'). |
| city_area | string | City/area slug (e.g. 'vancouver-bc', 'toronto-on'). |
| furnished | string | Set to 'true' for furnished listings only. |
| max_price | string | Maximum monthly rent. |
| min_price | string | Minimum monthly rent. |
| pets_allowed | string | Set to 'true' for pet-friendly listings only. |
| property_type | string | Property type filter. Value is case-insensitive and will be lowercased before querying (e.g. 'house', 'condo', 'townhouse', 'duplex'). |
| in_suite_laundry | string | Set to 'true' for in-suite laundry listings only. |
{
"type": "object",
"fields": {
"page": "integer, current page number",
"listings": "array of rental listing objects with listing_id, url, price, address, neighbourhood, beds, baths, sqft, property_type, agent_name",
"total_listings": "integer, total number of matching listings"
},
"sample": {
"data": {
"page": 1,
"listings": [
{
"url": "https://www.rew.ca/rentals/7320880/boho-524-e-12th-avenue-vancouver-bc",
"beds": "0 bd",
"sqft": "350 sf",
"baths": "1 ba",
"price": "$1,950/month",
"address": "Boho - 524 E 12th Avenue",
"agent_name": "VIRANI REAL ESTATE ADVISORS",
"listing_id": "7320880",
"neighbourhood": "Mount Pleasant East",
"property_type": "House"
}
],
"total_listings": 500
},
"status": "success"
}
}About the REW API
Listing Search
Both search_rental_listings and search_for_sale_listings accept a city_area slug (e.g. vancouver-bc, toronto-on) along with filters for bedrooms, bathrooms, min_price/max_price, and property_type. Each paginated response (up to 20–21 results per page) returns an array of listing objects containing listing_id, url, price, address, neighbourhood, beds, baths, sqft, property_type, and agent_name, plus a total_listings count for building pagination logic.
Listing Detail
get_listing_detail accepts a full listing URL and returns a structured facts object with categorized property details (price details, home facts, agent details, listing details), the price and address strings, an optional description, and a nearby_schools array with each school's name, details, and distance. This endpoint works for both rental and for-sale listings.
Neighbourhoods and Agents
list_neighbourhoods_for_city returns the complete list of neighbourhoods for a given city_area slug, with each entry including name, url, and slug for use in downstream filtering or display. For agent discovery, search_agents supports filtering by city_area and last_name_initial, returning name, brokerage, url, experience, and recommendations per agent. get_agent_detail retrieves a full agent profile by URL, adding phone, bio, and a stats object covering experience, languages, awards, and recommendations.
The REW API is a managed, monitored endpoint for rew.ca — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when rew.ca 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 rew.ca 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.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Aggregate Canadian rental listings by city and bedroom count for a rental comparison tool.
- Build a neighbourhood-level property price tracker using for-sale listing data filtered by
city_areaandproperty_type. - Display nearby school information from
get_listing_detailalongside property listings in a family-focused search app. - Populate an agent directory with brokerage, experience, and recommendation data from
search_agentsandget_agent_detail. - Monitor total listing counts per city over time using
total_listingsfrom paginated search results. - Generate neighbourhood browsing pages using slugs and URLs returned by
list_neighbourhoods_for_city. - Filter furnished rentals in a specific Vancouver or Toronto area for corporate relocation tooling.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does REW.ca have an official developer API?+
What does `get_listing_detail` return beyond what the search endpoints include?+
facts object (price details, home facts, agent details, listing details), a description field when the listing includes one, and a nearby_schools array with school name, details string, and distance. The search endpoints only return summary fields like price, address, beds, baths, sqft, and agent name.Does the API cover sold/historical listing data or only active listings?+
Can I retrieve listings for a specific neighbourhood rather than an entire city?+
search_rental_listings and search_for_sale_listings endpoints currently accept a city_area slug as the geographic filter; neighbourhood-level search scoping is not a direct input parameter. list_neighbourhoods_for_city returns neighbourhood slugs and URLs, but passing a neighbourhood slug directly into a listing search is not supported by the current endpoints. You can fork the API on Parse and revise it to add neighbourhood-scoped listing search.How does pagination work across the search endpoints?+
page integer, a listings array (up to 20 results for rentals, up to 21 for for-sale), and a total_listings count. Pass the page string parameter to step through results. Divide total_listings by the per-page count to determine the number of pages available for a given query.