# Ciencuadras Search API Documentation

<p><strong>Ciencuadras Search API</strong> lists Colombian property for sale or rent. Filter by place, type, bedrooms, bathrooms, garages, stratum, price and area, then sort and page through the results. Every item satisfies the filters you sent; items that break a filter are never returned and are counted in <code>excluded_by_filters</code>. <code>bedrooms=4</code> means exactly 4. The area filter matches the built or the private area. Place filters take the slugs from the autocomplete route; an unknown place returns an empty list. A search reaches its first 10,000 results (<code>results_capped</code> tells you); a page past that is rejected with a validation error and no other page is ever returned under the requested number. Prices are in COP. Some listings carry a placeholder price: they are kept and marked <code>price_is_placeholder</code>. Items in <code>highlights</code> are paid placements. Failed requests are not billed.</p>

- **Documentation:** [https://scrappa.co/docs/ciencuadras-api/ciencuadras_search](https://scrappa.co/docs/ciencuadras-api/ciencuadras_search)
- **API group:** Ciencuadras API
- **Endpoint:** `GET https://scrappa.co/api/ciencuadras/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` | string | Yes | sale or rent. |
| `department` | string | No | Department slug from the autocomplete route, for example antioquia. |
| `city` | string | No | City slug from the autocomplete route, for example medellin. |
| `locality` | string | No | Locality slug from the autocomplete route, for example chapinero. |
| `neighborhood` | string | No | Neighborhood slug from the autocomplete route, for example el-contador. |
| `property_type` | array | No | Property types such as apartamento, casa, lote, oficina, bodega or apartaestudio. Repeat the parameter or send a comma list. A type also matches its variants, so casa includes casa campestre. |
| `bedrooms` | array | No | Exact bedroom counts, 1 or more, for example 3 or 2,3. The value 4 means exactly 4, not 4 or more. |
| `bathrooms` | array | No | Exact bathroom counts, 1 or more. Repeat the parameter or send a comma list. |
| `garages` | array | No | Exact garage counts, 1 or more. Repeat the parameter or send a comma list. |
| `stratum` | array | No | Socioeconomic strata from 1 to 6. Repeat the parameter or send a comma list. |
| `min_price` | integer | No | Minimum price in COP. For rent this is the monthly rent. |
| `max_price` | integer | No | Maximum price in COP. Must be at least min_price. |
| `min_area` | number | No | Minimum area in square metres. An item matches when its built area or its private area is in range. |
| `max_area` | number | No | Maximum area in square metres. Must be at least min_area. |
| `project` | boolean | No | true to list new-build housing projects only. |
| `include_map` | boolean | No | true to add map_points: locations of all results of the search, not only this page. |
| `sort` | string | No | date, area or price. |
| `order` | string | No | asc or desc. Default desc. |
| `page` | integer | No | One-based page number. A search reaches its first 10,000 results; a page past that returns a validation error. |
| `per_page` | integer | No | Listings per page, 1 to 100. Default 20. |

## Example response

```json
{
    "data": {
        "items": [
            {
                "id": 3912262,
                "url": "/inmueble/apartamento-en-arriendo-en-san-german-medellin-3912262",
                "code": "880263-1379164",
                "image": "https://www-img-cc.s3.amazonaws.com/inmuebles/images/3912262/adfaf__179234796212_plana.jpeg",
                "price": 3500000,
                "address": "CALLE 63 77- 41",
                "advisor": {
                    "id": 880263,
                    "name": "G6 INMOBILIARIA SAS",
                    "type": "Persona Natural",
                    "email": "advisor@example.com",
                    "phone": "3000000000",
                    "whatsapp": "3000000000"
                },
                "garages": 1,
                "has_360": false,
                "project": null,
                "stratum": 4,
                "bedrooms": 3,
                "currency": "COP",
                "is_offer": false,
                "location": {
                    "city": "Medell\u00edn",
                    "latitude": 6.270565,
                    "locality": "Robledo",
                    "longitude": -75.5912,
                    "department": "Antioquia",
                    "neighborhood": "SAN GERMAN",
                    "locality_group": "Robledo",
                    "neighborhood_group": "SAN GERMAN"
                },
                "amenities": {
                    "gym": false,
                    "elevator": true,
                    "private_pool": true,
                    "communal_pool": false
                },
                "antiquity": "6",
                "area_card": 90,
                "bathrooms": 2,
                "area_built": 90,
                "created_at": "2026-10-14T22:17:11.000Z",
                "offer_type": "rent",
                "rent_price": 3500000,
                "sale_price": null,
                "admin_value": null,
                "area_private": 85,
                "fair_housing": false,
                "canonical_url": "https://www.ciencuadras.com/inmueble/apartamento-en-arriendo-en-san-german-medellin-3912262",
                "property_type": "Apartamento",
                "rental_policy": true,
                "has_matterport": false,
                "price_is_placeholder": false,
                "market_reference_price": null
            }
        ],
        "highlights": [],
        "pagination": {
            "page": 1,
            "total": 5257,
            "has_next": true,
            "per_page": 20,
            "total_pages": 263,
            "results_capped": false
        },
        "applied_filters": {
            "city": "medellin",
            "bedrooms": [
                3
            ],
            "max_price": 5000000,
            "min_price": 1500000,
            "department": "antioquia",
            "transaction": "rent"
        },
        "excluded_by_filters": 0
    },
    "meta": {
        "billable": true,
        "endpoint_family": "search"
    },
    "success": true
}
```

## Errors

| Status | Error | Description |
| --- | --- | --- |
| 422 | Validation Error | A parameter is missing or invalid. This response is not billable. |
| 503 | Upstream Unavailable | Ciencuadras could not be reached or returned data that does not match the request. This response is not billable and is retryable. |

## 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)
