Property Search

Search for real estate listings on Immowelt with filters for location, property type, price range, rooms, and size.

Endpoint

GET /api/immowelt/search

Generate Code with AI

Copy a ready-made prompt with all the endpoint details, parameters, and example responses. Paste it into ChatGPT, Claude, or any AI assistant to instantly generate working code.

Parameters

location string Required

City name, postal code, or location ID (e.g., "Berlin", "10115", "1")

type string Optional

Property type: apartment-rent, apartment-buy, house-rent, house-buy (default: apartment-rent)

price_min integer Optional

Minimum price in EUR

price_max integer Optional

Maximum price in EUR

rooms_min number Optional

Minimum number of rooms

rooms_max number Optional

Maximum number of rooms

size_min integer Optional

Minimum size in m^2

size_max integer Optional

Maximum size in m^2

page integer Optional

Page number for pagination

per_page integer Optional

Number of results per page (max: 50, default: 20)

Request Examples

<?php

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://scrappa.co/api/immowelt/search?location=Berlin&type=apartment-rent');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'x-api-key: YOUR_API_KEY_HERE',
]);

$response = curl_exec($ch);
curl_close($ch);

echo $response;
<?php

use Illuminate\Support\Facades\Http;

$response = Http::withHeaders([
    'x-api-key' => 'YOUR_API_KEY_HERE',
])->get('https://scrappa.co/api/immowelt/search?location=Berlin&type=apartment-rent');

return $response->json();
fetch('https://scrappa.co/api/immowelt/search?location=Berlin&type=apartment-rent', {
  headers: {
    'x-api-key': 'YOUR_API_KEY_HERE'
  }
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));
const axios = require('axios');

axios.get('https://scrappa.co/api/immowelt/search?location=Berlin&type=apartment-rent', {
  headers: {
    'x-api-key': 'YOUR_API_KEY_HERE'
  }
})
  .then(response => console.log(response.data))
  .catch(error => console.error('Error:', error));
import requests

headers = {
    'x-api-key': 'YOUR_API_KEY_HERE'
}

response = requests.get('https://scrappa.co/api/immowelt/search?location=Berlin&type=apartment-rent', headers=headers)
print(response.json())
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse('https://scrappa.co/api/immowelt/search?location=Berlin&type=apartment-rent')
request = Net::HTTP::Get.new(uri)
request['x-api-key'] = 'YOUR_API_KEY_HERE'

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|
  http.request(request)
end

puts JSON.parse(response.body)
package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
)

func main() {
    client := &http.Client{}
    req, _ := http.NewRequest("GET", "https://scrappa.co/api/immowelt/search?location=Berlin&type=apartment-rent", nil)
    req.Header.Set("x-api-key", "YOUR_API_KEY_HERE")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(body))
}
curl -X GET 'https://scrappa.co/api/immowelt/search?location=Berlin&type=apartment-rent' \
  -H 'x-api-key: YOUR_API_KEY_HERE'

Response Schema

JSON Response 200 OK
{
    "success": true,
    "total_results": 1234,
    "page": 1,
    "total_pages": 62,
    "results": [
        {
            "id": "123456",
            "title": "Sample listing in Berlin",
            "price": 2440,
            "price_formatted": "2.440 EUR",
            "rooms": 4,
            "size_m2": 137,
            "address": "Berlin, Germany",
            "lat": 52.52,
            "lon": 13.405,
            "image_url": "https://pictures.immowelt.de/sample.jpg",
            "url": "https://www.immowelt.de/expose/123456",
            "is_private": false,
            "published": "2024-01-15T10:00:00Z"
        }
    ]
}

Try It Live

Test this endpoint in our interactive playground with real data.

Open in Playground