---
title: "GET /metrocuadrado/search"
method: GET
path: "/metrocuadrado/search"
tags: ["Metrocuadrado"]
---

# GET /metrocuadrado/search

`GET /metrocuadrado/search`

## Request

- Base URL: `https://scrappa.co/api`
- URL: `https://scrappa.co/api/metrocuadrado/search`
- Auth: API key in header `X-API-KEY`

## Query parameters

- `business_type` 'venta' | 'arriendo' | 'null', nullable
- `property_type` string, nullable
- `status` string, nullable
- `city` string, nullable
- `zone` string, nullable
- `neighborhood` string, nullable
- `bedrooms` string, nullable
- `bathrooms` string, nullable
- `stratum` string, nullable
- `keyword` string, nullable
- `company_id` string, nullable
- `area_min` integer, nullable
- `area_max` integer, nullable
- `price_min` integer, nullable
- `price_max` integer, nullable
- `latitude` number, nullable
- `longitude` number, nullable
- `distance` integer, nullable
- `sort` 'price_asc' | 'price_desc' | 'date_newest' | 'bedrooms' | 'area' | 'null', nullable
- `page` integer, nullable
- `per_page` integer, nullable
- `rich` boolean, nullable
- `ids` string, nullable

## Response `200`

- union
  - string
  - object
    - `success` boolean, required
    - `source` 'web' | 'mobile', required
    - `total_hits` integer, required
    - `returned` integer, required
    - `page` 1, required
    - `page_size` 50, required
    - `from` unknown, required
    - `exceeds_offset_ceiling` boolean, required
    - `subdivide_by` 'The source answers at most the first 10000 rows of a cell. Subdivide it and run one billed request per sub-area. The fanout axes are business_type, property_type, city and neighborhood, but neighborhood only filters an area you already hold a slug for - it is not a partition. The partition method is a lat/long radius grid at 3 km or tighter: inside a radius every returned listing is geo-referenced, so the grid cannot silently drop rows it can see. It is not an exhaustive sweep - listings with no coordinates are unreachable by radius (roughly 2 percent of sale inventory and 6 percent of rent inventory carries none), and no partition of this source is provably exhaustive.' | 'null', nullable, required
    - `results` union, required
      - object[]
        - `id` unknown, required
        - `title` unknown, required
        - `url` unknown, required
        - `image` unknown, required
        - `city` string, nullable, required
        - `district` unknown, required
        - `zone` unknown, required
        - `project` unknown, required
        - `status` unknown, required
        - `price_sale` number, nullable, required
        - `price_lease` number, nullable, required
        - `area_m2` number, nullable, required
        - `bedrooms` number, nullable, required
        - `bathrooms` number, nullable, required
        - `garages` number, nullable, required
        - `stratum` unknown, required
        - `attributes` unknown[], required
          - unknown
      - object[]
        - `id` unknown, required
        - `title` unknown, required
        - `url` unknown, required
        - `image` unknown, required
        - `city` unknown, required
        - `status` unknown, required
        - `price_sale` number, nullable, required
        - `price_lease` number, nullable, required
        - `admin_fee` number, nullable, required
        - `area_m2` number, nullable, required: The mobile route ships preformatted strings such as "380.0 m2".
        - `bedrooms` number, nullable, required
        - `bathrooms` number, nullable, required
        - `garages` number, nullable, required
        - `admin_included` unknown, required
        - `spotlight` unknown, required
    - `meta` object, required
      - `endpoint_family` 'search', required
      - `fanout_axes` unknown[], required
        - unknown
  - object
    - `success` boolean, required
    - `results` string[], required
    - `error` object, required
      - `code` 'parser_drift', required
      - `message` 'The Metrocuadrado response could not be read. Please retry.', required
    - `meta` object, required
      - `endpoint_family` 'search', required
      - `billable` boolean, required
      - `retryable` boolean, required
  - object
    - `success` boolean, required
    - `total_hits` integer, required
    - `returned` integer, required
    - `results` string[], required
    - `error` object, required
      - `code` 'no_results', required
      - `message` 'None of the requested listing ids were returned.' | 'No listings matched these filters.', required
    - `meta` object, required
      - `endpoint_family` 'search', required
      - `billable` boolean, required
      - `retryable` boolean, required
  - object
    - `success` boolean, required
    - `results` string[], required
    - `error` object, required
      - `code` string, required
      - `message` 'The source answered this query with a web page instead of data, which means one of the filters was not accepted. Narrow the query and retry.' | 'The Metrocuadrado response could not be read. Please retry.' | 'Metrocuadrado is temporarily unavailable. Please retry.', required
    - `meta` object, required
      - `endpoint_family` 'search', required
      - `billable` boolean, required
      - `retryable` boolean, required
      - `attempts` integer, required
      - `last_status` integer, nullable, required
  - object
    - `success` boolean, required
    - `returned` integer, required
    - `results` string[], required
    - `error` object, required
      - `code` 'offset_ceiling', required
      - `message` 'This page starts past the 10000 row ceiling. Subdivide the cell and request the sub-cells: a lat/long radius grid at 3 km or tighter is the partition method, one billed request per sub-area. neighborhood is a filter for an area you already hold a slug for, not a partition you can build one from.', required
    - `meta` object, required
      - `endpoint_family` 'search', required
      - `billable` boolean, required
      - `retryable` boolean, required

## Other responses

- `401`: Unauthorized - API key is missing or invalid
- `422`: Unknown filter, an unknown or bare 4 property type code, a URL fragment instead of a token, or a partial radius filter. Nothing is charged.
- `503`: The source was unreachable or answered with an error status. Not charged, safe to retry.

---

[API](https://skmtc.dev/scrappa/apis/scrappa-api-documentation.md) · [All operations](https://skmtc.dev/scrappa/apis/scrappa-api-documentation/llms.txt) · [OpenAPI document](https://skmtc.dev/scrappa/apis/scrappa-api-documentation/revisions/2f4af6143d10?raw)
