# Centris Property Search

Searches Quebec residential listings. transaction_type accepts for_sale (default) and for_rent. Scope the search with location_id and location_type from the locations route, which always travel as a pair. Every page holds up to 20 listings. count is the true total for the scope, and reachable_count is the part you can page through, at most 5000 listings. page above 250 is refused with 422. The origin sometimes places a sale listing inside rent results, and a sale-or-rent listing shows its sale price. Those cards are removed, and filtered_out reports how many. Text values such as categories and feature names are in French.

- **Documentation:** [https://scrappa.co/docs/centris-api/centris_search](https://scrappa.co/docs/centris-api/centris_search)
- **API group:** Centris API
- **Endpoint:** `GET https://scrappa.co/api/centris/search`

## Authentication

Send your Scrappa API key in the `X-API-KEY` request header. Paid endpoints also support accountless x402 payments when called without an API key.

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `transaction_type` | string | No | for_sale (default) or for_rent. |
| `location_id` | string | No | The id of a location from the locations route. Send it with location_type. |
| `location_type` | string | No | The type of that location: CityDistrictAll, CityDistrict, CityDistrictNeighbourhoodSearch, GeographicArea, GeographicSubArea or PostalCodeSearch. |
| `property_type` | string | No | condo, single_family or plex. |
| `building_type` | string | No | detached, semi_detached or attached. |
| `min_price` | integer | No | Minimum price in CAD. For for_rent this is the monthly rent. |
| `max_price` | integer | No | Maximum price in CAD. For for_rent this is the monthly rent. |
| `bedrooms` | integer | No | Minimum number of bedrooms, 1 to 9. |
| `bathrooms` | integer | No | Minimum number of bathrooms and powder rooms, 1 to 9. |
| `parking` | integer | No | Minimum number of parking spaces, 1 to 9. |
| `garage` | integer | No | Minimum number of garage spaces, 1 to 9. |
| `pool` | boolean | No | Only listings with a pool. |
| `broker_id` | string | No | Only listings of one broker. Use the broker_id from the broker autocomplete route. |
| `sort` | string | No | price_asc, price_desc, newest or oldest. Without it the origin default order applies. |
| `page` | integer | No | Page number, 1 to 250. A page past the end of the scope returns no listings. |

## Example request

```bash
#!/bin/bash

curl -X GET \
    -H "x-api-key: YOUR_API_KEY_HERE" \
    "https://scrappa.co/api/centris/search?transaction_type=for_sale&location_id=5&location_type=CityDistrictAll&bedrooms=2&max_price=600000&sort=price_asc"
```

## Example response

```json
{
    "success": true,
    "data": {
        "listings": [
            {
                "mls": "27894956",
                "title": "Maison \u00e0 vendre \u00e0 Montr\u00e9al (Pierrefonds-Roxboro), 9486, boulevard Gouin Ouest",
                "category": "Maison \u00e0 vendre",
                "transaction_type": "for_sale",
                "price": 649000,
                "currency": "CAD",
                "address": "9486, boulevard Gouin Ouest",
                "city": "Montr\u00e9al (Pierrefonds-Roxboro)",
                "latitude": 45.48204,
                "longitude": -73.862114,
                "bedrooms": 5,
                "bathrooms": 3,
                "photo_count": 49,
                "url": "https://www.centris.ca/fr/maison~a-vendre~montreal-pierrefonds-roxboro/27894956"
            }
        ],
        "count": 9790,
        "reachable_count": 5000,
        "page": 1,
        "page_size": 20,
        "total_pages": 250,
        "next_page": 2,
        "filtered_out": 0
    }
}
```

## Errors

| Status | Error | Description |
| --- | --- | --- |
| 404 | Not Found | The listing number or broker code does not exist. This response is not billable and not retryable. |
| 422 | Validation Error | A public parameter is invalid, for example a page above 250, an unknown property type or a location_id without its location_type. This response is not billable. |
| 503 | Service Unavailable | The data could not be loaded right now. Retry the request. This response is not billable. |

## More Scrappa resources

- [API documentation](https://scrappa.co/docs)
- [Full LLM-readable API reference](https://scrappa.co/llms-full.txt)
- [OpenAPI specification](https://scrappa.co/docs/api.json)
- [Pricing](https://scrappa.co/pricing)
