---
title: "List buildings (filtered, paginated)"
description: "Filtered, sorted, paginated building list for one month. Each item is the full building object."
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.aireon.ch/llms.txt
> Use this file to discover all available pages before exploring further.

Path: RES API (public) › GWR

`GET /res_api/gwr/projects`

Filtered, sorted, paginated building list for one month. Each item is the full building object.

## Authentication

Requires one of the following:

- `ResApiToken`, apiKey, in header, header `token`
- `ResApiTokenQuery`, apiKey, in query

## Query parameters

- `month` (`getGwrProjects.query.month`; string, optional): Target month 'YYYY-MM'. Defaults to the latest loaded month.
  - example `"2026-04"`
- `canton` (`getGwrProjects.query.canton`; string, optional): Two-letter canton code.
- `stage` (`getGwrProjects.query.stage`; string, optional): Project stage.
- `pipeline` (`getGwrProjects.query.pipeline`; string, optional): Keep only pipeline (true) or non-pipeline (false).
  - one of `"true"`, `"false"`
- `minor` (`getGwrProjects.query.minor`; string, optional): Keep only likely-minor (true) or exclude them (false).
  - one of `"true"`, `"false"`
- `min_score` (`getGwrProjects.query.min_score`; integer, optional): Minimum significance score.
- `q` (`getGwrProjects.query.q`; string, optional): Case-insensitive match on municipality name or address.
- `bbox` (`getGwrProjects.query.bbox`; string, optional): Bounding box "minLng,minLat,maxLng,maxLat" (WGS84).
- `sort` (`getGwrProjects.query.sort`; string, optional): Sort column.
  - one of `"significance_score"`, `"dwellings"`, `"floors"`, `"footprint_area_m2"`, `"year_built"`, `"canton"`, `"municipality_name"`, `"egid"`; default `"significance_score"`
- `order` (`getGwrProjects.query.order`; string, optional)
  - one of `"asc"`, `"desc"`; default `"desc"`
- `limit` (`getGwrProjects.query.limit`; integer, optional): 1-2000, default 200.
  - default `200`
- `offset` (`getGwrProjects.query.offset`; integer, optional)
  - default `0`

## Code samples

### cURL

```bash
curl --request GET \
  --url https://res.aireon.ch/res_api/gwr/projects \
  --header 'token: <token>'
```

### TypeScript

```typescript
const url = 'https://res.aireon.ch/res_api/gwr/projects';
const options = {method: 'GET', headers: {token: '<token>'}};

fetch(url, options)
  .then(res => res.json())
  .then(json => console.log(json))
  .catch(err => console.error(err));
```

### Python

```python
import requests

url = "https://res.aireon.ch/res_api/gwr/projects"

headers = {"token": "<token>"}

response = requests.get(url, headers=headers)

print(response.text)
```

## Responses

### 200

Matching buildings.

#### Example

```json
{
  "month": "string",
  "total": 0,
  "limit": 0,
  "offset": 0,
  "count": 0,
  "buildings": [
    {
      "egid": 0,
      "register_match": true,
      "project_stage": "projected",
      "is_pipeline": true,
      "status_code": 0,
      "status_label": "string",
      "category_code": 0,
      "category_label": "string",
      "class_code": 0,
      "class_label": "string",
      "municipality_number": 0,
      "municipality_name": "string",
      "canton": "string",
      "addresses": [
        "string"
      ],
      "entrance_count": 0,
      "year_built": 0,
      "month_built": 0,
      "footprint_area_m2": 0,
      "volume_m3": 0,
      "floors": 0,
      "dwellings": 0,
      "egrid": "string",
      "coordinates": {
        "lv95_e": 0,
        "lv95_n": 0,
        "lat": 0,
        "lng": 0
      },
      "likely_minor": true,
      "minor_reason": "string",
      "significance_score": 0
    }
  ]
}
```

- `month` (`getGwrProjects.response.200.month`; string, optional)
- `total` (`getGwrProjects.response.200.total`; integer, optional): Total matches (before limit/offset).
- `limit` (`getGwrProjects.response.200.limit`; integer, optional)
- `offset` (`getGwrProjects.response.200.offset`; integer, optional)
- `count` (`getGwrProjects.response.200.count`; integer, optional): Items in this page.
- `buildings` (`getGwrProjects.response.200.buildings`; array<object>, optional)
  - `egid` (`getGwrProjects.response.200.buildings.egid`; integer, optional): Federal building identifier.
  - `register_match` (`getGwrProjects.response.200.buildings.register_match`; boolean, optional)
  - `project_stage` (`getGwrProjects.response.200.buildings.project_stage`; string, optional)
    - one of `"projected"`, `"approved"`, `"under_construction"`, `"existing"`, `"unusable"`, `"not_realized"`, `"demolished"`, `"unknown"`
  - `is_pipeline` (`getGwrProjects.response.200.buildings.is_pipeline`; boolean, optional): True for genuine upcoming projects (projected/approved/under construction).
  - `status_code` (`getGwrProjects.response.200.buildings.status_code`; integer | null, optional)
  - `status_label` (`getGwrProjects.response.200.buildings.status_label`; string | null, optional)
  - `category_code` (`getGwrProjects.response.200.buildings.category_code`; integer | null, optional)
  - `category_label` (`getGwrProjects.response.200.buildings.category_label`; string | null, optional)
  - `class_code` (`getGwrProjects.response.200.buildings.class_code`; integer | null, optional)
  - `class_label` (`getGwrProjects.response.200.buildings.class_label`; string | null, optional)
  - `municipality_number` (`getGwrProjects.response.200.buildings.municipality_number`; integer | null, optional)
  - `municipality_name` (`getGwrProjects.response.200.buildings.municipality_name`; string | null, optional)
  - `canton` (`getGwrProjects.response.200.buildings.canton`; string | null, optional)
  - `addresses` (`getGwrProjects.response.200.buildings.addresses`; array<string>, optional)
  - `entrance_count` (`getGwrProjects.response.200.buildings.entrance_count`; integer | null, optional)
  - `year_built` (`getGwrProjects.response.200.buildings.year_built`; integer | null, optional)
  - `month_built` (`getGwrProjects.response.200.buildings.month_built`; integer | null, optional)
  - `footprint_area_m2` (`getGwrProjects.response.200.buildings.footprint_area_m2`; number | null, optional)
  - `volume_m3` (`getGwrProjects.response.200.buildings.volume_m3`; number | null, optional)
  - `floors` (`getGwrProjects.response.200.buildings.floors`; integer | null, optional)
  - `dwellings` (`getGwrProjects.response.200.buildings.dwellings`; integer | null, optional)
  - `egrid` (`getGwrProjects.response.200.buildings.egrid`; string | null, optional)
  - `coordinates` (`getGwrProjects.response.200.buildings.coordinates`; object, optional): Building coordinates in LV95 (Swiss) and WGS84.
    - `lv95_e` (`getGwrProjects.response.200.buildings.coordinates.lv95_e`; number | null, optional)
    - `lv95_n` (`getGwrProjects.response.200.buildings.coordinates.lv95_n`; number | null, optional)
    - `lat` (`getGwrProjects.response.200.buildings.coordinates.lat`; number | null, optional)
    - `lng` (`getGwrProjects.response.200.buildings.coordinates.lng`; number | null, optional)
  - `likely_minor` (`getGwrProjects.response.200.buildings.likely_minor`; boolean, optional): Heuristic flag for minor entries (carports, sheds, annexes).
  - `minor_reason` (`getGwrProjects.response.200.buildings.minor_reason`; string | null, optional)
  - `significance_score` (`getGwrProjects.response.200.buildings.significance_score`; integer, optional): Weighted 0-100 score; higher = larger genuine project.

### 401

Missing token.

### 403

Wrong token.


Source: https://docs.aireon.ch/res/get-gwr-projects/index.md
