# Blocket Bostad Rental Search API Documentation

Scrappa's `GET /api/blocket-bostad/search` returns Swedish rental homes from Blocket Bostad (bostad.blocket.se) as structured JSON.

## Rentals only

Blocket Bostad lists homes for rent. It has no sale listings, so this API has no sale parameter and `sale` is rejected. For homes for sale in Sweden use the Hemnet or Booli APIs. Blocket Bostad has no bathroom filter, so `bathrooms` is rejected too. Blocket Bostad is built on the Qasa rental platform, so these homes also appear in the Qasa API.

## What you get

One request returns one page of homes and the real match count in `total`. Each home has `id`, `url`, `platform` (`blocket`, `dotcom` or `homeq`), `title`, `description`, `rent`, `monthly_cost`, `tenant_base_fee`, `currency`, `rooms`, `bedrooms`, `size`, `home_type`, tenant rule flags, rental dates and length, landlord badges, `location` with coordinates and all `images`. Call the listing endpoint for amenities, fees, nearby transport and the landlord.

## Filters are honoured

Every filter is applied by the source, so `total` and the paging describe the real result set. Unknown parameters are rejected with `422` instead of being ignored. `applied_filters` echoes what was sent. Rows that break the requested rent range are removed and counted in `meta.filtered_out`.

## Rent

`min_rent` and `max_rent` filter the monthly rent. `monthly_cost` is the rent plus the tenant fee, so a home can show a `monthly_cost` slightly above `max_rent`.

## Bedrooms

`min_bedrooms` matches homes that state a bedroom count. Many listings do not, so `bedrooms` is often null. Treat this filter as partial.

## Areas

`area` takes a name or identifier from `/api/blocket-bostad/location-autocomplete`. An unknown area returns `422` (`unknown_area`) with suggestions, because the source would otherwise return all of Sweden. The source decides which homes belong to an area, so a city search can include homes in neighbouring localities.

## Pagination

`page` is 1-based and `limit` is 1-100 (default 50). A page past the last one returns an empty list with the correct `total`. It never returns another page's homes. A page far beyond the end returns `422` (`page_out_of_range`).

## Data quality

Values pass through as landlords entered them, so a few homes show unrealistic rents or sizes.

- **Documentation:** [https://scrappa.co/docs/blocket-bostad-api/blocket_bostad_search](https://scrappa.co/docs/blocket-bostad-api/blocket_bostad_search)
- **API group:** Blocket Bostad API
- **Endpoint:** `GET https://scrappa.co/api/blocket-bostad/search`

## 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 |
| --- | --- | --- | --- |
| `area` | string | No | Area name or identifier from location-autocomplete, for example Göteborg or se/göteborg. |
| `min_rent` | integer | No | Minimum monthly rent as a whole number in SEK. Applies to the rent, not to rent plus tenant fee. |
| `max_rent` | integer | No | Maximum monthly rent as a whole number in SEK. Applies to the rent, not to rent plus tenant fee. |
| `min_rooms` | number | No | Minimum room count, for example 1.5. |
| `max_rooms` | number | No | Maximum room count. |
| `min_bedrooms` | integer | No | Minimum bedroom count. Many listings state no bedroom count, so this filter is partial. |
| `min_size` | integer | No | Minimum size in square metres. |
| `max_size` | integer | No | Maximum size in square metres. |
| `home_type` | string | No | One or more of apartment, terrace_house, cottage, dorm, house, other. Comma-separated. |
| `shared` | boolean | No | true for shared homes, false for entire homes. |
| `furnished` | boolean | No | true for furnished homes, false for unfurnished. |
| `pets` | boolean | No | true for homes that allow pets, false for homes that do not. |
| `smoking` | boolean | No | true for homes that allow smoking, false for homes that do not. |
| `wheelchair_accessible` | boolean | No | true or false. |
| `first_hand` | boolean | No | true for first-hand contracts, false for second-hand. |
| `student_home` | boolean | No | true or false. |
| `senior_home` | boolean | No | true or false. |
| `corporate_home` | boolean | No | true or false. |
| `sort` | string | No | published_or_bumped_at (default), rent, monthly_cost, start_date, end_date, room_count, square_meters, sorting_score or thirty_day_view_count. |
| `direction` | string | No | desc (default) or asc. |
| `limit` | integer | No | Homes per page, 1-100 (default 50). |
| `page` | integer | No | Result page, 1-based. |

## Example request

```bash
#!/bin/bash

curl -X GET \
    -H "x-api-key: YOUR_API_KEY_HERE" \
    "https://scrappa.co/api/blocket-bostad/search?area=G%C3%B6teborg&min_rent=5000&max_rent=12000&limit=10"
```

## Example response

```json
{
    "success": true,
    "data_source": "Blocket Bostad (Qasa)",
    "market": "sweden",
    "currency": "SEK",
    "total": 612,
    "returned": 1,
    "pagination": {
        "page": 1,
        "limit": 10,
        "pages_count": 62,
        "has_next_page": true,
        "has_previous_page": false
    },
    "applied_filters": {
        "area": "se/g\u00f6teborg",
        "min_rent": 5000,
        "max_rent": 12000,
        "sort": "published_or_bumped_at",
        "direction": "desc"
    },
    "listings": [
        {
            "id": "1492340",
            "url": "https://qasa.com/se/sv/home/1492340",
            "title": "Two-room apartment in Majorna",
            "description": "Bright apartment close to the tram.",
            "market": "sweden",
            "currency": "SEK",
            "rent": 11200,
            "monthly_cost": 11866,
            "tenant_base_fee": 666,
            "rooms": 2,
            "bedrooms": 1,
            "size": 48,
            "home_type": "apartment",
            "furnished": true,
            "shared": false,
            "first_hand": false,
            "student_home": false,
            "senior_home": false,
            "corporate_home": false,
            "pets_allowed": false,
            "smoking_allowed": false,
            "wheelchair_accessible": false,
            "instant_sign": false,
            "household_size": 2,
            "block_listing": false,
            "rental_length_seconds": 15778800,
            "rental_length_months": 6,
            "start_date": "2026-12-01T00:00:00Z",
            "end_date": "2027-05-31T00:00:00Z",
            "published_at": "2026-10-25T09:12:00Z",
            "last_bumped_at": null,
            "published_or_bumped_at": "2026-10-25T09:12:00Z",
            "sorting_score": 0.82,
            "platform": "blocket",
            "display_street_number": true,
            "landlord_badges": [],
            "location": {
                "id": "2210451",
                "locality": "G\u00f6teborg",
                "country_code": "SE",
                "street": "Karl Johansgatan",
                "street_number": "12",
                "latitude": 57.6948,
                "longitude": 11.9189
            },
            "images": [
                {
                    "id": "22202803",
                    "url": "https://example.com/home.jpg",
                    "type": "home_picture",
                    "order": 1,
                    "primary": null
                }
            ]
        }
    ],
    "meta": {
        "endpoint_family": "search",
        "billable": true,
        "attempts": 1,
        "filtered_out": 0
    }
}
```

## Errors

| Status | Error | Description |
| --- | --- | --- |
| 422 | Page Out of Range | The `page` lies so far past the last page that Blocket Bostad reports no total (`page_out_of_range`). A page just past the end returns an empty list with the real total instead. Non-billable. |
| 422 | Unknown Area | The `area` value matches no Swedish Blocket Bostad area (`unknown_area`). The source would ignore it and return every home in the country, so the request is rejected. Up to five suggestions are returned. Non-billable. |
| 422 | Validation Error | A query parameter is missing, unknown or unusable. Unknown parameters are rejected, never ignored. Non-billable. |
| 503 | Upstream Unavailable | Blocket Bostad could not be reached after retries, answered with an error, or its area list is not available (`upstream_unavailable`, `upstream_blocked`, `parser_drift`, `area_list_unavailable`). Retryable and never billed. Clients are never rate limited. |

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