Booli Property Search Scraper avatar

Booli Property Search Scraper

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Booli Property Search Scraper

Booli Property Search Scraper

Scrape detailed property listings from Booli.se with one click. Collect prices, locations, images, agency info, and 30+ fields per property — perfect for real estate analysts, investors, developers, and market researchers tracking the Swedish housing market.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

Stealth mode

Stealth mode

Maintained by Community

Actor stats

0

Bookmarked

9

Total users

1

Monthly active users

6 days ago

Last modified

Features

Limited permissions

Share

Booli Property Search Scraper: Extract Swedish Real Estate Data at Scale


What Is Booli.se?

Booli.se is Sweden's leading property search platform, hosting thousands of residential listings across apartments, villas, and new construction projects. It serves real estate professionals, investors, and homebuyers seeking market transparency. Booli consolidates listings from multiple agencies and developers, making it a rich source for property market intelligence — but manually collecting and structuring this data is laborious and error-prone.

The Booli Property Search Scraper automates data extraction, transforming unstructured listings into clean, actionable datasets in minutes.


Overview

The Booli Property Search Scraper extracts comprehensive property records from Booli.se search results pages, capturing 30+ data points per listing. It is built for:

  • Real estate investors analyzing market trends and pricing patterns
  • Market researchers studying Swedish housing supply and demand
  • Property developers monitoring competitor projects and launches
  • Data analysts building real estate intelligence platforms
  • Agencies aggregating market data for client reports

The scraper handles search result pagination, manages proxy rotation to prevent blocking, and gracefully continues on failed URLs — ideal for large-scale collection campaigns.


Input Format

The scraper accepts a JSON configuration object defining which property listings to extract and how to handle the scraping process:

{
"urls": [
"https://www.booli.se/sok/till-salu/?page=2"
],
"ignore_url_failures": true,
"max_items_per_url": 200
}

Input Parameters Explained

ParameterTypeDescriptionExample
urlsArrayBooli search result page URLs to scrape. Each URL can return up to max_items_per_url listings.["https://www.booli.se/sok/till-salu/?page=2"]
ignore_url_failuresBooleanIf true, the scraper continues running even if a URL fails. If false, the entire run stops on first error.true
max_items_per_urlIntegerMaximum number of property listings to extract per URL. Set based on your data needs and rate-limiting concerns.200

Input Tips

  • Search pages: Use filtered Booli search URLs (e.g., by region, price range, property type) to target specific subsets of the market.
  • Pagination: Include multiple page URLs to collect larger datasets. For example:
    • https://www.booli.se/sok/till-salu/?page=1
    • https://www.booli.se/sok/till-salu/?page=2
    • https://www.booli.se/sok/till-salu/?page=3
  • Limits: Set max_items_per_url conservatively (50–200) to avoid timeout or server load issues on large result sets.

Output Format

Example Output Record

{
"id": 6340992,
"origin_id": "listing:6340992",
"listing_id": "6340992",
"listing_type": "property_active",
"url": "https://www.booli.se/annons/6340992",
"title": "Bengt Ekehjelmsgatan 11",
"subtitle": "Lägenhet · Södermalm · Stockholm",
"summary": "2 rum lägenhet på Bengt Ekehjelmsgatan 11 Södermalm, Stockholms kommun",
"object_type": "Lägenhet",
"sale_type": "succession",
"price": "6 750 000 kr",
"currency": "SEK",
"price_remark": null,
"display_date": "Inkommet idag",
"status": null,
"secondary_status": {
"key": "showing",
"label": "Sön 15 nov kl 12:00"
},
"attributes": [
{
"key": "livingArea",
"label": "Boarea",
"value": "55 m²",
"description": null
},
{
"key": "rooms",
"label": "Rum",
"value": "2 rum",
"description": null
},
{
"key": "floor",
"label": "Våning",
"value": "vån 3",
"description": null
},
{
"key": "rentOrPlotAreaText",
"label": "Avgift",
"value": "4 032 kr/mån",
"description": null
}
],
"amenities": [
{
"__typename": "Amenity",
"key": "elevator",
"label": "Hiss",
"icons": [
{
"__typename": "CrossPlatformIcon",
"key": "ElevatorOutlined",
"svg": "https://bcdn.se/assets/shared/icons/ElevatorOutlined.svg",
"png": "https://bcdn.se/assets/shared/icons/ElevatorOutlined4x.png"
}
]
},
{
"__typename": "Amenity",
"key": "balcony",
"label": "Balkong",
"icons": [
{
"__typename": "CrossPlatformIcon",
"key": "BalconyOutlined",
"svg": "https://bcdn.se/assets/shared/icons/BalconyOutlined.svg",
"png": "https://bcdn.se/assets/shared/icons/BalconyOutlined4x.png"
}
]
},
{
"__typename": "Amenity",
"key": "fireplace",
"label": "Eldstad",
"icons": [
{
"__typename": "CrossPlatformIcon",
"key": "FireplaceOutlined",
"svg": "https://bcdn.se/assets/shared/icons/FireplaceOutlined.svg",
"png": "https://bcdn.se/assets/shared/icons/FireplaceOutlined4x.png"
}
]
}
],
"labels": [],
"area": "Södermalm",
"city": null,
"municipality": "Stockholm",
"county": "Stockholms län",
"latitude": 59.314759,
"longitude": 18.0627227,
"has_images": true,
"has_showings": true,
"upcoming_sale": false,
"image_count": 5,
"images": [
{
"id": "57457291",
"label": "kitchen/dining_room",
"alt": "Kök eller matrum",
"width": 2500,
"height": 1875,
"badge": null,
"url": "https://bcdn.se/images/cache/57457291_1440x0.jpg"
},
{
"id": "57457292",
"label": "interior",
"alt": "Interiörbild",
"width": 2500,
"height": 1875,
"badge": null,
"url": "https://bcdn.se/images/cache/57457292_1440x0.jpg"
},
{
"id": "57457293",
"label": "kitchen/dining_room",
"alt": "Kök eller matrum",
"width": 2500,
"height": 1875,
"badge": null,
"url": "https://bcdn.se/images/cache/57457293_1440x0.jpg"
},
{
"id": "57457294",
"label": "interior",
"alt": "Interiörbild",
"width": 2500,
"height": 1875,
"badge": null,
"url": "https://bcdn.se/images/cache/57457294_1440x0.jpg"
},
{
"id": "57457295",
"label": "balcony/view",
"alt": "Balkong eller utsiktsbild",
"width": 2500,
"height": 1875,
"badge": null,
"url": "https://bcdn.se/images/cache/57457295_1440x0.jpg"
}
],
"presenter_name": "Historiska Hem",
"presenter_logo_url": "https://hm.bcdn.se/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NTU4NCwicHVyIjoiYmxvYl9pZCJ9fQ==--7883b098676a948299afd9cc4f9c4fd3c2875b39/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJwbmciLCJyZXNpemVfdG9fZml0IjpbNTQwLDI4MF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--764e8765ff342434238d7b255c3100a3d1eb8a64/hemnet_logga.png",
"raw_data": null,
"from_url": "https://www.booli.se/sok/till-salu"
}

Complete Output Structure and Field Definitions

The scraper returns JSON data with each property as an object containing detailed fields. Understanding field purposes enables effective analysis and application.

Listing Identification

ID: Unique numeric Booli identifier of the property listing or sold record. Purpose: Database indexing, tracking specific properties over time, avoiding duplicates.

Origin ID: Source identifier with a prefix showing the record origin (e.g., listing: for active, sold:maklare: for sold). Purpose: Distinguishing record sources and linking back to Booli data.

Listing ID: Identifier of the active listing (null for sold records). Purpose: Separating active listings from sold records.

Listing Type: Record status on Booli (property_active or property_sold). Purpose: Filtering for properties currently for sale versus historical sales.

URL: Direct link to the property page on Booli. Purpose: Accessing complete details, sharing opportunities with clients, verification of scraped data.

Basic Information

Title: Street address or headline of the property. Purpose: Quick identification and display of the property.

Subtitle: Short label combining property type, area and city. Purpose: Fast preview and listing summaries.

Summary: Full descriptive sentence with rooms, property type, address, area and municipality. Purpose: Readable property description for reports and accessibility.

Object Type: Property type (e.g., Villa, Lägenhet). Purpose: Segmenting the market by property category.

Sale Type: Sales category (e.g., succession, newConstruction, sold). Purpose: Identifying new builds, estate sales and sold records.

Pricing and Dates

Price: Asking price for active listings or final sale price for sold records, as displayed. Purpose: Price comparison, market valuation, budget filtering.

Currency: Currency of the price (SEK). Purpose: Correct financial interpretation when merging datasets from multiple markets.

Price Remark: Additional note attached to the price (may be null). Purpose: Capturing pricing conditions or caveats when present.

Display Date: Date label shown on the listing, such as "Inkommet idag" (arrived today) or the sale date for sold records. Purpose: Measuring listing freshness and identifying sale dates.

Status

Status: Primary status tag with key and label (e.g., Förnyad = renewed, Nyproduktion = new construction, Slutpris = final price). Purpose: Identifying property condition and sale stage.

Secondary Status: Additional status tag with key and label (may be null). Purpose: Capturing extra status information when present.

Attributes

Attributes: Flexible array of objects with key, label, value and description. Content varies by property type, e.g., living area, rooms, plot area, floor, monthly fee, and price per m² for sold records. Purpose: Extracting size, layout and cost details without a fixed schema; filtering and comparing properties by any attribute.

Amenities: List of amenities attached to the listing (may be empty). Purpose: Filtering by facilities when available.

Labels: List of promotional or informational labels (may be empty). Purpose: Identifying highlighted features.

Location

Area: Neighborhood or district extracted from the subtitle. Purpose: Micro-market analysis and price comparison between districts.

City: City of the property. Purpose: City-level market analysis.

Municipality: Municipality (kommun) of the property. Purpose: Administrative-level statistics and filtering.

County: County (län) of the property. Purpose: Regional market comparison and aggregation.

Latitude: Geographic latitude of the property. Purpose: Map plotting, distance calculations, spatial analysis.

Longitude: Geographic longitude of the property. Purpose: Map plotting, distance calculations, spatial analysis.

Listing Flags

Has Images: Whether the property has photos. Purpose: Assessing listing completeness.

Has Showings: Whether viewings are scheduled (null for sold records). Purpose: Planning viewings and lead engagement.

Upcoming Sale: Whether the sale is upcoming (null for sold records). Purpose: Identifying properties about to be sold.

Media

Image Count: Number of images returned for the property. Purpose: Evaluating listing quality and completeness.

Images: Array of image objects with id, label (room or view type), alt, width, height and badge. Purpose: Analyzing photo coverage by room type and image quality.

Presenter

Presenter Name: Name of the real estate agency presenting the listing (may be null). Purpose: Lead generation, competitor analysis, market share evaluation.

Presenter Logo URL: Link to the presenter's logo image (may be null). Purpose: Branding in reports and dashboards.

Raw Data

Raw Data: Complete original JSON object of the property as scraped, without modification. Purpose: Auditing, debugging, accessing fields not included in the cleaned output, and reprocessing without re-scraping.

How to Use

Step 1: Identify Search URLs

Visit Booli.se and create search filters matching your needs (region, price range, property type). Copy the resulting page URLs.

Examples:

  • https://www.booli.se/sok/till-salu/?page=1 — All properties for sale
  • https://www.booli.se/sok/stockholm/till-salu/?page=1 — Stockholm only
  • https://www.booli.se/sok/stockholm/till-salu/?min=4000000&max=6000000&page=1 — Stockholm, 4–6M SEK

Step 2: Configure Input

Paste your URLs into the urls array. Set max_items_per_url (e.g., 100–200 for balanced coverage and speed).

Step 3: Run the Scraper

Initiate the actor. The scraper will:

  • Navigate to each URL
  • Extract property records from search results
  • Collect all 30+ fields per listing
  • Skip failed URLs if ignore_url_failures: true
  • Return structured JSON data

Step 4: Export & Analyze

Download results as JSON, CSV, or Excel. Load into your analysis tool (spreadsheet, database, BI platform).

Best Practices:

  • Test with a single page first to verify output format
  • Use ignore_url_failures: true for production runs
  • Space out large scraping jobs to avoid rate limiting
  • Cross-reference with Booli's Estimate field to identify underpriced listings

Use Cases & Business Value

  • Investment analysis: Identify market gaps, underpriced properties, and emerging neighborhoods
  • Market intelligence: Track price trends, days-on-market, and supply dynamics by region
  • Competitive monitoring: Monitor competitor listings, pricing strategies, and market share
  • Data enrichment: Append property data to your CRM, database, or investment platform
  • Academic research: Analyze Swedish housing affordability, market efficiency, and regional variation

Real estate professionals using the Booli Property Search Scraper gain competitive advantage through data-driven decision-making, reducing manual research time from hours to minutes.


Conclusion

The Booli Property Search Scraper delivers Swedish property market data in structured, actionable format. With 30+ fields per listing and flexible filtering, it empowers investors, analysts, and developers to unlock insights from Booli's comprehensive marketplace. Start scraping today and transform raw listings into strategic advantage.

⌂ 换网址