# WG-Gesucht Listings

Fetch full detail for specific WG-Gesucht offers in one call. Pass the offer ids returned by search, or a single id for one listing. Unlike a search card, a listing carries the district_id needed to join it to the districts endpoint. Ids the platform no longer serves are dropped rather than reported, so compare total_items against requested_ids: a partly-stale list is a billed 200 whose total_items is lower than the ids you sent. If *every* id has vanished the call answers a non-billable 404 with code listings_not_found and retryable false, because a fully expired id cache will still be expired on the next attempt. The upstream cap is 20 ids per call, the largest list the platform has been measured to honour; a longer list is rejected rather than silently truncated.

- **Documentation:** [https://scrappa.co/docs/wg-gesucht-api/wg_gesucht_listings](https://scrappa.co/docs/wg-gesucht-api/wg_gesucht_listings)
- **API group:** WG-Gesucht API
- **Endpoint:** `GET https://scrappa.co/api/wg-gesucht/listings`

## 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 |
| --- | --- | --- | --- |
| `ids` | string | Yes | One to 20 offer ids. Pass them comma separated as ids=1,2,3 or as repeated ids[] parameters. Required. |

## Example request

```bash
#!/bin/bash

curl -X GET \
    -H "x-api-key: YOUR_API_KEY_HERE" \
    "https://scrappa.co/api/wg-gesucht/listings?ids=13841674%2C14159892"
```

## Example response

```json
{
    "success": true,
    "data": {
        "listings": [
            {
                "offer_id": 13841674,
                "offer_title": "Helle 2-Zimmer-Wohnung in Prenzlauer Berg",
                "category": 2,
                "category_label": "Wohnung",
                "city_id": 8,
                "district_id": 114,
                "total_costs": 850,
                "number_of_rooms": 2,
                "property_size": 52,
                "available_from_date": "2026-11-01T00:00:00+00:00",
                "images": [
                    "https://img.wg-gesucht.de/media/up/abc123.jpg"
                ]
            }
        ],
        "total_items": 2,
        "requested_ids": 2,
        "images_base_url": "https://img.wg-gesucht.de/"
    },
    "meta": {
        "duration_ms": 298,
        "endpoint_family": "listings"
    }
}
```

## Errors

| Status | Error | Description |
| --- | --- | --- |
| 404 | Not Found | The requested query combination is not served. This response is not billable. |
| 404 | Listings Not Found | None of the requested listing ids were found (`listings_not_found`). Terminal and not retryable: an expired id cache stays expired. A partly-stale list is a billed 200 instead, with total_items lower than requested_ids. This response is not billable. |
| 422 | Validation Error | A public parameter is invalid, including a missing scope field or a category and rent type the platform does not serve. This response is not billable. |
| 503 | Service Unavailable | The service could not obtain a complete result. 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)
