---
title: "Search Properties"
method: GET
path: "/ohne-makler/search"
tags: ["OhneMakler"]
---

# Search Properties

`GET /ohne-makler/search`

## Request

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

Search provisionsfrei property listings on ohne-makler.net.

## Query parameters

- `q` string, nullable
- `type` 'wohnung' | 'haus' | 'grundstueck' | 'zimmer' | 'buero' | 'einzelhandel' | 'gastronomie' | 'lagerhalle' | 'landwirtschaftliches-objekt' | 'wohnen-auf-zeit' | 'gewerbliche-freizeitimmobilie' | 'zinshaus-rendite' | 'sonstiges' | 'immobilie' | 'null', nullable
- `transaction` 'kaufen' | 'mieten' | 'null', nullable
- `state` string, nullable
- `city` string, nullable
- `page` integer, nullable
- `sort` 'price_asc' | 'price_desc' | 'date_asc' | 'date_desc' | 'null', nullable
- `price_min` integer, nullable
- `price_max` integer, nullable
- `area_min` integer, nullable
- `area_max` integer, nullable
- `radius` integer, nullable

## Response `200`

- union
  - string
  - object
    - `success` boolean, required
    - `error` object, required
      - `code` string, required
      - `message` union, required
        - string
        - 'The requested page is beyond the last page for this query.' | 'No category page exists for that location or property-type combination.' | 'No German city, postal code, Kreis, or state matches q.' | 'radius only applies when q resolves to a city (not a postal code, Kreis, or state). Search the city name with radius, or omit radius.' | 'OhneMakler search is temporarily unavailable. Please retry.' | 'OhneMakler search could not parse the upstream response. Please retry.'
    - `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
    - `query` string, required
    - `page` integer, required
    - `page_size` 24, required
    - `total_results` integer, required
    - `last_page` integer, required
    - `next_page` integer, nullable, required
    - `sort` string, nullable, required
    - `results` object[], required
      - `id` integer, required
      - `object_number` string, required
      - `title` string, nullable, required
      - `url` string, required
      - `price` string, required
      - `price_on_request` string, required
      - `postal_code` string, required
      - `city` string, required
      - `district` string, nullable, required
      - `street` unknown, required
      - `rooms` number, nullable, required
      - `living_area_m2` number, nullable, required
      - `plot_area_m2` number, nullable, required
      - `preview_image` string, nullable, required
      - `seller_type` 'Privatangebot' | 'null', nullable, required
      - `latitude` string, nullable, required
      - `longitude` string, nullable, required
    - `price_histogram` object, nullable, required
      - `min` string, required
      - `max` string, required
      - `buckets` object[], required
        - `x` string, required
        - `count` integer, nullable, required
        - `label` unknown, required
    - `area_histogram` object, nullable, required
      - `min` string, required
      - `max` string, required
      - `buckets` object[], required
        - `x` string, required
        - `count` integer, nullable, required
        - `label` unknown, required
    - `breadcrumbs` object[], required
      - `name` string, nullable, required
      - `url` string, nullable, required
    - `search_form` object, nullable, required
      - `location` unknown, required
    - `aggregate_rating` object, nullable, required
      - `rating_value` string, required
      - `best_rating` string, required
      - `rating_count` string, required
    - `geojson` object, nullable, required
    - `mode` 'free_text' | 'category', required
    - `location` object, required
      - `model` string, required
      - `id` string, nullable, required
      - `name` string, nullable, required
      - `finder_label` string, required
      - `breadcrumb_label` string, nullable, required

## Other responses

- `401`: Unauthorized - API key is missing or invalid
- `404`: The requested page is beyond the last page (`end_of_pagination`) or the state/city slug does not exist (`not_found`). Non-billable. `q` matched no German postal code, city, Kreis, or state (`location_not_found`). Non-billable.
- `422`: A query parameter failed validation. Non-billable. `radius` was combined with a `q` that resolved to a postal code, Kreis, or state (`radius_requires_city`), or `q` is a listing object number (`object_number_query`). Non-billable.
- `503`: The upstream request failed or could not be parsed after retries. `error.code` is one of `upstream_unavailable`, `parser_drift`, `upstream_blocked`, or `transport_error`. Retryable and never billed. Clients are never rate limited.

---

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