# Otodom Property Details API Documentation

Scrappa's `GET /api/otodom/property` endpoint returns the full detail of a single Otodom listing as JSON, using Otodom's own listing operation rather than a page scrape.

## What the response contains

`description`, `features`, `floor_plans`, `category`, the full `characteristics` list, `location` with street, city and coordinates, `agency`, `owner` (name and type only — phone numbers are removed), development grouping and image URLs.

## Correctness notes

Otodom answers an unknown listing id with HTTP 200 and a promotional advert. This endpoint asserts that the returned id matches the requested id and returns a not-found error otherwise, so an invalid id never yields unrelated data and is never billed.

## Related Otodom endpoints

- `GET /api/otodom/search` — find the listing id first
- `GET /api/otodom/development` — per-unit pricing for a development

- **Documentation:** [https://scrappa.co/docs/otodom-api/otodom_property](https://scrappa.co/docs/otodom-api/otodom_property)
- **API group:** Otodom API
- **Endpoint:** `GET https://scrappa.co/api/otodom/property`

## 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 |
| --- | --- | --- | --- |
| `id` | string | Yes | Numeric Otodom listing id, as returned in the search response. |

## Example request

```bash
#!/bin/bash

curl -X GET \
    -H "x-api-key: YOUR_API_KEY_HERE" \
    "https://scrappa.co/api/otodom/property?id=68489972"
```

## Example response

```json
{
    "success": true,
    "data": {
        "id": "68489972",
        "title": "Mieszkanie 3 pokojowe, Warszawa \u017boliborz",
        "description": "...",
        "characteristics": [
            {
                "key": "price",
                "value": "899000",
                "currency": "PLN"
            }
        ],
        "location": {
            "coordinates": {
                "latitude": 52.251563,
                "longitude": 21.0389924
            }
        },
        "agency": {
            "id": "4451680",
            "name": "Metrohouse Franchise S.A."
        },
        "owner": {
            "id": "4451680",
            "name": "Metrohouse Franchise S.A.",
            "type": "AGENCY"
        }
    }
}
```

## Errors

| Status | Error | Description |
| --- | --- | --- |
|  | Error | No listing carries that id. This response is not billed. |
|  | Error | Otodom could not be reached. This response is not billed. |

## Frequently asked questions

### Where do I get a listing id?

From the `id` field of any item returned by the Otodom search endpoint.

### What happens for an id that does not exist?

You get a NOT_FOUND error rather than a promotional advert, and the request is not billed.

### Do I get the seller phone number?

No. Owner phone numbers are removed before the response leaves the service.

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