# Booli — Wrapped API

> **You are on:** `https://api.paywithlocus.com/api` | [llms.txt](https://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.

> Access Swedish property data from Booli.se. Search active and historical listings, retrieve full listing details and photos, and explore area market statistics and price trends.

**Category:** Real Estate | **Website:** [booli.se/](https://booli.se/) | **Docs:** [parse.bot/marketplace/e0286288-9caf-40e1-83f2-eb4dbbc95fab/booli-se-api](https://parse.bot/marketplace/e0286288-9caf-40e1-83f2-eb4dbbc95fab/booli-se-api)

Pay-per-use API proxy. Each call is automatically billed to your wallet in USDC.

## Access

**Base URL:** `https://api.paywithlocus.com/api/wrapped/parse-booli-se-api-e0286288/`
**Auth:** `Authorization: Bearer <LOCUS_API_KEY>`

## Endpoints

### get_area_statistics

Get market statistics for a specific area by its Booli area ID. Returns area information including average prices, days to sell, and market activity as an HTML-formatted summary. Area IDs can be discovered from listing detail breadcrumbs or search results.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `area_id` | string | Yes | Booli area ID (e.g. '76' for Nacka, '1' for Stockholm kommun). Found in listing detail area arrays. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-booli-se-api-e0286288/get_area_statistics \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"area_id":"<string>"}'
```

### get_listing_detail

Get full details for a specific property listing by its Booli listing ID. Returns comprehensive property information including address, price, rooms, living area, construction year, tenure form, floor, rent, operating cost, agency info, showings schedule, and price estimate. The listing ID (booliId) is obtained from search results.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `listing_id` | string | Yes | Booli listing ID (booliId from search results, e.g. '6121470'). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-booli-se-api-e0286288/get_listing_detail \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"listing_id":"<string>"}'
```

### get_listing_photos

Get all photos for a specific listing by its Booli listing ID. Returns an array of image metadata objects including dimensions and labels. Actual image URLs can be constructed from the image IDs via Booli's CDN.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `listing_id` | string | Yes | Booli listing ID (booliId from search results, e.g. '6121470'). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-booli-se-api-e0286288/get_listing_photos \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"listing_id":"<string>"}'
```

### get_price_trends

Get price trend data for a specific property, showing how sold prices per square meter have developed in the property's area over the past 12 months. Returns monthly data points for the area. The property_id is typically the residenceId from listing detail (found in the listing URL path /bostad/{residenceId}).

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `property_id` | string | Yes | Booli property/residence ID (residenceId from listing detail URL path /bostad/{id}, e.g. '789162', '453126'). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-booli-se-api-e0286288/get_price_trends \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"property_id":"<string>"}'
```

### search_listings_for_sale

Search for active property listings for sale across Sweden. Accepts a free-text location query (municipality, area, or street name). Returns paginated results ordered by most recently published. Each result includes address, price, object type, coordinates, and basic property attributes. Cloudflare-protected; transient blocks trigger proxy rotation.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `max_living_area` | integer | No | Maximum living area in m². |
| `max_price` | integer | No | Maximum list price in SEK. |
| `max_rent` | integer | No | Maximum monthly rent/fee in SEK. |
| `max_rooms` | integer | No | Maximum number of rooms. |
| `min_living_area` | integer | No | Minimum living area in m². |
| `min_price` | integer | No | Minimum list price in SEK. |
| `min_rooms` | integer | No | Minimum number of rooms. |
| `object_types` | string | No | Property type filter. Accepted values: Lägenhet, Villa, Kedjehus-Parhus-Radhus, Fritidshus, Gård, Tomt/Mark. |
| `page` | integer | No | Page number for pagination. |
| `query` | string | Yes | Location search query (municipality, area, or street name, e.g. 'Stockholm', 'Göteborg', 'Nacka'). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-booli-se-api-e0286288/search_listings_for_sale \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"max_living_area":"<integer>","max_price":"<integer>","max_rent":"<integer>","max_rooms":"<integer>","min_living_area":"<integer>","min_price":"<integer>","min_rooms":"<integer>","object_types":"<string>","page":"<integer>","query":"<string>"}'
```

### search_sold_listings

Search for historical sold property listings in Sweden. Resolves the free-text query to a specific Booli area (preferring municipality-type areas) and returns only results belonging to that resolved area. Returns paginated results of sold/completed transactions only, ordered by most recent sale date. Enforces min_sold_date and max_sold_date inclusively on every returned record. If area resolution fails or is ambiguous, returns an explicit error rather than falling back to nationwide results. Pagination uses 'page' (omit or 1 for first page); response includes has_next and total_results metadata.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `max_sold_date` | string | No | Filter results to sales on or before this date. ISO format YYYY-MM-DD. Enforced inclusively on every returned record. |
| `min_sold_date` | string | No | Filter results to sales on or after this date. ISO format YYYY-MM-DD. Enforced inclusively on every returned record. |
| `page` | integer | No | Page number for pagination. |
| `query` | string | Yes | Location search query (municipality, area, or street name, e.g. 'Stockholm', 'Nacka', 'Malmö'). Resolved server-side to the appropriate Booli area ID; municipality-type matches are preferred. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-booli-se-api-e0286288/search_sold_listings \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"max_sold_date":"<string>","min_sold_date":"<string>","page":"<integer>","query":"<string>"}'
```
