# Willhaben — Wrapped API

> **You are on:** `https://api.beta.paywithlocus.com/api` | [llms.txt](https://beta.paywithlocus.com/llms.txt) | [docs](https://docs.paywithlocus.com)
>
> Locus runs on multiple environments -- make sure every URL you call matches your expected environment.
> | Environment | Landing | API | Docs |
> |---|---|---|---|
> | Production | paywithlocus.com | api.paywithlocus.com | docs.paywithlocus.com |
> | Beta | beta.paywithlocus.com | api.beta.paywithlocus.com | docs.paywithlocus.com |
> | Stage | stage.paywithlocus.com | api.stage.paywithlocus.com | docs.paywithlocus.com |
>
> If the API URL above doesn't match your expected environment, re-fetch this file from the correct domain.

> Search and browse listings across Austria's largest classifieds platform. Access marketplace goods, real estate (for sale and rent), cars, jobs, and full listing details — all from a single API.

**Category:** Marketplaces | **Website:** [willhaben.at/](https://willhaben.at/) | **Docs:** [parse.bot/marketplace/1a019f5c-03ca-49de-b087-9826a744d893/willhaben-at-api](https://parse.bot/marketplace/1a019f5c-03ca-49de-b087-9826a744d893/willhaben-at-api)

Pay-per-use API proxy for Locus Pro. Each call burns credits from your workspace balance.

## Access

**Base URL:** `https://api.beta.paywithlocus.com/api/wrapped/credits/willhaben/`
**Auth:** `Authorization: Bearer <LOCUS_CREDITS_SECRET_KEY>` (an `lcr_` secret key or a scoped `lcac_` agent credential)
**Required header:** `Idempotency-Key: <fresh UUID per call>`. A retry with the same key replays the stored result without a new charge.
**Response:** the provider response after any endpoint-specific normalization. `X-Locus-Credits-Charged` carries the charge and `X-Locus-Credits-Balance` the remaining balance. Insufficient credits return `402` before the provider is called.
**Pricing:** estimated costs below are USD. Locus debits the credit equivalent at your workspace rate.

Full call contract: https://docs.paywithlocus.com/api-reference/introduction

> Using a Pay With Locus wallet key (`claw_` prefix)? Wallet routes are documented separately: https://docs.paywithlocus.com/wrapped-apis/for-agents

## Endpoints

### Get listing detail

Get full details for any listing (marketplace, real estate, or car) by its ID. Returns comprehensive information including full description, all images, structured attributes, seller/organisation info, address details, and contact information. Does not cover job listings.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `ad_id` | string | Yes | The willhaben listing/ad ID (numeric string, e.g. '1872400799'). Obtain from search endpoint results. |

```bash
curl -X POST https://api.beta.paywithlocus.com/api/wrapped/credits/willhaben/get-listing-detail \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"ad_id":"<string>"}'
```

### Search cars

Search for cars on willhaben.at. Returns paginated results with vehicle listings including make, model, mileage, year, fuel type, transmission, and price.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `keyword` | string | No | Search keyword (e.g. 'bmw', 'audi a4', 'golf'). |
| `page` | integer | No | Page number for pagination. |
| `price_from` | integer | No | Minimum price filter in euros. |
| `price_to` | integer | No | Maximum price filter in euros. |
| `rows` | integer | No | Number of results per page. |

```bash
curl -X POST https://api.beta.paywithlocus.com/api/wrapped/credits/willhaben/search-cars \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"keyword":"<string>","page":"<integer>","price_from":"<integer>","price_to":"<integer>","rows":"<integer>"}'
```

### Search jobs

Search for job listings on willhaben.at. Returns paginated results with job title, company, salary, location, employment modes, and employment time. Pagination uses server-side page/rows parameters. Total results count reflects all matching jobs across all pages.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `keyword` | string | No | Search keyword (e.g. 'developer', 'marketing', 'java'). |
| `page` | integer | No | Page number for pagination. |
| `rows` | integer | No | Number of results per page. |

```bash
curl -X POST https://api.beta.paywithlocus.com/api/wrapped/credits/willhaben/search-jobs \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"keyword":"<string>","page":"<integer>","rows":"<integer>"}'
```

### Search marketplace

Search for items in the general marketplace (Marktplatz). Returns paginated listing results with title, price, location, and attributes. Supports keyword search, category filtering, and price range. Results are ordered by recency (bumped/promoted listings first).

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `category` | string | No | Category filter. |
| `keyword` | string | No | Search keyword (e.g. 'laptop', 'bicycle', 'sofa'). |
| `page` | integer | No | Page number for pagination. |
| `price_from` | integer | No | Minimum price filter in euros. |
| `price_to` | integer | No | Maximum price filter in euros. |
| `rows` | integer | No | Number of results per page. |

```bash
curl -X POST https://api.beta.paywithlocus.com/api/wrapped/credits/willhaben/search-marketplace \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"category":"<string>","keyword":"<string>","page":"<integer>","price_from":"<integer>","price_to":"<integer>","rows":"<integer>"}'
```

### Search real estate for rent

Search for rental properties on willhaben.at. Returns paginated results with rental listings including monthly rent, area, and location details.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `keyword` | string | No | Search keyword. |
| `page` | integer | No | Page number for pagination. |
| `price_from` | integer | No | Minimum rent price filter in euros. |
| `price_to` | integer | No | Maximum rent price filter in euros. |
| `rows` | integer | No | Number of results per page. |

```bash
curl -X POST https://api.beta.paywithlocus.com/api/wrapped/credits/willhaben/search-real-estate-for-rent \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"keyword":"<string>","page":"<integer>","price_from":"<integer>","price_to":"<integer>","rows":"<integer>"}'
```

### Search real estate for sale flats

Search for flats/apartments for sale on willhaben.at. Returns paginated results with property details including price, area, location, and property type. Supports area and postal code prefix filtering.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `area_from` | integer | No | Minimum living area in m². |
| `area_to` | integer | No | Maximum living area in m². |
| `keyword` | string | No | Search keyword. |
| `page` | integer | No | Page number for pagination. |
| `price_from` | integer | No | Minimum price filter in euros. |
| `price_to` | integer | No | Maximum price filter in euros. |
| `rows` | integer | No | Number of results per page. |
| `zip_prefix` | string | No | Postal code prefix filter (e.g. '1' for Vienna, '80' for Graz). |

```bash
curl -X POST https://api.beta.paywithlocus.com/api/wrapped/credits/willhaben/search-real-estate-for-sale-flats \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"area_from":"<integer>","area_to":"<integer>","keyword":"<string>","page":"<integer>","price_from":"<integer>","price_to":"<integer>","rows":"<integer>","zip_prefix":"<string>"}'
```

### Search real estate for sale houses

Search for houses for sale on willhaben.at. Returns paginated results with property details including price, area, location, and property type. Supports area and postal code prefix filtering.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `area_from` | integer | No | Minimum living area in m². |
| `area_to` | integer | No | Maximum living area in m². |
| `keyword` | string | No | Search keyword. |
| `page` | integer | No | Page number for pagination. |
| `price_from` | integer | No | Minimum price filter in euros. |
| `price_to` | integer | No | Maximum price filter in euros. |
| `rows` | integer | No | Number of results per page. |
| `zip_prefix` | string | No | Postal code prefix filter (e.g. '1' for Vienna, '80' for Graz). |

```bash
curl -X POST https://api.beta.paywithlocus.com/api/wrapped/credits/willhaben/search-real-estate-for-sale-houses \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"area_from":"<integer>","area_to":"<integer>","keyword":"<string>","page":"<integer>","price_from":"<integer>","price_to":"<integer>","rows":"<integer>","zip_prefix":"<string>"}'
```

## Next steps

- [All wrapped API providers](https://beta.paywithlocus.com/wapi/index.md): pick another provider.
- [Find and call tools](https://beta.paywithlocus.com/agent/tools.md): price ceilings, async results, and errors.
- [Credits and billing](https://beta.paywithlocus.com/agent/billing.md): what a call costs and how to add credits.
- [Agent docs index](https://beta.paywithlocus.com/agent/index.md): every Locus agent page.